App Engine フレキシブル環境での Java のクイックスタート

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

始める前に

このサンプルを実行する前に、次の手順を行います。

  1. Cloud Platform コンソールを使用して新しい Cloud Platform プロジェクトを作成し、App Engine アプリケーションを作成して、課金を有効にします。 App Engine に移動

    プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択し、課金を有効にします。

  2. 次の前提条件をインストールします。
    1. git をダウンロードしてインストールします
    2. このクイックスタートでは、Apache Maven を使用してサンプルアプリの構築、実行、デプロイを行います。Maven のインストールについては、Apache Maven と App Engine のプラグインの使用をご覧ください。
このクイックスタートでは、Java SE Runtime Environment 8 がインストール済みであることを前提としています。

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

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

サンプルアプリをダウンロードし、アプリのディレクトリに移動するには:

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

    git clone https://github.com/GoogleCloudPlatform/getting-started-java
    

    または、zip のサンプルをダウンロードして解凍することもできます。

  2. サンプルコードが入っているディレクトリに移動します。

    cd getting-started-java/helloworld-servlet
    

ローカルマシン上で Hello World を実行する

ローカルマシン上で Hello World アプリを実行するには:
  1. Jetty Maven プラグインを使用してローカルの Jetty ウェブサーバーを起動します。

    mvn jetty:run-exploded
    
  2. ウェブブラウザで、次のアドレスを入力します。

    http://localhost:8080
    
サンプルアプリから Hello World というメッセージがページに表示されます。

ターミナル ウィンドウで Ctrl+C キーを押してウェブサーバーを終了します。

Hello World を App Engine にデプロイして実行する

App Engine フレキシブル環境にアプリをデプロイするには:

  1. helloworld ディレクトリで次のコマンドを実行し、Hello World アプリをデプロイします。
    mvn appengine:deploy
  2. 次のアドレスに移動して、デプロイされたアプリを確認します。
    https://[YOUR_PROJECT_ID].appspot.com

今回、Hello World メッセージが表示されるページは、App Engine インスタンスで実行されているウェブサーバーから配信されます。

これで完了です。 App Engine フレキシブル環境に最初の Java アプリをデプロイできました。

クリーンアップする

このチュートリアルで使用するリソースについて Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

  1. Cloud Platform Console に移動します。
  2. シャットダウンするプロジェクトを選択し、[プロジェクトを削除] をクリックします。これによってプロジェクトの削除がスケジュールされます。

次のステップ

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

App Engine アプリの開発とデプロイの概要を理解した後は、Google Cloud Platform の残りの部分についても学習しましょう。すでに Google Cloud SDK がインストールされているので、Google Cloud SQL、Google Cloud Storage、Google Cloud Datastore といったプロダクトを操作するツールを使用できます。App Engine だけでなくプラットフォーム全体を使用するアプリケーションの作成方法を学ぶチュートリアルについては、Bookshelf アプリの作成に関するクイックスタートをご覧ください。

App Engine フレキシブル環境について学習する

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

Hello World コードレビュー

Hello World には 1 つのサービスのみ含まれ、1 つのバージョンのみ存在し、すべてのコードがアプリのルート ディレクトリに存在するため、最もシンプルな App Engine アプリです。このセクションでは、このアプリの各ファイルの詳細について説明します。

HelloServlet.java

HelloServlet.java ファイルでは、アプリがリクエストをリッスンする場所を記述する URL パターンを指定し、すべてのリクエストに対して「Hello World」というメッセージで応答します。

@SuppressWarnings("serial")
@WebServlet(name = "helloworld", value = "/" )
public class HelloServlet extends HttpServlet {

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

app.yaml

app.yaml ファイルには、アプリケーションのデプロイ設定が記述されます。

runtime: java
env: flex

handlers:
- url: /.*
  script: this field is required, but ignored
  secure: always  # Require HTTPS

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

manual_scaling:
  instances: 1
app.yaml はこのアプリで使用するランタイムを指定します。env: flex を設定することで、アプリでフレキシブル環境を使用することを指定します。

pom.xml

Hello World には pom.xml ファイルも含まれており、ここには依存関係やビルド ターゲットなどのプロジェクト情報が記述されています。

<project>                               <!-- REQUIRED -->

  <modelVersion>4.0.0</modelVersion>    <!-- REQUIRED -->
  <packaging>war</packaging>            <!-- REQUIRED -->

  <groupId>com.example.flex.helloworld</groupId>
  <artifactId>helloworld-servlet</artifactId> <!-- Name of your project -->
  <version>1.0-SNAPSHOT</version>       <!-- xx.xx.xx -SNAPSHOT means development -->

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source> <!-- REQUIRED -->
    <maven.compiler.target>1.8</maven.compiler.target> <!-- REQUIRED -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <failOnMissingWebXml>false</failOnMissingWebXml> <!-- REQUIRED -->
    <appengine.maven.plugin>1.0.0</appengine.maven.plugin>
    <jetty.maven.plugin>9.3.8.v20160314</jetty.maven.plugin>
  </properties>

  <parent>                              <!-- Get parameters and allow bulk testing -->
    <artifactId>getting-started-java</artifactId>
    <groupId>com.example.flex</groupId>
    <version>1.0.0</version>
    <relativePath>..</relativePath>
  </parent>

  <prerequisites>                       <!-- Optional, but suggested -->
    <maven>3.3.9</maven>                <!-- Recommended minimum maven version -->
  </prerequisites>

  <dependencies>
    <dependency>                        <!-- REQUIRED -->
      <groupId>javax.servlet</groupId>  <!-- Java Servlet API -->
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>           <!-- Provided by the Jetty Servlet Container -->
    </dependency>
  </dependencies>

  <build>
    <!-- For hot reload of the web application when using an IDE Eclipse / IDEA -->
    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>

    <plugins>

      <plugin>                          <!-- Used for local debugging -->
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty.maven.plugin}</version>
      </plugin>

      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>${appengine.maven.plugin}</version>
        <configuration>
          <!-- deploy configuration -->
<!--
          <deploy.promote>true</deploy.promote>                           <!~~ DEFAULT value ~~>
          <deploy.stopPreviousVersion>true</deploy.stopPreviousVersion>   <!~~ DEFAULT value ~~>
 -->
        </configuration>
      </plugin>

    </plugins>
  </build>
</project>

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

App Engine flexible environment for Java docs