ゲストブック アプリケーションの作成

このチュートリアルでは、Google App Engine に対応した簡単な Java アプリケーション(ゲストブック)の実装に必要なコードを示します。このゲストブックを使用すると、ユーザーは公開メッセージ ボードにメッセージを投稿できるようになります。このアプリケーションでは、javax.servletJavaServer Pages(JSP)を使用します。

このコード チュートリアルの作業は次のとおりです。

  • チュートリアル プロジェクトのクローンを作成します。
  • プロジェクトの主要部分で呼び出される App Engine の重要な機能について調べます。
  • プロジェクトを実行、テスト、デプロイします。

このチュートリアルは、Java に関する詳しい知識があることを前提としています。

このアプリケーションの UI は、次のようなものになります。

Hello_UI

目標

  • 必要となるレイアウトとファイルを使用して App Engine プロジェクトを表示するための Apache Maven プロジェクトのチュートリアルを実行する。
  • ユーザー リクエストにレスポンスするサーブレットのコードと JSP のテンプレートについて理解する。
  • ユーザー認証のための Google アカウントとの統合について理解する。
  • Google Cloud Datastore にデータを保存するための Objectify の使用方法について理解する。
  • ローカルの開発用サーバーでアプリのビルドとテストを実行する。
  • 本番用の Google App Engine にアプリをデプロイする。

費用

App Engine の使用は特定条件のもとで無料です。App Engine の合計使用量が、App Engine 無料割り当てで指定された上限未満である場合、このチュートリアルを実行しても料金は発生しません。

始める前に

  1. Cloud Platform Console で Cloud Platform プロジェクトを作成または選択します。プロジェクトに App Engine アプリケーションが含まれていることを確認します。

    App Engine に移動

    プロジェクトに App Engine アプリケーションが存在する場合には、ダッシュボードが開きます。存在しない場合には、App Engine アプリケーションを配置するリージョンを選択するように指示されます。

  2. プロジェクト ID をメモしておきます。この ID はプロジェクト名とは異なる場合があります。プロジェクト ID はコマンドや設定で使用します。

  3. Java 7 SDK のインストールが必要です(Enterprise Edition が最適です)。詳細は、ダウンロードとインストールの手順をご覧ください。

  4. Maven 3.3.9 以降がインストールされている必要があります。Maven の設定をご覧ください。

チュートリアル プロジェクトのクローン作成

ローカルマシンに Guestbook アプリ レポジトリのクローンを作成して(まだ作成していない場合)、そのクローンの final サブディレクトリにディレクトリを変更します。

git clone https://github.com/GoogleCloudPlatform/appengine-java-guestbook-multiphase.git
cd appengine-java-guestbook-multiphase/final

または、zip ファイルとしてサンプルをダウンロードし、展開してもかまいません。

クローニング(またはダウンロード)したプロジェクトには、2 つのサブプロジェクト finalphase1 が含まれています。このチュートリアルでは、final というプロジェクトについてのみ説明します。

プロジェクトのレイアウトとファイルの表示

tree コマンド(または同等のコマンド)を final サブディレクトリで実行すると、次に示すような final プロジェクトの構造が作成されます。

Maven プロジェクトのレイアウト

このチュートリアルでは、これらのファイルの一部について、その内容を詳しく説明します。ここでは、これらのファイルの概要をすぐに把握できるように、簡単な一覧を示します。

ファイル 説明
pom.xml Maven で使用するプロジェクトの設定と依存関係。
appengine-web.xml このアプリケーションのデプロイ先のプロジェクト ID、アプリケーション バージョン、アプリケーションのロギングに使用する logging.properties ファイルの場所を指定するために使用します。
logging.properties デフォルトのログレベル(ErrorWarningInfo など)を設定するために使用します。
web.xml サーブレットに必要なマッピングをすべて実行します。
Greeting.java ユーザーが投稿し、Google Cloud Datastore に保存されて、メッセージ ボードに表示されるエンティティを定義します。
Guestbook.java Objectify に Greeting エンティティを登録します。
OfyHelper.java Objectify サービスをサーブレット SignGuestbookServlet.java に登録するリスナー。
SignGuestbookServlet.java ユーザーのメッセージ ボードへのメッセージの POST リクエストと、メッセージの保存を処理するサーブレット。

ローカルでビルドして実行する

サンプルをローカルでビルドして実行するには:

  1. プロジェクトのサブディレクトリ appengine-java-guestbook-multiphase-master/final から、次のコマンドを実行します。

    mvn clean package
    
  2. プロジェクトがビルドされるまで待ちます。プロジェクトが正常に完了すると、次に示すようなメッセージが表示されます。

    [INFO] --------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] --------------------------------------------------
    [INFO] Total time: 1:16.656s
    [INFO] Finished at: Mon Apr 5 11:42:22 PDT 2016
    [INFO] Final Memory: 16M/228M
    [INFO] --------------------------------------------------
    
    ----
    
  3. 次に示す Maven コマンドを実行して、アプリケーションをローカルで起動します。

     mvn appengine:devserver
    
  4. 次に示すような成功メッセージが表示されるまで待機します。

     [INFO] INFO: Module instance default is running at http://localhost:8080/
     [INFO] Apr 5, 2016 3:28:38 PM com.google.appengine.tools.development.AbstractModule startup
     [INFO] INFO: The admin console is running at http://localhost:8080/_ah/admin
     [INFO] Apr 5, 2016 3:28:38 PM com.google.appengine.tools.development.DevAppServerImpl doStart
     [INFO] INFO: Dev App Server is now running
    
  5. ブラウザで、次に示す URL に移動します。

    http://localhost:8080/guestbook.jsp

    初めて localhost:8080 にアクセスしたときに、制限付きクラスを示すランタイム エラー(java.lang.NoClassDefFoundError: java.nio.charset.StandardCharsets is a restricted class. など)が発生した場合は、final/pom.xml の設定を確認してください。App Engine のバージョンは、最新の App Engine SDK のバージョン(1.9.54)に設定する必要があります。

  6. アプリによって、ログインを求めるページが表示されます。[ログイン] リンクをクリックしてから、任意のメールアドレスでログインします。開発サーバーには、テスト目的のごく基本的な Google アカウント ログイン プロセスのエミュレーションしかないため、有効であろうとなかろうと、指定したどんなメールアドレスでも受け付けられ、指定された値に基づいて偽のユーザー オブジェクトが生成されます。本番環境にデプロイする場合、この同じコードには有効な Google アカウントとメールアドレスが必要で、有効なユーザー オブジェクトが生成されます。

  7. Ctrl+C キーを押して、開発用サーバーを停止します。

外出先でもリソースをモニタリング

Google Cloud Console アプリを入手して、プロジェクトの管理にお役立てください。

フィードバックを送信...

Java の App Engine スタンダード環境