Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。worldそれでは、Liftの動作環境の構築からHelloWorldの実行までの手順を説明します。2がインストールされている必要があります。本稿では、以下のバージョンを利用します。2のインストールや環境変数の設定を自動で実行することもできます。下記のリンクからご使用のOSに合わせたインストーラをダウンロードして実行するだけです。InstallerLiftはScalaのWebアプリケーションフレームワークですが、必ずしもScalaの実行環境をあらかじめインストールしておく必要はありません。コンソールで動作を確認したりするのに便利ですので、Scalaの実行環境も合わせてインストールしておくことをお奨めします。Scalaのインストールは、以下の公式サイトから最新版をダウンロードして解凍し、解凍されたディレクトリ以下のbinディレクトリを実行パスに設定するだけです。LanguageLiftプロジェクトの作成では、早速プロジェクトを作成してみましょう。DOSプロンプトまたはターミナルを起動し、プロジェクトを作成したいディレクトリに移動します。ここではworkディレクトリとします。workつぎに、mvnコマンドでLiftプロジェクトを作成します。archetypeというひな形をもとにプロジェクトを作成するコマンドです。archetypeもいくつか用意されています。ここでは、基本的な機能をあらかじめ含んだプロジェクトである"lift-archetype-basic"を利用します。そのほかのオプションについては、以下の表を参照してください。生成するプロジェクトのバージョンコマンドを実行すると、リスト7のように作成するソースコードのパッケージを問い合わせるプロンプトが表示しされます。パッケージ名のデフォルトは"-DgroupId"オプションで指定した値ですので、特に変更する必要がなければそのままエンターキーを押します。エンターキーを押しますプロジェクトの作成が成功すると、リスト8のようなメッセージが表示され、helloworldディレクトリが作成されているはずです。engineなどとともに、Lift本体と必要とするライブラリがMaven2によりダウンロードされているので、すぐにでも動作させることができるのです。作成されたLiftプロジェクトは、リスト9に示すようなファイル/ディレクトリ構成になっています。AppTest.scala「src/main/scala」以下が、Scalaのソースコードを配置するディレクトリです。以下、パッケージ名に沿ってサブディレクトリが定義されています。今回例として作成したプロジェクトのパッケージは、"demo.helloworld"ですので、「src/main/scala/helloworld」以下に、modelやsnippetを配置するサブパッケージが作成されています。「src/main/webapp」は、warファイルにパッケージングされる際のコンテキストルートディレクトリになります。src/main/webapp以下に、アプリケーションで利用するテンプレートやCSSファイル、JavaScriptファイルなどを配置することになります。「src/test」以下は、テストクラスを配置するためのディレクトリです。開発サーバーの起動・動作確認プロジェクトが作成できたら、さっそくアプリケーションを動かしてみましょう。jetty:run"と入力すると、開発サーバーとしてJettyが起動します。jetty:run以下のリスト11のようなメッセージが表示されたら開発サーバーの起動は完了です。seconds.では、ブラウザを起動し、"http://localhost:8080/"にアクセスしてみましょう。正常に動作してるならば、以下の画面が表示されます。Password]などのメニューは、Liftではじめから組み込まれているユーザ管理機能とSiteMapによって自動的に作成されるものです。Up]リンクをクリックして、表示されるフォームに入力してユーザを作成してみましょう。Up]ボタンを押すとユーザが作成され、ログインした状態になります。メニューの内容が変化しているのが分かると思います。engineによってファイル上に保存されています。よって、次回開発サーバを起動した際にも保存したデータは利用できます。これで、Liftはプロジェクトを作成した時点ですぐに動作を確認できることがお分かりいただけたかと思います。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Technologies。執筆コミュニティ「WINGSプロジェクト」代表。