Play FrameworkにはEclipseプロジェクトへの変換機能(activator eclipse
)や、ブラウザ上で開発できる機能(activator ui
)が提供されている。しかし、普段使っていない開発環境を使うと、使い方を覚えることに多くの時間を割かれてしまい効率が悪い。一方で、Vimの環境を利用していると、EclipseのようなJavaやScalaの優れた補完機能などが活用できない。そこでEclimというEclipseとVimとの橋渡しをするプラグインを使い、使い慣れたVimの中で、Eclipseの機能を利用できるように設定した。以下でCentOS 7上で行った設定の手順を紹介する。またEclimのサイトには充実したドキュメントがあるので、そちらも参照するとよい。
1. 前提条件
- Javaの実行環境があること。(バージョン1.6以降)
- NeocompleteによるVimの補完の設定がされていること。
2. 手順
- まずEclipseの最新版(Eclipse 4.4 Luna)を持っていない場合は、Eclipseのサイトからダウンロードする。
初期設定のままではEclipseでScala IDEを起動したときに以下のような警告が表示される
We detected that some of your settings are not adequate for the Scala IDE plugin. Run setup diagnostics to ensure correct plugin settings?
これを回避するために
eclipse.ini
を編集しておく。EclipseのWikiなどを参考に-vmargs ...
の部分を例えば以下のように修正する。-vmargs -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m
次に、Eclimのサイトから現時点(2015-03-10)での最新版
eclim_2.4.1.jar
をダウンロードする。以下のコマンドを実行し、インストーラーを起動する。
java -jar eclim_2.4.1.jar
インストーラーの指示に従いインストールを進めていく。
Please select the features you would like to install.
と言われたら、“Scala Development Toolkit”の項目にチェックをつけて次へ進む。既にマーケットプレイスなどを使ってScalaのIDEをインストールしてあれば必要はない。.vimrc
を編集する。(参照:seansawyer/vim-eclim-scala.md, ervandew/eclim issues #121)let g:EclimCompletionMethod = "omnifunc" let g:neocomplete#force_omni_input_patterns.java = '\k\.\k*' let g:neocomplete#force_omni_input_patterns.scala = '\k\.\k*' set completeopt-=preview
Playのプロジェクトのルートディレクトリ(appやconfがあるところ)でターミナルを開き
./activator eclipse
を実行する。これを実行すると、このプロジェクトをEclipseでインポートできるようになる。Eclipseからプロジェクトをインポートする。[File]→[Import...]→[General]→[Existing Projects into Workspace]と開いていき、インポートするプロジェクトのルートディレクトリを指定し、[Finish]を押す。インポートをしたところ
app/controllers/Application.scala
のviews.html.index
の部分にエラーを示す波線が引かれていた。ここを参考にし、[Properties]→[Java Build Path]→[Source]→[Add Folder]と進み、target/scala-2.11/twirl/main
を追加した。Eclipseは一旦終了する。Eclipse本体のあるディレクトリに
eclimd
というファイルがあるはずなので、ターミナルで./eclimd
を実行し、Eclimのデーモンを起動する。一度実行してしまうと、Ctrl-C
で終了するまで他のコマンドを打てなくなるので./eclimd &
としてプロセスを切り離したり、tmuxで分割した画面で走らせておくと便利である。これでようやく準備が整ったので、Vimでプロジェクトのファイルを編集する。
.
をタイプしたときや、Ctrl-X Ctrl-O
,Ctrl-N
をタイプしたときに入力の候補が提示される。候補はCtrl-N
で選択する。
3. まとめ
ScalaやPlayに慣れてないため、まだ分からないことが多いが、その分補完から得られる恩恵は大きかった。マシンの性能次第ではかなり重くなってしまうが、普段からEclipseで開発している環境ならば問題なく動くと思うので試してみるとよいと思う。