PlayFrameworkで開発してみた

先日公開を開始した『ゲラゲラ!』は『Play framework』を使用して開発しました。

Play frameworkとは

よく「JavaRuby on Rails」という表現で紹介されているJavaのWEBアプリフレームワークです。
私はRoRの経験が無いので比べることができないのですが、とにかくスピーディーに簡単にWEB開発が行えるようにというコンセプトのもと作られています。 Java及びScalaで記述することができます。

最近herokuにて採用されたこともあり、徐々に知名度が上がっているようです。
私もherokuがきっかけでPlayの存在を知りました。
面白そう!と思ったのでとりあえず公式ページのチュートリアル(ブログ作成)にチャレンジしてみたのですが、煩わしい設定も無いし、何よりコード量の少なさにびっくり!
私はJavaフレームワークといえばStrutsという人間だったので、この簡素さには感動しました。

以下、play1.x系のざっくりとした開発手順です。
ほんとにざっくりですが、雰囲気だけでも伝われば幸いです。


プロジェクト準備

ターミナルからコマンドを1行叩くだけです。
IDEを使用する場合、EclipseIntelliJ IDEA、Netbeansのプロジェクトがコマンド1行で生成できます。

モデルクラス作成

@Entityアノテーションを付与すると、publicプロパティが自動的にデータベースにマッピングされます。
play.db.jpa.Model(JPAヘルパを自動的に提供してくれるクラス)を継承しておくと、主キーとなるidを生成してくれたり、便利なデータ操作メソッドが使えるようになったりします。

このO/RマッピングにはHibernateフレームワークが使用されており、モデルクラスの定義内容を元にデータベースへのスキーマ作成を行ってくれます。
項目変更が生じた場合もモデルクラスさえ変更すればOK!

コントローラークラス作成

アクションを定義していきます。
画面側は必要に応じて、このアクションを呼び出して様々な処理を実行することになります。
データ取得・加工して呼び出し先の画面に受けわたす、または画面から渡されたデータをチェック・加工・DBへ格納するなど、画面とデータベースの橋渡しをします。

renderメソッドを呼び出すと、アクションと同名の画面(html)が呼び出されます。 ここの紐付けに設定ファイルなどは特に必要ありません。

画面(html)作成

画面(html)の動的な部分はGroovy言語を使用して記述します。
モデルオブジェクトも画面で使用するためにごちゃごちゃと変換する必要もなく、直感的に操作・出力することができます。

共通デザインを共有するためのテンプレートデコレータ機能、自作タグ作成機能などもあります。

パス設定(HTTPルーティング)

各アクションを呼び出すためのURIパターンを定義します。

動作確認

JUnitによる単体テストSeleniumによるブラウザテストを行えます。

実際の動作を確認するにはrunコマンドでアプリケーションを実行します。
Play!は設定次第でホットコード置換が可能です。
逐一アプリケーションを停止させなくてもコードの修正が行えます。

データベースはインメモリH2データベースを使用できるため、データベースを用意せず動作確認を行うことができます。
また、ymlファイルで事前にテストデータを準備することができます。


他にもモジュール追加によるCRUDの使用、認証機能の追加などWEBアプリケーションを作成するにあたって便利な機能が揃っています。
チュートリアルを一通り勉強すると大体分かると思いますので、興味のある方は是非チャレンジしてみてください。

ちなみに私はPlay1.x系を使用していますが、最新は2.x系になります。
まだベータ版ですが、こちらで開発を行っている方も多いようです。
ただ1.x系もまだ当分はサポートされるとのことですので、安定版がよいかたは1.x系をどうぞ。

追記: 2.x系は既に正式リリースされているとのことです。
日本語サイトしか見ておらず気付きませんでした・・・。
ご指摘ありがとうございました!