Play Framework2 Meetupに行ってきた

最近は業務でも再びPlayを使うようになったのでPlayの世の中の状況をリサーチするべくドワンゴさんで開催されたPlay Framework2 Meetupに行ってきました。個人的に参考になったセッションの内容をメモっておきます。

Play のこれまでとこれから @さん

オープニングはScalaとPlayの歴史。うんうん、そんなこともあったなーと思いながら聞いていた方も多かったのではないでしょうか。とてもよいまとめでした。LiftはScalaに興味を持ったプログラマの多くを撃退したという意味でかなり罪深い存在かもしれないというのは新たな発見でしたw ビューファーストという発想自体はよかったと思うんですけどねー。

やさしい Iteratee 入門 @さん

個人的にとても勉強になったセッションでした。IterateeはPlayを使う上で避けては通れない概念でなかなか難しい部分なのですが、非常にわかりやすく解説されていました。PlayでWebSocketを使う際にもIterateeの知識が必要になるのですが、Play 2.3ではアクターを使ってWebSocketサーバを実装できるようになるみたいです。ActorとWebSocketは非常に相性が良いと思っているのでこれは嬉しい新機能ですね。

ActionBuilder の罠 @さん

いつもわかりやすい説明でお馴染みのがくぞ先生はActionBuilderとその問題点についてお話しされていました。ActionBuilder(Play 2.2で導入されたもののようですが、個人的には存在を知りませんでした)はアクションをカスタマイズするときに便利だけど型の制約や合成ができないという問題があるので、そういう場合はstackable-controllerを使うといいよ、とのこと。認証やらDBのトランザクション制御など実際のアプリケーションではアクションは必ずと言っていいほどカスタマイズすることになるのでチェックしてみようと思います。

sbt-webを使ったプラグインの作り方 @さん

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のように他のフレームワークのベースとして使うのにも向いているのではないかと思います。

まとめ

Playを普通に使っている人たちも増えてきて、最新情報であったり「みんなこういう部分はどうやっているんだろう?」という疑問を共有できるコミュニティがあるのはいいですね。

一方で@さんが仰られていたように「デファクトが決まらなくても自分で適切なものを選択して使いこなせるエンジニアが増えるといい」というのはその通りだなと思いました。自分もいつもScala絡みでわからないことや追いきれていない情報があるとTwitterで助けていただくことが多いので、もっと自分で解決できるようにならないとなぁ…と反省することしきりです。

さて、次のScalaイベントはScalaMatsuriでしょうか。日本のScala界隈も盛り上がって来ましたね!