1. はじめに
現代の小売業において、データは多様で広大なエコシステムです。堅牢なトランザクション データ(価格と在庫)、複雑な多態性カタログ(電子機器の仕様とアパレルのサイズ)、ペタバイト単位の行動ログがあります。これらを 1 つのモノリスに強制的に統合すると、技術的負債が生じるだけでなく、ユーザー エクスペリエンスが損なわれます。
この Codelab では、以下を調和させる多言語パワーハウスを構築します。
- AlloyDB: 高速な整合性と画像エンベディングを実現するトランザクション バックボーン。
- Google Cloud 上の MongoDB Atlas: 柔軟でスキーマに依存しないカタログレイヤ。
- Cloud Storage: リアルタイムのトレンド予測を行う分析ブレイン。
- BigQuery: 高解像度のデジタル ウェアハウス。
それらを実現するために、Google 独自のノウハウが活かされています。データベース向け MCP ツールボックスを使用して、Cloud Run で実行されているデータソースをセマンティック ブリッジとしてインテリジェントにオーケストレートして統合し、Agent Development Kit(ADK)を使用してマルチエージェント チャットアプリをデプロイします。構築するのは単なる検索バーではなく、コンテキストを理解し、制約を尊重し、元データと人間の意図のギャップを埋めるインテリジェントな小売ブレインです。
不可能なユーザークエリ
標準的な e コマース エージェントは、多次元推論(否定的な制約、視覚的な類似性、リアルタイムの在庫の組み合わせ)に失敗します。たとえば、私は通常、次のような小売サイトと話したいと考えています。
「高地での写真撮影旅行を計画しています。「AeroGlow Pro」に似たスタイルで、レザー素材を使用していない、耐候性のあるバックパックをいくつか教えて。また、実際に在庫があるかどうか、他の写真家がレビューでストラップの耐久性について不満を述べているかどうかも教えてください。」
このクエリが「エージェント キラー」である理由:
- 視覚的な類似性(AlloyDB + ベクトル検索): 「AeroGlow Pro とスタイルが類似」という条件には、画像エンベディングの比較が必要です。
- 否定的な制約(MongoDB): 「レザー不使用」という条件では、標準 SQL スキーマには通常含まれない、柔軟なネストされた属性をフィルタリングする必要があります。
- リアルタイム在庫(AlloyDB): 「在庫あり」であることを確認するには、ライブ トランザクション チェックが必要です(古い検索インデックスではありません)。
- セマンティック合成(BigQuery + マルチエージェント): 「ストラップの耐久性」に関するレビューを分析するには、エージェントが BigQuery からの非構造化フィードバックをオンザフライで要約する必要があります。
ほとんどの小売ボットは「バックパック」と「レザー」だけを認識し、10 個のレザー バックパックを表示します。Google はどのようにしてそれを阻止しているのでしょうか。
キーワードを照合するだけではないからです。MCP ツールボックスを使用することで、エージェントは AlloyDB のトランザクションの真実と MongoDB の柔軟な属性を同時に「推論」できます。作ってみよう!
演習内容
- コア商品データ用の AlloyDB クラスタをプロビジョニングする
- 半構造化された商品の詳細を保存するように Google Cloud 上の MongoDB Atlas を構成する
- 商品画像を提供する Cloud Storage バケットを作成する
- データベース向け MCP ツールボックスを Cloud Run にデプロイして、均一なデータアクセスを実現する
- ETL プロセスを実行して、分析のためにデータを BigQuery に push する
- 自然言語で AI エージェントと会話する。

前提条件
- ウェブブラウザ(Chrome など)
- 課金を有効にした Google Cloud プロジェクト
- 無料の Google Cloud 上の MongoDB Atlas アカウント
2. 始める前に
Google Cloud プロジェクトの作成
- Google Cloud コンソールのプロジェクト セレクタ ページで、Google Cloud プロジェクトを選択または作成します。
- Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
Cloud Shell の起動
Cloud Shell は Google Cloud 上で動作するコマンドライン環境で、必要なツールがプリロードされています。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコンをクリックします。
- Cloud Shell に接続したら、認証を確認します。
gcloud auth list - プロジェクトが構成されていることを確認します。
gcloud config get project - プロジェクトが想定どおりに設定されていない場合は、次のように設定します。
export PROJECT_ID=<YOUR_PROJECT_ID> gcloud config set project $PROJECT_ID
変数を設定する
Cloud Shell で、プロジェクト ID とプロジェクト番号の環境変数を設定します。
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
必要な API の有効化
次のコマンドを実行して、必要なすべての API を有効にします。
gcloud services enable \
alloydb.googleapis.com \
bigquery.googleapis.com \
storage.googleapis.com \
run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
iam.googleapis.com \
secretmanager.googleapis.com \
compute.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com
3. Cloud Storage を設定する
Cloud Storage は、商品画像などの非構造化メディア アセットの大規模なストレージとして機能します。
- Google Cloud コンソールで、[Cloud Storage] に移動し、[バケットを作成] をクリックします。
- バケットにグローバルに一意の名前(
など)を付けます。-ecommerce-images - [作成] をクリックします。
- デモ アプリケーションが認証なしで画像にアクセスできるようにするには、[このバケットに対する公開アクセス禁止を適用する] オプションをオフにして、[確認] をクリックします。
- [権限] タブに移動します。
- [権限] で、[アクセス権を付与] をクリックします。
- [新しいプリンシパル] に「
allUsers」と入力します。 - [ロールを選択] で、[Cloud Storage] > [Storage オブジェクト閲覧者] を選択します。
- [保存] をクリックし、[一般公開アクセスを許可] をクリックして、リソースを一般公開することを確認します。
- Cloud Shell で、バケット名を変数に保存します。
export BUCKET=<your-bucket-name>は、作成したバケットの名前に置き換えます。
プレースホルダ画像をアップロードする
このプロジェクトでは、最適な視覚体験を実現するためにプレースホルダ画像を使用しています。
- Cloud Shell で、リポジトリのクローンを作成します。
git clone https://github.com/AbiramiSukumaran/polyglot-persist-ecommerce.git UploadImagesフォルダに移動します。cd polyglot-persist-ecommerce/UploadImages- サンプル画像をバケットにアップロードします。
gcloud storage cp *.jpg gs://$BUCKET/
4. AlloyDB を設定する
AlloyDB は、商品 ID、名前、SKU、価格、在庫などの構造化されたトランザクション データや重要なデータの信頼できる唯一の情報源として機能します。AlloyDB は、レコメンデーションや自然言語クエリのための類似検索機能も AI エージェントに提供します。
AlloyDB クラスタをプロビジョニングする
- Google Cloud コンソールで、[AlloyDB for PostgreSQL] に移動します。
- [クラスタを作成] をクリックします。
- [クラスタ ID] に「
ecommerce-cluster」と入力します。 postgresユーザーに安全なパスワードを設定します。学習目的でalloydbを使用できます。- [データベース バージョン] はデフォルトのままにします。
- [リージョン] で
us-central1(または使用するリージョン)を選択します。
プライマリ インスタンスを構成する
- [インスタンス ID] に「
ecommerce-cluster-primary」と入力します。 - [ゾーンの可用性] で [シングルゾーン] を選択します。
- マシンシリーズには
N2を選択し、マシンタイプには4 vCPU, 32 GBを選択します。 - [プライベート IP 接続] で [プライベート サービス アクセス(PSA)] を選択し、
defaultネットワークを選択します。デフォルト ネットワークがまだ設定されていない場合は、[ネットワーク設定を確認] をクリックして作成します。 - [パブリック IP 接続] で、[パブリック IP を有効にする] チェックボックスをオンにして、この Codelab で MCP ツールボックスが適切に接続されるようにします。コンソールでは、AlloyDB がパブリック IP に必要とする
password.enforce_complexityフラグが自動的に有効になります。 - [承認済み外部ネットワーク] に「
0.0.0.0/0」と入力します。[リスクを理解しました] チェックボックスをオンにして、[保存] をクリックします。 - [クラスタを作成] をクリックします。
データベースを初期化する
- 左側のナビゲーション メニューで [AlloyDB Studio] をクリックします。
- [データベース] プルダウンで、[
postgres] を選択します。 - [組み込み認証] を選択して、データベースにログインします。
- [ユーザー名] には、
postgresユーザーを使用します。 - [Password] に、先ほど設定したパスワードを入力します。
- [認証] をクリックします。
- エディタビューで、新しい [無題のクエリ] タブを開きます。
- 次の DDL をコピーして、[実行] をクリックします。
CREATE TABLE products_core_table ( product_id UUID PRIMARY KEY, name VARCHAR(255) NOT NULL, sku VARCHAR(50) UNIQUE NOT NULL, price NUMERIC(10, 2) NOT NULL, stock INT NOT NULL ); - Cloud Shell で、プロジェクトのルートフォルダに移動します。
cd ~/polyglot-persist-ecommerce - Cloud Shell で
alloydb_insert_queries.sqlファイルを開き、挿入クエリをコピーします。cat alloydb_insert_queries.sql - 新しい無題のクエリタブに
INSERTステートメントのみを貼り付け、[実行] をクリックします。 - 新しい無題のクエリタブで、次の DDL をコピーして [実行] をクリックし、
products_core_tableテーブルにインデックスを作成します。CREATE INDEX idx_products_core_sku ON products_core_table(sku);
AI エージェントが類似商品をフェッチするための画像エンベディングを作成する
AI エージェントの統合では、画像エンベディングを使用して類似商品をフェッチします。エンベディングは multimodalembedding@001 モデルを使用して生成され、AlloyDB データベースに保存されます。エンベディングは 1,408 次元のベクトルで、img_embeddings 列に格納されます。
エンベディングを生成する前に、Cloud Storage にアクセスするために必要なロールを AlloyDB サービス アカウントに付与する必要があります。
Cloud Storage にアクセスするためのロールを AlloyDB サービス アカウントに付与する
Cloud Storage から画像を読み取り、Vertex AI エンベディングを生成するために必要なロールを AlloyDB サービス アカウントに付与します。
for role in roles/storage.objectUser roles/storage.objectViewer roles/aiplatform.user; do
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role=$role --condition=None
done
拡張機能を有効にする
このアプリを構築するには、拡張機能 pgvector と google_ml_integration を使用します。pgvector 拡張機能を使用すると、ベクトル エンベディングを保存して検索できます。google_ml_integration 拡張機能は、Vertex AI 予測エンドポイントにアクセスして SQL で予測を取得するために使用する関数を提供します。次の DDL を実行して、これらの拡張機能を有効にします。
- Google Cloud コンソールで、[AlloyDB for PostgreSQL] に移動します。
- 左側のナビゲーション メニューで [AlloyDB Studio] をクリックします。
- エディタビューで、新しい [無題のクエリ] タブを開きます。
- 次の DDL をコピーして、[実行] をクリックします。
CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS google_ml_integration;
エンベディングを使用してデータベースを初期化する
products_core_tableに img_embeddings 列を追加します。ALTER TABLE products_core_table ADD COLUMN img_embeddings vector(1408);- バケット名を入力して、エンベディング クエリを出力します。
cd ~/polyglot-persist-ecommerce sed "s/<STORAGE_BUCKET_NAME>/$BUCKET/g" alloydb_generate_embeddings.sql - 出力をコピーして、新しい AlloyDB Studio クエリタブに貼り付け、[実行] をクリックします。これには 1 分ほどかかります。タイムアウトした場合は、再度実行します。エンベディングがすでにある商品はスキップされます。
5. Google Cloud で MongoDB Atlas を設定する
MongoDB は、豊富な半構造化された商品の詳細と、柔軟なユーザー行動データ(クリック数やビュー数など)を保存します。
MongoDB クラスタを作成する
- MongoDB Atlas にログインします(必要に応じて無料アカウントを作成します)。
- [Deploy your cluster] で [Free] を選択します。(Atlas では有料ティアが事前に選択されています。無料ティアが選択されていることを確認してください)。
- [プロバイダ] で [Google Cloud] を選択し、[リージョン] で [アイオワ(us-central1)] を選択します。
- [名前] に「
ecommerce-cluster」と入力し、[サンプル データセットをプリロードする] をオフにします。 - [デプロイメントの作成] をクリックします。
アクセスを許可してデータベース ユーザーを作成する
Atlas で [Connect to ecommerce-cluster] ダイアログが開きます。
- [Add a Different IP Address] をクリックし、
0.0.0.0/0と入力して追加します。 - [Username] に「
store-user」、[Password] に「storeuser」と入力し、[Create Database User] をクリックします。 - [Choose a connection method] をクリックし、[Drivers and Client Libraries] をクリックします。
- [アプリケーションでこの接続文字列を使用する] で、接続文字列をコピーします。パスは「
mongodb+srv://store-user:」のような形式になります。@ecommerce-cluster.xxxxx.mongodb.net/ をstoreuserに置き換えて文字列を保存します。この文字列はtools.yamlで使用します。
データベースとコレクションを作成する
- 左側のナビゲーションで [データ エクスプローラ] をクリックし、[データベースを作成] をクリックして、次の詳細を入力します。
- データベース名:
ecommerce_db - コレクション名:
product_details_collection
- データベース名:
- [データベースを作成] をクリックします。
- データ エクスプローラで、コレクション名を選択します。
- [Add Data (+)] アイコンをクリックし、[Insert document] をクリックします。
- product_details_export.json から JSON コンテンツをコピーし、[Insert Document] エディタ ダイアログに貼り付けます。
- Atlas に、テキストをシェル構文に変換することを提案するバナーが表示されます。[変換] をクリックし、[挿入] をクリックします。192 個のドキュメントが追加されたことを確認します。
- データ エクスプローラで、
ecommerce_dbデータベースの横にある [コレクションを作成 (+)] をクリックします。 - コレクション名に「
user_interactions_collection」と入力し、[コレクションを作成] をクリックします。 - データ エクスプローラで、
user_interactions_collectionコレクションを選択します。 - [Add Data (+)] アイコンをクリックし、[Insert document] をクリックします。
- user_interactions_export.json から JSON コンテンツをコピーし、[Insert Document] エディタ ダイアログに貼り付けます。
- Atlas に、テキストをシェル構文に変換することを提案するバナーが表示されます。[変換] をクリックし、[挿入] をクリックします。211 件のドキュメントが追加されたことを確認します。
6. BigQuery をセットアップする
BigQuery は、過去のユーザー行動を集計して分析し、インテリジェントなレポートとレコメンデーションを生成します。
データセットの作成
- Google Cloud コンソールで [BigQuery] に移動します。
- [エクスプローラ] ペインで、プロジェクト ID の横にあるその他メニューをクリックし、[データセットを作成] を選択します。
- [データセット ID] に「
ecommerce_analytics」と入力します。 - [データロケータ] で、
US (multiple regions)を選択します(tools.yaml構成ではロケーションUSが想定されています)。 - [データセットを作成] をクリックします。
分析テーブルを作成する
- BigQuery ワークスペースで新しいクエリを開きます。
- 次の SQL ステートメントを実行して、ユーザーを商品インタラクションにリンクするサマリー テーブルを作成します。
CREATE TABLE ecommerce_analytics.user_product_interactions (
user_id STRING DEFAULT 'any user',
product_id STRING,
interaction_score INT
);
Compute サービス アカウントにロールを付与する
デフォルトの Compute サービス アカウントに、MCP ツールボックスとアプリに必要なロールを付与します。
for role in \
roles/bigquery.dataEditor \
roles/bigquery.jobUser \
roles/secretmanager.secretAccessor \
roles/alloydb.client \
roles/serviceusage.serviceUsageConsumer \
roles/storage.objectViewer \
roles/aiplatform.user \
roles/artifactregistry.writer; do
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="$role" \
--condition=None
done
または、コンソールで [IAM と管理] > [IAM] に移動し、[アクセス権を付与] をクリックしてサービス アカウントを入力し、同じロールを追加します。
7. アプリケーションをエンドツーエンドで理解する
各コンポーネントがどのように連携するかを学ぶために、複数のデータベースとサービスを使用する e コマース アプリケーションを作成します。このアプリケーションは Python(Flask)バックエンドで構築されており、複数の Google Cloud サービスとデータベースを統合しています。
ディレクトリ構造を理解する
次のセクションでは、polyglot-persist-ecommerce リポジトリのクローンを作成し、それを使用してアプリケーションをローカルで実行します。ローカルでアプリケーションをテストしたら、MCP ツールボックスとアプリケーションの両方を Cloud Run にデプロイします。
このディレクトリにダウンロードされたファイルを確認します。次の上位ディレクトリが存在します。
UploadImages: 画像アセットを保存します。主に、e コマースの商品カタログのドキュメントやビジュアル コンテンツに使用されます。static: ユーザー インターフェースのスタイル設定とインタラクティブ機能の追加に使用される、CSS ファイルや JavaScript ファイルなどのアプリケーションの静的ウェブアセットを保存します(ソース)。templates: Python アプリケーションが e コマース カタログのウェブページを動的にレンダリングするために使用する HTML テンプレート(Flask の Jinja2 など)を保存します(ソース)。
このリポジトリ内のファイルは、マルチデータベース e コマース アプリケーションのビルド、構成、デプロイを連携して行います。app.py などの中心的なファイルは、SQL ファイルと JSON ファイルで定義されたさまざまなデータソースを統合してバックエンドをオーケストレートします。一方、構成ファイルは、クラウド環境へのシームレスなデプロイを保証します。
app.py: Flask バックエンドとマルチデータベースの統合をオーケストレートします。agentengine.py: Vertex AI エージェントの初期化と構成を行うためのコアロジック。.env: データベースとストレージ接続のシークレットを保存します。tools.yaml: multidb データベース オペレーション用に MCP ツールボックスを構成します。Dockerfile: コンテナ イメージと環境設定を定義します。requirements.txt: アプリケーション ランタイムに必要な Python ライブラリを一覧表示します。tools.yaml: MCP ツールボックスの構成。Procfile: デプロイ用の本番環境実行コマンドを指定します。alloydb_insert_queries.sql: リレーショナル データの SQL クエリが含まれています。product_details_export.jsonとuser_interactions_export.json: NoSQL データベースのサンプル JSON データを提供します。README.md: 設定、デプロイ、プロジェクトの理解をガイドします。
アプリケーションのエンドツーエンドのフロー
- AlloyDB の設定: 高性能クラスタをプロビジョニングし、提供された SQL スクリプトを使用して、画像エンベディング用のベクトル列を含む products_core_table を作成します。
- MongoDB Atlas の設定: Google Cloud にクラスタをデプロイして、product_details に流動的な商品属性を保存し、user_interactions にリアルタイムのクリックストリームをログに記録します。
- BigQuery Analytics: インタラクション ログを集計するデータセットを作成し、数百万件のイベントから「上位 5 件」のトレンド アイテムを特定する複雑な分析クエリを実行できるようにします。
- Cloud Storage リポジトリ: 高解像度の商品画像を格納する公開バケットを作成し、フロントエンドで署名付き URL または公開 URL を使用して各アセットにアクセスできるようにします。
- MCP ツールボックスのデプロイ: ツールボックスを Cloud Run にデプロイし、自然言語のインテントをマルチデータベース クエリに変換する中央の RESTful ブリッジとして確立します。
- Tools.yaml 構成: get_product_core_data や get_top_5_views などの「ツール」を定義し、特定の SQL オペレーションと NoSQL オペレーションを、エージェントが読み取り可能なシンプルな名前にマッピングします。
- Flask バックエンド ロジック: MCP ツールボックスとインターフェースする app.py ルートを実装し、データ取得の調整を処理して、UI の API として機能します。
- マルチエージェント オーケストレーション: コード内で ADK エージェントを構成して、ユーザーの意図を推論し、適切な「ツール」を選択して、複数のソースにわたる複雑な小売クエリを解決します。
- フロントエンドの統合: インタラクション記録機能を備えた商品カタログ、商品のパフォーマンス分析を把握するための [Analytics] タブ、ADK マルチエージェント チャットを使用してシームレスな会話型ショッピング エクスペリエンスを提供する専用の [Agent] タブを備えた index.html インターフェースを構築します。
次に、オーケストレーションとデプロイを実装しましょう。
8. MCP ツールボックスをセットアップして Cloud Run にデプロイする
MCP ツールボックスは複数のデータソースを抽象化し、アプリケーションがデータを一元的に取得して書き込めるようにします。
MCP ツールボックスをローカルにインストールする
MCP ツールボックスのバイナリをホーム ディレクトリにダウンロードして、実行可能にします。
export VERSION=1.15.0
curl -L -o ~/toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/linux/amd64/toolbox
chmod +x ~/toolbox
tools.yaml を構成する
AlloyDB、MongoDB、BigQuery の抽象化を定義する必要があります。tools.yaml ファイルは、MCP ツールボックスに相互にやり取りする方法を指示します。
- リポジトリにはすでに
tools.yamlが含まれています。開く:cd ~/polyglot-persist-ecommerce cloudshell edit tools.yaml *****プレースホルダを実際の値に置き換えます。データベース
フィールド
値の例
AlloyDB/BigQuery
projectYOUR_PROJECT_IDAlloyDB
regionus-central1AlloyDB
clusterecommerce-clusterAlloyDB
instanceecommerce-cluster-primaryAlloyDB
databasepostgresAlloyDB
passwordalloydbAlloyDB
ipTypepublic(この行がalloydb-sourceの下にない場合は追加します)MongoDB
uri前に保存した接続文字列
- 画像プレビューをバケットにポイントします。
sed -i "s/ecommerce-app-images/$BUCKET/g" tools.yaml
ツールの UI をテストする
- Cloud Shell ターミナルで、ツールボックスをローカルで実行して UI を提供します。
~/toolbox --config tools.yaml --ui --enable-api - Cloud Shell で、[ウェブでプレビュー] > [ポートを変更] をクリックし、
5000と入力して、開いた URL の末尾に/uiを追加します。
次の MCP ツールボックス UI が表示されます。

完了したら、Ctrl+C を押してローカル ツールボックスを停止します。
Cloud Run へのデプロイ
MCP ツールボックスを Cloud Run にデプロイして、アプリケーションがデータベースのクエリに使用できる安全なマネージド サービスとして利用できるようにします。機密性の高い接続の詳細を保護するため、構成を Secret Manager に保存します。
tools.yaml構成を Google Secret Manager にアップロードします。 後でgcloud secrets create tools --data-file=tools.yamltools.yamlを変更する場合は、次のコマンドで新しいバージョンをアップロードします。gcloud secrets versions add tools --data-file=tools.yaml- 公開されている MCP ツールボックスのコンテナ イメージを使用してデプロイします。
gcloud run deploy toolbox \ --image us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION \ --region us-central1 \ --service-account ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --set-secrets "/app/tools.yaml=tools:latest" \ --args="--config=/app/tools.yaml","--address=0.0.0.0","--port=8080","--ui","--enable-api" \ --allow-unauthenticated--enable-apiは、ウェブアプリが使用する REST API を有効にします。 - ツールボックスの URL を保存します。
ブラウザでexport TOOLBOX_URL=$(gcloud run services describe toolbox --region us-central1 --format='value(status.url)') echo $TOOLBOX_URL$TOOLBOX_URL/uiを開くと、ツールを確認できます。
9. e コマース アプリケーションを設定して Cloud Run にデプロイする
データベースが実行され、MCP ツールボックスの抽象化がデプロイされたら、Flask ウェブ アプリケーションを実行できます。
商品カタログを提供するために、Flask アプリケーションは次の手順でデータを処理します。
- コアデータを取得する: AlloyDB(
list_products_core)から商品の完全なリストを取得します。 - 詳細情報を取得する: MongoDB(
list_all_product_details)からすべての商品の詳細を取得します。 - リストの結合: 2 つのリストを連結します。
- メディアで拡充する: すべてのアイテムに Cloud Storage の画像 URL を追加します。
Agent Engine を作成する
- 依存関係をインストールします。
注: このステップでは、パッケージの解決とインストールに数分かかることがあります。cd ~/polyglot-persist-ecommerce pip install -r requirements.txt - Vertex AI 推論エンジンを使用して AI エージェントを初期化して登録します。
出力は次のようになります。export REASONING_ENGINE_LOCATION=us-central1 export APP_NAME=$(python agentengine.py) echo $APP_NAMEprojects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856
アプリは、以下の deploy コマンドで渡す環境変数から設定を読み取るため、.env を編集する必要はありません。
フロントエンドを Cloud Run にデプロイする
- ウェブ アプリケーションを Cloud Run にデプロイして、アーキテクチャを完成させます。
gcloud run deploy polyglot --source . \ --region us-central1 \ --allow-unauthenticated \ --set-env-vars="MCP_TOOLBOX_SERVER_URL=$TOOLBOX_URL,GCS_PRODUCT_BUCKET=$BUCKET,FALLBACK_IMAGE_URL=https://storage.googleapis.com/$BUCKET/fallback.jpg,GOOGLE_GENAI_USE_VERTEXAI=TRUE,PROJECT_ID=$PROJECT_ID,GOOGLE_CLOUD_LOCATION=global,REASONING_ENGINE_LOCATION=$REASONING_ENGINE_LOCATION,APP_NAME=$APP_NAME,MODEL=gemini-3.5-flash"
アプリケーションが公開されました。Cloud Run から提供されたサービス URL を開いて、Multidb Ecommerce カタログを表示します。URL は https://polyglot-*********-uc.a.run.app/ のようになります。
10. アプリを探索する
- [商品カタログ] をクリックして、すべての商品を表示します。

- プロダクト アイコンをクリックすると、商品の詳細が表示されます。画像は Cloud Storage から、商品の詳細は MongoDB から、商品の在庫は AlloyDB から取得されていることがわかります。

- 商品カタログを操作して、MongoDB に送信されるモックビューと書き込みを生成します。
- [ETL & Analytics] をクリックして、プロダクト分析を表示します。商品分析が BigQuery から取得されていることがわかります。

- [AI エージェント] タブをクリックして、AI エージェントとやり取りします。次のような自然言語の質問をします。
I'm planning a high-altitude photography trip. Show me some weather-resistant backpacks similar in style to aero glow pro but without any leather components. Also, let me know if they are actually in stock and if other photographers have complained about the strap durability in the reviews.
検索結果には、リクエストしたとおりの内容が表示されています。つまり、レザー部品を使用していないバックパックで、在庫があり、レビューでストラップの耐久性に関する不満がないものです。

11. クリーンアップ
Google Cloud アカウントに継続的に課金されないようにするには、この Codelab で作成したリソースを削除します。
次の Cloud Shell コマンドを実行します。
gcloud run services delete toolbox --region us-central1 --quiet
gcloud run services delete polyglot --region us-central1 --quiet
gcloud secrets delete tools --quiet
bq rm -r -f -d $PROJECT_ID:ecommerce_analytics
gcloud storage rm --recursive gs://$BUCKET
gcloud alloydb clusters delete ecommerce-cluster --region us-central1 --force --quiet
必要に応じて、Agent Engine インスタンスを削除します。
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://us-central1-aiplatform.googleapis.com/v1/$APP_NAME?force=true"
または、Google Cloud コンソールで [Vertex AI] > [Agent Engine] に移動して、インスタンスを削除します。
(省略可)Google Cloud プロジェクト全体とそのすべてのリソースを削除するには、次のコマンドを実行します。
gcloud projects delete $PROJECT_ID
12. 完了
おめでとうございます!クロスクラウドの Multidb アーキテクチャが正常に構築されました。
MCP ツールボックスが、最新の特化型アプリケーションのアーキテクチャ上の接着剤として機能することを示しました。適切なデータベースを適切なジョブに適合させることで、次のことが実現しました。
- 柔軟なデータ書き込み: イベントログ用の MongoDB。
- トランザクションの整合性: コアの整合性を確保するための AlloyDB。
- ハイ パフォーマンス分析: ビジネス インテリジェンス向けの BigQuery。
- 統合開発: MCP ツールボックスを使用して、すべての複雑さを抽象化する単一の Python バックエンド。
リファレンス ドキュメント
関連する Google Cloud プロダクトの詳細を確認し、次の Codelab を試してください。
- AlloyDB AI: AlloyDB AI でベクトル エンベディングを使ってみる
- AlloyDB AI: AlloyDB のマルチモーダル エンベディング
- MCP ツールボックス: AlloyDB でのデータベース向け MCP ツールボックスのインストールと設定
この Codelab で使用するプロダクトの詳細については、以下をご覧ください。