SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Scala+Liftによる実践Webアプリケーション開発

ScalaによるWebアプリケーションフレームワーク「Lift」とは

Scala+Liftによる実践Webアプリケーション開発(1)

  • X ポスト
  • このエントリーをはてなブックマークに追加

Quick startによるHello world

 それでは、Liftの動作環境の構築からHelloWorldの実行までの手順を説明します。

動作環境のインストール

 Liftで開発を行うためには、最低限JDK 5以上とMaven 2がインストールされている必要があります。

 本稿では、以下のバージョンを利用します。

 上記の環境がある場合は、すぐにでもLiftを利用することができますが、Liftのインストーラを利用することでMaven 2のインストールや環境変数の設定を自動で実行することもできます。下記のリンクからご使用のOSに合わせたインストーラをダウンロードして実行するだけです。

 LiftはScalaのWebアプリケーションフレームワークですが、必ずしもScalaの実行環境をあらかじめインストールしておく必要はありません。

 しかし、コンソールで動作を確認したりするのに便利ですので、Scalaの実行環境も合わせてインストールしておくことをお奨めします。

 Scalaのインストールは、以下の公式サイトから最新版をダウンロードして解凍し、解凍されたディレクトリ以下のbinディレクトリを実行パスに設定するだけです。

Liftプロジェクトの作成

 では、早速プロジェクトを作成してみましょう。

 DOSプロンプトまたはターミナルを起動し、プロジェクトを作成したいディレクトリに移動します。ここではworkディレクトリとします。

[リスト5]プロジェクト作成ディレクトリへ移動
cd work

 つぎに、mvnコマンドでLiftプロジェクトを作成します。

[リスト6-1]Liftプロジェクトの作成(読みやすいようにオプションを折り返して表示したもの)
mvn archetype:generate -U (折り返し)
  -DarchetypeGroupId=net.liftweb (折り返し)
  -DarchetypeArtifactId=lift-archetype-basic (折り返し)
  -DarchetypeVersion=1.0 (折り返し)
  -DremoteRepositories=http://Scala-tools.org/repo-releases (折り返し)
  -DgroupId=demo.helloworld (折り返し)
  -DartifactId=helloworld (折り返し)
  -Dversion=1.0
[リスト6-2]Liftプロジェクトの作成(実際入力しやすいように1行で表示したもの)
mvn archetype:generate -U -DarchetypeGroupId=net.liftweb -DarchetypeArtifactId=lift-archetype-basic -DarchetypeVersion=1.0 -DremoteRepositories=http://Scala-tools.org/repo-releases -DgroupId=demo.helloworld -DartifactId=helloworld -Dversion=1.0

 "mvn archetype:generate"コマンドは、Maven archetypeというひな形をもとにプロジェクトを作成するコマンドです。Lift用のMave archetypeもいくつか用意されています。ここでは、基本的な機能をあらかじめ含んだプロジェクトである"lift-archetype-basic"を利用します。

 そのほかのオプションについては、以下の表を参照してください。

mvn archetype:generateコマンドのオプション
オプション 説明
-DarchetypeGroupId 元となるArchitypeのGroup Id
-DarchetypeArtifactId 元となるArchitypeのArtifactId Id
-DarchetypeVersion 元となるArchitypeのバージョン
-DremoteRepositories Archtypeを取得する先のリポジトリURL
-DgroupId 生成するプロジェクトのGroup Id
-DartifactId 生成するプロジェクトのArtifactId Id
-Dversion 生成するプロジェクトのバージョン

 コマンドを実行すると、リスト7のように作成するソースコードのパッケージを問い合わせるプロンプトが表示しされます。パッケージ名のデフォルトは"-DgroupId"オプションで指定した値ですので、特に変更する必要がなければそのままエンターキーを押します。

[リスト7]パッケージ名の問い合わせ
package: demo.helloworld
 Y: :    ← エンターキーを押します

 プロジェクトの作成が成功すると、リスト8のようなメッセージが表示され、helloworldディレクトリが作成されているはずです。

[リスト8]プロジェクト作成が成功した場合のメッセージ
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15 seconds
[INFO] Finished at: Thu Aug 06 17:30:45 JST 2009
[INFO] Final Memory: 12M/80M
[INFO] ------------------------------------------------------------------------

 こうして作成されたプロジェクトは、Scalaの実行環境や、JettyやH2 Database engineなどとともに、Lift本体と必要とするライブラリがMaven2によりダウンロードされているので、すぐにでも動作させることができるのです。

Liftプロジェクトの構成

 作成されたLiftプロジェクトは、リスト9に示すようなファイル/ディレクトリ構成になっています。

[リスト9]Liftプロジェクトのディレクトリ構成
helloworld/
|-- pom.xml
`-- src
   |-- main
   |   |-- resources                         -- リソースファイルを配置
   |   |-- scala
   |   |   |-- bootstrap
   |   |   |   `-- liftweb
   |   |   |       `-- Boot.scala            -- アプリケーションの設定
   |   |   `-- demo
   |   |       `-- helloworld                -- アプリケーションのパッケージ
   |   |           |-- comet                 -- comet関連のsnipetを配置
   |   |           |-- lib                   -- 一般的な依存クラスなどを配置
   |   |           |-- model                 -- Modelクラスを配置
   |   |           |   `-- User.scala
   |   |           |-- snippet               -- Snippetクラスを配置
   |   |           |   `-- HelloWorld.scala
   |   |           `-- view                  -- Viewクラスを配置
   |   |
   |   `-- webapp                            -- コンテキストルートディレクトリ
   |       |-- WEB-INF
   |       |   `-- web.xml
   |       |-- index.html                    -- Topページのテンプレート
   |       `-- templates-hidden              -- デフォルトのTemplate
   |           `-- default.html
   `-- test                                  -- テストクラスなどを配置
       |-- resources
       `-- scala
           |-- LiftConsole.scala
           |-- RunWebApp.scala
           `-- demo
               `-- helloworld
                   `-- 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」以下は、テストクラスを配置するためのディレクトリです。

開発サーバーの起動・動作確認

 プロジェクトが作成できたら、さっそくアプリケーションを動かしてみましょう。

 「helloworld」ディレクトリに移動し、リスト10にあるとおり"mvn jetty:run"と入力すると、開発サーバーとしてJettyが起動します。

[リスト10]開発サーバーの起動
cd helloworld
mvn jetty:run

 以下のリスト11のようなメッセージが表示されたら開発サーバーの起動は完了です。

[リスト11]開発サーバーの起動完了
[INFO] Started Jetty Server
[INFO] Starting scanner at interval of 5 seconds.

 では、ブラウザを起動し、"http://localhost:8080/"にアクセスしてみましょう。正常に動作してるならば、以下の画面が表示されます。

図4:helloworldプロジェクトのTop画面
図4:helloworldプロジェクトのTop画面

 画面左に表示されている[Login][Sign Up][Lost Password]などのメニューは、Liftではじめから組み込まれているユーザ管理機能とSiteMapによって自動的に作成されるものです。

 [Sign Up]リンクをクリックして、表示されるフォームに入力してユーザを作成してみましょう。

図5:Sing Up画面
図5:Sing Up画面

 フォームに入力して[Sign Up]ボタンを押すとユーザが作成され、ログインした状態になります。メニューの内容が変化しているのが分かると思います。

図6:ログイン後のTop画面
図6:ログイン後のTop画面

 ここで登録したユーザーのデータは、H2 Database engineによってファイル上に保存されています。よって、次回開発サーバを起動した際にも保存したデータは利用できます。

 これで、Liftはプロジェクトを作成した時点ですぐに動作を確認できることがお分かりいただけたかと思います。

次のページ
helloworldプロジェクトをカスタマイズする

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Scala+Liftによる実践Webアプリケーション開発連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 尾崎 智仁(オザキ トモヒト)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4310 2009/09/16 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング