始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Google App Engine では、コマンドラインからのリソース管理、本番環境でのソースコードのデバッグ、API バックエンドの実行といった作業が可能です。このラボではバックエンド サービスに集中し、Pub/Sub、Natural Language、Spanner のサービスと API を組み合わせて、オンライン クイズ アプリケーションからフィードバックとスコアを収集して分析します。
このラボでは、次のタスクを行います。
メッセージを作成して Cloud Pub/Sub トピックにパブリッシュする。
独立したワーカー アプリケーションでそのトピックにサブスクライブしてメッセージを受信する。
Cloud Natural Language Machine Learning API を使用する。
Cloud Spanner のデータベース インスタンスを作成して構成し、そのデータベースにデータを挿入する。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
Qwiklabs にシークレット ウィンドウでログインします。
ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力例:
出力:
出力例:
このセクションでは、Cloud Shell にアクセスして、次の操作を行うコマンドを入力します。
クイズ アプリケーションを含む git リポジトリのクローンを作成する
環境変数を設定する
アプリケーションを実行する
ラボ用にリポジトリのクローンを作成します。
作業ディレクトリへのショートカットとしてソフトリンクを作成します。
このセクションでは、Cloud Shell のウィンドウを 2 つ開きます。1 つはクイズ アプリケーションのウェブ部分のためのウィンドウ、もう 1 つはコンソールを処理するワーカー部分のためのウィンドウです。
作業ディレクトリを変更します。
スクリプトを実行して、ウェブ アプリケーションを構成します。
このスクリプト ファイルを実行すると、以下の処理が行われます。
GCP サービス アカウントを作成し、アプリケーションに使用する GCP サービスにアクセスできるように構成する。
App Engine アプリケーションを作成する。
環境変数 GCLOUD_PROJECT、GCLOUD_BUCKET、GOOGLE_APPLICATION_CREDENTIALS をエクスポートする。
Python 3 対応の隔離された virtualenv Python 環境を作成して有効にする。
pip を更新し、pip install -r requirements.txt を実行する。
Cloud Datastore にエンティティを作成する。
Google Cloud Platform のプロジェクト ID を出力する。
ウェブ アプリケーションを実行します。
アプリケーションの実行が開始されると、次の出力例のようなメッセージが表示されます。
出力例
Cloud Shell のタブの右側にある [新しいタブを開く](+)をクリックして、2 つ目の Cloud Shell ウィンドウを追加します。このウィンドウではワーカー(コンソール)アプリケーションを実行します。
2 つ目のウィンドウで、作業ディレクトリを変更します。
2 つ目の Cloud Shell ウィンドウで、ワーカー アプリケーションを実行します。
このスクリプト ファイルを実行すると、以下の処理が行われます。
GCLOUD_PROJECT、GCLOUD_BUCKET、GOOGLE_APPLICATION_CREDENTIALS をエクスポートする。virtualenv 環境を有効にする。python -m quiz.console.worker)。Cloud Shell でウェブでプレビュー アイコン > [ポート 8080 でプレビュー] をクリックして、クイズ アプリケーションをプレビューします。
ナビゲーション バーで、[Take Test] をクリックします。
[Places] をクリックします。
質問に答えます。
質問に答えると、フィードバックの送信を求める最終画面が表示されます。
フォームに情報を入力することはできますが、[Send Feedback] ボタンはまだ機能しません。
1 つ目の Cloud Shell ウィンドウに戻り、Ctrl+C キーを押してウェブ アプリケーションを停止します。
このラボでは、ファイルの閲覧と編集を行います。Cloud Shell にインストールされている nano や vim などの shell エディタや、Cloud Shell コードエディタを使用できます。
このラボでは、Cloud Shell コードエディタを使用してこのクイズ アプリケーションのコードを確認します。
Cloud Shell で [エディタを開く] をクリックしてコードエディタを起動してから、[新しいウィンドウで開く] をクリックします。
エディタの左側にあるファイル ブラウザ パネルを使用して、/pubsub-languageapi-spanner/start フォルダに移動します。
.../quiz/gcp フォルダにある pubsub.py ファイルを選択します。
このファイルには、アプリケーションが Cloud Pub/Sub トピックにフィードバック メッセージをパブリッシュし、Cloud Pub/Sub サブスクリプションからメッセージを受信するためのコールバックを登録できるようにするモジュールが含まれています。
.../quiz/gcp フォルダにある languageapi.py ファイルを選択します。
このファイルには、ユーザーが Cloud Natural Language ML API にテキストを送信し、この API から感情スコアを受信できるようにするモジュールが含まれています。
spanner.py ファイルを選択します。
このファイルには、ユーザーがフィードバックと Natural Language API のレスポンス データを Cloud Spanner データベース インスタンスに保存できるようにするモジュールが含まれています。
.../quiz/api フォルダにある api.py ファイルを選択します。
/api/quizzes/feedback/:quiz ルートに送信された POST メッセージのハンドラは、クライアントから受け取ったフィードバック データを Pub/Sub にパブリッシュします。
.../quiz/console フォルダにある worker.py ファイルを選択します。
このファイルは、Pub/Sub サブスクリプションに配信されたメッセージを使用する独立したコンソール アプリケーションとして実行されます。
このセクションでは、Google Cloud Platform プロジェクトで Cloud Pub/Sub のトピックとサブスクリプションを作成し、メッセージをパブリッシュして取得します。
Cloud Platform Console で、ナビゲーション メニュー > [Pub/Sub] > [トピック] をクリックします。
[トピックを作成] をクリックします。
[トピック ID] に「feedback」と入力し、[トピックを作成] をクリックします。
2 つ目の Cloud Shell ウィンドウに戻り、Ctrl+C キーを押してアプリケーションを停止します。
feedback トピックに対して worker-subscription という名前の Cloud Pub/Sub サブスクリプションを作成します。
feedback トピックに "Hello World" というメッセージをパブリッシュします。
最後に、メッセージの自動確認応答を使用して feedback トピックからメッセージを pull します。
出力:
このセクションでは、...quiz/gcp/pubsub.py を更新します。手順は次のとおりです。
エディタで ...quiz/gcp/pubsub.py ファイルを開きます。
google.cloud パッケージから pubsub_v1 モジュールを読み込みます。
Cloud Pub/Sub パブリッシャー クライアントを作成します。
先ほど作成した Pub/Sub の feedback トピックを参照する完全修飾パスを取得します。
publish_feedback(feedback) 関数で、feedback トピックにメッセージをパブリッシュします。
ファイルを保存します。
.../quiz/api/api.py ファイルで、quiz.gcp パッケージから pubsub モジュールを読み込みます。
publish_feedback(feedback) では、pass プレースホルダ ステートメントを削除して、pubsub.publish_feedback(feedback) 関数を呼び出し、フィードバックが受信されたことを示すレスポンスをクライアントに返します。
ファイルを保存します。
1 つ目の Cloud Shell タブで、ウェブ アプリケーションを再度開始します(実行中の場合は停止してから開始します)。
ウェブ アプリケーションをプレビューします。
[Take Test] をクリックします。
[Places] をクリックします。
質問に答えて評価を選択し、フィードバック テキストを入力してから [Send Feedback] をクリックします。
2 つ目の Cloud Shell ウィンドウで、次のコマンドを実行して worker-subscription からメッセージを pull します。
出力:
1 つ目の Cloud Shell タブで、ウェブ アプリケーションを停止します。
このセクションでは、Cloud Pub/Sub トピックへのサブスクリプションを作成するためのコードと、ワーカー コンソール アプリケーションでメッセージ通知を受信するためのコードを記述します。
...quiz/gcp/pubsub.py ファイルに戻ります。
Cloud Pub/Sub サブスクライバー クライアントを宣言します。
'worker-subscription' を参照する完全修飾パスを取得します。
pull_feedback(callback) 関数に移動して、pass プレースホルダ ステートメントを削除します。
サブスクライバー クライアントを使用して worker-subscription にサブスクライブし、メッセージを受信したらコールバックを呼び出します。
ファイルを保存します。
...quiz/console/worker.py ファイルで、quiz.gcp パッケージから pubsub モジュールを読み込みます。
pubsub_callback(message) 関数で、メッセージの確認応答を行います。
メッセージをコンソールに表示します。
main() 関数で、このハンドラ関数を Pub/Sub サブスクリプション コールバックとして登録します。
ファイルを保存します。
1 つ目の Cloud Shell ウィンドウで、ウェブ アプリケーションがまだ実行されていない場合は開始します。
2 つ目の Cloud Shell ウィンドウで、ワーカー アプリケーションを開始します。
Cloud Shell で [ウェブでプレビュー] アイコン > [ポート 8080 でプレビュー] をクリックして、クイズ アプリケーションをプレビューします。
[Take Test] をクリックします。
[Places] をクリックします。
質問に答えて評価を選択し、フィードバック テキストを入力してから [Send Feedback] をクリックします。
2 つ目の Cloud Shell ウィンドウに戻ります。
ワーカー アプリケーションがそのハンドラを介してフィードバック メッセージを受信し、その詳細をウィンドウに表示したことがわかります。メッセージそのものは切り捨てられています。
ウェブ アプリケーションとコンソール アプリケーションを停止します。
このセクションでは、ユーザーが送信したフィードバック テキストの感情分析を行うためのコードを記述します。
エディタで ...quiz/gcp/languageapi.py ファイルの先頭に移動します。
google.cloud パッケージから language モジュールを読み込みます。
analyze(text) 関数に移動して、Natural Language クライアントに渡す Document オブジェクトを作成します。この際、フィードバック テキストを content パラメータに割り当てます。
Natural Language クライアント オブジェクトを使用して、ドキュメントの感情を分析します。
Natural Language API から感情スコアを返します。
ファイルを保存します。
.../quiz/console/worker.py ファイルで、languageapi をインポート ステートメントに追加します。
pubsub_callback(message) 関数で、既存のコードの後に、フィードバックに対して感情検出を行います。
スコアをコンソールに表示します。
feedback オブジェクトに新しいスコア プロパティを割り当てます。
ファイルを保存します。
ワーカー アプリケーションが Cloud Natural Language API を呼び出して、感情スコアをコンソールに表示したことがわかります。
ウェブ アプリケーションとコンソール アプリケーションを停止します。
このセクションでは、Cloud Spanner のインスタンス、データベース、テーブルを作成します。その後、フィードバック データをデータベースに保存するためのコードを記述します。
Cloud Console に戻り、ナビゲーション メニュー > [Spanner] > [インスタンスを作成] をクリックします。
[インスタンス名] に「quiz-instance」と入力します。
[構成を選択] セクションで、リージョンとして [us-central1] を選択します。
[作成] をクリックします。
quiz-instance の [インスタンスの詳細] ページで、[データベースを作成] をクリックします。
[データベース名] に、「quiz-database」と入力します。
[スキーマの定義] の [DDL ステートメント] に、次の SQL ステートメントを入力します。
コードエディタに戻り、.../quiz/gcp/spanner.py ファイルの先頭に移動します。
google.cloud パッケージから spanner モジュールを読み込みます。
Cloud Spanner クライアントを作成します。
Spanner インスタンスへの参照を取得します。
Spanner データベースへの参照を取得します。
saveFeedback(data) 関数に移動します。
with ブロックを使用して database.batch オブジェクトを作成します。このオブジェクトを使用すると、Spanner データベースに対して複数のオペレーションを実行できます。
data のプロパティである email、quiz、timestamp からフィードバック レコードのキーを作成します。reverse_email(...) 関数では、入力されたメールアドレスを反転させた文字列を作成し、これを主キーとして使用します。たとえば、app.dev.student@example.com を com_example_student_dev_app に変換します。
batch オブジェクトを使用してレコードを挿入します。一連の列と値を使用します。
ファイルを保存します。
.../quiz/console/worker.py ファイルで、spanner モジュールを読み込みます。
pubsub_callback(message) 関数の既存のコードの後で、フィードバックを Spanner に保存します。
フィードバックが保存されたことを伝えるメッセージをコンソールに表示します。
ファイルを保存します。
ワーカー アプリケーションが Cloud Spanner API を呼び出して、コンソール ウィンドウにメッセージを表示したことがわかります。
Cloud Platform Console に戻り、ナビゲーション メニュー > [Spanner] をクリックします。
[quiz-instance] > [quiz-database] > [クエリ] を選択します。
クエリを実行するには、クエリ欄に「SELECT * FROM Feedback」と入力し、[クエリを実行] をクリックします。
Cloud Spanner データベースの新しいフィードバック レコードが表示されます。このレコードには、Cloud Pub/Sub からのメッセージ データと、Cloud Natural Language API からのスコアが含まれています。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください