play frameworkをエヴァンジェる
DESCRIPTION
社内LT用資料TRANSCRIPT
Play!Frameworkを エバンジェる
アジェンダ
• Play! Frameworkってなに?
• Playのとくちょう
• 実際にechoサーバつくってみたよ
※注
( ^o^)へぇ~Play!のスライドなんだー
( ˘⊖˘) 。o(あれ?BPStudyで聞いた内容ばっかり…?)
|@maitani|┗(☋` )┓三
( ◠‿◠ )☛そこに気づいたか…消えてもらう
▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂うわああああああ
※ほとんど整理しなおしただけですごめんなさい
• Play! Frameworkってなに?
• Playのとくちょう
• 実際にechoサーバつくってみたよ
Play! Frameworkってなに?
ざっくり言うと
1.Scala製の(Play ver.2)
2.Railsライクな
3.WEBに特化したWEB開発のための
4.Java/Scala用フレームワーク
• Play! Frameworkってなに?
• Playのとくちょう
• 実際にechoサーバつくってみたよ
Playのとくちょう
なんといっても
Playのとくちょう
さくさく作れる!
Playのとくちょう
JavaのWEB開発にありがちなこと • appコンテナ(tomcatとか)DLしてー
• コンテナの設定してー
• eclipseでプロジェクト作ってー
• プロジェクトの設定してー
• JEEライブラリ落としてきてー
• web.xml書いてー
• ビルドしてー
• war配置してー
• appコンテナ再起動…ふぅ
Playのとくちょう
Playなら
Playのとくちょう
• PlayのバイナリDLしてー
• path通してー
• コマンドでPJスケルトンとIDE用ファイル生成してー
• playサーバ起動コマンド叩いてー
Playのとくちょう
完
Playのとくちょう
• Playはそれ自体にHTTPサーバ内蔵
• コマンド叩いて準備完了
• 変更を検知して自動ビルド、ホットスワップ
• デフォルトでインメモリRDB、マイグレー
ションツールも内蔵してるよ!
Playのとくちょう
他にもいろいろあるけど
Playのとくちょう
時間がないので割愛
• Play! Frameworkってなに?
• Playのとくちょう
• 実際にechoサーバつくってみたよ
実際にechoサーバつくってみたよ
GET http://localhost:9000/echo?m=ほげほげ
したら
200 OK
Content-Type : application/json
body
{"message" : "ほげほげ"}
を返すシンプルなもの
実際にechoサーバつくってみたよ
http://www.playframework.org/
今回は最新版の2.0.3を使用
実際にechoサーバつくってみたよ
インストールは解凍してPATH通すだけ
実際にechoサーバつくってみたよ
ウィザードでさくっと新規PJ作成
実際にechoサーバつくってみたよ
$ play eclipsify でIDE用ファイル生成
実際にechoサーバつくってみたよ
eclipseにインポートすれば
実際にechoサーバつくってみたよ
開発準備完了
実際にechoサーバつくってみたよ
GET http://localhost:9000/echo?m=ほげほげ
したら
200 OK
Content-Type : application/json
body
{"message" : "ほげほげ"}
を返すシンプルなもの
実際にechoサーバつくってみたよ
ということで
実際にechoサーバつくってみたよ
まずはechoコントローラを作ります
/conf/routes ファイルにルーティングを設定
GET /echo controllers.Echo.index()
play.mvc.Controller を継承したEchoクラスを作成
public class Echo extends Controller { ... }
実際にechoサーバつくってみたよ
こんな感じ
実際にechoサーバつくってみたよ
開発モードでサーバを起動して確認してみる $ play run (開発モードで起動)
localhost:9000/echo へアクセス デフォルト設定ポートが9000番
実際にechoサーバつくってみたよ
いやっふぅぅぅぅぅぅぅ
実際にechoサーバつくってみたよ
実際はパラメータとして文字列型の引数mを
とるのでroutesを以下のように編集 GET /echo controllers.Echo.index()
↓
GET /echo controllers.Echo.index(m:String)
/echo?m=hogehoge で再度アクセス (サーバ再起動なし!)
実際にechoサーバつくってみたよ
お、おおぅ…?
実際にechoサーバつくってみたよ
Playはコード以外もコンパイル
設定の不整合も静的にエラー検出 今回は、routesの設定とEchoコントローラとの不整合を教えてくれた
以下のようにEchoコントローラを修正 public static Result index() { ... ↓
public static Result index(String m) { ...
実際にechoサーバつくってみたよ
いやっふぅぅぅぅぅぅぅ
実際にechoサーバつくってみたよ
( ^o^)mをok()メソッドに渡せば完成だな
( ˘⊖˘) 。o(あれ?確か返却値はjson…。)
| Play! |┗(☋` )┓三
( ◠‿◠ )☛そこに気づいたか…でも消えてもらわなくていいよ
(’ω’)うわあ…えっ?
実際にechoサーバつくってみたよ
標準でバンドルされてるライブラリを使えば
Jsonもらくちん
実際にechoサーバつくってみたよ
これだけ
実際にechoサーバつくってみたよ
ξ*'ヮ')ξ .。.:*・゜゚・*
Content-Typeも自動で設定されるわぁ
実際にechoサーバつくってみたよ
200 OK、Content-Type : application/json
実際にechoサーバつくってみたよ
内容もOKっぽい
まとめ
まとめ
• PlayはJavaによるWEB開発を革命する
o 複雑でわかりづらいJEEなんか知らん!
o WEBに完全特化すれば世界はもっとシンプルに
o 高速で軽快な開発
組込みHTTPサーバ
DBマイグレーションツール
TDD、BDDツール付属
ステートレスだからできるサーバ再起動なしの
ホットデプロイ
まとめ
• 非同期IO、WebSocket etc...
o いろいろあるけど時間の都合でかt
PlayでWEB開発をもっと楽しく!
ご静聴ありがとうございました