最近は業務でも再びPlayを使うようになったのでPlayの世の中の状況をリサーチするべくドワンゴさんで開催されたPlay Framework2 Meetupに行ってきました。個人的に参考になったセッションの内容をメモっておきます。
Play のこれまでとこれから @tototoshiさん
オープニングはScalaとPlayの歴史。うんうん、そんなこともあったなーと思いながら聞いていた方も多かったのではないでしょうか。とてもよいまとめでした。LiftはScalaに興味を持ったプログラマの多くを撃退したという意味でかなり罪深い存在かもしれないというのは新たな発見でしたw ビューファーストという発想自体はよかったと思うんですけどねー。
やさしい Iteratee 入門 @kawachiさん
個人的にとても勉強になったセッションでした。IterateeはPlayを使う上で避けては通れない概念でなかなか難しい部分なのですが、非常にわかりやすく解説されていました。PlayでWebSocketを使う際にもIterateeの知識が必要になるのですが、Play 2.3ではアクターを使ってWebSocketサーバを実装できるようになるみたいです。ActorとWebSocketは非常に相性が良いと思っているのでこれは嬉しい新機能ですね。
ActionBuilder の罠 @gakuzzzzさん
いつもわかりやすい説明でお馴染みのがくぞ先生はActionBuilderとその問題点についてお話しされていました。ActionBuilder(Play 2.2で導入されたもののようですが、個人的には存在を知りませんでした)はアクションをカスタマイズするときに便利だけど型の制約や合成ができないという問題があるので、そういう場合はstackable-controllerを使うといいよ、とのこと。認証やらDBのトランザクション制御など実際のアプリケーションではアクションは必ずと言っていいほどカスタマイズすることになるのでチェックしてみようと思います。
sbt-webを使ったプラグインの作り方 @pab_techさん
Play 2.3の目玉の1つであるsbt-webについて。sbt-webでRailsのようなアセットパイプラインを使えるようになるようです。sbt 0.13.5の新機能であるAutoPlugin(sbtプラグインの依存関係を定義して自動的に使用できるようにしたりできる)を活用しており、他のフレームワークでも利用可能とのこと。Scalatraへのインテグレーションも考えてもいいかなーと思いました。
パネルディスカッション
最後にパネルディスカッション(というかQ&A的な感じになってしまいましたが)で各種フレームワークについての話をさせていただきました。Play2も出たばかりの頃はバグが多くていろいろ悩まされたものですが、なんだかんだでユーザ数の多い言語はエコシステムができ、便利なプラグインやIDEのサポートも受けることができたりといったメリットもあるので特に縛りがなければPlayを使うのがいいんじゃないかと思います。
今は業務でもPlay2を使っているのであまり積極的に推しづらい部分もあるのですがw、個人的にはScalatraはServlet APIを直接使うことができるので既存のJavaベースのWebアプリのポーティングはPlayよりもやりやすいと思います。組み込みJettyを使って起動しやすくしたりといったことができるのでパッケージとして提供するようなものにも使いやすいでしょう。また、動的にルーティングが追加できるといった柔軟性もあるのでSkinnyのように他のフレームワークのベースとして使うのにも向いているのではないかと思います。