Play frameworkのWebページ生成の流れ
前回の記事「Play frameworkのDB操作を楽にするEBeanの基礎知識」では、Play frameworkとDBとの接続方法や操作方法を紹介しました。今回はビューに焦点を当て、Java開発者にとって役立つPlay frameworkの使い方を紹介します。
まず、Play frameworkでのWebページ生成の全体像を簡単に説明します。Play frameworkを利用したアプリケーションでは、次の流れでWebページを生成します。
- クライアントからHTTPリクエストを受け取る
- conf/routesファイルの定義に基づいて、処理を行うJavaメソッドを特定
- 処理を実行(DB操作など)
- 処理結果に基づきHTTPレスポンスを返す
今までまったく意識していませんでしたが、上記の流れでWebブラウザに処理結果を表示しています。意識しないでも動かせていたのは、初めにプロジェクトを作成したときに一番単純な形で動作するようにサンプルアプリが作られていたからです。
前回はMVCフレームワークの「M」、つまりモデルに該当する部分を説明しました。それは、先に列挙した流れでは3に該当するところです。今回は次の「V」に該当するビューについて説明します。これは先に列挙した流れでは4に当たります。
なお1と2については、次回の内容なので、楽しみにお待ちください。
Play frameworkのビューは2.0からScalaベースに
Play frameworkのビューは何を使うのでしょうか。通常のJavaのWebアプリケーション開発では基本的にはJSPを使いますが、Velocityのようなテンプレートエンジンを使用することもあります。Play frameworkでは、これらJavaでおなじみのビューの技術を使用しません。Play frameworkで使用するビューはScalaを使用した独自のテンプレートエンジンです。
なぜ、Scala
ところで、なぜPlay frameworkのビューはScalaベースなのでしょうか。以前までの1系のPlay frameworkではGroovyを使用していました。なぜこのような大きな方針転換があったのでしょうか。
図をご覧ください。これは、Play frameworkのアーキテクチャの変遷を図にしたものです。
この図の通り、フレームワーク全体のアーキテクチャが見直され、1系まではアドオン的なポジションだったScalaが、2系からは一気にフレームワークのメインストリームに昇格しています。
そして、2系ではScalaの持つ型安全性のメリットを最大限享受しようという考え方があります。そのため、ビューもScalaを使おうということになったようです。
Scalaは難しい?
日本Play frameworkユーザー会が翻訳したPlay 2.0の紹介から2系フレームワークについての方針を見ることができるので、以下に引用します。
私たちはPlay 2.0において、コードのほとんどをコンパイル時にチェックさせるという考え方をさらに推し進めたいと強く考えています。そのため、私たちはPlayのアプリケーションのデフォルトとして、Scalaベースのテンプレートエンジンを使うことに決めました。
ここで、Javaのフレームワークだと思って使おうとしていた人は「Scalaを覚えないと使えないのか」と思うかもしれません。でも、それは心配ご無用です。このページではビューについて以下のようにも書かれています。
Play 1.xでテンプレートを書くために、Groovyを本当に知っていることが必要だったわけではないのと同様に、ScalaのエキスパートにならなければPlay 2.0でテンプレートを書くことができないということではありません。
Scalaが主に使われるのは、Javaに極めて近いシンタックスでオブジェクトグラフをたどり、表示する情報を取得するところです。とはいえ、Scalaの持つパワーを生かして高度に抽象化されたテンプレートを書きたいなら、式指向で関数型であるScalaが、テンプレートエンジンにはぴったりです。
つまり、ビューの部分ではScalaで記述するのですが、Javaを知っていれば身に付けるための労力はそれほどのものではなく、実際に触ってみればVelocityのようなテンプレートエンジンでの記述方法を勉強する程度のことだな、と分かります。
また、Scalaはテンプレートを記述するのに相応しく、得られるメリットも多いということです。
次ページでは、これから実際にScalaベースのテンプレートに触れて、先に述べた簡単さと便利さを体感しましょう。
なお、Scalaについて詳細を知りたい方は、以下の連載をご覧ください。
- スケーラブルで関数型でオブジェクト指向なScala入門
Scalaの特徴を紹介し、基本構文や関数、クラスなど、Scalaの基本的な機能について解説する入門連載
Copyright © ITmedia, Inc. All Rights Reserved.