Play(Scala)の開発環境としてEclipseを利用してみる。
Playの導入は済んでいるものとする。済んでない場合は導入編参照。
Play2.0.4を使用。
とりあえず公式サイトからEclipse3.7を落としてくる。推奨は3.6だったような気もする。とりあえず我が家の環境では3.7でも問題なく動いている。
Eclipse4系を使おうとした人は、まだ早い、もう少し待つんだ。
落としてきたEclipseを適当な場所に解凍して、中のeclipse.iniの設定を変える。
下記のようになっているのを。
-Xms40m -Xmx384m
搭載してるメモリの量に応じて、適当に増やす。
-Xms256m -Xmx1024m
増やさないと、あとでスワップさんとかアウトオブメモリーさんが楽しげにダンスしている姿を目撃することになる。
とりあえずEclipseを立ち上げる。
Scala IDE for Eclipseの公式サイトからUpdate SitesのURLをコピーしてくる。
以下の手順でインストールする。
Help → Install New Software → 右上のAddボタンを押す → NameにScalaとかなんか適当な名前を、LocationにさっきコピってきたURLを入れてOK → しばし待つ → 出てきた項目にチェックを入れて、Next → Next → Accept → Finish
最後にEclipseの再起動するか聞かれるので、再起動を実行。
あと、自動ビルドをオフにしておいた方が軽くて良いかもしれない。どうせリクエストする際にサーバ側でコンパイルが走るので。
Project → Build Automaticallyのチェックを外す
ビルドしたい時(エラーが消えない時とか)はCtrl+Bを押す。
Playがインストールされていて、パスも通っているものとする。
とりあえず適当にプロジェクトを生成。途中の選択肢はScalaを選ぶ。
$ play new eclipse_sample
作ったプロジェクトにcd(compact disc)して、play eclipsifyを実行する。
$ cd eclipse_sample $ play eclipsify
これでEclipseプロジェクト用のファイルがディレクトリ内に追加された。.classpathとか、.projectとか、.settingsとか。
IntelliJ IDEA用のプロジェクトを生成するidealizeとか、NetBeans用のプロジェクトを生成するnetbeansifyというコマンドもあるらしい。
eclipsifyコマンドが完了したら、Eclipseからプロジェクトをimportする。
File → Import → General → Existing Projects into Workspace → Next → Browseで作ったプロジェクトを選択 → Finish
これでPlayのプロジェクトをEclipse上で開発できるようになった。
あとはコンソール上でplay runしてサーバを立ち上げておく。
$ play run
この状態でソースに手を加えてhttp://localhost:9000/等にリクエストすると、自動的にコンパイルが走って編集したソースが適用された状態で結果が表示される。
conf/routesとかをいじっても自動で反映される。便利。
さすがにSBT周り(project/Build.scalaとか)をいじった場合は無理。サーバを落としてplay runし直す。
PlayはSBTで依存ライブラリの管理とかをしている。試しにここに新しいライブラリを追加して動きを見てみる。
project/Build.scalaを開き、以下の場所に
val appDependencies = Seq(
// Add your project dependencies here,
)
以下のように記述を追加する。ここで追加するのはなんでも良いのだけど、試しにLiblinearのJava版を追加すしてみる(選定理由、軽いから)。
val appDependencies = Seq(
// Add your project dependencies here,
"de.bwaldvogel" % "liblinear" % "1.91"
)
これだけだとclasspathに反映されないので、コンソールからeclipsifyを再実行。
$ play eclipsify
これでclasspathにliblinearが追加された。
依存性を削除した場合は、eclipsifyの前にcleanも実行しておく。
$ play clean
これで概ね開発できる状態になったけど、この状態だとテンプレートをテキストエディタで編集しないといけない。
だいたいHTML的な文書になるので、好みのHTMLプラグインを入れてそれで編集するか、Scalaエディタで編集するという手もある。
下記はScalaエディタで編集する場合。
Window → Preferences → General → Editors → File Associations → *.htmlを選択し、下のAssociated editorsの項目のAddをクリック → Scala Editorを選択 → OK → Default → OK
Scalaエディタでもそこそこ綺麗に色分けしてくれる。さすがにコード補完とかはしてくれないけど。
あと、templateを追加した場合は少し面倒。
templateのコンパイルはEclipse上では行えない。ので、追加したtemplateを呼ぼうとすると、Eclipse上にエラーが表示された状態になってしまう(実行は可能)。
加えた後にeclipsifyしてF5押せばとりあえずエラーは消える。
ここ数週間ほどこの構成で開発しているけど、特に不便は感じていない。
Railsと比べるとコンパイル時間がある分、待ち時間がちらほらある。
ただ、コンパイラがViewに対しても走ってくれるので、型の安全性という意味では静的型付言語の良さをきっちり発揮してくれている。