AtomでのScala開発環境

最近Atomが面白くなってきて、いろんなパッケージを試したり作ったりしているのですが、普段は主にScalaでプログラミングをしているので今日はAtomでのEnsimeを使ったScala開発環境を紹介したいと思います。

EnsimeというのはEmacsで有名なScala開発環境ですが、バックエンドと各種エディタ向けのプラグインが分離されており、Emacs以外のエディタでも利用することができます。

まず、なにはともあれsbtをインストールします。MacならHomebrewで入れるのが簡単です。

$ brew sbt install

Atomには以下のパッケージをインストールしておきます。Atom上からsbtコマンドを実行するためにterminal-plusなどのパッケージも入れておくと便利です。

atom.io

atom.io

ホームディレクトリ配下に.sbt/0.13/plugins/plugins.sbtというファイルを以下の内容で作成します。

addSbtPlugin("org.ensime" % "ensime-sbt" % "0.2.3")

同じくホームディレクトリ配下の.atom/config.csonにEnsimeが使用するsbtのパスを設定します(初回実行時に聞かれるのでそのときに指定することもできます)。

"*":
  editor:
    invisibles: {}
    softWrap: true
  ...
  Ensime:
    sbtExec: "/usr/local/bin/sbt"

あとはおもむろにsbtを使用するプロジェクトのルートディレクトリでsbt gen-ensimeコマンドを実行してEnsime用のファイルを生成します(build.sbtの依存関係などを変更した場合は都度sbt gen-ensimeコマンドでファイルを生成しなおす必要があります)。

以上で準備は完了です。Atomで該当のディレクトリを開き、コマンドパレットからEnsime: Startを実行するとEnsimeが起動します。

f:id:takezoe:20151211152511p:plain

Ensimeの実行中はマウスカーソルを変数やメソッド等に重ねると型をホバー表示することができます。また、ctrl + spaceで補完を行ったり、cmd + clickで定義元にジャンプしたり、shift + cmd + tで型検索ができたりなど、IDEっぽい機能を利用することができます。

f:id:takezoe:20151211153933p:plain

f:id:takezoe:20151211153946p:plain

補完候補が出てくるのにやたら時間がかかったりなど、現時点ではIntelliJと比べると厳しい感じは否めませんが、エディタ自体が重くなってしまうということはないので入力を妨げられるようなことはありません。IDEというよりは型のホバー表示や定義部分へのジャンプといった便利機能をコーディングの補助的に使うといった利用方法が良さそうです。

Atomには他にもScala開発をサポートするパッケージがあるのでこれらを組み合わせてみるのも面白そうです。