Java,Scala言語用フレームワーク Play Framework について、インストールからeclipseとの連携までを記載。基本的に公式ページ(日本語訳あり)を見ながらやるのがよいと思うのでここでは軽く流す程度にしておきます。※注意:Rails勉強中に見つけて興味持った程度なので詳しくはありません。
Play Framework 公式ページ。
https://www.playframework.com/
Play Framework ダウンロードページ。
https://www.playframework.com/download
ドキュメント。(2.3.x系、日本語)インストール・開発方法など一通り解説あり。
https://www.playframework.com/documentation/ja/2.3.x/Home
1.activator ダウンロード&インストール
今回試したPlay Frameworkのバージョンは2.3.7(activator 1.2.12)です。古いバージョンはメインとなるコマンドがplayコマンドでしたが、最近のバージョン(2.3以降?)ではactivatorというより汎用的なコマンドに変わっています。ダウンロード&ZIP展開してどこか適当なディレクトリに配置します。その他 Play Framework を使うにはJDK6以上が必要とのことなのでなければダウンロード&インストールしておきます。
2.環境整備
java, javac, activator コマンドがコマンドプロンプトで実行できるようPATH環境変数を設定します。設定後コマンドプロンプトを起動して
$ java -version
$ javac -version
$ activator help
を実行してバージョン情報・ヘルプ等表示されればOKでしょう。
3.プロジェクト作成
Playプロジェクトを作成するには“activator new [プロジェクト名]”を実行します。
$ activator new myapp
初回実行時は必要なファイルをダウンロードするので多少時間がかかります。しばらくするとプロジェクトの元となるテンプレートをどれにするか選択を求める画面が表示されます。
Fetching the latest list of templates…
Browse the list of templates: http://typesafe.com/activator/templates
Choose from these featured templates or enter a template name:
1) minimal-akka-java-seed
2) minimal-akka-scala-seed
3) minimal-java
4) minimal-scala
5) play-java
6) play-scala
(hit tab to see a list of all templates)
ここではJavaベースプロジェクトを作成するので“5) play-java”を選択します。これでmyappディレクトリの中にJavaベースのPlayプロジェクトが作成されました。activatorコマンドのプロジェクト名の後ろにテンプレート名を直接指定することも可能。
$ activator new myapp play-java
テンプレート選択画面にリンクがありますがテンプレートリストはhttp://typesafe.com/activator/templatesを参照。
4.実行&ブラウザで確認
プロジェクトを作成するだけで実行に必要なファイル・設定などが一式作成されますのですぐに実行できます。プロジェクトディレクトリに入って“activator run”を実行します。
$ cd myapp
$ activator run
ここでも初回実行時に必要なファイルをダウンロードするので多少(かなり?)時間がかかります。以下のようなメッセージが表示されたらサーバ起動成功です。
— (Running the application, auto-reloading is enabled) —
[info] play – Listening for HTTP on /0:0:0:0:0:0:0:0:9000
(Server started, use Ctrl+D to stop and go back to the console…)
ブラウザで“http://localhost:9000”にアクセスするとmyappプロジェクトの画面が表示されます。サーバ終了はCtrl-Dです。サーバ起動時にbind関連エラーが表示されるときは既に同じポート(9000)を他のプログラムがLISTENしている可能性があります。netstatコマンド等で確認してそのプログラムを停止するか、以下のようにしてLISTENポートを他の番号にしてください。
$ activator “run 9001”
※ダブルクォーテーションは必須です。
詳しくはこのあたりが参考になると思います。
5.Javaソース編集&ブラウザアクセス
ブラウザでアクセスしたときにまだコンパイルされていないJavaソースファイルがあると自動的にコンパイルされます。つまりJavaソースファイル修正&ブラウザアクセスだけで修正が反映されるということです。プロジェクトディレクトリ内にあるapp/controllers/Application.javaの
return ok(index.render(“Your new application is ready.”));
を
return ok(index.render(“Hello, World!”));
に変更してブラウザでアクセスすると、自動的にコンパイルされて変更後の内容がブラウザに表示されます。
6.eclipseにプロジェクトをインポート
Playではプロジェクトをeclipseにインポートできるよう設定を調整する機能が付いています。プロジェクトディレクトリ内で下記コマンドを実行するとeclipseにインポートできるようになります。
$ activator eclipse
コマンド実行後”[info] Successfully created Eclipse project files for project(s):”といった文字列が表示されれば完了。eclipseを起動してプロジェクトをインポートすればeclipseで開発できるようになります。
7.eclipseでデバッグ実行
eclipseでデバッグ実行するやり方。まずactivatorコマンドに-jvm-debug引数を付けてJavaVMをデバッグできる状態で起動します。
$ activator -jvm-debug run
次にeclipseのプロジェクト名を右クリックして「デバッグ」-「デバッグの構成」を選択。「リモートJavaアプリケーション」を選択して「新規の起動構成アイコン」を押下。デバッグ実行したいプロジェクトを選択してポート番号を9999(-jvm-debugのデフォルトポート)に変更して、適用ボタン押下、デバッグボタンを押下します。エラーダイアログ等表示されなければデバッグ状態になっています。先ほど編集したapp/controllers/Application.javaのindex()メソッドのreturn文にブレークポイントを貼ってブラウザでアクセスすると、そのブレークポイントで停止するはずです。
デバッグ用ポート番号はデフォルトで9999です。変更したいときは-jvm-debugの次に指定します。
$ activator -jvm-debug 9991 run
HTTPサーバ用ポートとデバッグ用ポート両方変更したいときは以下のようにします。
$ activator -jvm-debug 9991 “run 9001”