Play!framework 2.0 の裏側




     Play!framework2.0ソースコードリーディング
お前誰よ(Who are you?)
@Masahito
仕事でPlay! frameworkを使っています。

Java/ScalaはPlay!を通してまだまだ勉強中。

主にPython系の勉強会に出没しています。
Play!framework2.0の
ドキュメント翻訳やってます




 一緒に翻訳してくれる方を募集しています!!
本日の内容
Play! framework 2.0と1X系の違いを説明

Play!framework の現状と今後を説明します

WebSocketのデモ

FAQ
本日の内容
Play! framework 2.0と1.X系の違いを説明

Play!framework の現状と今後を説明します

FAQ
その前にPlay!2.0はそもそもなんで作られ
たの?

Web開発環境の変化への対応(ready for real-time Web applications)

Java以外のJVM言語への対応(主にScala向け)

ビルドシステムの変更(SBTを使う)
メイン開発者は変わったの?



       中心人物は変わっていません



         guillaumeBort
Play! Framework2.0とは?
1系ではJavaで書かれていましたが、2.0系はScalaで
書かれるようになりました。Play!1X+Scalaの延長線
上に2.0系があると考えてよいです。

開発モードならばサーバー再起動不要で開発できま
す。

開発時にIDEを使うことも可能です。(Intelli JもOK)

Paas環境(Heroku)で運用可能
Play! Framework2.0とは?
1系と同様Nettyがベースになっています。Play!2.0の
ベースはNettyのwrapperです。

Java Servelet APIは使っていません。現状ではwar化
する機能はありません。(2.1で対応予定?)

Controllerは 普通のControllerと WebSocket専用の
Controllerの2種類になりました。

JobはAkkaベースに!
Play! Framework2.0とは?

もっと詳しい内容はこちらを参照
 http://playdocja.appspot.com/2.0
SBT

Simple Build Tools の略.Scala製

ライブラリを取って来たり、ソースのビルドを行う

  Mavenとかivy的なイメージ
ビルド速度の向上
さらにザックり説明

Play!1.X系ではWeb MVCが密結合

Play!2.0ではWebMVCが粗結合

各機能が別々のアプリになっていて、
各ライブラリを組み合わせて機能を実現

MVC間で連携する機能は現状弱いです
1.2.X   2.0
簡単な比較
              テンプレー                    ビルドシステ
                          DBアクセス
                  ト                      ム
                        JPA(Hibernat
 Play! 1系     Groovyベース                Play!独自
                             e)

Play!+Scala   Scalaベース      Anorm      Play!独自

                       Java:EBean
 Play!2.0     Scalaベース                   SBT
                       Scala:Anorm
本日の内容
Play! framework 2.0と1系の違いを説明

Play!framework の現状と今後を説明します

FAQ
Play!2.0リリースされました

2012/03/14でついにリリース!!おめでとう

Githubのレポジトリは”2.1-SNAPSHOT”に

今はBugfixがすごい勢いで行われています。2.0.1が出
るらしいよ。

たまーに重要なバグを直していてびっくりします><
導入&アプリ作成

$ play new myWebApp
$ play run myWebApp
Model
Play!2.0ではjdbcでの接続を行うAPIが存在
つなぐところ以外は好きなライブラリを
つかえばOK
Anorm(アノーム)

 一応Play!2.0 の標準。SQLベースのDB操作API


ScalaQuery
「Squery使ってるよ」という投稿がMLに
Play!2.0で現状できないこと



 管理画面(1X系でのCRUDモジュール)

 認証認可(1X系でのSecureモジュール)
FW側では提供されないかも。
モジュールの作成が必要か
 warファイルの出力

   v2.1で対応予定?
Play!2.0で現状できないこと




 java doc/ scala doc
 DB構造の自動変更

   各ライブラリで作成
Play!2.0とmodule



基本的に機能追加はmodule前提

ここで公開されています。ユーザーが追加することも
可能 >> https://github.com/playframework/Play20/
wiki/Modules
Play!2.0のテンプレートの注意点



 標準ではCSRF対策が施されていません。

 “Authenticity Token module”は入れておいた方がいい
 でしょう。 >> https://github.com/orefalo/play2-
 authenticitytoken
本日の内容
Play! framework 2.0と1系の違いを説明

Play!framework の現状と今後を説明します

FAQ
Play1.Xと2.0の今後?
  3/30∼31にかけてMLを多いにわかせる話題がありま
  した

  “Open Letter to Play Framework Developers”


  http://groups.google.com/group/play-framework/
      browse_thread/thread/1c66cf065cd5947/
aab1fdc00b023005?lnk=gst&q=Roman++Open+Letter
         +to+Play+Framework+Developers+#
Play1.Xと2.0の今後?

  「Play!2.0はなんでScalaベースなんだ!」「1Xででき
  たことが何にもできないだろうが、ふざけんな」



  http://groups.google.com/group/play-framework/
      browse_thread/thread/1c66cf065cd5947/
aab1fdc00b023005?lnk=gst&q=Roman++Open+Letter
         +to+Play+Framework+Developers+#
Play1.Xと2.0の今後?

  Giaullme「We are building a framework for the future,
  not for the past.」



  http://groups.google.com/group/play-framework/
      browse_thread/thread/1c66cf065cd5947/
aab1fdc00b023005?lnk=gst&q=Roman++Open+Letter
         +to+Play+Framework+Developers+#
Q. Play!2.0ができたってこと
は1系ってオワコンなの?
A. ちがうよ!全然違うよ!
Play!1系のメンテナンスはまだまだ続きます。

Play!1.2.5は4月に出るらしい。

メイン開発者は交代。原則コミュニティベー
スになる?

モジュールの開発者で1系の対応をしたくない人
もいるみたいのなのでそこは心配
Probably since it needs more
           bug fixes and documentation
           than Play
           1.2.x that is 3 years old and well
           documented.
Gia

      http://groups.google.com/group/play-framework
      browse_thread/thread/615888c1ed2fc4da?pli=1
まとめ
Play! framework 2.0 はPlay!frameworkに対するセカン
ドシステム。Scalaとの親和性が向上。

機能が増えた訳ではない。むしろPlay!本体の機能を
減らし、外部ライブラリを組み合わせて機能を実現
する方針。

恐れずに使ってみると良いと思います。Controller /
JSON の使い勝手の良さは感動ものです!
情報源

ML : http://groups.google.com/group/play-framework
github: https://github.com/playframework/play20
Doc: https://github.com/playframework/Play20/wiki
ja   : https://github.com/playframework-ja/Play20/wiki
一緒に翻訳してくれる方を募集しています!!
ご清聴ありがとうございました

Play2の裏側