「Play framework」は、サーバサイドJavaとScalaのためのMVCフレームワークです。この連載では、主にJavaのフレームワークとしてのPlay frameworkを紹介していきます。でも「Javaで、Web向けで、MVCで……」なんて、ありふれた感じですよね。それなら「Scalaで、どう作るのか」という話の方が興味あるという方もいるでしょう。
しかし、Play frameworkはバージョン1まではJavaのフレームワークとして作られていました。また、ScalaはJavaVM上で動作するプログラミング言語です。つまり現在の最新バージョンの2でも基礎の部分で動いているのはJavaです。Play frameworkを知るためには、まず基礎から固めていくのが正攻法だと思います。Scalaについて知りたい読者は、以下の記事を参照してください。
新しいフレームワークの誕生には理由があります。既存のフレームワークの修正だけでは解決できない問題を、新しい考え方を取り入れて抜本的に改善しようとするときに、新しいフレームワークが登場します。
Play frameworkを学ぶ前に、新しいフレームワークが作られる背景に思いをはせ、Play frameworkの心を知りましょう。Play frameworkは既存のフレームワークから、どのように進化したフレームワークなのでしょうか。まずは、Play frameworkが解決する課題から理解しましょう。
既存のJavaのWebフレームワークは重厚長大であり、整然としたプログラムができる代わりに生産性が高くないという問題があります。いまは「時代の流れが速い」といわれています。システムを作るときも、じっくり腰を据えて作るより「スピード感」が相対的に重要になってきています。また、スピード感と同時に求められるものが「変更に対する強さ」(柔軟性)です。
「スピード感」「変更に対する強さ」、この2点は既存のフレームワークの機能を改善するのでは解決が難しい課題です。では、どのような考え方を取り入れて、これらの問題を解決するのかを見ましょう。
既存のフレームワークを改善するために、新しい考え方を取り入れたフレームワークが必要と考える人たちが注目したのは、生産性の高さで勢いのあるスクリプト言語です。数あるスクリプト言語の中で注目されたのはRuby、およびその代表的なフレームワークである「Ruby on Rails」です。
Ruby on Railsは高い生産性を誇り、言語としてのRubyの普及を進めた、プログラミング言語の「キラーフレームワーク」という一面もあります。Ruby on Railsの特徴として、2つの代表的なルールを基礎となる考え方としています。そのルールとは以下のものです。
まず、「繰り返しを避けよ」ですが、これは「1つのことを表すのに、記述個所を1つに限定する」という考え方です。あえて3文字略語にしなくても、皆さん意識しているのですが、意識するだけでは難しく、どうしても重複コードを書いてしまいます。コードを重複させてしまった場合、どう重複のないコードに軌道修正できるかが大切です。つまり、リファクタリングしやすいフレームワークであることが重要です。
そのため、Play frameworkでは、リファクタリングしても変更の誤りを確認するためのテスト環境が充実しています。具体的には、テンプレートやコントローラまでテストできるライブラリ、環境別(本番・開発環境などの切り替え)に画面表示を変更できるため、開発時には詳細なエラー情報の出力、が挙げられます。これにより、コードの重複を避けメンテナンス性の高いコードを実現できます。
そして「設定より規約」ですが、これは、いままでのJavaのWebフレームワークはXMLなどの設定ファイルを中心に駆動する仕組みでした。しかし、この方法では規模が大きくなればなるほど設定ファイルの記述量が増え、いわゆる「XML地獄」に陥ります。「設定より規約」とは、それに対応するための考え方です。フレームワークで一定のルールを定め、それに従うことで設定ファイルを書かないでも動くような仕組みを提供します。
以上が簡単ですが、Ruby on Railsの特徴です。
そしてPlay frameworkは、このRuby on Railsから影響を強く受けたフレームワークです。つまり、Play frameworkが見せる新しい世界とはRuby on Railsが見せる未来とかなり近いものがあります。
なおJavaとRubyでは、コンパイルを要する言語と、スクリプト言語という差があります。Javaはソースの変更のたびにビルドし直す必要があります。通常はIDEで、その辺りを吸収できますが、IDE自体がヘビーです。Javaがコンパイルを要する言語というところはPlay frameworkでも変わりませんが、Rubyに近い操作感を得られるように工夫されています。
Play frameworkでは、ソースが更新されると即座に変更が反映されるようになっています。現在IDEでの開発が主流ですが、フレームワークでこういった機能を持つため、IDEがなくても軽量なエディタだけで開発可能です。
Play frameworkは、このような考え方に基づいて作られたフレームワークです。Javaで代表的なフレームワークからの基本思想の変遷をたどると、以下のようになります。
Play frameworkの特徴は、ほかにもありますが、その説明は次回以降に詳しくしていきます。ここで理解しておきたいのは、Play frameworkはRuby on Railsの哲学をJavaで実現することを目的としたフレームワークです。Javaでの常識は横に置いて、Ruby on Railsの哲学に従うことが、このフレームワークを生かす“鍵”になることを念頭に置いてください。
ちょっと前置きが長くなりましたが、次ページからはPlay frameworkを始めるために環境設定をして、初めてのPlay frameworkプロジェクトを作成し、動かしてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.