Scala
PlayFramework
IntelliJ

Scala+PlayをIntelliJで快適に開発するための設定

Java8とsbtは入れてる前提。

Playのゲット

コメントがたくさん入ったサンプルのほうが嬉しいので、Starter Projectsをベースにする。

$ git clone git@github.com:playframework/play-scala-starter-example.git
$ cd play-scala-starter-example/

IntelliJで取り込む

IntelliJ Ultimate Editionを前提にする。

  1. IntelliJを開く > Import Project > 「プロジェクトのルートディレクトリ」を選択
    スクリーンショット 2017-07-22 11.02.37.png
  2. 「Import project from external model」にチェックを入れて「SBT」を選択
    スクリーンショット 2017-07-22 11.03.32.png
  3. 「Import Project」画面でDownloadの「Library sources」「SBT sources」「Use SBT shell for build and import」にチェック(もしJDKが設定されてなかったらセット)
    スクリーンショット 2017-11-20 9.16.33.png

IntelliJの実行設定

通常実行

  1. メインメニューから Run -> Edit Configurations を選択
    スクリーンショット 2017-07-17 15.17.58.png
  2. 左上にある + をクリックして、出てきたリストから "SBT Task" を選択する
    スクリーンショット 2017-07-22 11.14.44.png
  3. "Name" と "Tasks" 入力ボックス内に “run” を追加し、OKを選択
    スクリーンショット 2017-07-22 11.15.13.png
  4. IntelliJのツールバーに先程設定した run タスクが出現するので右三角の緑のボタンを押す
    スクリーンショット 2017-07-22 11.17.53.png
  5. http://localhost:9000/ をブラウザで開いて確認

デバッグ実行

IntelliJの設定

こっからは好みで。

行番号表示

Preferences > Editor > General > Appearance > Show line numbersにチェック

ファイル保存時に最後の行に改行追加

Preferences > Editor > General > Ensure line feed at file end on Saveにチェック

ヘッダコメント削除

クラスとか作るたびに、いちいち不要なコメントを付けてくるので消す。

Preference > Editor > File and Code Template > Includes > File Header

右側に下記のようなコードが書かれているので、全部削除すればOK。

/**
 * @author ${USER}
 */

自動コードフォーマット&import文最適化

ファイルを保存したときに自動的に、コードフォーマットとimport文を最適化をしてしまうのが最強に便利。

マクロ作成

1. マクロの記録を開始する
Edit -> Macros -> Start Macro Recording
2.import文を最適化
Code -> Optimize Imports
3.コードフォーマット
Code -> Reformat Code
4.全てのファイルを保存
File -> Save all
5.マクロの記録を終了する
Edit -> Macros -> Stop Macro Recording
6.記録したマクロを名前をつけて保存

「Enter Macro Name」ダイアログに適当に名前を入力して(例:formatted save)、「OK」ボタンを押す

スクリーンショット 2017-07-22 12.17.11.png

キーボードショートカットへの割り当て

1. キーボードにショートカット追加
Preferences > Keymap > Macros

先ほど入力した名前(formatted save)が出てくるので、右クリックして、「Add Keyboard Shorcut」をクリック

1.png

2. ショートカットの入力

First Strokeで「Command + s」(実際のキーボード操作が反映される)

「Assigned to [Main menu | File | Save All]」と表示されるが無視して「OK」ボタンをクリック

スクリーンショット 2017-07-22 12.27.24.png

3. 警告無視

再びWarningが出るが、これも華麗にスルーして「Remove」ボタンをクリック

スクリーンショット 2017-07-22 12.27.48.png

4. 設定反映

「OK」ボタンを押して終了

スクリーンショット 2017-07-22 12.28.13.png

トラブルシューティング

jboss-interceptor-apiがないってエラーが出る

IntelliJでビルドするとエラーが出る場合がある。

[error] (*:updateSbtClassifiers) sbt.ResolveException: unresolved dependency:
sbt.ResolveException: unresolved dependency: org.jboss.interceptor#jboss-interceptor-api;1.1: not found

stackoverflowを参考に、~/.sbt/0.13/global.sbtに下記設定を記述すれば良い。

resolvers += "JBoss" at "https://repository.jboss.org/"

なお、~/.sbt/0.13/global.sbtがない場合は、ファイル自体を新規作成する。

ちなみに、IntelliJで使用するライブラリのようで、build.sbtに書いてもムダだった。そのため、global.sbtに書いてしまっているが、一回書いたら忘れて良い。

Scala SDK の設定

はじめてScalaプロジェクトを作ったときに遭遇した。が、二回目以降出なくなったので、必須かどうかは不明。一応、参考までに実施したことを残しておく。

  1. scalaファイルを開くと Setup Scala SDK と表示されるのでクリック
    スクリーンショット 2017-07-22 12.49.28.png
  2. Createボタンクリック
    スクリーンショット 2017-07-22 12.50.28.png
  3. scalaのバージョンを選択(build.sbtに書いてあるバージョンを選択)
    スクリーンショット 2017-07-22 12.50.45.png
  4. OKボタンクリック
    スクリーンショット 2017-07-22 12.50.28.png

参考:sbtのインストール

sbtが入ってない場合は、sdkman経由で入れるのが便利。sdkmanを使うと、JVM系の言語やFWのインストールが楽に入れられるので、最初にインストールする。

sdkmanインストール

$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"

Golangの管理にgvmを使っている人のみ

歴史的経緯からgvmにエイリアスが貼られてしまうので無効化する。

~/.sdkman/etc/config
sdkman_disable_gvm_alias=true

Scalaとsbtのインストール

先程入れた、sdkmanを使ってインストールする。

$ sdk install scala
$ sdk install sbt