SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

Google App Engine/JavaによるScala/Liftアプリケーション開発

Google App Engine/JavaによるScala/Liftアプリケーション開発(前編)

Liftアプリケーション開発の基本とDataStoreの利用

Boot.scalaによる設定とレイアウト、CSSの配置

 Topページと登録画面を実装しましたので、最後にBoot.scalaに設定を行いましょう。

[リスト9]Boot.scalaの設定
class Boot {
  def boot {
      ...中略...
    // Build SiteMap
    
    val entries = Menu(Loc("Home", List("index"), "Topページ")) ::
      Menu(Loc("Save", List("save"), "イベントを作る")) :: Nil // *1

    LiftRules.setSiteMap(SiteMap(entries:_*))

    // /save/1のようにURLからIDへパラメータを設定する
    LiftRules.rewrite.append {
      case RewriteRequest(ParsePath( List("save", id), _ , _ ,_ ), _, _) =>
        RewriteResponse("save"::Nil , Map("id" -> id))
    } // *2

    LiftRules.early.append{ _.setCharacterEncoding("UTF-8") } // *3

  }
}

 太字が修正部分です。*1は、登録画面をメニューに追加しています。

 *2は、"/save/1"のようなRESTFulなURLでidをパラメータとして受け取るための設定です。*3は、フォームから送信されたデータをUTF-8で扱うために設定しています。

 デフォルトのレイアウトも修正します。"src/main/webapp/templates-hidden/default.html"を、ダウンロードサンプルに含まれる同名のファイルと同じ内容に置き換えます。

 最後に、CSSファイルを用意して画面の見た目を整えます。"src/main/webapp"に"eventengine.css"というファイル名で、ダウンロードサンプルに含まれる同名のファイルと同じ内容のものを用意します。

 これで、登録できるようになるまでの基本的な実装が終わりました。

動作確認

 では、ローカル環境で動作確認してみましょう。

ローカル環境での動作確認

 まずは、mavenコマンドでコンパイルを行います。リスト10のようにmvn packageコマンドを実行することで、targetディレクトリにアプリケーションがコンパイルされ、warファイルとして出力されます。

[リスト10]mavenコマンドでコンパイル
mvn package

 ローカルでの開発サーバの起動は、Google App EngineのSDkを利用します。リスト11のようにGoogle App EngineのSDkに含まれているdev_appserverコマンドで、mvn packageで出力されたwebアプリケーションディレクトリ("target/czeventengine-1.0-SNAPSHOT")を引数に指定することで、開発サーバが起動します。

[リスト11]開発サーバの起動
 dev_appserver.sh ./target/czeventengine-1.0-SNAPSHOT

 開発サーバが起動したら"http://localhost:8080"にアクセスして、イベントを登録してみましょう。 また、今回作成したアプリケーションは、実際にGoogle App Engine上で動作しています。http://czeventengine.appspot.com/で、筆者が作成したアプリケーションに実際にアクセスすることができます。

まとめ

 今回は、LiftアプリケーションをGoogle App Engine上で動作させる方法と、Low Level APIを利用したデータアクセスについて解説しました。

 Google App Engineというクラウドサービスと、Scala/Liftを組み合わせることで、スケーラビリティの不安がないサービスを柔軟でシンプルなプログラムで実装できる可能性が開けてきました。また、Google App Engineでは、Googleアカウントによるユーザー認証やTaskQueueによる非同期処理などGoogleが提供するサービスを利用したサービスを提供することができます。

 ここまでの内容では、まだイベントへの参加登録ができない中途半端な状態ですが、次回は、Googleが提供するユーザーアカウント認証を利用して参加登録を行い、TaskQueueを利用した非同期処理で参加者へリマインダメールを送信する機能を追加する方法を解説します。

参考資料

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Google App Engine/JavaによるScala/Liftアプリケーション開発連載記事一覧
この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5004 2010/04/16 14:00

イベント

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

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

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

メールバックナンバー