約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での開発も始めたので
近くそっちのネタも書いてみようと思います。