GSP068

概要
App Engine を使用すると、開発者は最も得意な作業、つまりコードを書くことに集中できます。App Engine スタンダード環境は、Google のインフラストラクチャで実行されるコンテナ インスタンスを基盤としています。コンテナは事前構成されており、利用可能なランタイム(Java、Python、Go、PHP)のうち、いずれか 1 つが含まれています。各ランタイムには App Engine Standard API に対応しているライブラリが含まれています。多くのアプリケーションでは、このスタンダード環境のランタイムとライブラリがあれば十分です。
App Engine スタンダード環境を使用すると、大量のデータがあって負荷が高い状態でも確実に実行できるアプリケーションを簡単に構築、デプロイできます。App Engine スタンダード環境には次の機能が含まれています。
- クエリ、並べ替え、トランザクションが可能な永続ストレージ
- 自動スケーリングとロード バランシング
- リクエストの範囲外の作業を行うための非同期タスクキュー
- 指定のタイミングまたは一定間隔でイベントをトリガーするための、スケジュール設定されたタスク
- 他の Google Cloud サービスや API とのインテグレーション
アプリケーションは、セキュリティが確保されたサンドボックス環境で実行されます。このため App Engine スタンダード環境では、リクエストを複数のサーバーに分散でき、トラフィック需要に合わせてサーバーがスケーリングされます。サーバーのハードウェア、オペレーティング システム、物理的な場所に関係なく、安全性と信頼性の高い独自の環境でアプリケーションが実行されます。
このハンズオンラボでは、短いメッセージを表示するシンプルな App Engine アプリケーションの作成方法を説明します。
目標
このラボでは、次の方法について学びます。
- GitHub リポジトリからスターター コードをダウンロードする
- Google App Engine を使ってアプリケーションをデプロイする
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックします。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to YOUR_PROJECT_ID
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = <project_ID>
出力例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
注: Google Cloud における gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. HTTP Server サンプルアプリをダウンロードする
Java で記述されたシンプルな HTTP Server
アプリがあらかじめ作成されており、Google Cloud へのアプリのデプロイをすぐに試すことができます。HTTP Server
のサンプルコードをダウンロードする手順は次のとおりです。
-
Cloud コンソールの右上にある [Cloud Shell をアクティブにする] ボタンをクリックして、新しい Cloud Shell セッションを開きます。
-
新しい Cloud Shell ターミナルで次のコマンドを実行して、Google Cloud Storage からローカル ディレクトリにファイルをコピーします。
gcloud storage cp -r gs://spls/gsp068/appengine-java21/appengine-java21/* .
出力:
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/http-server/src/main/java/com/example/appengine/Main.java to file://./helloworld/http-server/src/main/java/com/example/appengine/Main.java
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/pom.xml to file://./helloworld/pom.xml
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/settings.gradle to file://./helloworld/settings.gradle
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/src/main/java/com/example/appengine/java21/HelloAppEngine.java to file://./helloworld/src/main/java/com/example/appengine/java21/HelloAppEngine.java
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/src/main/webapp/WEB-INF/appengine-web.xml to file://./helloworld/src/main/webapp/WEB-INF/appengine-web.xml
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/src/main/webapp/WEB-INF/web.xml to file://./helloworld/src/main/webapp/WEB-INF/web.xml
Copying gs://spls/gsp068/appengine-java21/appengine-java21/helloworld/src/test/java/com/example/appengine/java21/HelloAppEngineTest.java to file://./helloworld/src/test/java/com/example/appengine/java21/HelloAppEngineTest.java
Completed files 20/20 | 54.2kiB/54.2kiB
Average throughput: 40.0kiB/s
- 次に、サンプルコードが保存されているディレクトリに移動します。
cd helloworld/http-server
このフォルダにある src
ディレクトリに、com.example.appengine
というパッケージが保存されています。このパッケージには、HTTP Server
アプリのソースコードが含まれています。
ソースコードは次のようになります。
package com.example.appengine;
import com.sun.net.httpserver.HttpServer;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
public class Main {
public static void main(String[] args) throws IOException {
// HttpServer のインスタンスを作成します。PORT 環境変数が存在する場合はそれによって定義されているポートにバインドし、
// PORT 環境変数が存在しない場合はポート 8080 にバインドします。
int port = Integer.parseInt(System.getenv().getOrDefault("PORT", "8080"));
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
// ルート URI のパスを設定します。
server.createContext("/", (var t) -> {
byte[] response = "Hello World!".getBytes();
t.sendResponseHeaders(200, response.length);
try (OutputStream os = t.getResponseBody()) {
os.write(response);
}
});
// 別の URI のパスを作成します。
server.createContext("/foo", (var t) -> {
byte[] response = "Foo!".getBytes();
t.sendResponseHeaders(200, response.length);
try (OutputStream os = t.getResponseBody()) {
os.write(response);
}
});
server.start();
}
}
仕組み
このコードは、次の 2 つのアドレスに応答する基本的なウェブサーバーを Google App Engine に作成します。
-
/
: (メインページ)「Hello World!」を表示します。
-
/foo
: (特別なページ)「Foo!」を表示します。
-
インポート: サーバーを作成し、リクエストを処理するツールを追加します。
-
メイン関数: 実行時にアプリを起動します。
-
サーバー作成:
- 使用するポートを特定します(App Engine から取得、またはデフォルトの 8080)。
- このポートをリッスンするウェブサーバーを作成します。
-
リクエスト処理:
- 2 つのルールが設定されています。
- メインページ(
/
)にアクセスすると、「Hello World!」が表示されます。
-
/foo
にアクセスすると、「Foo!」が表示されます。
-
開始: サーバーの実行が開始され、ウェブ リクエストに応答できるようになります。
App Engine は、サーバー管理、スケーリング、セキュリティを処理することで、ウェブアプリの開発を簡素化します。また、シンプルなウェブアプリをすばやく構築するのに適しています。
タスク 2. アプリをデプロイして表示する
このタスクでは、HTTP Server
アプリを Google App Engine にデプロイします。
- 次のコマンドを実行して、App Engine 上にアプリケーションを作成します。
gcloud app deploy
-
プロンプトが表示されたら、 に関連付ける数を入力します。「Y
」と入力して続行します。
-
アプリを表示するには、次のコマンドを使用します。
gcloud app browse
すぐに次の出力が表示されます(URL は異なります)。
Did not detect your browser. Go to this link to view your app:
https://qwiklabs-gcp-00-3e8fa18ec9dc.uc.r.appspot.com
-
リンクをクリックすると、デプロイされたアプリがウェブブラウザに表示されます。ウェブページは「Hello World!」というメッセージがあるシンプルなものになっています。
-
次に、アドレスバーの URL に「/foo
」を追加して Enter キーを押します。ウェブページには「Foo!」というメッセージが表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
アプリをデプロイする
タスク 3. 理解度テスト
クイズに挑戦して Google Cloud Platform に関する知識をチェックしましょう(正しいものをすべて選択してください)。
お疲れさまでした
これで完了です。このラボでは、シンプルな Java アプリを Google App Engine にデプロイする方法について学習しました。また、デプロイされたアプリをウェブブラウザで表示する方法についても学習しました。
次のステップと詳細情報
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 2 月 6 日
ラボの最終テスト日: 2025 年 2 月 6 日
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。