ウェブサービスの作成

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

始める前に

まだインストールしていない場合は、次の操作を行います。

  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 で、[Generate] ボタンをクリックしてプロジェクトを生成し、ダウンロードします。

  3. ダウンロードしたプロジェクトで、アプリケーション クラスを変更して次のインポートとコードを含めます。

    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 SpringbootApplication {
    
      public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.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 という名前のファイルを作成します。
    my-java-service/src/main/appengine/

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

    Java 17

    runtime: java17
    

    Java 11

    runtime: java11

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

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

  • my-java-service/
    • pom.xml
    • src/main/
      • appengine/
        • app.yaml
      • java/com/example/appengine/springboot/
        • SpringbootApplication.java

次のステップ

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