IntelliJ IDEAの場合
IntelliJ IDEAを使用する場合も、Eclipseと同様にPlayコマンドでIDEAプロジェクトに変換することができますので、変換後にIDEAにインポートします。
(1)IDEAプロジェクトへの変換
作成したアプリケーションをIDEAプロジェクトに変換します。
「play idea」コマンドでIDEAプロジェクトへの変換することができますが、ソースコードを合わせて取得するためPlayコンソールから「idea with-source=true」を実行します。
「play」コマンドでPlayコンソールを起動します。
Playコンソールから「idea with-source=true」を実行します。
IDEAプロジェクトに必要な以下のディレクトリが作成されました。
- .idea
- .idea_modules
これで、IDEAからインポートしてアプリケーションの開発を行うことができます。
Play2スタートアップアプリ解説
開発環境が整いましたので、Playのスタートアップアプリがどのように動いているか確認しておきましょう。
(1)アプリケーションの流れ
Play2はMVCモデルに則り、「Model」「View」「Controller」に加え「routes」と呼ばれる設定ファイルにより構成されます。
以下の図のように「routes」がリクエストURLを「Controller」にマッピングし、呼び出された「Controller」が「View」のテンプレートを表示します。スタートアップアプリでは「Model」は使用しません。
(2)ソースコードの解説
順にソースコードを見ていきましょう。アプリケーションがアクセス可能なURLは、すべて「routes」に定義しています。
GET / controllers.Application.index
「/」のGETリクエストを受けると「controllers.Application.index」が呼び出されます。controllersパッケージ内にあるApplicationオブジェクトのindexメソッドです。
object Application extends Controller { def index = Action { Ok(views.html.index("Your new application is ready.")) } }
indexメソッドは「Ok()」でHTTPステータスコード「200 OK」を返します。応答するHTMLは「views.html」パッケージの「index」オブジェクトによって、テンプレート「index.scala.html」から生成されます(※1)。
@(message: String) @main("Welcome to Play") { @play20.welcome(message) }
「@(message: String)」でindexメソッドから「"Your new application is ready."」というString型のメッセージを変数「message」に受け取ります。「@main(main.scala.html)」と「@play20.welcome(play20/welcome.scala.html(※2)」を呼び出しています。
@(title: String)(content: Html) <!DOCTYPE html> <html> <head> <title>@title</title> <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")"> <script src="@routes.Assets.at("javascripts/jquery-1.9.0.min.js")" type="text/javascript"></script> </head> <body> @content </body> </html>
「@(title: String)(content: Html)」で「index.scala.html」から「"Welcome to Play"」というString型のタイトルを変数「title」に、「@play20.welcome(message)」というHTMLコンテントを変数「content」に受け取り、上記のようなHTMLを構成しています。
<head>タグ内で参照しているファイルは「public」フォルダに配置されています。
-
CSS
- /public/stylesheets/main.css
-
画像
- /public/images/favicon.png
-
JavaScript
- /public/javascript/jquery-1.9.0.min.js
titleとbody部は「index.scala.html」から受け取った「"Welcome to Play"」と「@play20.welcome(message)」をそれぞれ出力しています。