技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Playframework 2.2, 2.3 現状のおさらい。

まず最初に断っておく。現状(2014/08/25) 2.4 が RC 状態にある。

そして、2.4 には触れない事を断っておく。

Playframework2.2 おさらい

仕事で Playframework 2.2.3 を延々使ってると、新しいバージョンアップに疎くなるので、とりあえず乗り換えも視野に入れて弄ってみようと思う。

結構いろんなバージョンアップがあるが、その流れを追って見る。

まずはおさらい的に Playframwqork2.2 から(ただし scala に限る)

  • Action の Result 方が SimpleResult で統一された(応答型が単純化されてHappy)
  • HTTP1.1 のコネクションキャッシュに対応
  • Action の自作がしやすくなった(例えばログイン管理なんかやる場合のカスタムアクションが作りやすくなってる)
  • Iteratee (通信とかデータストリームをかなり細かくチューニングする場合に使う)改良しやすくなった。
  • sbt 0.13 サポート
  • ネイティブパッケージプラグインを使うための stage/dist 操作の見直し
  • 組み込み gzip サポート(通信圧縮)。https://www.playframework.com/documentation/ja/2.2.x/GzipEncoding 昔(Play2.0.x)自前で根性出して Iteratee 実装したっけなぁ

あと、2.1.x 系にも入ったのか知らんけど、2.2.4 から、ContentNegotiation が入った。

これはHTTPリクエストの Accept-Type ヘッダによって、返すコンテンツを分岐する機能で、一つの URL で複数種類の応答を返す事ができるって事。

例えば、/todos という URL にブラウザで直接アクセスしたときは、TODO の一覧表示を html で返すけど、Accept-Type を text/json にした場合、JSON のデータが返ってくるということができる。

https://www.playframework.com/documentation/2.2.x/ScalaContentNegotiation

むしろ今まで無かったのなんなの?って思わなくもない。

ほか色々入った筈だけど、細かく覚えてない。良く後輩に言う事だけど、公式は 2.2 までは日本語化されたんだから、公式見れ。

Prayframework 2.3.x の機能を見てみようか

で、Playframework 2.3.x に移る訳だが、リリースノートから見てみようか

  • play コマンドが activator (typesafe-activator)に統合された(これに伴い、HomeBrew では brew install typesafe-activator のインストールを推奨するようになった)
  • ビルドタスクの改善
    • sbt-web の導入:これまで html/css/js の操作・応答が play 独自だったものがオープン化した
    • Auto Plugin に対応:sbt 0.13.5 サポートによって、設定コードが減った(ぶっちゃけ開発側の都合だろうとか思わなくもないが)
    • Asset Pipeline and Fingerprinting : 指定した順序で assets を処理できるのと、追加が容易になった。キャッシュとか突っ込めば、処理が高速化できそうだとか
    • .ivy2 に ivy リポジトリを配置するようになった。これで play 以外のビルドタスクと共存できる
  • Java8 に対応、それによるパフォーマンスの向上
  • Scala2.11 に対応
  • WS ライブラリが、より細かく動作を指定できるよう改修(今まで何かと使いづらかった)
  • WebSocket の改良:もう少し書きやすくなった(2.2 以下と記述互換性なし)
  • 2.2 で始まった Result 型の見直しが完了
  • Anorm の改良(普段 ScalaActiveRecord 使うので割とどうでもいい)
  • SSLEngine の可変化。サーバアプリで可変にしたけりゃどうぞ。 まじめな話、本番運用で並列を考えれば、フロントに Apache 置いたり、ロードバランサ置いたりするパターンが殆どなので、あまりありがたみはない。