1. 始める前に
App Engine アプリは作成や管理が簡単で、トラフィックやデータ ストレージのニーズの変化に合わせて容易にスケーリングできます。App Engine 環境では、サーバーを管理する手間がかかりません。必要な作業は、アプリをアップロードすることだけです。
App Engine アプリは、受信したトラフィック量に応じて自動的にスケールします。ロード バランシング、マイクロサービス、認可、SQL および NoSQL データベース、メモリ キャッシュ、トラフィック分割、ロギング、検索、バージョニング、ロールアウトとロールバック、セキュリティ スキャンはすべてネイティブでサポートされており、高度にカスタマイズできます。
App Engine スタンダード環境と App Engine フレキシブル環境は、Java、Python、PHP、NodeJS、Go など、数多くのプログラミング言語をサポートしています。この 2 つの環境により、デベロッパーはアプリの動作を最大限に柔軟に制御できます。各環境には特定の強みがあります。詳細については、App Engine 環境の選択をご覧ください。
このチュートリアルでは、Spring Boot アプリを App Engine スタンダード環境にデプロイする方法を学習します。標準環境は、使用されていない場合はゼロ インスタンスにスケールダウンし、自動的にスケールアップします。
前提条件
- Java プログラミング言語とツールに関する知識
- Linux の標準的なテキスト エディタ(Vim、Emacs、nano など)に関する知識
演習内容
- App Engine で Spring Boot Java アプリを作成する方法
必要なもの
- Google Cloud プロジェクト
- ブラウザ(Google Chrome など)
2. 設定と要件
セルフペース型の環境設定
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。



- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_IDと識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
Cloud Shell
Google Cloud 上で動作するコマンドライン環境の Cloud Shell を使用します。
Cloud Shell をアクティブにする
- Cloud Console で、[Cloud Shell をアクティブにする]
をクリックします。

Cloud Shell を初めて起動する場合は、その内容を説明する中間画面が表示されます。中間画面が表示された場合は、[続行] をクリックします。

すぐにプロビジョニングが実行され、Cloud Shell に接続されます。

この仮想マシンには、必要な開発ツールがすべて用意されています。仮想マシンは Google Cloud で稼働し、永続的なホーム ディレクトリが 5 GB 用意されているため、ネットワークのパフォーマンスと認証が大幅に向上しています。このコードラボで行う作業のほとんどはブラウザから実行できます。
Cloud Shell に接続すると、認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されていることがわかります。
- Cloud Shell で次のコマンドを実行して、認証されたことを確認します。
gcloud auth list
コマンド出力
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
コマンド出力
[core] project = <PROJECT_ID>
上記のようになっていない場合は、次のコマンドで設定できます。
gcloud config set project <PROJECT_ID>
コマンド出力
Updated property [core/project].
3. 新しい Spring Boot ウェブアプリを作成する
Cloud Shell の起動後に以下のコマンドラインを使用すると、Spring Initializr を使用して新しい Spring Boot アプリを生成できます。
$ curl https://start.spring.io/starter.tgz \ -d bootVersion=3.0.5 \ -d dependencies=web \ -d type=maven-project \ -d baseDir=gae-standard-example | tar -xzvf - $ cd gae-standard-example
4. Maven pom.xml を更新する
Java サーバーアプリをデプロイするには、Maven App Engine プラグインまたは Gradle App Engine プラグインを使用する方法と、war パッケージ ディレクトリをデプロイする方法の 2 つがあります。Maven App Engine プラグインを使用してアプリをデプロイします。
Maven App Engine Plugin を追加する
pom.xml を更新して、デプロイ プロセスを簡素化する Google Cloud プラグインを含めます。ファイルの編集には、Vim、nano、Emacs を使用できます。
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
...
<build>
<plugins>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.4.4</version>
<configuration>
<version>1</version>
<projectId>GCLOUD_CONFIG</projectId>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
5. App Engine ディスクリプタを追加する
- アプリを App Engine スタンダード環境にデプロイするには、新しい
src/main/appengine/app.yaml記述子ファイルを作成する必要があります。
$ mkdir -p src/main/appengine/ $ touch src/main/appengine/app.yaml
src/main/appengine/app.yamlファイルを編集して、次の内容を追加します。
src/main/appengine/app.yaml
runtime: java17
instance_class: F1
6. コントローラを追加する
DemoApplication.java で "hello world!" を返す新しいコントローラを追加します。
src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;
...
// Add imports
import org.springframework.web.bind.annotation.*;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
// Add the controller.
@RestController
class HelloWorldController {
@GetMapping("/")
public String hello() {
return "hello world!";
}
}
7. アプリをローカルで実行する
- JAVA_HOME が正しい JDK バージョンに設定されていることを確認します。
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
- Spring Boot プラグインを使用して Spring Boot アプリを起動できます。
$ ./mvnw -DskipTests spring-boot:run
- アプリが起動したら、Cloud Shell ツールバーの [ウェブでプレビュー]
をクリックし、[ポート 8080 でプレビュー] を選択します。

ブラウザのタブが開き、起動したサーバーに接続されます。

8. App Engine にアプリをデプロイする
- まず、App Engine アプリを実行できるようにプロジェクトを初期化します。また、米国の中央リージョンで実行するようにプロジェクトを初期化します。
$ gcloud app create --region us-central You are creating an app for project [...]. WARNING: Creating an App Engine application for a project is irreversible and the region cannot be changed. More information about regions is at https://cloud.google.com/appengine/docs/locations
- 次に、
mvn appengine:deployを実行して、アプリを App Engine スタンダード環境にデプロイします。
$ ./mvnw -DskipTests package appengine:deploy ... first time deploy may take a couple of minutes
- アプリがデプロイされたら、ウェブブラウザで http://<プロジェクト ID>.appspot.com を開くか、Cloud Shell で次のコマンドを使用してアクセスできます。
$ gcloud app browse ... [It may print out the URL for your app]
9. クリーンアップ
App Engine アプリケーションは削除できませんが、無効にすることはできます。
Google Cloud コンソールの App Engine と Settings に移動して、Disable Application を選択します。

または、プロジェクト全体を削除することもできます。
$ gcloud projects delete YOUR-PROJECT-ID
10. 完了
初めての App Engine ウェブアプリを作成する方法を学習しました。