Liftの入門(intellijでの開発環境編)

※2011/4/17追記 jrebelプラグインの設定がもれていたので追記しました。


liftで開発環境を整える際に知らないと手間がかかるのでまとめておきます。ここではintellijを利用します。
IDEはintellijの他にはEclipse、Netbeans、ensimeなどがあります。ビルドツールには、sbtとmavenがあります。昔はmavenでしたが、最近はsbtの利用が推奨されているようです。

今回構築する環境のバージョンは以下の通りです。
intellij:10
sbt:0.74
lift:2.3
scala:2.8.1.final

注:OSはMacを利用しています。Windows環境とは多少異なる部分がありますがWindowsでも構築したとこがありますが問題ないと思います。

intellijのダウンロード

intellijを以下のサイトからダウンロードします。
http://www.jetbrains.com/idea/download/index.html

intellijにプラグインのインストール

intelljでIntellij IDEA>Preferencs>Pluginsを選択します。
PluginsのAvailableタブを開いて、検索窓にscalaと入力して以下のプラグインをインストールします。

jrebelプラグインもインストールします。

※jrebelとはアプリケーションサーバ(jettyとか)を再起動せずにコードに変更があった場合に自動で再読み込みをしてくれるツールです。

jrebelの入手とjrebelプラグインの設定

jrebelはhttp://www.zeroturnaround.com/jrebel/からダウンロードします。

jrebelプラグインの設定をします。メニューのIntelliJ IDEA>Preferencesでjrebelを選択して上記URLから入手したjrebel.jarのパスを指定します。

liftのブランクプロジェクトの入手

liftのサイト(http://liftweb.net/)からブランクプロジェクトをダウンロードします。
アーカイブを解凍するといくつかプロジェクトが入っています。DB接続をしたいならlift_basicかlift_xhtml辺りがいいと思います。lift_blankだとDB接続の設定がされていないです。

ブランクプロジェクトの修正

intellijで取り込めるようにするにはいくつか追加/修正が必要です。

1.sbt-idea-pluginの設定
intellijで利用するために必要なプラグインをダウンロードする設定を行います。
[プロジェクト]/project/plugins/Plugins.scalaを作成します。

Plugins.scala

import sbt._
class Plugins(info: ProjectInfo) extends PluginDefinition(info) {
  val sbtIdeaRepo = "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
  val sbtIdea = "com.github.mpeltonen" % "sbt-idea-plugin" % "0.4.0"
}

sbt-idea-pluginは現在0.4.0が最新です。0.5が開発中みたいです。

project/build/LiftProject.scalaの修正
intellijに取り込むための設定を追加します。

【修正前】

class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) {

【修正後】

class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) with IdeaProject {

sbtを利用してintellijプロジェクトの作成

ターミナルでプロジェクトの直下に移動します。
sbt.shがあります。windowsの場合でもsbt.batがあるので同様に動きます。

$sbt (sbtが起動)
>update
>idea

ideaと入力した際に「ideaなんて知らないぜ!」と言われる場合は、ブランクプロジェクトの修正がうまくいっておらず、プラグインがダウンロード出来ていない可能性があります。設定を見直してください。それでもダメならとりあえずsbtで「clean」をして、再度「update」をしてみてください。もしかしたらうまくいくかもしれません。

プロジェクトの取り込み

プロジェクトを取り込むには、intellijでFile>OpenProjectから作成したプロジェクトを選択します。
しばらくすると取り込まれます。この際に時々エラーダイアログが出力されることがありますが問題ないようです。いくつかソースを開いてみてエラーが出ていないことを確認してください。

アプリの動作確認

intellijで[プロジェクト]/src/test/RunWebAppを選択して右クリックから「Run with JRebel "RunWeebApp.main"」を選択してください。
下部のコンソール画面にログが出力されます。問題なければ、http://localhost:8080で画面が表示されると思います。

開発時の方法

私の場合は、コンソールでsbtで「~compile」を入力しておいて、ソースの修正があった場合に自動で再コンパイルするにしています。同時にintellijでは、RunWebAppでアプリケーションサーバを起動して自動で反映されるようにしています。この方法ならinttelijのデバッグにも対応することが出来ます。intellijでのデバッグが不要ならsbtの「~jetty-run」だけでも大丈夫です。

※sbtでの「~compile」などはファイルに変更があったらもう一度行うようにする設定です。

おわりに

現時点ではintellijが開発環境では一番良いと思っていますが、現在ベータ版のScala IDE for Eclipse辺りの動向も見守っています。進化が早いのでどのIDEがいいかはまだまだ注意深く見守った方が良いと思います。

The Scala IDE for Eclipse beta 2 available now!
http://www.scala-lang.org/node/9222

以上でintellijでの開発環境編を終わります。