Liftの導入
-
概要
Scala製WebフレームワークのLiftを導入した時のメモ。導入方法、参考URLなど。
@Author mwSoft
@Date 2011/05/09
@Env Scala2.8.1, Lift2.3 -
Liftとは
LiftはScalaベースのWebフレームワーク。foursquareで採用されていることで有名。
Liftの紹介文には良くCommetさんが出てくる。紹介されるサンプルアプリとしても、Commetさんを使ったチャットシステムが使われることが多い。
Scalaベースということで、実行速度はそれなりに速いはず。
Playとどっちにするか悩んでいるのだけど、とりあえず使ってみないことには分からないってことでLiftから挑戦することにした。
-
Liftの参考資料
フリーの書籍が出ているなど、参考資料はそれなりにある。ただしほぼ英語。日本語の書籍は見かけない。こういう新しめのもの(Liftは2007年生まれ)を触ろうと思ったら、英語スキルは必須ということで。
将来的には、David Pollak先生がSimply Lift(Creative Commonsで執筆中)を書き上げて、それが日本語訳されて、日本でも認知度を上げていく、という流れになったらいいなぁと思っている。
Exploring Lift
http://exploring.liftweb.net/
Lift書籍。全編フリーで公開されている。Simply Lift
http://stable.simply.liftweb.net/
David Pollakが今書いている解説書。Lift公式サイトのGetting Startedからリンクされてる。Lift IN ACTION
http://www.manning.com/perrett/
Lift関連の書籍の中では今のところ一番有名な気がする。1章だけただで読める。Lift Framework Doc 2.3 API
http://scala-tools.org/mvnsites/liftweb-2.3/
2.3のScalaDoc。必需品。 -
Liftを実行する上で必要なもの
ScalaのコンパイラとかはMavenさんが取ってきてくれるので、以下の3つがあれば動く。
JDK 1.5以上
Scalaなので、当然JVMが動く環境が必要になる。Maven2
Javaのプロジェクト管理ソフト。Mavenは今後のJava開発で重宝されることになりそうなので、触れておいて損はないはず。Scalaの開発環境
EclipseかIntelliJあたりがスタンダードなところ。どちらもJava開発をする時ほどは安定しない。 -
とりあえず動かしてみる
Liftはすぐに実行可能なMavenのプロジェクトを用意してる。尚、ここで紹介する導入方法はExploring Liftの「1.5 Your First Lift Application」を参考に書いている。
まず、JDKのインストール。これはみんな知ってるだろうから特に説明しない。
次にMaven2の導入。自分は公式サイトから落としてパス通して使ってるけど、yumやapt-getでも入れられる。
$ sudo apt-get install maven2
$ sudo yum install maven2次にMavenでLiftのサンプルアプリを落とす。指定する引数はバージョンが変われば変わる。LiftのWikiを見れば最新のが書いてある(と信じてる)。
Using Maven | Lift Space | Assembla
http://www.assembla.com/spaces/liftweb/wiki/Using_Maven今回打ったコマンドは以下。とりあえずworkspaceというディレクトリの中にプロジェクトを作成している。
$ mkdir ~/workspace
$ cd ~/workspace
$ mvn archetype:generate \
-DarchetypeGroupId=net.liftweb \
-DarchetypeArtifactId=lift-archetype-basic_2.8.1 \
-DarchetypeVersion=2.3 \
-DarchetypeRepository=http://scala-tools.org/repo-releases \
-DremoteRepositories=http://scala-tools.org/repo-releases \
-DgroupId=demo.helloworld \
-DartifactId=helloworld \
-Dversion=1.0実行するとhelloworldというディレクトリが作られる。このディレクトリにLiftのサンプルアプリが入っている。
さっそく動かしてみる。以下のコマンドを実行するだけで良い。Liftはjetty(Java製のWebサーバ)を梱包してるので、サーバ等の準備をする必要も必要ない。
$ cd helloworld
$ mvn jetty:run※ものすごく時間がかかるので注意。
このコマンドを実行すると、いろいろなモジュールを次々に落とし始める。pom.xmlを見る限りでは、Scalaのコンパイラ、Jetty、JUnit、logback(ログ収集モジュール)、H2 Database(Java製DBMS)、Servlet API、Specs(Scalaのテストツール)などを入れている模様。
だいたいJava純正で閉じた感じの構成になっている。そうしておいた方が何かと相性が良いのだろうか。
ダウンロードされたモジュールの類は「~/.m2」ディレクトリに保存される。1度落とせば他のプロジェクトからも使いまわせる。
長い長いダウンロードタイムを終えてサーバが立ち上がったら、Tomcatなどを使う時にお馴染みのURLを入力する。
http://localhost:8080/
こうすると、Login機能などを備えたWebアプリが表示される。
「src/main/webapp」配下のhtmlを修正すると、いろいろ表示が変えられたりする。たとえば「src/main/webapp/index.html」のP要素の中にHello Worldと足すと、画面にもHello Worldと表示される。
見ての通り、Viewの部分はvalidなHTMLで書かれている。これはちょっとかっこいい。
-
Eclipseで開発できるようにする
JavaプログラマはIDEがないと生きていけないので、Javaから遷移した(私のような)Scalaプログラマはこのままでは開発できない。そこで今作ったプロジェクトをEclipseから見れるようにしてみる。
Eclipseでの環境用意は、公式Wikiの以下のページに最新の情報が記されている(と信じてる)。
Using Eclipse with Maven | Lift Space | Assembla
http://www.assembla.com/spaces/liftweb/wiki/Using_Eclipse_with_Mavenまず、Scala IDE for Eclipseを入れる。EclipseのHelp → Install New Softwareから、以下のURLを指定してインストール。
http://download.scala-ide.org/update-current
次にMavenのプラグインであるM2Eclipseを入れる。Scala IDE for Eclipseと同じ手順で、以下のURLを指定してインストール。
http://m2eclipse.sonatype.org/sites/m2e/
プラグインを2つ入れてEclipseを再起動したら、次はFile → New → Projectから、Maven → Maven Projectを選択。Create a simple projectにチェックが「入っていない」状態で、Next。
さっきLiftを使ったので、ここで出てくる一覧に「net.liftweb」がいるはず。先ほどmvnコマンドを打った時に指定した、lift-archetype-basic_2.8.1(番号は適宜読み替える)を選んでNext。
Group IdとArtifact Idは何でもいいので、とりあえず「hellolift」とでも名付けてFinish。
出来上がったプロジェクトは、Javaでコンパイルされるのでエラーで真っ赤に染まる。Scalaでコンパイルされるようにしないといけない。
プロジェクト名を右クリック → Configure → Add Scala Natureを選択する。これでエラーも消えてすっきりする。
Eclipseから実行する際は、Run → Run Configurationsを選んで、Maven Buildに新しいConfigurationを作成し、Goalsにjetty:runを指定して実行する。