Scala とかまったく知りません。
とりあえず、最低限必要な用語の整理をば。。。
Lift (りふと)
- Scala という言語で書かれたWebフレームワーク
- 既存のフレームワークのよいとこどり (公式サイトより)
- "Seaside"の粒度の細かいセッション・セキュリティ管理
- "Rails"の生産性
- "Django"の"more than just CRUD is included"(??)
- "Wicket"のデザイナーフレンドリーなテンプレートスタイル
- Javaとの親和性 (既存のJavaのライブラリが使える)
- JVM上で動作する比較的新しい言語 (2003年登場 from Wikipedia)
- オブジェクト指向言語(つまりJava)と関数型言語のあいのこ
- Javaのように静的な型付けを行いながら、動的言語っぽく書ける
- 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
オプションから察するに、このプロジェクトが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 件のコメント:
コメントを投稿