Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
takezoe
7,546 views
Play2実践tips集
Software
◦
Read more
13
Save
Share
Embed
Embed presentation
Download
Downloaded 29 times
1
/ 14
2
/ 14
3
/ 14
4
/ 14
5
/ 14
6
/ 14
7
/ 14
8
/ 14
9
/ 14
10
/ 14
11
/ 14
12
/ 14
13
/ 14
14
/ 14
More Related Content
PDF
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
by
CROOZ, inc.
PDF
(自分流)Gitの運用ルール
by
Erina Takei
PDF
Redmine + gitlab: merge base development
by
smdkk
PDF
20160421 react勉強会
by
Naoki Kurosawa
PDF
バージョン管理システム比較資料
by
suzzsegv
PPT
Google Product
by
Daisuke Sugai
PDF
Gitと出会って人生変わった テックヒルズ2013-03-22
by
Shota Umeda
PDF
GitHubで学ぶバージョン管理
by
Masafumi Yokoyama
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
by
CROOZ, inc.
(自分流)Gitの運用ルール
by
Erina Takei
Redmine + gitlab: merge base development
by
smdkk
20160421 react勉強会
by
Naoki Kurosawa
バージョン管理システム比較資料
by
suzzsegv
Google Product
by
Daisuke Sugai
Gitと出会って人生変わった テックヒルズ2013-03-22
by
Shota Umeda
GitHubで学ぶバージョン管理
by
Masafumi Yokoyama
Viewers also liked
PDF
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
by
takezoe
PDF
ドワンゴでのScala活用事例「ニコニコandroid」
by
Satoshi Goto
PDF
【初公開】チャットワーク検索機能を支える技術
by
Yoshinori Fujiwara
PDF
Scala界隈の近況
by
takezoe
PDF
SIerでScalaを使うために私がしたこと
by
takezoe
PDF
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
by
Kazuki Negoro
PDF
あなたのScalaを爆速にする7つの方法(日本語版)
by
x1 ichi
PDF
Slick入門
by
chibochibo
PDF
アクターモデルについて
by
Takamasa Mitsuji
PDF
ネタじゃないScala.js
by
takezoe
PDF
Reactive microservices with play and akka
by
scalaconfjp
PPTX
Scala採用の背景とその後 @ hitomedia night #5
by
Jiro Hiraiwa
PDF
Scala@SmartNews_20150221
by
Shigekazu Takei
PDF
Why Reactive Matters #ScalaMatsuri
by
Yuta Okamoto
PPTX
アドテク企業のScala導入について振り返るlt
by
Jiro Hiraiwa
PDF
Zen of Akka
by
Konrad Malawski
PDF
リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)
by
BIGLOBE Tech Talk
PDF
Without Resilience, Nothing Else Matters
by
Jonas Bonér
PPTX
色んなScalaを調べてみた
by
Jiro Hiraiwa
PDF
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
by
Ruslan Shevchenko
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
by
takezoe
ドワンゴでのScala活用事例「ニコニコandroid」
by
Satoshi Goto
【初公開】チャットワーク検索機能を支える技術
by
Yoshinori Fujiwara
Scala界隈の近況
by
takezoe
SIerでScalaを使うために私がしたこと
by
takezoe
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
by
Kazuki Negoro
あなたのScalaを爆速にする7つの方法(日本語版)
by
x1 ichi
Slick入門
by
chibochibo
アクターモデルについて
by
Takamasa Mitsuji
ネタじゃないScala.js
by
takezoe
Reactive microservices with play and akka
by
scalaconfjp
Scala採用の背景とその後 @ hitomedia night #5
by
Jiro Hiraiwa
Scala@SmartNews_20150221
by
Shigekazu Takei
Why Reactive Matters #ScalaMatsuri
by
Yuta Okamoto
アドテク企業のScala導入について振り返るlt
by
Jiro Hiraiwa
Zen of Akka
by
Konrad Malawski
リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)
by
BIGLOBE Tech Talk
Without Resilience, Nothing Else Matters
by
Jonas Bonér
色んなScalaを調べてみた
by
Jiro Hiraiwa
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
by
Ruslan Shevchenko
Similar to Play2実践tips集
PDF
sbtマルチプロジェクトビルドの使いどころ
by
Kazuhiro Hara
PDF
Play framework 2.0のおすすめと1.2からのアップグレード
by
Kazuhiro Hara
PDF
Play ja 3_update
by
Takafumi Ikeda
KEY
PlayFramework1.x基礎編
by
Asami Abe
PDF
大規模なJavaScript開発の話
by
terurou
PDF
チケット駆動開発をパターン言語で読み解く~「成功するプロジェクトのための開発基盤と手法」
by
akipii Oga
PDF
株式会社インタースペース 沖本様 登壇資料
by
leverages_event
PPTX
Play1 to Play2
by
Shunji Konishi
PDF
Play jjug2012spring
by
Takafumi Ikeda
PPT
play framework 勉強会 in 関西
by
Shinichi Kozake
PDF
Play frameworkの概要
by
Shuhei Kaneko
PDF
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
by
佑介 九岡
PPTX
X pages day発表_20141118
by
Takashi Yamori
PPTX
X pages day発表_20141118
by
Takashi Yamori
KEY
Play with Playframework
by
Takafumi Yoshida
PDF
Play meetup-2-dev-best-practices
by
k4200
PDF
Play framework 2.0のちょっとした紹介
by
Ryo RKTM
PPTX
僕の鮮やかなるScala導入失敗事例
by
Yosuke Uchiyama
KEY
Dev love関西 forslideshare
by
Daisuke Kasuya
PDF
Scala conf2013
by
Takafumi Ikeda
sbtマルチプロジェクトビルドの使いどころ
by
Kazuhiro Hara
Play framework 2.0のおすすめと1.2からのアップグレード
by
Kazuhiro Hara
Play ja 3_update
by
Takafumi Ikeda
PlayFramework1.x基礎編
by
Asami Abe
大規模なJavaScript開発の話
by
terurou
チケット駆動開発をパターン言語で読み解く~「成功するプロジェクトのための開発基盤と手法」
by
akipii Oga
株式会社インタースペース 沖本様 登壇資料
by
leverages_event
Play1 to Play2
by
Shunji Konishi
Play jjug2012spring
by
Takafumi Ikeda
play framework 勉強会 in 関西
by
Shinichi Kozake
Play frameworkの概要
by
Shuhei Kaneko
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
by
佑介 九岡
X pages day発表_20141118
by
Takashi Yamori
X pages day発表_20141118
by
Takashi Yamori
Play with Playframework
by
Takafumi Yoshida
Play meetup-2-dev-best-practices
by
k4200
Play framework 2.0のちょっとした紹介
by
Ryo RKTM
僕の鮮やかなるScala導入失敗事例
by
Yosuke Uchiyama
Dev love関西 forslideshare
by
Daisuke Kasuya
Scala conf2013
by
Takafumi Ikeda
More from takezoe
PDF
Tracing Microservices with Zipkin
by
takezoe
PDF
GitBucket: Open source self-hosting Git server built by Scala
by
takezoe
PDF
Scala Warrior and type-safe front-end development with Scala.js
by
takezoe
PDF
Non-Functional Programming in Scala
by
takezoe
PDF
Scala製機械学習サーバ「Apache PredictionIO」
by
takezoe
PDF
Excel方眼紙を支えるJava技術 2015
by
takezoe
PDF
頑張りすぎないScala
by
takezoe
PDF
Scala警察のすすめ
by
takezoe
PDF
GitBucket: Git Centric Software Development Platform by Scala
by
takezoe
PDF
markedj: The best of markdown processor on JVM
by
takezoe
PDF
How to keep maintainability of long life Scala applications
by
takezoe
PDF
Reactive database access with Slick3
by
takezoe
PDF
Java9 and Project Jigsaw
by
takezoe
PDF
Testing Distributed Query Engine as a Service
by
takezoe
PDF
Journey of Migrating Millions of Queries on The Cloud
by
takezoe
PDF
Type-safe front-end development with Scala
by
takezoe
PDF
Revisit Dependency Injection in scala
by
takezoe
PDF
Scala Frameworks for Web Application 2016
by
takezoe
PDF
Macro in Scala
by
takezoe
PDF
The best of AltJava is Xtend
by
takezoe
Tracing Microservices with Zipkin
by
takezoe
GitBucket: Open source self-hosting Git server built by Scala
by
takezoe
Scala Warrior and type-safe front-end development with Scala.js
by
takezoe
Non-Functional Programming in Scala
by
takezoe
Scala製機械学習サーバ「Apache PredictionIO」
by
takezoe
Excel方眼紙を支えるJava技術 2015
by
takezoe
頑張りすぎないScala
by
takezoe
Scala警察のすすめ
by
takezoe
GitBucket: Git Centric Software Development Platform by Scala
by
takezoe
markedj: The best of markdown processor on JVM
by
takezoe
How to keep maintainability of long life Scala applications
by
takezoe
Reactive database access with Slick3
by
takezoe
Java9 and Project Jigsaw
by
takezoe
Testing Distributed Query Engine as a Service
by
takezoe
Journey of Migrating Millions of Queries on The Cloud
by
takezoe
Type-safe front-end development with Scala
by
takezoe
Revisit Dependency Injection in scala
by
takezoe
Scala Frameworks for Web Application 2016
by
takezoe
Macro in Scala
by
takezoe
The best of AltJava is Xtend
by
takezoe
Play2実践tips集
1.
1 Play2実践Tips集 Naoki Takezoe BizReach, Inc.
2.
Topic • プロジェクト構成 • 開発モードの高速化 •
マッピング、フォーマット • コネクションプール • 日本語ルーティング • セッション管理 • 認証処理 • 非同期処理、ジョブスケジューリング • 運用時のあれこれ 2
3.
プロジェクト構成 • IntelliJで1プロジェクトで開発するためにsbtのマル チプロジェクト構成にしています 3 ユーザ側Webアプリ (Playプロジェクト) 管理側Webアプリ (Playプロジェクト) Web共通 (Playプロジェクトだがライブラリとして使用) バッチアプリ (sbtプロジェクト) 全体共通 (sbtプロジェクト)
4.
開発モードの高速化 • play2-fastassetsを使用して静的リソースをブラウ ザにキャッシュすることでリクエストを抑制 – https://github.com/takezoe/play2-fastassets 4 <link
rel="stylesheet" media="screen" href="@FastAssets.at("stylesheets/main.css")"> <link rel="stylesheet" media="screen" href="assets/stylesheets/main.css?142014022630"> バージョンタグ付きのパスを生成するのでファイルを変更した場合はリクエストが飛ぶ 運用時のバージョニングにも使用(運用時のバージョニングはPlay 2.3で入る模様) https://github.com/playframework/playframework/issues/1897
5.
フォームのTuple22問題 • 項目数の多いフォームを定義できない – 項目を適当な粒度でグルーピングしてネストさせる –
Scala 2.11では解消されるはず… 5 val userForm = Form( mapping( "firstName" -> text, "lastName" -> text, "mailAddress" -> email, "password" -> text, "companyInfo" -> mapping( "company" -> text, "department" -> text )(CompanyInfo.apply)(CompanyInfo.unapply) )(UserInfo.apply)(UserInfo.unapply) )
6.
テンプレート • Play標準のヘルパー(@inputText等)は基本的に 使用していない – 余計なマークアップが出力されてしまう –
エラーメッセージが微妙 – デザイナとの連携の問題 6
7.
コネクションプール • BoneCPには複数の問題があるため、Play標準の dbpluginを無効にしてHikariCP play
pluginを使用 – http://edulify.github.io/play-hikaricp.edulify.com/ 7 dbpluginを無効にするとevolutionが使えなくなるので注意! Playのdbpluginに依存しないevolutionの代替としてplay-flywayがあります。 https://github.com/tototoshi/play-flyway
8.
日本語ルーティング • ルーティングに日本語パスを定義したい 8 # 標準ではURLエンコードしたパスをroutesに記述する必要がある GET
/%E3%83%8F%E3%83%AD%E3%83%BC controllers.Application.hello # パスを日本語で記述できるように拡張 GET /ハロー controllers.Application.hello
9.
日本語ルーティング • Globalでパスを変換 9 import play.api._ import
play.api.mvc._ import java.net.URLDecoder.decode object Global extends GlobalSettings { override def onRouteRequest(req: RequestHeader): Option[Handler] = { super.onRouteRequest( if(req.path.startsWith("/%")) req.copy(path = decode(req.path, "UTF-8")) else req) } } Globalにもこの他にも様々なフックメソッドが用意されており、オーバーライドすることで Playの全体的な動作のカスタマイズが可能です。
10.
セッション管理 • PlayはRails同様のクッキーセッション機能 • サーバサイドにデータを保存する仕組みは自分で 用意する必要がある •
PlayのCache APIを使用してセッションIDと紐付け て保存する機能を自作 • ローカルではEhcache、プロダクションでは Memcachedを使用(設定で切り替え可能) – https://github.com/mumoshu/play2-memcached 10
11.
認証処理 • Secure Social –
http://securesocial.ws/ – デフォルトで様々なソーシャルメディアに対応 – ユーザ登録、メール通知等の機能も組み込まれており、 設定は複雑だが高機能 – そこまで高機能なものが不要であればpac4jもいいかも • play2-auth – https://github.com/t2v/play2-auth – 権限によるアクションの認証機構を提供 – システム独自のユーザ管理を行う業務アプリケーション 等に向いている 11
12.
非同期処理 • メール送信や外部APIの呼び出しなど時間のかかる 処理はPlayのコントローラからアクターを起動して非 同期実行 12 object SendMailController
extends Controller { val actor = Akka.system.actorOf(Props[SendMailActor], name = "sendMailActor") def send = DBAction { implicit request => // メール送信対象のユーザを取得 val accounts = Accounts.filter(_.acceptMail is true.bind).list // 送信対象のユーザを指定してアクターを起動 actor ! users // レスポンスを返す Ok(views.html.test("test page.")) } }
13.
非同期処理 • 定期的に行う処理はakka-quartzを使用してアクタ ーをスケジュール実行 – https://github.com/theatrus/akka-quartz 13 Typesafeで開発しているakka-quartz-schedulerというものもありますが、 application.confにスケジュールを記述する必要があるので動的にスケジュールを 設定したいという用途には向いていません。 https://github.com/typesafehub/akka-quartz-scheduler //
スケジューラを取得 val quartzActor = Akka.system.actorOf(Props[QuartzActor]) // スケジュールを登録 quartzActor ! AddCronSchedule( Akka.system.actorOf(Props[HelloWorldActor]), // アクター "0/5 * * * * ?", // スケジュール "HelloWorld" // メッセージ )
14.
デプロイ、運用にかんするあれこれ • distで生成したzipファイルをサーバに転送、展開し てシェルスクリプトを実行して起動 – Commons
Daemon(jsvc)を使ってデーモン化 http://d.hatena.ne.jp/takezoe/20140516#p1 • Playの起動時にオプションで設定ファイルを指定 – -Dconfig.resource=クラスパス内の設定ファイル – -Dconfig.file=ファイルシステム上の設定ファイル • ログにはslf4j+LogBackを使用 – LogBackの設定は全開にしておき、Play側の設定でログ レベルを調節している 14
Download