G-gen の堂原です。当記事では、Agent Development Kit(ADK)を使用して開発した AI エージェントの開発者用 Web UI を、Cloud Run へデプロイする方法を紹介します。

はじめに
Agent Development Kit
Agent Development Kit(ADK)は、Google によって開発された AI エージェント構築用のフレームワークです。ADK を使用することで、エージェントへの関数処理組み込みや外部ツールの利用、マルチエージェントの実装が行えます。
以下の記事カテゴリも参照してください。
当記事について
ADK には、開発したエージェントをブラウザ上でテストするための、開発者用の Web UI 機能が備わっています。Web UI は、エージェントを開発しているローカル実行環境で adk web コマンドを実行することで起動できます。この Web UI は本来、開発者がローカル実行環境で使用することを想定しており、他人がアクセスすることは想定されていません。
当記事では、この Web UI をあえて Cloud Run(Cloud Run services)にデプロイして、外部からアクセス可能にします。PoC(概念実証)などの目的で複数人から AI エージェントを試用することが目的であり、一般ユーザーによる使用を想定したものではないことに注意して下さい。

- 参考 : Build and deploy an AI agent to Cloud Run using the Agent Development Kit (ADK)
- 参考 : Deploy to Cloud Run - Agent Development Kit
ディレクトリ構成とソースコード
当記事では、以下の記事で開発したエージェントを用います。
ディレクトリ構成は以下の通りです。
parent/
└ get_current_time/
├ .env
├ agent.py
└ __init__.py
agent.py は、前掲の記事のソースコードです。__init__.py は、以下の1行を記載します。
from . import agent
.env には、エージェントが呼び出すエンドポイントの情報を記載します。GOOGLE_GENAI_USE_VERTEXAI=TRUE とすることで Vertex AI 経由で Gemini API が呼び出されることになります(以下、Gemini API は Vertex AI 経由であることを前提とします)。
GOOGLE_GENAI_USE_VERTEXAI=TRUE
GOOGLE_CLOUD_PROJECT={Gemini APIの呼び出し先のGoogle CloudプロジェクトのID}
GOOGLE_CLOUD_LOCATION={Gemini APIの呼び出し先のリージョン}
Cloud Run へのデプロイ
デプロイコマンド
ADK には、エージェントを Cloud Run へデプロイする adk deploy cloud_run コマンドが用意されています。このコマンドを使用することで、Dockerfile の作成やイメージのビルド、Cloud Run へのデプロイを一括で実行できます。
基本的な構文は以下の通りです。
adk deploy cloud_run [OPTIONS] AGENT
AGENT には、エージェントのソースコードが格納されているフォルダへのパスを指定します。今回の場合においては、「parent」ディレクトリでコマンドを実行するのであれば get_current_time と指定します。
実行例
以下のシェルスクリプトを実行してデプロイします。環境変数には Cloud Run サービスをデプロイしたい Google Cloud プロジェクトの ID とリージョン、Cloud Run サービスに紐づけるサービスアカウントを設定してください。
export CLOUD_RUN_PROJECT={Cloud Runサービスをデプロイする Google CloudプロジェクトのID} export CLOUD_RUN_LOCATION={Cloud Runサービスをデプロイするリージョン} export CLOUD_RUN_SERVICE_ACCOUNT_EMAIL={Cloud Runサービスにアタッチするサービスアカウント} adk deploy cloud_run \ --project=$CLOUD_RUN_PROJECT \ --region=$CLOUD_RUN_LOCATION \ --service_name=adk-get-current-time \ --with_ui \ get_current_time \ -- \ --service-account=$CLOUD_RUN_SERVICE_ACCOUNT_EMAIL \ --allow-unauthenticated
主要なオプションの詳細は以下の通りです。
--service_name: Cloud Runサービスのサービス名--with_ui: Cloud Run サービス上で ADK の Web UI を起動させるために必要なフラグです--(get_current_time の後ろ) : この記号以降には、サービスアカウントの指定や未認証アクセスの許可(--allow-unauthenticated)など、Cloud Run サービスに関するオプションを記載します。gcloud run deployコマンドにつけるオプションと同じとなります。
留意事項
Gemini モデルとリージョン
.env ファイルの GOOGLE_CLOUD_LOCATION で指定したリーションにおいて、エージェントが呼び出す Gemini モデルが公開されている必要があります。
2026年2月現在、東京リージョンを例に取ると、公開されているモデルは gemini-2.5-flash や gemini-2.5-pro などです。
gemini-3-flash-preview などの最新モデルを利用したい場合は、.env ファイルに GOOGLE_CLOUD_LOCATION=global と記述する必要があります。最新モデルは各個別リージョンではなく global ロケーションのみで公開される傾向があります。
どのロケーションでどのモデルが公開されているかについては、以下の公式ドキュメントを参照してください。最新情報を得るためには、ドキュメントを英語版に切り替えて確認してください。
セッションの整合性
デプロイした Cloud Run サービスの Dockerfile を確認すると、Web UI の立ち上げコマンドは以下のようになっています。
CMD adk web --port=8000 --host=0.0.0.0 --session_service_uri=memory:// --artifact_service_uri=memory:// "/app/agents"
上記より、エージェントのセッション情報はコンテナのメモリ上で管理されます。そのため、以下の挙動が発生します。
- 複数コンテナ時の挙動 : 複数のコンテナが稼働している場合、アクセスの度に見えるセッション情報が異なる、不安定な状態になります。
- リビジョンの更新 : Cloud Run のリビジョンが新しくなると、セッションはリセットされます。
堂原 竜希(記事一覧)
クラウドソリューション部クラウドエクスプローラ課。2023年4月より、G-genにジョイン。
Google Cloud Partner Top Engineer 2023, 2024, 2025に選出 (2024年はRookie of the year、2025年はFellowにも選出)。休みの日はだいたいゲームをしているか、時々自転車で遠出をしています。
Follow @ryu_dohara