ウェブサービスを作成する

このガイドでは、App Engine スタンダード環境で動作する Java ウェブサービスの作成方法について説明します。Java ランタイムとその仕組みの詳細については、Java ランタイム環境をご覧ください。

準備

まだインストールしていない場合は、次の作業を行ってください。

  1. 使用する App Engine ランタイム バージョンに Java 開発キット(JDK)の最新バージョンをインストールします。
  2. サンプルアプリのビルド、実行、デプロイを行う Apache Maven をダウンロードしてインストールします。

要点

  • App Engine は実行可能な JAR アプリケーションをアップロードすることにより、アプリケーションを起動します。
  • アプリケーションには、PORT 環境変数で指定されたポート(通常は 8080)の HTTP リクエストに応答するウェブサーバーを起動するメインクラスが必要です。
  • App Engine にサービスをデプロイするためには、app.yaml ファイルが必要です。
  • 依存関係を pom.xml ファイル内にリストすることで、依存関係を使用できます。詳細については、Java ライブラリの使用をご覧ください。

メインクラスを作成する

ウェブサービスの中核となるのが HTTP サーバーです。このガイドのサンプルコードでは、Spring Boot フレームワークを使用して HTTP リクエストを処理していますが、好みのウェブ フレームワークを自由に使用できます。

  1. Maven ビルドシステムを使用して Java の Spring Boot プロジェクトを生成し、Spring Web の依存関係を含めます。まず、次のリンクをクリックします。

    Spring Initializr に移動

  2. Spring Initializer で、[生成] ボタンをクリックしてプロジェクトを生成し、ダウンロードします。

  3. ダウンロードしたプロジェクトで、springboot/src/main/java/com/example/appengine/springboot/DemoApplication.java ファイルを編集して、いくつかの Java インポートと REST hello ハンドラを追加します。

    package com.example.appengine.springboot;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    @SpringBootApplication
    @RestController
    public class DemoApplication {
    public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
    }
    @GetMapping("/")
    public String hello() {
    return "Hello world!";
    }
    }
    

    変更後のクラスはコントローラで、Spring Boot の組み込み Tomcat サーバーを起動し、ルートパス('/')で GET リクエストに「Hello world!」というテキストを返します。

サーバーをローカルで実行する

サーバーをローカルで実行するには:

  1. Spring Boot Maven プラグインを使用して、ローカルのウェブサーバーを起動します。

    mvn spring-boot:run
    
  2. ウェブブラウザに次のアドレスを入力します。
    http://localhost:8080

サンプルアプリから Hello World というメッセージがページに表示されます。ターミナル ウィンドウで Ctrl+C キーを押してウェブサーバーを終了します。

app.yaml ファイルを作成する

App Engine ランタイム環境で、次の手順でアプリの設定を指定します。

  1. 次のディレクトリに app.yaml という名前のファイルを作成します。
    springboot/src/main/appengine/

  2. ファイルに次の内容を追加します。

    Java 21

    runtime: java21
    

    app.yaml ファイルでは、ネットワーク設定やスケーリング設定などを指定することもできます。詳細については、app.yaml リファレンスをご覧ください。

上記の Spring Initializr リンクを使用した場合、ファイル構造は次のようになっているはずです。

  • springboot/
    • pom.xml
    • src/main/
      • appengine/
        • app.yaml
      • java/com/example/appengine/springboot/
        • DemoApplication.java

プロジェクトの pom.xml に、アプリケーションのデプロイを可能にする Maven プラグインを追加することもできます。

            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>2.8.1</version>
                <configuration>
                    <projectId>YOUR_PROJECT_NAME</projectId>
                    <version>YOUR_VERSION</version>
                    <promote>false</promote>
                </configuration>
            </plugin>

次のステップ

これで、適切なポートをリッスンする簡単な Java ウェブサーバーの作成と、app.yaml ファイルでのランタイムの指定が完了したため、サービスを App Engine にデプロイする準備が整いました。