Scalaの開発環境について


いつもは IntelliJ IDEA + Scala プラグインで Scala の開発をしていますが、ファイルによってすごくもっさりするので、他の開発環境はどうだろうかと試してみました。

IntelliJ IDEA 13 + Scala プラグイン

良い所はコードコンプリション(コードアシスト、サジェスト)が賢いところ。対象のオブジェクトが持つメソッドはもちろん、暗黙の型変換を適用した場合に使えるメソッドも出てくる。sbt(当然 Play framework も)で IDEA プロジェクトを依存ライブラリのソースコード付きで生成すれば、目当てのコードがさらに見つけやすくなるし、初めてのライブラリを使うとき等、手探りでコーディングしなきゃいけないときに打ってつけ。

悪いところは、ファイルによって挙動が重くなるのと、scalac でコンパイルが通るコードなのにエラーと出たり、エラーがでるところでエラーと報告してくれなかったり(implicit パラメータに適用するものがなくてもたいてい知らんぷり)するところ。

ちなみに Play framework がはく IDEA プロジェクトはソースパスの設定等に難があり、手動で設定し直さないと、むだにエラーじゃないところをエラーって言ってくる(クラスがないとか言ってくる)。

Scala IDE 3.0.2(Eclipse + Scala プラグイン)

IntelliJ IDEA で重くなるようなファイルでもすいすい編集できてしまうというまさかの軽さ。エラー報告も正確。ただし、コードアシストがアホ。Play framework が吐き出したプロジェクトをそのまま使ったので設定のが悪いのかも。対象のオブジェクトの配下のメソッドすら出てこない。

余談だが、IdeaVim(IDEA の Vim ライクプラグイン) より Vrapper (Eclipse 用のそれ)のほうが出来が良さそうなので、VIM 使いとしては嫉妬。

Emacs + ENSIME

裏で ENSIME サーバというのを動かして、それに Scala 資産を管理、解析をさせて Emacs はそのサーバと会話をしながら IDE 的な機能を提供するというもの。ENSIME サーバと会話は TCP/IP なので、Emacs 以外のエディタでも ENSIME を使うプラグインがある(Emacs で使うのが本家)。

動作はかなり軽く、エラー報告はファイル保存時に行われる。ENSIME サーバがもたついた場合は、とっととタイムアウトしてしまう模様(操作性を第一にしている?)。 ctags のようなものを準備せずともオートコンプリートが働くのが嬉しい。

難点は Scaladoc の編集に対して特別な機能は適用されてないっぽいところと、Play framework 用のプラグインがなさそうなところ。

それから、Scala とは関係ないけどオートコンプリートのポップアップが崩れるのをなんとかしたり、Evil 入れた場合の Scala-mode2 の設定とかよくわかんなかったりするところがコストだと思ったので、採用するのに二の足を踏みました。

Sublime Text 2 + ENSIME

Sublime Text 2 で ENSIME を使うためのプラグイン。ENSIME なので、基本機能は Emacs + ENSIME と大差がない。ただし、Emacs 版より若干もたつくような感じがする。Sublime Text 2 には、Play framework 用のプラグイン(機能はコードハイライトぐらいだが)があるので、その点は Emacs より嬉しい。ただ、Scala モードの詳細設定があるのかないのか(インデントが気に入らなかったので設定したい)など Emacs の Scala-mode2 以上にわからなかった。

その他(まだ試していない)

VIM から ENSIME を使う VIMSIDE というのがあるのだが、インストール方法から使い方まで全然わからなくて試せてない。NetBeans 用のプラグインもあるはずだが、試せていない。

まとめ

どれも一長一短なので、好きなの使えば? って感じですが、一応まとめると

  • すでに(Scalaに限らず) IDEA や PhpStorm などを使っており、慣れ親しんでいる → IntelliJ IDEA + Scala プラグイン
  • すでに Eclipse を使っており、慣れ親しんでいる → Scala IDE
  • Emacs を苦もなく使っている。Emacs 以外の環境を使う場合はまずは Emacs キーバインドを探しちゃう → Emacs + ENSIME
  • すでに Sublime Text 2 で Web フロントコーディングをバリバリやってて、Play framework でもやってみるかという方 → Sublime + ENSIME
  • とにかく始めたい → Scala IDE

他にいいのがあったら教えて下さい。

Leave a Comment

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください