Java の App Engine スタンダード環境のクイックスタート

このクイックスタートでは、短いメッセージを表示する小さな App Engine アプリケーションを作成する方法について説明します。

始める前に

このサンプルを実行してデプロイする前に、次の準備を行う必要があります。

  1. Java SE Development Kit (JDK) をダウンロードしてインストールします。

    JDK をダウンロード

  2. Apache Maven バージョン 3.3.9 以降をダウンロードします。

    Apache Maven をダウンロード

  3. Maven をインストールし、ローカル開発環境に合わせて設定します。

Hello World アプリをダウンロードする

Google Cloud Platform にアプリをデプロイする練習用に、Hello World というシンプルな Java アプリを用意しています。次の手順で Hello World をローカルマシンにダウンロードしてください。

  1. Hello World サンプルアプリ レポジトリのクローンをローカルマシンに作成します。

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    
  2. サンプルコードのあるディレクトリに移動します。

    cd java-docs-samples/appengine/helloworld
    
  3. helloworld ディレクトリ内に、シンプルな HTTPServlet を実装する com.example.appengine.helloworld というパッケージを含む src ディレクトリがあります。

または、.zip ファイルとしてサンプルをダウンロードして展開します。

アプリケーションをテストする

App Engine SDK に含まれるローカル開発用サーバーを使用して、アプリケーションをテストします。

  1. helloworld ディレクトリ内から、次の Maven コマンドを実行してアプリをコンパイルし、ローカル開発用サーバーを起動します。

    mvn appengine:devserver
    

    これで、開発用サーバーがポート 8080 でリクエストを待機するようになります。

  2. ウェブブラウザで http://localhost:8080/ にアクセスしてアプリの動作を確認します。

ローカル開発用サーバーの実行について詳しくは、Java 開発用サーバーのリファレンスをご覧ください。

変更する

アプリケーションの開発中は、開発用サーバーを起動したままにすることができます。変更したいときは、mvn clean package コマンドでアプリをビルドして更新します。

  1. 試してみましょう。開発用サーバーを起動したまま HelloServlet.java を編集して Hello, world を別の文字列に変更します。
  2. mvn clean package を実行し、http://localhost:8080/ を再読み込みして結果を確認します。

アプリケーションをデプロイする

App Engine にアプリをデプロイする前に、Cloud Platform プロジェクトと App Engine アプリケーションを作成する必要があります。

  1. Cloud Platform Console を使用して、新しい Cloud Platform プロジェクトと App Engine アプリケーションを作成します。

    App Engine に移動

    プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択します。App Engine アプリケーションを作成すると、ダッシュボードが開きます。

  2. エディタで src/main/webapp/WEB-INF/appengine-web.xml ファイルを開き、<application> 要素内に作成したプロジェクト ID を指定します。ヒント: このファイル内の <version> 要素を使用して、アプリのバージョンを一意に識別する ID を定義することもできます。

  3. 次のコマンドを実行して、アプリケーションを App Engine にアップロードします。

    mvn appengine:update
    
  4. アプリは App Engine で実行中で、http://[YOUR_PROJECT_ID].appspot.com/ でトラフィックを受け取る準備ができました。

App Engine のロケーション

App EnApp Engine はリージョナルです。つまり、アプリを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。

レイテンシ、可用性、耐久性の要件を満たすことが、アプリを実行するリージョンを選択する際の主な決定要素になります。通常は、アプリのユーザーに最も近いリージョンを選択しますが、アプリで利用する他の Cloud Platform プロダクトやサービスのロケーションも考慮する必要があります。使用するサービスが複数のロケーションにまたがっていると、アプリのレイテンシだけでなく、料金にも影響します。

App Engine は次のリージョンで利用できます。

  • us-central1
  • us-east1
  • us-east4
  • europe-west1
  • europe-west2
  • asia-northeast1

これで完了です。

このクイックスタートは以上です。

アプリケーションの完全 URL は http://[YOUR_PROJECT_ID].appspot.com/ です。トップレベル ドメイン名を購入してアプリに使用したり、すでに登録しているドメイン名を使用したりすることもできます。

クリーンアップ

課金されないようにするには、Cloud Platform プロジェクトを削除してプロジェクト内のすべてのリソースへの課金を停止します。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[プロジェクトの削除] をクリックします。 プロジェクト名の横にあるチェックボックスを選択し、[プロジェクトの削除] をクリックする
  3. ダイアログにプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ

カスタム ドメインを使用する

App Engine アプリには、appspot.com の代わりに独自のカスタム ドメインを使用することもできます。詳しくは、カスタム ドメインと SSL を使用するをご覧ください。

Hello World のコードレビュー

Hello World は、1 つのサービスと 1 つのバージョンのみが含まれる、最もシンプルな App Engine アプリです。このセクションでは、このアプリの各ファイルを詳細に説明します。

HelloServlet.java

このサーブレットは、どのようなリクエストに対しても、Hello, world! を含むレスポンスを送信して応答します。

@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    PrintWriter out = resp.getWriter();
    out.println("Hello, world");
  }
}

pom.xml

helloworld アプリは Maven を使用するので、プロジェクト オブジェクト モデル(POM)を指定する必要があります。POM にはプロジェクトに関する情報と、Maven がプロジェクトのビルドに使用する設定の詳細が含まれています。

<project>
  <modelVersion>4.0.0</modelVersion>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <groupId>com.example.appengine</groupId>
  <artifactId>appengine-helloworld</artifactId>
  <parent>
    <groupId>com.google.cloud</groupId>
    <artifactId>appengine-doc-samples</artifactId>
    <version>1.0.0</version>
    <relativePath>..</relativePath>
  </parent>
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <!-- for hot reload of the web application -->
    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <version>3.3</version>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <!-- Parent POM defines ${appengine.sdk.version} (updates frequently). -->
      <plugin>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>${appengine.sdk.version}</version>
      </plugin>
    </plugins>
  </build>
</project>

appengine-web.xml

appengine-web.xml を使用して App Engine の動作を設定する必要もあります。アプリケーションをアップロードする前に、このファイルを使用して、アプリケーションのバージョンと、Google Cloud Platform プロジェクトのプロジェクト ID を指定します。今回は、このファイルをそのまま使用しても問題ありません。

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>YOUR-PROJECT-ID</application>
  <version>YOUR-VERSION-ID</version>
  <threadsafe>true</threadsafe>
</appengine-web-app>

web.xml

Java ウェブ アプリケーションでは、デプロイ記述子ファイルを使用して、URL からサーブレットへのマッピング、認証が必要な URL などの情報を決定します。このファイルは web.xml という名前で、アプリケーションの WAR の WEB-INF/ ディレクトリに置きます。web.xml は、ウェブ アプリケーションのサーブレット標準の一部となります。

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.example.appengine.helloworld.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

プラットフォーム全体について学ぶ

App Engine アプリを開発し、デプロイするとどうなるかわかったところで、Google Cloud Platform の残りの部分を確認しましょう。App Engine だけでなくプラットフォーム全体を使用するアプリケーションの作成方法を学ぶチュートリアルについては、ゲストブックの作成クイックスタートをご覧ください。このクイックスタートでは、このシンプルなアプリケーションを拡張して、認証済み Google アカウントからパブリック ページにメッセージを投稿できる本格的なゲストブック アプリケーションを作成します。

App Engine スタンダード環境の詳細

App Engine についてさらに理解を深めるためのトピックをご紹介します。

このページは役立ちましたか?評価をお願いいたします。

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

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