§好きな IDE で開発する
Play で開発するのは簡単です。Play は自動的にソースファイルに加えた変更をコンパイルし、変更内容をリフレッシュするので、洗練された IDE は必要なく、単純なテキストエディタで簡単に開発することができます。
しかし、モダンな Java, Scala IDE は自動コンパイル、実行中のコンパイル、リファクタリングのアシスト、デバッギングのようなクールで生産的な機能を提供しています。
§Eclipse
§sbteclipse の設定
Play には 4.0.0 か、それより新しい sbteclipse が必要です。project/plugins.sbt に以下を追記します:
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
eclipse
コマンドを実行する前にプロジェクトを compile
する必要があります。以下を build.sbt に追加することで、eclipse
コマンドが実行されたときに強制的にコンパイルを実行することができます:
// Compile the project before generating Eclipse files, so that generated .scala or .class files for views and routes are present
EclipseKeys.preTasks := Seq(compile in Compile)
プロジェクト内に Scala ソースがある場合、Scala IDE をインストールしている必要があります。
プロジェクト内は Java ソースのみで Scala IDE をインストールしたくない場合は、以下のように設定することができます:
EclipseKeys.projectFlavor := EclipseProjectFlavor.Java // Java project. Don't expect Scala IDE
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources) // Use .class files instead of generated .scala files for views and routes
§設定ファイルの生成
Play は単純な Eclipse の設定のためのコマンドを提供します。Play アプリケーションを Eclipse のプロジェクトに変換するには eclipse
コマンドを使います:
[my-first-app] $ eclipse
もし取得可能な jar のソースを持ってくる場合は以下のようにします (これには時間がかかるでしょうし、いくつかのソースが見つからない場合もあります)。
[my-first-app] $ eclipse with-source=true
もしサブプロジェクトを使っている場合は、
build.sbt
にあるskipParents
を以下のように適切に設定する必要があるので注意してください:
EclipseKeys.skipParents in ThisBuild := false
あるいは play コンソールから以下のようにタイプします:
[my-first-app] $ eclipse skip-parents=false
その後、 File/Import/General/Existing project… メニューを使用してワークスペースにアプリケーションをインポートする必要があります(最初にあなたのプロジェクトをコンパイルします)。
デバッグを開始するには activator -jvm-debug 9999 run
を実行し、アプリケーションを起動します。そして、 Eclipse でプロジェクトを右クリックし、 Debug As 、 Debug Configurations を選びます。 Debug Configurations のダイアログ画面で Remote Java Application を右クリックし、 New を選びます。そして、 Port を 9999 に変更し、 Apply をクリックします。これで実行中のアプリケーションに接続するために Debug をクリックできるようになります。デバッグを中止してもサーバは終了しません。
Tip:
~run
を使うとファイルの変更時の直接コンパイルを有効にしてアプリケーションを実行できます。これによりview
に新しいテンプレートファイルが作成されたことを自動的に検出し、ファイルに変更が加わった時に自動的にコンパイルされます。通常のrun
コマンドを使っていると、毎回ブラウザでのリフレッシュを行わなければいけません。
クラスパスの変更のようなアプリケーションにとって重要な変更を行った場合、eclipse
コマンドを使って設定ファイルの再作成を行います。
Tip: チームで作業を行なっている場合は Eclipse の設定ファイルはコミットしないようにしてください。
生成された設定ファイルはあなたのフレームワークのインストールに関する絶対参照を含みます。これはあなた自身のインストールに関する設定です。あなたがチーム内で作業している時には、各開発者は Eclipse の設定ファイルをプライベートにしておく必要があります。
§IntelliJ
Intellij IDEA はコマンドプロンプトを使用せずに新しい Play アプリケーションを素早く作成させてくれます。 IDE の外部での設定なしに、SBT ビルドツールが必要なライブラリをダウンロードし、依存性を解決し、プロジェクトをビルドするまで面倒を見てくれます。
IntelliJ IDEA を使って Play アプリケーションを作り始める前に、Scala プラグイン がインストールされ、IntelliJ IDEA で使えるようになっていることを確認してください。Scala を使って開発しない場合でも、このプラグインはテンプレートエンジンの役に立ちますし、依存性も解決してくれます。
Play アプリケーションは以下のように作ります:
- New Project ウィザードを開き、 Scala セクションにある Play 2.x を選択し Next をクリックします。
- プロジェクトの情報を入力し、 Finish をクリックします。
IntelliJ IDEA は SBT を使って空のアプリケーションを作ることができます。
現在の Play 2.4.x では、IntelliJ のウィザードを使って新しいプロジェクトを作る代わりに、Activator を使ってプロジェクトを作り、IntelliJ にインポートすることを推奨しています。
既存の Play プロジェクトをインポートすることも可能です。
Play のプロジェクトは以下のようにインポートします:
- プロジェクトウィザードを開き、 Import Project を選びます。
- 表示されたウィンドウの中に表示されている、インポートしたいプロジェクトを選択し OK をクリックします。
- ウィザードの次のページで Import project from external model オプションを選択し、 SBT project を選択し、 Nextをクリックします。
- ウィザードの次のページで追加のインポートオプションを選択し、 Finish をクリックします。
プロジェクトの構造をチェックし、必要な依存関係にあるものが全てダウンロードされているか確認してください。コードアシスタントやナビゲーション、そして、その場で動作するコード解析機能を使用することができます。
作成済みのアプリケーションを実行することができ、結果をデフォルトブラウザ上の http://localhost:9000
で見ることができます。Play アプリケーションは以下のように実行します:
- 新しい起動設定を作成します – メインメニューから Run -> Edit Configurations を選択します
- + をクリックして新しい設定を追加します
- 設定リストから “SBT Task” を選択します
- “tasks” 入力ボックス内に “run” を追加します
- 変更を適用して OK を選択します
- これでメインの起動メニューから “Run” を選んでアプリケーションを起動できます
Play アプリケーションのデバッガセッションは標準の Run/Debug Configuration setting を使えば簡単に開始することができます。
より詳しい情報は以下の Play Framework 2.x チュートリアルをご覧ください:
https://confluence.jetbrains.com/display/IntelliJIDEA/Play+Framework+2.0
§エラーページからソースコードへの移動
play.editor
設定オプションを使って、Play がエラーページにハイパーリンクを追加するよう設定することができます。これにより、エラーページから IntelliJ 内のソースコードに直接移動できるようになります (はじめに Remote Call https://github.com/Zolotov/RemoteCall IntelliJ プラグインをインストールする必要があります)。
普通に Remote Call プラグインをインストールして -Dplay.editor=http://localhost:8091/?message=%s:%s -Dapplication.mode=dev
オプションを付けてアプリケーションを起動してください:
§Netbeans
§設定ファイルの生成
Play は今のところ Netbeans のプロジェクト生成をサポートしていませんが、Scala 言語と SBT 両方を支援する NetBeans 用 Scala プラグインがあります:
https://github.com/dcaoyuan/nbscala
Netbeans プロジェクト定義を生成する SBT プラグインもあります:
https://github.com/dcaoyuan/nbsbt
§ENSIME
§ENSIME のインストール
https://github.com/ensime/ensime-emacs の手順に従ってインストールします。
§設定ファイルの生成
project/plugins.sbt ファイルを編集し、以下の行を追加します。(まず、プラグインのバージョンが最新かどうかここで確認する必要があります。https://github.com/ensime/ensime-sbt):
addSbtPlugin("org.ensime" % "ensime-sbt" % "0.1.5-SNAPSHOT")
Play を起動します:
$ activator
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 を再起動する必要があります。
§詳しい情報
この ENSIME マニュアル https://github.com/ensime/ensime-emacs をチェックしてください。
疑問があれば ensime グループ https://groups.google.com/forum/?fromgroups=#!forum/ensime に投稿してください。
§Scala プラグインが必要な場合
Scala は新しいプログラミング言語です。そのため、機能は IDE のコアではなくプラグインとして組み込まれています。
- Eclipse Scala IDE: http://scala-ide.org/
- NetBeans Scala プラグイン: https://github.com/dcaoyuan/nbscala
- IntelliJ IDEA Scala プラグイン: http://confluence.jetbrains.net/display/SCA/Scala+Plugin+for+IntelliJ+IDEA
- IntelliJ IDEA のプラグインは活発に開発されているため、ナイトリービルドを使うことで、小さな問題と引き換えにより多くの機能を使えるようになります。
- Nika (11.x) プラグインリポジトリ: https://www.jetbrains.com/idea/plugins/scala-nightly-nika.xml
- Leda (12.x) プラグインリポジトリ: https://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
(ENSIME/Play の使い方は以下を参照してください)
Next: Play アプリケーションの構造
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。