ポストRailsと個人的に期待するPlay frameworkを推奨する5つの理由 | スマホアプリ開発記

スマホアプリ開発記

スマホアプリやサービス作りで感じたことを書いています。

エンタープライズ・アプリケーションの分野ではJava EEがほぼデファクトになっていると言っても過言ではありません。堅牢性やスケーラビリティを備えたインフラが整っており、大規模な環境における実績も豊富です。

一方、Webアプリケーションの分野では人気はいま一つです。その理由は、Java EEの重そう・めんどくさそうという印象だと思います。JavaでWebアプリケーションを作るには基本的にはServletやJSPを使いますが、これらは大規模システムや複雑なトランザクションまでも想定したJava EEによるものなので、手っ取り早くさくっとWebアプリを作りたいというライト層には敬遠されます。

Java の世界でも、StrutsやSpringを始めとしたMVCフレームワークが登場してきました。しかし、これらはどれもJava EEをベースにしており、かつアプリを動かすまでに多くの設定が必要になります。特にXMLファイルでの設定は、「こんなんやってるんだったらSQL書くのと本質的に何が違うのさ」という思いがどうしても付きまといます。結局「めんどうくさい」という印象は完全に払しょくできず、センセーショナルに登場したRuby on RailsにWebアプリケーションの世界では置いていかれてしまったように感じます。

私自身、Java信者でありながら、Java EEの(さくっと作ってさくっとメンテナンスしたいという観点での)生産性の低さには辟易としており、1. Railsに移行するか 2. Java基盤と共存させるためにJRuby on Railsを検討するかを真剣に考え始めました。ただ、Javaからの脱却にはためらいもあり、まずはJavaにおけるRails的フレームワークを検討してみることにしました。それでダメならRailsに行こうと。

様々なフレームワークを見てみましたが、その中で一際目を引いたのが「Play framework」でした。Play frameworkは2009年に登場した比較的出来立てのフレームワークで、今月にv1.1がリリースされました。かなり精力的に機能追加が行われており、またその完成度が既に高いレベルにあると感じました。

というわけで、Play frameworkがどんなものかをご紹介しましょう。

■ 理由1. Java EEを捨て去った!


Play frameworkはServletもJSPも使いません。そもそもJava EEの実行基盤を必要としません。多くのWebアプリケーションには一回のHTTPセッション以上のスコープでのトランザクション管理は必要ないのです。
JavaでWebアプリ=Java EEという既成概念を打ち破ったことで、様々な歴史的しがらみから解放され、真の軽量フレームワークが出来上がりました、てな感じです。

これにより、JavaによるWebアプリケーション開発の敷居が格段に下がりました。

POJO + JPAをベースにModelとControllerのコードを書き、ViewはhtmlにGroovyをベースとしたテンプレートを埋め込んで記述していきます。これが非常に軽快!体感レベルではRailsよりも必要なコード量(というか文字量)は少ないんじゃないかと思えます。そして、忌々しい setter、getterすらも必要ないのです。何とすっきりすることか。

■ 理由2. セットアップが超簡単!


JVM さえあればPlay frameworkは動きます。Play frameworkをダウンロードしてきて、プロジェクトを作成するplay newというコマンドを打って、play runとコマンド打てばもうWebアプリケーションが実行されます。設定もいりませんし、必要なライブラリの追加やインストールといった作業も全く不要。

Tomcatを始めとしたアプリケーションサーバー上で稼働させたいのであれば、play warというコマンドでwarファイルを作成しデプロイするだけ。

Eclipse に組み込むことも簡単。play eclipsifyというコマンドでプロジェクトをEclipse形式に変換し、インポートするだけ。これだけで、Eclipse上でサーバーを実行させ、デバッグもできるようになります。これにおいても何も設定がいりません。

■ 理由3. コンパイル不要!


これが一つびっくりした点です。基本的にコードはJavaで書いていくのですが、明示的にコンパイルする必要がないのです。コンパイルは実行時に裏で勝手に行われます。アプリケーションを稼働させた状態でJavaのソースファイルを変更してもそれがリアルタイムに反映されます。つまり、Javaをスクリプト言語のように扱えるということです。開発において構文チェックや補完機能を存分に活かすというコンパイル言語の特性と、実行させながら逐次修正させられるデバッグの容易さというスクリプト言語の特性を活かしたハイブリッドなフレームワークと言えるでしょう。

Servlet の開発経験があれば、これがいかにすごいことかわかると思います。Java EEを捨て去り、ステートレスに設計されているので、コード変更によるセッション情報の整合性(ホットデプロイ)についてそもそも考える必要がないのです。思い切ったなという感じですね。

■ 理由4. 設定不要!


絶対に必要な設定はデータベースの接続情報(ユーザー名とかホスト名とか)くらい。それ以外は何もいりません。

■ 理由5. とにかくこれまでに出てきた技術のいいとこ取りしまくり!


Play frameworkは既存のあらゆるフレームワークを研究し、いいところだけを集めてきたような印象を受けます。正に新しいフレームワークだからなせる業。
ベースはRails。Railsを知っていればすぐにフレームワークが理解できます。Modelの作成はJPAとアノテーションを使います。これは最新のEJBやSpringでも採用されていて今後はJava界で主流になるでしょう。Viewの作成にはGroovyをベースとした柔軟なテンプレートエンジンを採用。jQueryも何もせず最初から使えますのですぐに動的なWebアプリも作れます。最近はやりのmemcachedにも最初からつなげるし、もちろんMySQLにもつなげる。最新版のv1.1からは、Scalaにも対応。TwitterはRailsからScalaに乗り換えましたし、今勢いのある言語の一つです。ScalaはJVM上で動くため、Javaとの親和性が高いのです。

そして、特筆すべきは、これらをただ寄せ集めたわけではなく、いかに生産性を高めるかということを徹底的に追及し、それを高いレベルで実現しているということ。このようなアプローチのフレームワークは結局複雑でとっつきにくいものとなりがちですが、Play frameworkはJavaとhtmlがわかっていれば、後は少しのお作法を覚えればもうWebアプリケーションが作れるというレベルに落とし込んでいます。「フレームワークの勉強」にかかる時間はかなり少なく済みます。

■ とりあえずコーディングを垣間見てみよう!


Play frameworkの公式サイト に行くと、トップページで動画が見られます。10分弱でjQueryを使った動的なデータ追加のWebアプリケーションが作られます。さらに、1分ほどで数行のコードを追加するだけでCRUDアプリケーションを作ってしまいます。

Play framework

中村智武のCTO記


これがJavaで実現されているのです!いよいよWebアプリケーションにおいてもJava復権の時代がやって来る予感がしてきませんか?ライト層にはPHPやRubyにJavaが押され気味な状況を打破し、Javaエンジニアが増えることを願ってやみません。

しかしながらまだまだ日本語情報が少ない状況ですので、私も微力ながら積極的に色々情報を発信していきたいと思います。