2009年7月19日日曜日

[Scala][lift] Lift ことはじめ (1) : インストール

興味本位でWebフレームワーク Lift をさわってみました。
Scala とかまったく知りません。

とりあえず、最低限必要な用語の整理をば。。。

Lift (りふと)
  • Scala という言語で書かれたWebフレームワーク
  • 既存のフレームワークのよいとこどり (公式サイトより)
    • "Seaside"の粒度の細かいセッション・セキュリティ管理
    • "Rails"の生産性
    • "Django"の"more than just CRUD is included"(??)
    • "Wicket"のデザイナーフレンドリーなテンプレートスタイル
  • Javaとの親和性 (既存のJavaのライブラリが使える)
Scala (すから) (Lift が使用している言語)
  • JVM上で動作する比較的新しい言語 (2003年登場 from Wikipedia)
  • オブジェクト指向言語(つまりJava)と関数型言語のあいのこ
  • Javaのように静的な型付けを行いながら、動的言語っぽく書ける
Maven (メイヴェン) (Lift で使うパッケージ管理システム)
  • Project Object Model (POM) に基づいたパッケージ管理システム (なんのこっちゃ)
  • Ant より強力なパッケージ管理
    • 依存ライブラリの管理支援
    • コンパイル・テスト・パッケージング・デプロイといったプロジェクトのライフサイクル管理支援


インストール

用語はこのへんにして、インストールしていきます。

参考:
環境: Windows Vista, JDK1.6.0

Scalaのインストール

※たぶん必須ではないですが・・・。まぁ一応。

こちらから、環境に合ったインストーラをダウンロードしてきます。2009/07 現在の最新版は 2.7.5 です。
適当な場所に解凍して、パスを通します。

c:\work>scala -version
Scala code runner version 2.7.5.final -- Copyright 2002-2009, LAMP/EPFL

とバージョンが表示されればOK.

Maven 2のインストール

こちらから、環境に合ったインストーラをダウンロードしてきます。2009/07 現在の最新版は 2.2.0です。Lift 公式サイトによると、2.0.9 以上が必要、とのことなので注意。
適当な場所に解凍して、パスを通します。
また、環境変数 M2_HOME に Maven 2 のフォルダを設定するのが慣例のようです。

c:\work>mvn -version
Apache Maven 2.2.0 (r788681; 2009-06-26 22:04:01+0900)
Java version: 1.6.0_05
Java home: C:\Program Files\Java\jdk1.6.0_05\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows vista" version: "6.0" arch: "x86" Family: "windows"

と、バージョンが表示されればOK.

Maven 2 さえインストールすれば、あとは Maven が必要なライブラリのインストール等、よきにはからってくれるそうです(ネットワーク環境は必須です)。



My First Lift App

Maven で Lift のプロジェクトを作成します。2009/07 現在の最新バージョン 1.0 を使用します。
コマンドプロンプトで、以下を(実際は1行で)打ちこみます。


mvn archetype:create -U \
 -DarchetypeGroupId=net.liftweb \
 -DarchetypeArtifactId=lift-archetype-blank \
 -DarchetypeVersion=1.0 \
 -DremoteRepositories=http://scala-tools.org/repo-releases \
 -DgroupId=com.cocomo.example \
 -DartifactId=helloworld

ごちゃごちゃオプションがあって面倒。。。Maven初心者にはとっつきづらい。
オプションから察するに、このプロジェクトがliftのプロジェクトであることや、必要なライブラリのあるリポジトリの場所Mavenに教えているようです。

最後の groupId と artifactId は自由に決められるオプションで、groupId はJavaのパッケージルート、artifactId はアプリケーション(Mavenではartifactというらしい)名になります。

コマンドを実行すると(初回は必要なライブラリを全部取りにいくので、時間がかかります。気長に待ちます。)、helloworld というフォルダができます。

helloworld フォルダに移動して、jetty (サーブレットコンテナ、Mavenのプラグインが用意されている)を起動します(これも初回はかなり時間がかかる)。

c:\work\lift>cd helloworld
c:\work\lift\helloworld>mvn jetty:run
....
[INFO] Started Jetty Server
[INFO] Starting scanner at interval of 5 seconds.

と表示されれば起動完了。

http://localhost:8080/ にアクセスして Welcome ページが表示されればOK.

Starting with Lift(公式サイト) どおりに作成すると、このようなかなりそっけない Welcome ページが表示されるのですが、scalaのWebフレームワークliftで遊ぶ - ゆるよろ日記 のように archetypeArtifactIdを
-DarchetypeArtifactId=lift-archetype-basic
と指定すると、

といい感じのWelcomeページになります。ほかにもあるんでしょうか。



Hello Lift!

作成した helloworld プロジェクトに、HTMLページを追加してみます。<プロジェクトルート>\src\main\webapp (index.htmlがあるところ)に置けばいいようです。

hello.html

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Hello Lift</title>
</head>
<body>
Hello Lift!
</body>
</html>

http://localhost:8080/hello.html にアクセス。

...そんなページないって。(T-T)

どうやら、ルーティング情報を src\main\scala\bootstrap\liftweb\Boot.scala に書いておく必要があるようです。27行目あたりの entries という変数に、hello.htmlのエントリを(indexページのエントリを真似て)追加します。
// Build SiteMap
// val entries = Menu(Loc("Home", List("index"), "Home")) :: User.sitemap
val entries = Menu(Loc("Home", List("index"), "Home")) :: Menu(Loc("Hello", List("hello"), "Hello")) :: User.sitemap
LiftRules.setSiteMap(SiteMap(entries:_*))


jetty を再起動して、http://localhost:8080/ にアクセスすると、左ペインのメニューに "Hello" という項目が追加されています。














"Hello"リンクを辿ると、


無事、hello.html が表示されました。

トップページ(index.html)のレイアウトを適用するため、index.html のソースをコピーして hello.html を次のように編集します。

<lift:surround with="default" at="content">
<h2>Hello Lift!</h2>
</lift:surround>


これで http://localhost:8080/hello.html にアクセスすると、

のようにテンプレートが適用されています。

このテンプレート自体は、src\main\webapp\templates-hidden\default.html にあります。

0 件のコメント:

コメントを投稿