技術memo

関数型ゴースト

IntelliJ IDEA(無償版)でScala+PlayFramework2.3の開発環境を作った話

何故かScalaを始めることにしたので、環境構築メモです。意外と躓きました。

環境

IDE

  • IntelliJ IDEAをインストールします。
    • version(Community Edition): 14.0.3
    • Download -> Windows -> Download Community
  • キーバインドEmacs風に変更(個人的趣味によります)。
    • File -> Setting -> Appearance&Behavior -> Keymap の上部のキーセット一覧から択べます。
    • Vim派はプラグインから……。
  • Scala Pluginを導入
    • File -> Setting -> Plugins -> Install JetBrains plugin -> Scala でインストール、IDEA再起動。

Scala本体

Play Framework2 プロジェクト作成

  1. Play Frameworkのサイトからダウンロードします。
    • Downloads
    • version : 2.3.8 (activator 1.3.2 minimul) *1
  2. 展開したactivatorを適当なディレクトリに設置してパスを通します。
  3. プロジェクト作成予定のディレクトリの親ディレクトリにコマンドプロンプトで移動してactivator new実行。
    1. 作成するプロジェクト種別を聞かれるのでplay-scalaを入力。
    2. プロジェクト名を聞かれるので適当な名前を入力する。

IDEにプロジェクトを取り込む

IntelliJ用の設定ファイル生成(ideaコマンド)はしなくても取り込み出来る模様です。

  1. IntelliJ IDEAを起動。
  2. すでに開いているプロジェクトがあれば閉じます。
  3. Import Projectをクリック。
  4. ファイル選択画面が表示されるので、先ほどのactivator newで作られたプロジェクトのディレクトリを選択し、OKをクリック。
  5. Import project from external model、SBTを選択した状態でNextをクリック。
  6. お好みにより以下を設定してFinishをクリック。
    • 必要かは微妙だけれど、Use auto-import と Create directories for empty content roots automatically にチェック。
    • Project SDKが設定されていない場合、NewからJDKのディレクトリを選択します。
    • Global SBT settingは特に変更なし。
  7. プロジェクトのファイル一覧は Alt+1 またはメニューのNavigate -> Tool Window -> Projectで開けます。

IDEからデバッグ実行

IntelliJ IDEA Ultimate Editionを使っていれば、ScalaプラグインにPlay2サポートが入っていて、簡単にデバッグ実行できるらしいですが、Community Editionの場合は、単体でサーバーを起動してリモートデバッグする形を取ります。

  1. IntelliJ IDEAメニューのRun -> Edit Configurationsを選択します。
  2. +をクリックして新規設定の追加、Remoteを選択します。
    • Name: 適当な設定名称を入力。
    • Setting
      • Transport: Socketを選択。
      • Deugger mode: Attachを選択。
      • Host: localhost
      • Port: 9999
      • Search sources using module's classpath: のまま。
    • OKをクリックして閉じます。
  3. コマンドプロンプトでプロジェクトのディレクトリに移動し、activator -jvm-debug 9999 runコマンドを実行します。
    • run~runにするとviewの変更監視が出来るとか、どうとか。詳細未確認。
  4. IntelliJ IDEAのプロジェクトビューから、/app/controllers/Applicationファイルを開き、Ok(views.html.index("Your new application is ready."))の行の左端をクリックしてブレークポイントを作成します。
  5. IntelliJ IDEAメニューのRun -> Debug -> 上記で作成したデバッグ設定名を選択し、デバッグモードを起動します。
    • IntelliJ IDEAのコンソールにConnected to the target VM, address: 'localhost:9999', transport: 'socket'と出ていればOK
  6. 適当なウェブブラウザからhttp://localhost:9999/にアクセスすると、ページの読み込みが終わる前にIntelliJ IDEAのブレークポイントで処理が停止します。

参考

Play Framework公式ドキュメント

*1:何故かTypesafe Activatorのサイトから落とした奴だとプロジェクトがビルドエラーになってしまい、上手く行かなかったんですよね……。