
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create the service account and assign roles
/ 20
Create the API proxy
/ 20
Call the Natural Language API
/ 20
Publish a message to Pub/Sub for negative comments
/ 20
Add the MessageLogging policy
/ 20
Apigee は API の開発と管理を行うためのプラットフォームです。Apigee から、Pub/Sub や Cloud Logging などの Google Cloud サービスや、REST API を提供する他のクラウド サービスを利用できます。このラボでは、Apigee API プロキシでいくつかの Google Cloud サービスを利用します。
このラボでは、Apigee API プロキシから複数の Google Cloud サービスを使用してユーザー コメントを処理します。
このラボでは、次のタスクの実行方法について学びます。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
このタスクでは、Apigee API プロキシで使用する API を有効にします。
Cloud コンソールのナビゲーション メニュー()で、[API とサービス] > [ライブラリ] に移動します。
このページで、Apigee API プロキシで使用する API を有効にできます。
[API とサービスを検索] に「Cloud Natural Language
」と入力し、Enter キーを押します。
Cloud Natural Language API は、感情分析やエンティティ認識などの自然言語の分析情報を提供します。この API を使用して、ユーザーからのコメントが不満を表しているかどうかを判断します。
[Cloud Natural Language API] をクリックします。
これで API が有効になります。
gcloud
コマンドを使用して API を有効にすることもできます。
Cloud Shell で必要な API を有効にするには、次のコマンドを使用します。
Cloud Natural Language API に加えて、Pub/Sub API と Cloud Logging API も有効にします。
Pub/Sub は、Natural Language API によってユーザーが不満を持っていることが判明した場合にメッセージをトピックにパブリッシュするために使用します。問題を解決して顧客満足度を向上させるため、コメントを送信したユーザーに連絡を取る Cloud Functions の関数を作成し、その関数をメッセージごとに実行することもできます。
Cloud Logging は、受け取った各コメントに対応するログエントリを収集するために使用します。これらのログには内部 API の詳細を含めることができ、サービスやアプリケーションに関する問題の検出に役立ちます。
このタスクでは、Apigee プロキシで使用するサービス アカウントを作成します。
ナビゲーション メニュー()で、[IAM と管理] > [サービス アカウント] に移動します。
[+ サービス アカウントを作成] をクリックします。
[サービス アカウント名] に次のように入力します。
このサービス アカウントを使用することで、Apigee API プロキシは指定の Google Cloud サービスにアクセスできます。
[作成して続行] をクリックします。
[ロールを選択] で、[Pub/Sub] > [Pub/Sub パブリッシャー] を選択します。
Apigee API プロキシは、Pub/Sub トピックにメッセージをパブリッシュします。
[+ 別のロールを追加] をクリックします。
[ロールを選択] で、[Logging] > [ログ書き込み] を選択します。
Apigee API プロキシは、Cloud Logging にログメッセージを書き込みます。
[完了] をクリックします。
これでサービス アカウントが作成されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、Apigee API プロキシを作成します。ここで作成する API プロキシはポリシーを使用してサービスを呼び出すため、ターゲットは必要ありません。
Apigee コンソールを開くには、次の手順に沿って操作します。
Apigee
」と入力し、検索結果で [Apigee API Management] をクリックします。Apigee コンソールが開き、よく使用される場所へのクイックリンクがランディング ページに表示されます。
Apigee がナビゲーション メニューに固定されます。
ナビゲーション メニューで、[プロキシ開発] > [API プロキシ] を選択します。
プロキシ ウィザードを使用して新しいプロキシを作成するには、[作成] をクリックします。
[Proxy template] で、[General template] > [No target] を選択します。
今回作成するプロキシはバックエンド サービスを使用しません。外部サービスとの通信はすべてポリシーを使用して行います。
[Proxy details] で次のように指定します。
プロパティ | 値 |
---|---|
Proxy name | services-v1 |
Base path | /services/v1 |
/services/v1
です。/services-v1
ではないので注意してください。
[次へ] をクリックします。
[Deploy (optional)] の設定はデフォルトのままにして、[Create] をクリックします。
プロキシ エディタの [Develop] タブをクリックします。
左側のペインで、[Proxy endpoints > default] を選択します。
[Response] ペインの上にある [+] ボタンをクリックします。
[Add conditional flow] ダイアログで次の値を指定します。
プロパティ | 値 |
---|---|
Flow Name | postComment |
Description | 特定のカテゴリのコメントを POST する |
Condition Type | [Path and Verb] を選択 |
Path | /comments |
Verb | [POST] を選択 |
[Target URL] は空白のままにします。
[Add] をクリックします。
[Save] をクリックします。プロキシが新しいリビジョンとして保存されたことを知らせるメッセージが表示された場合は、[Save as new revision] をクリックします。
[Deploy] をクリックします。
[Environment] で [eval] を選択します。
[Service Account] に、サービス アカウントのメールアドレスを指定します。
[Deploy]、[Confirm] の順にクリックします。
デプロイが完了するまで待ちます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、Natural Language API を呼び出して新着コメントの感情を判定するために ServiceCallout ポリシーを追加します。
POST /comments リソースは、次の 2 つのパラメータを含む JSON ペイロードを使用します。1 つはユーザーが入力したフリーテキストを示す comment で、もう 1 つはコメントのタイプを示す category です。ExtractVariables ポリシーを使用してこれらの入力を抽出します。
[Flow] ペインで、[Request] ペインの [postComment] フローの横にある [+] をクリックします。
[Add policy step] ダイアログで、[Create new policy] をクリックします。
[Select Policy] プルダウンで、[Mediation] セクションから [Extract Variables] ポリシータイプを選択します。
以下を指定します。
プロパティ | 値 |
---|---|
Display Name | EV-ExtractRequest |
Name | EV-ExtractRequest |
[Add] をクリックします。
[EV-ExtractRequest] ポリシーをクリックし、ExtractVariables XML 構成を次の内容に置き換えます。
これにより、POST /comments
JSON リクエストから comment と category が抽出されます。IgnoreUnresolvedVariables 要素が false に設定されているため、これら 2 つの入力が指定されていない場合はエラーが発生します。
ServiceCallout ポリシーを使用して、コメントの感情を返す Natural Language API を呼び出します。
ハイライト表示されていない場合は [postComment] フローをクリックしてから、[Response] ペインで [postComment] フローの横にある [+] をクリックします。
Natural Language API 呼び出しからのレスポンスが呼び出し元に返されます。
[Add policy step] ダイアログで、[Create new policy] をクリックします。
[Select Policy] プルダウンで、[Extension] セクションから [Service Callout] ポリシータイプを選択します。
以下を指定します。
プロパティ | 値 |
---|---|
Display Name | SC-NaturalLanguage |
Name | SC-NaturalLanguage |
[Add] をクリックします。
フローは次のようになります。
[SC-NaturalLanguage] ポリシーをクリックします。
ServiceCallout XML 構成を次の内容に置き換えます。
ServiceCallout ポリシーの Request セクションでは、サービスに POST されたリクエストを指定します。このペイロードの形式は Natural Language API に固有です。
Response 要素は、Natural Language API のレスポンスが response メッセージに格納されることを示します。
HTTPTargetConnection セクションでは、呼び出されるサービス URL を指定します。この URL とリクエストおよびレスポンスの形式は Natural Language API のリファレンスに記載されています。
Authentication セクションでは、Google Cloud API の認証を指定します。Google OAuth アクセス トークンがコールアウト リクエストに自動的に追加されます。Scope では、Natural Language API へのアクセス権の提供に使用されるアクセス トークンを指定します。
[Save] をクリックします。
Cloud Shell で、次のコマンドセットを貼り付けて実行します。
この一連のコマンドでは、Apigee API を使用して、Apigee ランタイム インスタンスが作成されて eval 環境がアタッチされたことを確認します。
インスタンスが使用可能になるまで待ちます。
***ORG IS READY TO USE***
というテキストが表示されたら、インスタンスは使用可能です。ラボを開始する前にすでに Apigee 組織が作成されていることがあります。その場合はインスタンスが作成されるまで待つ必要はありません。
組織の準備ができるまで待つ場合は、その間に Google Cloud で提供されている AI のプロダクトとサービスの詳細をご覧ください。
services-v1 API プロキシに戻り、[Develop] タブをクリックします。
[Deploy] をクリックします。
[Environment] で [eval] を選択します。
[Service Account] に、サービス アカウントのメールアドレスを指定します。
[Deploy]、[Confirm] の順にクリックします。
[Overview] タブをクリックして eval のデプロイ ステータスを確認し、プロキシがデプロイされたと示されるまで待ちます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Apigee 組織の eval 環境は、eval.example.com というホスト名を使用して呼び出すことができます。このホスト名を Apigee ランタイム インスタンスの IP アドレスに解決する DNS エントリは、すでにプロジェクト内に作成されています。この DNS エントリは限定公開ゾーンに作成されているため、内部ネットワーク上でのみ表示されます。
Cloud Shell は内部ネットワーク上に存在しないため、Cloud Shell のコマンドではこの DNS エントリを解決できません。プロジェクト内の仮想マシン(VM)は、限定公開ゾーンの DNS にアクセスできます。apigeex-test-vm という名前の仮想マシンが自動的に作成されています。このマシンを使用して API プロキシを呼び出すことができます。
Cloud Shell で、テスト VM への SSH 接続を開きます。
[Do you want to continue (Y/n)
] というメッセージが表示されたら、「Y
」と入力します。
Cloud Shell で確認されるすべての項目について、Enter キーまたは Return キーを押して、デフォルトの入力を指定します。
プロジェクトのオーナーとしてログインしているため、このマシンへの SSH は許可されます。
これで、Cloud Shell セッションが VM 内で実行されます。
eval 環境にデプロイした services-v1 API プロキシを呼び出します。
Natural Language API から次のようなレスポンスが返されます。
documentSentiment スコアの範囲は 1~-1 で、1 が最大限に肯定的、-1 が最大限に否定的であることを示します。この例では、感情は非常に肯定的です。
もう一度 API プロキシを呼び出します。
このコメントの感情はかなり否定的です。
コマンド exit
を入力して SSH セッションを終了し、Cloud Shell に戻ります。
このタスクでは、否定的なコメントを受け取ったときに Pub/Sub トピックに Pub/Sub メッセージをパブリッシュするために PublishMessage ポリシーを追加します。トピックのサブスクライバーは、コメント投稿者の問題の解決を図るワークフローを実行できます。
各カテゴリに対応する Pub/Sub トピックを作成します。メッセージをトピックにパブリッシュするには、事前にトピックを作成しておく必要があります。
ナビゲーション メニュー()で、[Pub/Sub] > [トピック] に移動します。
[+ トピックを作成] をクリックします。
トピック ID として「apigee-services-v1-delivery-reviews
」と入力し、[作成] をクリックします。
新しいトピックとサブスクリプションが作成されます。
Cloud コンソールの Apigee に戻ります。
左側のナビゲーション メニューで、[プロキシ開発] > [API プロキシ] を選択し、[services-v1] をクリックします。
[Develop] タブを開きます。[postComment] フローをクリックします。
[Flow] ペインで、[Response] ペインの [postComment] フローの横にある [+] をクリックします。
[Add policy step] ダイアログで、[Create new policy] をクリックします。
[Select Policy] プルダウンで、[Mediation] セクションから [Extract Variables] ポリシータイプを選択します。
以下を指定します。
プロパティ | 値 |
---|---|
Display Name | EV-ExtractSentiment |
Name | EV-ExtractSentiment |
[Add] をクリックしてから、[EV-ExtractSentiment] ポリシーをクリックします。
ExtractVariables XML 構成を次の内容に置き換えます。
[postComment] フローをクリックしてから、Response フローの下の [+] ボタンをクリックします。
[Extension] セクションで、[Publish Message] ポリシータイプを選択します。
以下を指定します。
プロパティ | 値 |
---|---|
Display Name | PM-PublishScore |
Name | PM-PublishScore |
[Add] をクリックしてから、[PM-PublishScore] ポリシーをクリックします。
PublishMessage XML 構成を次の内容に置き換えます。
[Save] をクリックします。プロキシが新しいリビジョンとして保存されたことを知らせるメッセージが表示された場合は、[Save as new revision] をクリックします。
response.content は Natural Language API から返されたペイロードで、これが Pub/Sub メッセージになります。リクエストに含まれる category を使用して Pub/Sub トピック名が作成されます。
リクエストに誤ったカテゴリが含まれていると、作成されるトピック名が存在しないものになります。本番環境 API では、Pub/Sub メッセージをパブリッシュする前に、指定されたカテゴリを検証してください。この例では、ポリシーで continueOnError が true に設定されているため、トピックが存在しなくてもエラーは発生しません。
条件を使用して、フロー内のポリシーを必要に応じてスキップできます。
プロキシのナビゲーション メニューで、[Proxy Endpoints] の [default] をクリックします。
ProxyEndpoint 構成が表示されます。
PM-PublishScore ステップに条件を追加するには、以下の部分を
次のように変更します。
これにより、PublishMessage ポリシーは感情スコアが 0 未満の場合にのみ実行されます。
[Save] をクリックします。プロキシが新しいリビジョンとして保存されたことを知らせるメッセージが表示された場合は、[Save as new revision] をクリックします。
[Deploy] をクリックします。
[Environment] で [eval] を選択します。
[Service Account] に、サービス アカウントのメールアドレスを指定します。
[Deploy]、[Confirm] の順にクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Cloud Shell で、テスト VM への SSH 接続を開きます。
承認するよう求められた場合は、[Authorize] をクリックします。
eval 環境にデプロイした services-v1 API プロキシを呼び出します。
ナビゲーション メニュー()から [Pub/Sub] > [トピック] に移動します。
[apigee-services-v1-delivery-reviews] トピックをクリックします。
一番下までスクロールし、[apigee-services-v1-delivery-reviews-sub] サブスクリプションをクリックします。
[メッセージ] タブをクリックし、[pull] をクリックします。
メッセージで、[行の内容をすべて表示する] プルダウン ボタンをクリックします。
否定的な感情を表すコメントについて送信された JSON ペイロードが表示されます。
このタスクでは、ログメッセージを Cloud Logging に記録するために MessageLogging ポリシーを追加します。
ProxyEndpoint には、PostClientFlow というオプションのフローがあります。このフローにアタッチされているポリシーは、レスポンスが呼び出し元に返された後に実行されます。ここはメッセージのロギングを行うのに最適な場所です。すでにレスポンスが返された後なので、ロギング処理によってリクエストのレイテンシが増加することはありません。
Apigee タブに戻り、必要に応じて services-v1 Develop ページに戻ります。
プロキシのナビゲーション メニューで、[Proxy Endpoints] の [default] をクリックします。
ProxyEndpoint 構成が表示されます。
HTTPProxyConnection セクションのすぐ上に、次の行を追加します。
この行を追加した後、ProxyEndpoint コードの最後の方は次のようになります。
これにより、空の PostClientFlow が ProxyEndpoint に追加されます。
プロキシのナビゲーション メニューで [Proxy Endpoints] > [PostClientFlow] に移動し、Response フローの下の [+] ボタンをクリックします。
[Add policy step] ダイアログで、[Create new policy] をクリックします。
[Select Policy] プルダウンで、[Extension] セクションから [Message Logging] ポリシータイプを選択します。
以下を指定します。
プロパティ | 値 |
---|---|
Display Name | ML-LogToCloudLogging |
Name | ML-LogToCloudLogging |
[Add] をクリックしてから、[ML-LogToCloudLogging] ポリシーをクリックします。
PublishMessage XML 構成を次の内容に置き換えます。
CloudLogging セクションでは、Cloud Logging に記録する情報を指定します。プロキシの名前が LogName の一部として使用されるため、Cloud Logging でログが簡単に見つかります。
このポリシーに含まれるメッセージは JSON メッセージですが、ログではどのような種類のテキスト メッセージでも使用できます。ログの内容には通常、問題のデバッグに役立つプロキシフロー変数を含めます。たとえば、変数 publishmessage.failed は、Pub/Sub メッセージが送信されなかった場合に true になります。
ログメッセージに Labels を追加してメッセージ内容を分類することもできます。
[Save] をクリックします。プロキシが新しいリビジョンとして保存されたことを知らせるメッセージが表示された場合は、[Save as new revision] をクリックします。
[Deploy] をクリックします。
[Environment] で [eval] を選択します。
[Service Account] に、サービス アカウントのメールアドレスを指定します。
[Deploy]、[Confirm] の順にクリックします。
デプロイが完了するまで待ちます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
SSH 接続が閉じている場合は、Cloud Shell でテスト VM への SSH 接続を開きます。
承認するよう求められた場合は、[Authorize] をクリックします。
eval 環境にデプロイした services-v1 API プロキシを呼び出します。
指定したカテゴリ(invalid-category)に対応する Pub/Sub トピックは存在しません。
ナビゲーション メニュー()で、[ロギング] > [ログ エクスプローラ] に移動します。
[クエリ] ボックスに次のクエリを入力します。
[クエリを実行] をクリックします。
[クエリ結果] ペインのログエントリを開き、[jsonPayload] を開きます。
ログエントリを開くと、ログに記録された JSON メッセージとその他のメタデータが表示されます。jsonPayload の内容は次のようなものです。
このカテゴリ用に作成されたトピックは存在しないため、publishFailed が true になっています。適切に設計されたログは、API プロキシやバックエンド サービスの問題の検出に役立ちます。
このラボでは、Google Cloud API を有効にし、サービス アカウントを作成しました。ServiceCallout ポリシーを使用して Cloud Natural Language API を呼び出し、Apigee によって提供されるサービス アカウント認証を利用しました。PublishMessage ポリシーを使用してメッセージを Pub/Sub トピックにパブリッシュしました。最後に、MessageLogging ポリシーを使用してログメッセージを Cloud Logging に記録しました。
マニュアルの最終更新日: 2025 年 8 月 8 日
マニュアルの最終テスト日: 2025 年 8 月 8 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください