最先端な人には今さらなんだろうけどPlay!が面白すぎる。
何がいいのか。どこが楽なのか。いろいろあるけど、思いつくままに羅列してみると…
- Model(DBアクセス部品)が付属している。JPAを基にしているけどずっと簡便でとっつきやすくコード量も少ない。setterやgetterもいらないので通常のJavaBeansよりもコード量が少ないのに検索や更新ができる。
- パラメータの受け取り方が超簡単。コントローラのメソッドにパラメータ名の引数を用意してやるだけ。型変換も勝手にやってくれる。Fileもそのまま受け取れるのでアップロードも手間要らず。
- バリデーションが簡単。引数にアノテーションをくっつけたりバリデーションクラスを呼んだりするだけ。
- ルーティングがかなり柔軟に設定できる。/path/abc というURLにアクセスしたときの「abc」部分に名称をつけて通常のリクエストパラメータと同様に受け取れる。正規表現で指定も出来る。
- CAPTCHAが最初から利用できる。設定とか全然いらない。Javaコード4行とimgタグ書いて終わり。
- リダイレクトが超簡単。メソッド呼ぶだけ。引数が必要ならそれも渡すだけ。簡単すぎてバカになりそう。
- プロジェクトをEclipseにインポートできるように設定ファイルを作ってくれる。クラスパスとかサーバ起動の設定も全部。Netbeansにも対応してる。
- 付属のサーバは一度起動したらほったらかしでいい。コードを直すと即反映。修正→確認が圧倒的に楽。
- ステートレス。sessionオブジェクトは用意されてるけど実際はCookieを使用している。サーバ分散化に有利。
- メッセージファイルがpropertiesと書き方こそ一緒なもののUTF-8で統一されているのでnative2asciiがいらず地味に便利。XMLのように本来必要じゃない情報(宣言や各種タグ)も無くていいのですっきり。
- 設定ファイルが少ない。ルーティング設定とアプリケーション全体の設定をやっておわり。クソみたいな意味不明の肥大化xmlが要らない。
- 開発モードにすると、エラー時にエラー箇所(ソースコードの抜粋)が表示される。単にスタックトレースが出るだけのエラー画面とは雲泥の差。
- ページの継承が超簡単。StrutsのTilesみたいなわけわかめのうんこxmlなんかいらない。htmlに一行書くだけ。
- 日本語ドキュメントが充実。かなり細かく、かつわかりやすく書いている。もうヘタな解説サイトとか要らない。ここだけブックマークに入れておけば事足りる。サンプルコードもたくさん。そもそも上記全てが日本語ドキュメントサイトに書いてある。
- GAE用にデプロイするのも簡単らしい(まだ試してないけど)。
まだ触って一週間だからところどころ誤解や間違いはあるかもしれないけどとにかくすごい。問題点としては…
- Javaの作法を無視している(だからこそ利点が生まれたのだが)。初心者がいきなりこれをやるとJavaの勉強にならないどころか悪影響か?
- Viewのタグの種類がやたら多くてまぎらわしいので最初はわけがわかんなくなる。
- 簡単すぎるのでばかになる。特にJavaEEを忘れる(Play!ではJavaEEを一切使用しない)。
- Wicketは画面部品の制御も全部Javaソースで行うがPlayはテンプレートにロジックが入り込むのでその部分でスパゲッティになりやすいかも。それでもStrutsよりは見やすそうだけど。
- Modelは超便利だけど検索はJPQLを書かなきゃいけなかったりしてRoRとかに比べるとまだちょっと甘い。問題点というにはゼイタクすぎるか。
生産性という面で見ればJavaのWebフレームワークとしては圧倒的だろうなー。本当に作りやすくてすぐできる。それにわかりやすい。初めて使うフレームワークなのに作ってて行き詰まったところがなかったもん。Wicketとかやっててわかんなかったこと結構あったからな。
ちなみにテンプレートエンジンとしてGroovyを使っているらしいけど、Groovyの勉強とかは特に必要なかった。内部で使ってるだけで、Groovyを直に書く機会はほとんどないみたい。