§好きな IDE で開発する
Play で開発するのは簡単です。Play は自動的にソースファイルに加えた変更をコンパイルし、変更内容をリフレッシュするので、洗練された IDE は必要なく、単純なテキストエディタで簡単に開発することができます。
しかし、モダンな Java, Scala IDE は自動コンパイル、実行中のコンパイル、リファクタリングのアシスト、デバッギングのようなクールで生産的な機能を提供しています。
§Eclipse
§設定ファイルの生成
Play は単純な Eclipse の設定のためのコマンドを提供します。Play アプリケーションを Eclipse のプロジェクトに変換するには eclipse
コマンドを使います。
ソースの jar ファイルが必要ない場合は、以下のコマンドを実行します。
[My first application] $ eclipse
使用可能なソースの jar ファイルを取得したい場合は、以下のコマンドを実行します (この場合より多くの時間がかかり、いくつかのソースはなくなっているかもしれません) 。
[My first application] $ eclipse with-source=true
もしサブプロジェクト構成にしている場合は、以下のように
skipParents
を適切に設定する必要があるでしょう。
import com.typesafe.sbteclipse.core.EclipsePlugin.EclipseKeys
object ApplicationBuild extends Build {
override def settings = super.settings ++ Seq(
EclipseKeys.skipParents in ThisBuild := false
)
...
}
あるいは play コンソールから以下のようにタイプします:
[My first application] $ eclipse skip-parents=false
また、もし
eclipse
の実行時にコンパイルをトリガーさせたくない場合は、以下の設定を追加します:
EclipsePlugin.EclipseKeys.preTasks := Seq()
その後、 File/Import/General/Existing project… メニューを使用してワークスペースにアプリケーションをインポートする必要があります(最初にあなたのプロジェクトをコンパイルします)。
play debug run
でアプリケーションを起動すると、**Debug AS** をつかってデバッグセッションを開始できる the Connect JPDA launcher を使うことができます。
デバッグセッションを停止しても、サーバは停止しません。
Tip:
~run
を使うとファイルの変更時の直接コンパイルを有効にしてアプリケーションを実行できます。これによりview
に新しいテンプレートファイルが作成されたことを自動的に検出し、ファイルに変更が加わった時に自動的にコンパイルされます。通常のrun
コマンドを使っていると、毎回ブラウザでのリフレッシュを行わなければいけません。
クラスパスの変更のようなアプリケーションにとって重要な変更を行った場合、eclipse
コマンドを使って設定ファイルの再作成を行います。
Tip: チームで作業を行なっている場合は Eclipse の設定ファイルはコミットしないようにしてください。
生成された設定ファイルはあなたのフレームワークのインストールに関する絶対参照を含みます。これはあなた自身のインストールに関する設定です。あなたがチーム内で作業している時には、各開発者は Eclipse の設定ファイルをプライベートにしておく必要があります。
§IntelliJ
§設定ファイルの生成
Play は単純な Intellij IDEA の設定のためのコマンドを提供します。Play アプリケーションを IDEA モジュールに変換するには play コンソールから idea コマンドを使います。
ソースの jar ファイルが必要ない場合は、以下のコマンドを実行します。
[My first application] $ idea
使用可能なソースの jar ファイルを取得したい場合は、以下のコマンドを実行します (この場合より多くの時間がかかり、いくつかのソースはなくなっているかもしれません) 。
[My first application] $ idea with-sources=yes
これで IntelliJ が play アプリケーションをプロジェクトとして開くための設定ファイルが作成されます。これらのファイル名は
Tip: Scala プラグインがインストールされている場合、Java ベースの Play2 アプリで IntelliJ の問題 が発生しています。この問題が解決するまでは、Scala プラグインを無効にすることが推奨されます。
デバッグを実行するために、最初にデバッグの設定を追加します。
- Run/Debug Configurations の設定ダイアログを開き、Run -> Edit Configurations をクリックします
- Remote 設定を追加し、
Remote
を選択します - 以下の内容を設定します。
- 名前を設定する
- Transport: Socket を設定する
- Debugger mode: Attach を設定する
- Host: localhost を設定する
- Port: 9999 を設定する
- インポートしたモジュールを選択する
- Apply をクリックし、ダイアログをクローズします
play をデバッグモードで起動 (IDEA の Play コンソールではなく別のコマンドラインコンソールで) します。
$ play debug
以下のような出力が行われます。
Listening for transport dt_socket at address: 9999
いくつかのブレークポイントをセットしてから IDEA のデバッグ設定を開始します。コンソール出力は以下のようになっているはずです。
Connected to the target VM, address: 'localhost:9999', transport: 'socket'
Play コンソールの run
タスクを呼び出す事で web アプリを実行します。最後に http://localhost:9000
をブラウザで開きます。 IntelliJ はブレークポイントで停止しているはずです。
その他の方法として、新たなコマンドプロンプトを開かずに IDEA の Play コンソールで “play debug run” を実行し、それからデバッグ設定を起動する事も出来ます。
クラスパスの変更のようなアプリケーションにとって重要な変更を行った場合、idea
コマンドを使って設定ファイルの再作成を行います。
§Netbeans
§設定ファイルの生成
Play は現時点ではネイティブの Netbeans プロジェクトの生成をサポートしていません。今のところは NetBeans SBT Plugin を使うと NetBeans の Scala プロジェクトを生成することができます。
最初に plugins.sbt ファイルを編集します。
resolvers += {
"remeniuk repo" at "http://remeniuk.github.com/maven"
}
libraryDependencies += {
"org.netbeans" %% "sbt-netbeans-plugin" % "0.1.4"
}
編集が完了したら以下のコマンドを実行します。
$ play netbeans
§ENSIME
§ENSIME のインストール
http://github.com/aemoncannon/ensime の手順に従ってインストールします。
§設定の作成
project/plugins.sbt ファイルを編集して、以下の行を追加します (最新版のプラグインを入手するためにまずは http://github.com/aemoncannon/ensime-sbt-cmd をチェックすると良いです)。
addSbtPlugin("org.ensime" % "ensime-sbt-cmd" % "0.1.0")
Play を起動します:
$ play
Play コンソールから ‘ensime generate’ と入力します。このプラグインにより Play プロジェクトのルートに .ensime ファイルが作成されているはずです。
$ [MYPROJECT] ensime generate
[info] Gathering project information...
[info] Processing project: ProjectRef(file:/Users/aemon/projects/www/MYPROJECT/,MYPROJECT)...
[info] Reading setting: name...
[info] Reading setting: organization...
[info] Reading setting: version...
[info] Reading setting: scala-version...
[info] Reading setting: module-name...
[info] Evaluating task: project-dependencies...
[info] Evaluating task: unmanaged-classpath...
[info] Evaluating task: managed-classpath...
[info] Updating {file:/Users/aemon/projects/www/MYPROJECT/}MYPROJECT...
[info] Done updating.
[info] Evaluating task: internal-dependency-classpath...
[info] Evaluating task: unmanaged-classpath...
[info] Evaluating task: managed-classpath...
[info] Evaluating task: internal-dependency-classpath...
[info] Compiling 5 Scala sources and 1 Java source to /Users/aemon/projects/www/MYPROJECT/target/scala-2.9.1/classes...
[info] Evaluating task: exported-products...
[info] Evaluating task: unmanaged-classpath...
[info] Evaluating task: managed-classpath...
[info] Evaluating task: internal-dependency-classpath...
[info] Evaluating task: exported-products...
[info] Reading setting: source-directories...
[info] Reading setting: source-directories...
[info] Reading setting: class-directory...
[info] Reading setting: class-directory...
[info] Reading setting: ensime-config...
[info] Wrote configuration to .ensime
§ENSIME の起動
Emacs から M-x ensime を実行して、画面に表示された手順に沿って手続きを行います。
手続きは以上です。これで Play プロジェクトでタイプチェックやコンパイル等を行うことができます。もし Play プロジェクトで新しいライブラリの依存性を追加した場合は、再度 “ensime generate” を実行して ENSIME を再起動する必要があります。
§詳しい情報は
http://aemoncannon.github.com/ensime/index.html にある ENSIME マニュアルをチェックして下さい。
質問がある場合は https://groups.google.com/forum/?fromgroups=#!forum/ensime にある ensime グループに投稿して下さい。
§Scala プラグインが必要な場合は
Scala は新しいプログラミング言語です。そのため、機能は IDE のコアではなくプラグインとして組み込まれています。
- Eclipse Scala IDE: http://scala-ide.org/
- NetBeans Scala プラグイン: https://java.net/projects/nbscala
- IntelliJ IDEA Scala プラグイン: http://confluence.jetbrains.net/display/SCA/Scala+Plugin+for+IntelliJ+IDEA
- IntelliJ IDEA のプラグインは活発に開発されているため、ナイトリービルドを使う事で、小さな問題と引き換えにより多くの機能を使えるようになります。
- Nika (11.x) プラグインリポジトリ: http://www.jetbrains.com/idea/plugins/scala-nightly-nika.xml
- Leda (12.x) プラグインリポジトリ: http://www.jetbrains.com/idea/plugins/scala-nightly-leda.xml
- IntelliJ IDEA Play プラグイン (Leda 12.x のみに対応): http://plugins.intellij.net/plugin/?idea&pluginId=7080
- ENSIME - Emacs 用の Scala IDE モード: https://github.com/aemoncannon/ensime
(see below for ENSIME/Play instructions)
Next:
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。