お好みの IDE を設定しよう
Play と共に作業することは簡単です。Play が自動的にソースファイルに加えられた変更をコンパイルしてリフレッシュするので、高性能な IDE は必要ありません。シンプルなテキストエディタを使って簡単に作業することができます。
とは言え、近頃の Java IDE は自動補完、逐次コンパイル、リファクタリングやデバッグのアシストと言ったクールで生産的な機能を提供します。Play は Netbeans, IntelliJ IDEA と Eclipse プラットフォームをサポートします。
Eclipse 設定ファイルの生成
Play は Eclipse の設定を簡易化するコマンドを提供しています。Play アプリケーションを動作する Eclipse プロジェクトに変換するには、 eclipsify コマンドを使用してください:
# play eclipsify myApp
その後、 File/Import/General/Existing project... メニューから Workspace にアプリケーションをインポートする必要があります。
eclipsify コマンドはアプリケーション用にいくつかのランチャを生成します。主要なランチャは Eclipse の Run As コマンドで実行するだけで利用できます。 Connect JPDA launcher を Debug As から使用することで、いつでもデバッグセッションを始めることができます。サーバを起動したままでデバッグセッションを終了することができます。
classpath の変更のような重要な変更をアプリケーションへ加えるときは、設定ファイルを再生成するために eclipsify を再度実行します。
加えて、Play の配布物中の support/eclipse/ ディレクトリにある Eclipse プラグインを利用することができます。プラグインをインストールするには、単に JAR ファイルを Eclipse インストールパスにある dropins フォルダにコピーします。
チームで作業しているときは Eclipse 設定ファイルをコミットしないこと!
生成した設定ファイルにはフレームワークをインストールした場所への絶対参照が含まれています。これはあなた自身のインストール作業に特化したものです。チームで作業するときは、それぞれの開発者は自分の Eclipse 設定ファイルを個人で管理しなければなりません。
NetBeans 設定ファイルの生成
Play は Netbeans の設定を簡易化するコマンドを提供しています。既存のアプリケーションを妥当な Netbeans プロジェクトに変換するには、 netbeansify コマンドを使用してください:
# play netbeansify myApp
その後は、そのアプリケーションをそのまま Netbeans プロジェクトとして開くことができます。
アプリケーションを開始するには、標準の Run ボタンを使用してください。アプリケーションが起動されていれば、いつでも Debug ボタンを使ってデバッグセッションをアタッチすることができます。デバッグセッションを終了してもサーバは止まりません。
classpath の変更のような重要な変更をアプリケーションへ加えるときは、設定ファイルを再生成するために netbeansify を再度実行します。
チームで作業しているときは nbproject/ ディレクトリをコミットしないこと!
生成した設定ファイルにはフレームワークをインストールした場所への絶対参照が含まれています。これはあなた自身のインストール作業に特化したものです。チームで作業するときは、それぞれの開発者は自分の Netbeans 設定ファイルを個人で管理しなければなりません。
IntelliJ IDEA 設定ファイルの生成
Play は IntelliJ IDEA の設定を簡易化するコマンドを提供しています。既存のアプリケーションを妥当な IntelliJ IDEA プロジェクトまたはモジュールに変換するには、 idealize コマンドを使用してください:
# play idealize myApp
その後、モジュールインポート機能を使ってアプリケーションを InelliJ にインポートすることができます。
Run と Debug はコンテキストメニューから実行できます。
チームで作業しているときは .iml ファイルをコミットしないこと!
生成した設定ファイルにはフレームワークをインストールした場所への絶対参照が含まれています。これはあなた自身のインストール作業に特化したものです。チームで作業するときは、それぞれの開発者は自分の IntelliJ IDEA 設定ファイルを個人で管理しなければなりません。
Textmate
シンタックスハイライトとオートコンプリートが使える Textmate 用に提供されたバンドルをダウンロードしてインストールすることができます。このバンドルによって、コントローラとビュー間を容易に行き来することもできます。
お好みのエディタの手動設定
Play アプリケーションは標準的な Java アプリケーションであり、お好みのエディタを使って作業をするために特定のプラグインも必要としません。ただし、その場合は Play がどのように動作しているかについて、ほんのちょっとの知識を必要とします:
Classpath 設定
Play アプリケーションのクラスパスは以下の通り (この順で) 構築されます:
- アプリケーションの conf/ ディレクトリ
- $PLAY_PATH/framework/play.jar
- lib/ ディレクトリ内のすべての JAR ファイル
- $PLAY_PATH/framework/lib/ ディレクトリ内のすべての JAR ファイル
Tip
モジュールを利用する場合は、すべてのモジュールライブラリも同様に ( $module/lib/ ディレクトリから) クラスパスに追加する必要があります。 からモジュールライブラリをクラスパスに追加する必要があります。
実行する Main クラス
Play アプリケーションを開始するには、 play.server.Server クラスを実行するだけです。Play は実行するアプリケーションの場所を見つけるために "application.path" システムプロパティを使用します。通常、以下のようにしてこの値を渡します:
java -Dapplication.path="/app/path"...
Java エージェント
HotSwap リロードを有効にするためには、Java agent を play.jar ライブラリに組み込む必要があります。通常は以下のようにします:
java -javaagent:"$PLAY_PATH/framework/play.jar" ...
これは必須ではありませんが、これが利用可能であるとき、クラスのリロードが高速になるでしょう。
デバッグ問題
Java ソースが変更されたとき、Play は自動的に Java クラスをリロードします。しかし、Java はクラスのリロードを完全にサポートしていないので、JDPA デバッグは簡単に混乱します: コードをステップインしたときに、ブレークポイントの設定に失敗したり、デバッガが間違った行で止まるかもしれません。
これを避けるよりよい方法は、コードを変更した後にデバッグセッションを新規に開始することです。幸運なことに、JPDA は JVM を再起動することなく、いつでもデバッガを接続したり、切断することができます。
以上より、デバッグにおける正しいワークフローは次のようになります:
- ソースコードを変更します。
- 結果を見るためにブラウザをリフレッシュします。 (このとき Play は変更内容をリロードして JVM 上のクラスを再定義します)
- 何かがおかしくデバッグする必要がある場合は、新しいデバッグセッションを開始します。
- コードをデバッグして、修正します。
- デバッガを切断します。
このワークフローを使用することによって、JVM にロードされたコードとデバッガを常に同期させることができます。