play2.3 for javaの環境をMacに移行したのでメモ
今年はplay2.3 for javaでつくったWEBアプリをサイトに組み込む。
公式ドキュメント
参考にしたブログ
インストール
playは2.3からactivatorを利用する。
まずはactivatorをインストール。
以下からダウンロード。
適当な場所に展開する。
$ cd ~
$ mkdir app
$ cp activator-1.2.12-minimal.zip /User/masai/app
$ cd /User/masai/app
$ unzip activator-1.2.12-minimal.zip
$ ln -s activator-1.2.12-minimal activator
$ export PATH=$PATH:/User/masai/app/activator
activatorコマンドが使えるかどうか、以下で確認
$ activator -help
activatorを使って、playフレームワークのアプリケーションを作成する。
$ activator new my-first-app play-java
(scalaで開発する場合は、play-javaをplay-scalaにする)
ユーザのhomeディレクトリにアプリケーションディレクトリが出来る。
$ cd /User/masai/my-first-app
$ activator
ここで依存関係の解決にけっこう時間がかかるので途中でやめないように注意。
以下のコマンドでデフォルトのアプリケーションを起動することができる。
$ activator run
では、アプリケーションをEclipseに取り込んでみよう。
開発環境
Eclipse は Scala IDE for Eclipseを使う。
$ activator eclipse
[info] Loading project definition from /Users/masai/my-first-app/project
[info] Set current project to my-first-app (in build file:/Users/masai/my-first-app/)
[info] About to create Eclipse project files for your project(s).
[info] Successfully created Eclipse project files for project(s):
[info] my-first-app
処理が完了したら、Eclipseからmy-first-appのディレクトリをインポートする。
Eclipseでインポートしたら、Playアプリケーションのファイル構成を確認しよう。
routes
routesを使って、URLとコントローラをひもづける。
サンプル・アプリケーションには2つの設定が記述されている。
GET / controllers.Applications.index
これは、/に対してGETリクエストを受け取ると、controllers.Application.indexが呼び出されることを意味する。
controller
□Application.java
・index.renderがindex.scala.htmlの描画を担当する。
・index.renderの引数はmessageとして、index.scala.htmlへのパラメータになる。
・OkはHTTPステータスコード200を返す。
view
xxx.html.indexの形式で作成しておくと、コンパイル時にview.htmlパッケージ内に
xxxオブジェクトが作成される。この動作を前提として、コントローラのクラスを記述するため、
Application.javaではindex.renderを記述できる。
□index.scala.html
・変数の宣言
@(message: String)
これは、String型のmessageという変数を使用する、という宣言であり、とても安全である。
@main
main関数の呼び出し。main.scala.htmlの呼び出しである。
mainの引数はtitleとして、main.scala.htmlへのパラメータになる。
@mainアノテーション中の @play.weblcome もmain.scala.htmlに渡すパラメータである。
play20のwelcomeメソッドを呼び出す。
変数を渡すこともできるし、style = “Java” のように、styleという変数名で、Javaというvalueで
渡すことができる。
play20のwelcomeメソッドで様々なhtmlを生成して表示する。
□main.scala.html
本体のhtmlである。
・変数の宣言
@(title: String)(content: Html)
これは、String型のtitle、Html型のcontentという変数を使用する宣言。
@titleの部分で、index.scala.html のmainメソッドから渡された値が使用される。
@routes.Assets.at
routesは、conf.routesファイルで定義される。
routesには、/Assets.atが定義されている。/assetsから、GETでfileを取得するように記載している。
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
assetsでアクセスするファイルは、パスpublicとしている。
実際、以下のディレクトリには、stylesheetsとimages、javascriptsディレクトリがある。
/Users/masai/my-first-app/public/main
@content
これは、index.scala.htmlのplay20.welcomeメソッドが生成したHtml型のオブジェクトが渡される。play29.welcomeはplayのライブラリに含まれる。
バージョン管理からはずすファイル
logs
project/project
project/target
target
tmp
dist
.cache
次回
テンプレートエンジン