MacでScala Liftのプロジェクトをつくってみる | Pimp my Code. @wataru420

Pimp my Code. @wataru420

My name is Wataru Fukunaga.

まずScalaを入れるよ

SnowLeopardにはJavaが最初から入っているので、Scalaを入れるところからスタート。
イケテルMacerはMacPortは使わないと聞いて、パッケージ管理はHomebrewを使っている。
Homebrew経由でscalaを入れてみた。

$ brew install scala

これでscalaとコマンドを打つと、scalaの対話モードになるはず。

続いてLiftを入れる。

LiftはMaven経由でダウンロードする。
プロジェクトを作りたいディレクトリに移動し、次のMavenコマンドを実行する。

$ mvn archetype:generate -DarchetypeGroupId=net.liftweb -DarchetypeArtifactId=lift-archetype-basic_2.8.1 -DarchetypeVersion=2.3 -DremoteRepositories=http://scala-tools.org/repo-releases -DgroupId=jp.hoge.hellolift -DartifactId=hellolif

lift-tree#
.
├── pom.xml
├── project
│ ├── build
│ │ └── LiftProject.scala
│ └── build.properties
└── src
├── main
│ ├── resources
│ │ └── props
│ │ └── default.props
│ ├── scala
│ │ ├── bootstrap
│ │ │ └── liftweb
│ │ │ └── Boot.scala
│ │ └── jp
│ │ └── hoge
│ │ └── hellolift
│ │ ├── comet
│ │ ├── lib
│ │ │ └── DepencyFactory.scala
│ │ ├── model
│ │ │ └── User.scala
│ │ ├── snippet
│ │ │ └── HelloWorld.scala
│ │ └── view
│ └── webapp
│ ├── WEB-INF
│ │ └── web.xml
│ ├── images
│ │ └── ajax-loader.gif
│ ├── index.html
│ ├── static
│ │ └── index.html
│ └── templates-hidden
│ ├── default.html
│ └── wizard-all.html
├── packageLinkDefs.properties
└── test
├── resources
└── scala
├── LiftConsole.scala
├── RunWebApp.scala
└── jp
└── hoge
└── hellolift
├── AppTest.scala
└── snippet
└── HelloWorldTest.scala
こんな感じにファイルが生成される。

Jettyを起動して動作確認してみよ う

まず先ほど生成されたプロジェクトディレクトリに移動。

$ cd pointback

そしてJettyの起動

$ mvn jetty:run -U
Uのオプションを付けておけばスナップショットバージョンの依存ライブラリの更新を強制的にチェックするようになるので、いつも付けておくと良い。

うまくJettyが起動したら下記のアドレスにアクセスしてみよう。
http://localhost:8080
サンプルプロジェクトが動き始める。

開発環境

vimで開発したい人は、vimのプラグインを入れたいよね?
$ sudo sbaz install scala-tool-support
する。
(HomeBrew経由でScalaをいれた場合)
/usr/local/Cellar/scala/2.9.0.1/libexec/misc/scala-tool-support/
(HomeBrew経由でScalaをいれた場合)
ここに色々なエディタ用のファイルができるので、vimの中にあるものを自分の.vimの中に設置する。
これでscalaのハイライトが効くようになる。

現時点ではeclipseだとシンタックスでいっぱいエラーが出たり、あんま調子よくない。

やっぱvimだね☆

liftでホットデプロイ

できるらしいが。。
$ mvn scala:cc

ってやると即時コンパイルになるが、コンパイル後にJettyのエラーになるケースが多い。
どうしてだろう。

Scala Lift結構面白い。