Play Frameworkが良い件

約2年前に出会ったPlay Frameworkがステキなのでステキポイントをご紹介します。

Play Frameworkって?

公式サイト

一言で言うと、JavaとScalaで利用できるWebフレームワークです。
1.2.x系と2.x系があり、1.2.x系はフレームワーク自体がJava、2.x系はScalaで実装されてます。

※僕はJavaでサーバ処理を書くことが多いので、ここからの説明はJava+Play1.2.xでの利用ベースとします。

 

さよなら、JavaEE

PlayFrameworkの特徴として、JavaEEを使ってないことが主に上げられると思います。
少し前まではJavaでWeb開発と言えば、Servletベースのものが主だったかと思いますが、
Servlet周りを一切使わず、まったく新しいフレームワークとして誕生しました。

 

最近のフレームワークっぽさ

最近という言い方はアレですが、MVC構造をベースとした「設定より規約」な感じのものです。
RubyOnRailsのJava版と思って頂ければ。。。

 

JPAが癖あるけど慣れると好きになる

DBのORマッパーとしてJPAを採用しています。
DBリクエストをJPQLというSQLっぽいもので書くのですが、
これが最初慣れないこと慣れないこと。。。

ただ、一度慣れてしまえば結構ヤミツキになります。

 

renderXXXXがステキ

PlayFrameworkでユーザ画面(ブラウザ画面)を返す場合、「renderXXX」というメソッド群を呼びます。
基本はHTMLテンプレートを描画するような感じなのですが、

 

  • renderJSON
  • renderBinary

 

など他のデータ形式にも標準で対応してます。

 

JSONなんかは、HashMapにデータ入れてそれを渡すだけで
JSON形式で出力されちゃうので、ほんとAPI作るのには楽だと思います。

 

BinaryはPDF、CSV、ExcelなんかのオブジェクトをDLさせるのに使えます。

 

その他いろいろ揃ってる

その他、箇条書きにしちゃいますが

  • 非同期ジョブ(月次バッチとか
  • メール送信
  • 認証画面作成

などが標準でサポートされてます。

 

最後に

と、PlayFrameworkでステキって思ってることザザザっと書いてみましたが
最近のフレームワークは大体同じような機能を持ってるとは思います。
Rails、CakePHP、FuelPHP、MVC(.NET)とかとか。

 

唯一、帳票出力が標準でなかったのが不満だったのですが、
JasperReportをPlayFrameworkに組込み事に成功したので
これもクリアして、個人的にはかなり満足なものとなっています。

 

最近、2.x系を利用してScalaでの開発も始めたので
近くそっちのネタも書いてみようと思います。