SlideShare a Scribd company logo
1 of 46
Download to read offline
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開発をもっと楽しく!
ご静聴ありがとうございました

More Related Content

What's hot

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
ウカガカ動画(¥e)
ウカガカ動画(¥e)ウカガカ動画(¥e)
ウカガカ動画(¥e)wizstargaer
 
zshという選択肢
zshという選択肢zshという選択肢
zshという選択肢manaten
 
SoftlayerのCLIで遊ぼうとしたら
SoftlayerのCLIで遊ぼうとしたらSoftlayerのCLIで遊ぼうとしたら
SoftlayerのCLIで遊ぼうとしたら雄哉 吉田
 
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよxztaityozx
 
JSで対戦できるゲーム作った
JSで対戦できるゲーム作ったJSで対戦できるゲーム作った
JSで対戦できるゲーム作ったAkito Moriki
 
初めてのCPUを作ってみた
初めてのCPUを作ってみた初めてのCPUを作ってみた
初めてのCPUを作ってみたEric Sartre
 
HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法Hiroaki Murayama
 
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Atsushi Tadokoro
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutTaisuke Yamada
 
Prefixから始めるgentoo生活
Prefixから始めるgentoo生活Prefixから始めるgentoo生活
Prefixから始めるgentoo生活bontakun
 
IchigoJam はじめてのプログラミング その2
IchigoJam はじめてのプログラミング その2IchigoJam はじめてのプログラミング その2
IchigoJam はじめてのプログラミング その2Taisuke Fukuno
 
2015年12月19日 Unity Asset Touch and Tryアセット一覧
2015年12月19日 Unity Asset Touch and Tryアセット一覧2015年12月19日 Unity Asset Touch and Tryアセット一覧
2015年12月19日 Unity Asset Touch and Tryアセット一覧Takashi Jona
 
Scripting on RouterBOARD
Scripting on RouterBOARDScripting on RouterBOARD
Scripting on RouterBOARDYousuke Saki
 
オレオレPHPのつくり方
オレオレPHPのつくり方オレオレPHPのつくり方
オレオレPHPのつくり方Ryusuke Sekiyama
 

What's hot (20)

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
ウカガカ動画(¥e)
ウカガカ動画(¥e)ウカガカ動画(¥e)
ウカガカ動画(¥e)
 
Hachioji.pm #40
Hachioji.pm #40Hachioji.pm #40
Hachioji.pm #40
 
zshという選択肢
zshという選択肢zshという選択肢
zshという選択肢
 
SoftlayerのCLIで遊ぼうとしたら
SoftlayerのCLIで遊ぼうとしたらSoftlayerのCLIで遊ぼうとしたら
SoftlayerのCLIで遊ぼうとしたら
 
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよ
 
zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
JSで対戦できるゲーム作った
JSで対戦できるゲーム作ったJSで対戦できるゲーム作った
JSで対戦できるゲーム作った
 
pecoを使おう
pecoを使おうpecoを使おう
pecoを使おう
 
初めてのCPUを作ってみた
初めてのCPUを作ってみた初めてのCPUを作ってみた
初めてのCPUを作ってみた
 
HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法
 
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
 
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and DracutIntroduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
 
Prefixから始めるgentoo生活
Prefixから始めるgentoo生活Prefixから始めるgentoo生活
Prefixから始めるgentoo生活
 
What's Cuckoo?
What's Cuckoo?What's Cuckoo?
What's Cuckoo?
 
IchigoJam はじめてのプログラミング その2
IchigoJam はじめてのプログラミング その2IchigoJam はじめてのプログラミング その2
IchigoJam はじめてのプログラミング その2
 
2015年12月19日 Unity Asset Touch and Tryアセット一覧
2015年12月19日 Unity Asset Touch and Tryアセット一覧2015年12月19日 Unity Asset Touch and Tryアセット一覧
2015年12月19日 Unity Asset Touch and Tryアセット一覧
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
Scripting on RouterBOARD
Scripting on RouterBOARDScripting on RouterBOARD
Scripting on RouterBOARD
 
オレオレPHPのつくり方
オレオレPHPのつくり方オレオレPHPのつくり方
オレオレPHPのつくり方
 

Similar to Play frameworkをエヴァンジェる

楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会University of Tsukuba Linux User Group
 
伺うかのうだうだぐだぐだ
伺うかのうだうだぐだぐだ伺うかのうだうだぐだぐだ
伺うかのうだうだぐだぐだwizstargaer
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているpocketberserker
 
GDC2013 Visual Art系セッション報告
GDC2013 Visual Art系セッション報告GDC2013 Visual Art系セッション報告
GDC2013 Visual Art系セッション報告Takashi Iwade
 
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話侑弥 濱田
 
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座  for WordPress (初級)デザイナーのためのPHP講座  for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)佑 小田垣佑
 
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったFM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったCHY72
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXKazuyuki Todo
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたKohei Kadowaki
 
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところXNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところIGDA Japan
 
One - Common Lispでもワンライナーしたい
One - Common LispでもワンライナーしたいOne - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたいt-sin
 
openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001Teruaki Tsubokura
 
つくっておぼえる!仮想マシン〜直前で実装編〜
つくっておぼえる!仮想マシン〜直前で実装編〜つくっておぼえる!仮想マシン〜直前で実装編〜
つくっておぼえる!仮想マシン〜直前で実装編〜Eric Sartre
 
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくりDIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくりUnity Technologies Japan K.K.
 
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくりUnite2017Tokyo
 

Similar to Play frameworkをエヴァンジェる (16)

楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
 
ぎっとの「ぎ」
ぎっとの「ぎ」ぎっとの「ぎ」
ぎっとの「ぎ」
 
伺うかのうだうだぐだぐだ
伺うかのうだうだぐだぐだ伺うかのうだうだぐだぐだ
伺うかのうだうだぐだぐだ
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
 
GDC2013 Visual Art系セッション報告
GDC2013 Visual Art系セッション報告GDC2013 Visual Art系セッション報告
GDC2013 Visual Art系セッション報告
 
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
 
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座  for WordPress (初級)デザイナーのためのPHP講座  for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)
 
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったFM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaX
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
 
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところXNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところ
 
One - Common Lispでもワンライナーしたい
One - Common LispでもワンライナーしたいOne - Common Lispでもワンライナーしたい
One - Common Lispでもワンライナーしたい
 
openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
 
つくっておぼえる!仮想マシン〜直前で実装編〜
つくっておぼえる!仮想マシン〜直前で実装編〜つくっておぼえる!仮想マシン〜直前で実装編〜
つくっておぼえる!仮想マシン〜直前で実装編〜
 
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくりDIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
 
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
【Unite 2017 Tokyo】DIYエフェクト実装: エンジニアレスでエフェクトを組み込める環境づくり
 

More from ke-m kamekoopa

SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーke-m kamekoopa
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークke-m kamekoopa
 
設計してますか?
設計してますか?設計してますか?
設計してますか?ke-m kamekoopa
 
Interlli jとplayとjavaとscala
Interlli jとplayとjavaとscalaInterlli jとplayとjavaとscala
Interlli jとplayとjavaとscalake-m kamekoopa
 
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
関数型もモナドも分からなくてもScalaと言う言語は便利らしい関数型もモナドも分からなくてもScalaと言う言語は便利らしい
関数型もモナドも分からなくてもScalaと言う言語は便利らしいke-m kamekoopa
 
デプロイツールFabric
デプロイツールFabricデプロイツールFabric
デプロイツールFabricke-m kamekoopa
 
Playで作るwebsocketサーバ
Playで作るwebsocketサーバPlayで作るwebsocketサーバ
Playで作るwebsocketサーバke-m kamekoopa
 
デプロイメントパイプラインって何?
デプロイメントパイプラインって何?デプロイメントパイプラインって何?
デプロイメントパイプラインって何?ke-m kamekoopa
 
継続的にデリバリーって何?
継続的にデリバリーって何?継続的にデリバリーって何?
継続的にデリバリーって何?ke-m kamekoopa
 

More from ke-m kamekoopa (15)

Kvwatcher
KvwatcherKvwatcher
Kvwatcher
 
PyKon JP 2014
PyKon JP 2014PyKon JP 2014
PyKon JP 2014
 
Scala.js
Scala.jsScala.js
Scala.js
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリー
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォーク
 
設計してますか?
設計してますか?設計してますか?
設計してますか?
 
Interlli jとplayとjavaとscala
Interlli jとplayとjavaとscalaInterlli jとplayとjavaとscala
Interlli jとplayとjavaとscala
 
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
関数型もモナドも分からなくてもScalaと言う言語は便利らしい関数型もモナドも分からなくてもScalaと言う言語は便利らしい
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
 
デプロイツールFabric
デプロイツールFabricデプロイツールFabric
デプロイツールFabric
 
Playで作るwebsocketサーバ
Playで作るwebsocketサーバPlayで作るwebsocketサーバ
Playで作るwebsocketサーバ
 
# Rabbitサンプル
# Rabbitサンプル# Rabbitサンプル
# Rabbitサンプル
 
デプロイメントパイプラインって何?
デプロイメントパイプラインって何?デプロイメントパイプラインって何?
デプロイメントパイプラインって何?
 
継続的にデリバリーって何?
継続的にデリバリーって何?継続的にデリバリーって何?
継続的にデリバリーって何?
 
Php5.4
Php5.4Php5.4
Php5.4
 
Test
TestTest
Test
 

Play frameworkをエヴァンジェる