Google ADK 実践レビュー:Google オープンソースエージェント開発キット、MCP + ワークフローオーケストレーション完全解析

Google ADK 実践レビュー:Google オープンソースエージェント開発キット、MCP + ワークフローオーケストレーション完全解析

AI エージェント開発の分野を追いかけているなら、LangChain、CrewAI、AutoGen といった名前を必ず耳にしたことがあるでしょう。しかし、2025 年に Google がオープンソース化した ADK(Agent Development Kit) がゲームのルールを変えようとしています——MCP プロトコルのネイティブサポートグラフ実行エンジンGemini との深い統合を 1 つのフレームワークで実現した最初の存在です。

これは表面的な機能紹介ではありません。実践的な深層レビューです。MCP ツール統合、ワークフローオーケストレーション、動的ルーティングという 3 つの中核機能に焦点を当て、実際のコードで Google ADK が既存のエージェントフレームワークを本当に置き換えられるのかを検証します。

1. Google ADK とは?なぜ注目すべきか?

Google ADK 2.0 は、Google がオープンソース化したコードファーストの AI エージェント開発フレームワークで、純粋な Python でエージェントの動作、ツール呼び出し、マルチエージェントオーケストレーションロジックを定義します。

LangChain / CrewAI / AutoGen との本質的な違い

観点Google ADK 2.0LangChainCrewAIAutoGen
設計思想コードファースト + グラフ実行エンジンチェーン呼び出し + YAML 設定ロールプレイ + タスク委任マルチエージェント対話
MCP サポート✅ ネイティブ内蔵⚠️ サードパーティプラグインが必要❌ なし❌ なし
ワークフローオーケストレーション✅ グラフ構造(順次/並列/ループ/条件分岐)⚠️ LangGraph を別途使用⚠️ 順次実行が中心⚠️ 対話駆動
モデルバインディングGemini ファースト、任意のモデルをサポートモデル非依存モデル非依存モデル非依存
Google エコシステム✅ Vertex AI / Cloud Run / BigQuery ネイティブ
型安全性✅ 完全な Python 型ヒント⚠️ 部分的⚠️ 弱い⚠️ 弱い
学習曲線中程度(グラフ実行モデルの理解が必要)急峻低い中程度

一言で言えば:すでに Gemini を主力モデルと決めている、あるいは MCP プロトコルで外部ツールと接続する必要があるなら、Google ADK が現在最もスムーズな選択です。モデル非依存の柔軟性が必要なら、LangChain の方がまだ成熟した選択肢です。

2. コア機能の深層解析

2.1 MCP プロトコルのネイティブサポート——糊コードとおさらば

MCP(Model Context Protocol)は Anthropic が提唱したオープンプロトコルで、AI モデルが標準化された方法で外部ツールやデータソースを呼び出せるようにします。Google ADK は、ネイティブ内蔵の MCP クライアントを持つ最初の主流フレームワークです。

従来の方法(LangChain など)では、自分で MCP クライアントを書き、プロトコルのハンドシェイクやシリアライズ/デシリアライズを処理する必要があります:

# ❌ 従来の方法:MCP の手動統合(疑似コード)
from mcp_client import MCPClient

client = MCPClient("http://localhost:3000")
tools = await client.list_tools()

# 各 MCP ツールを手動で LangChain Tool としてラップ
langchain_tools = []
for tool in tools:
    langchain_tools.append(
        StructuredTool.from_function(
            func=lambda **kwargs: client.call_tool(tool.name, kwargs),
            name=tool.name,
            description=tool.description,
        )
    )

Google ADK の方法——1 行のコードで任意の MCP サーバーに接続:

from google.adk.tools.mcp_tools import MCPToolset
from google.adk import Agent

# ✅ ADK の方法:1 行で MCP サーバーに接続
mcp_tools = MCPToolset.from_url("http://localhost:3000")

agent = Agent(
    name="mcp_agent",
    model="gemini-2.5-flash",
    instruction="あなたは外部ツールを使用できるアシスタントです。",
    tools=[mcp_tools],
)

これは、コミュニティにある数千の既存 MCP サーバー——ファイルシステム、データベース、API ゲートウェイ、ブラウザ自動化——に、アダプターコードを書くことなく直接接続できることを意味します。

2.2 ワークフローオーケストレーション——グラフ実行エンジン

ADK 2.0 の最も強力な機能は Workflow クラス——グラフ構造に基づく実行エンジンで、4 つのオーケストレーションモードをサポートします:

順次実行

from google.adk import Agent, Workflow

# 3 つの専門エージェント
researcher = Agent(
    name="researcher",
    model="gemini-2.5-flash",
    instruction="ユーザーの質問に関する情報を収集し、重要な事実を返してください。",
)
writer = Agent(
    name="writer",
    model="gemini-2.5-flash",
    instruction="提供された事実に基づいて簡潔な記事を書いてください。",
)
reviewer = Agent(
    name="reviewer",
    model="gemini-2.5-flash",
    instruction="記事の品質をレビューし、誤りを修正し、表現を最適化してください。",
)

# 順次パイプライン:調査 → 執筆 → レビュー
pipeline = Workflow(
    name="content_pipeline",
    edges=[("START", researcher, writer, reviewer)],
)

並列実行(Fan-out / Fan-in)

# 複数の次元を並列に分析し、最後に集約
sentiment_agent = Agent(name="sentiment", instruction="感情傾向を分析してください。")
topic_agent = Agent(name="topic", instruction="中心となるトピックを抽出してください。")
entity_agent = Agent(name="entity", instruction="重要なエンティティを識別してください。")
summary_agent = Agent(name="summary", instruction="上記の分析結果を集約してください。")

parallel_workflow = Workflow(
    name="parallel_analysis",
    edges=[
        ("START", sentiment_agent, topic_agent, entity_agent),  # ファンアウト
        (sentiment_agent, topic_agent, entity_agent, summary_agent),  # ファンイン
    ],
)

条件ルーティング

from google.adk import Agent, Workflow

def route_by_category(ctx):
    """分類結果に基づいて異なる処理エージェントにルーティング"""
    category = ctx.state.get("category", "general")
    if category == "technical":
        return "tech_expert"
    elif category == "billing":
        return "billing_expert"
    return "general_expert"

tech = Agent(name="tech_expert", instruction="技術的な問題を処理します。")
billing = Agent(name="billing_expert", instruction="請求問題を処理します。")
general = Agent(name="general_expert", instruction="一般的な問題を処理します。")

routed_workflow = Workflow(
    name="smart_router",
    edges=[
        ("START", "classifier"),  # まず分類
        ("classifier", route_by_category, [tech, billing, general]),
    ],
)

ループ実行

# 反復改善:生成 → 評価 → 不満なら再生成
generator = Agent(name="generator", instruction="回答を生成してください。")
evaluator = Agent(
    name="evaluator",
    instruction="回答の品質を評価し、1-10 でスコアリングしてください。7 点未満なら再生成を要求します。",
)

loop_workflow = Workflow(
    name="iterative_refinement",
    edges=[
        ("START", generator, evaluator),
        (evaluator, "retry_check", [generator, "END"]),  # 条件ループ
    ],
    max_iterations=3,  # 最大 3 回反復
)

2.3 LLM 駆動の動的ルーティング

ハードコードされた条件ルーティングに加え、ADK は LLM 自身に次のエージェント呼び出しを決定させることもサポートしています:

from google.adk import Agent

# コーディネーターエージェントが動的に委任先を決定
coordinator = Agent(
    name="coordinator",
    model="gemini-2.5-flash",
    instruction="""あなたはタスクコーディネーターです。ユーザーのニーズに基づいて、適切な専門家にタスクを委任してください:
    - データ分析の質問 → data_analyst
    - コード関連の質問 → code_expert  
    - ドキュメント作成のニーズ → writer
    委任先とその理由を直接出力してください。""",
    sub_agents=[data_analyst, code_expert, writer],
)

このハイブリッドモード——決定論的ワークフロー + LLM 動的意思決定——は ADK の最もユニークな設計です。重要なパスではグラフ構造で予測可能性を保証し、柔軟性が必要なノードでは LLM に判断を任せることができます。

3. クイックスタートチュートリアル

3.1 インストール

# 仮想環境を作成
python3 -m venv adk-env && source adk-env/bin/activate

# ADK をインストール(CLI ツール含む)
pip install "google-adk[cli]"

# Gemini API キーを設定
export GEMINI_API_KEY="your-key-here"

3.2 最初の MCP エージェント

# my_agent/__init__.py
from google.adk import Agent
from google.adk.tools.mcp_tools import MCPToolset

# ファイルシステム MCP サーバーに接続
fs_tools = MCPToolset.from_command(
    command=["npx", "-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
)

root_agent = Agent(
    name="file_assistant",
    model="gemini-2.5-flash",
    instruction="ユーザーのファイル管理を支援します。ファイルの一覧表示、読み取り、作成ができます。",
    tools=[fs_tools],
)
# インタラクティブテストを開始
adk run my_agent

# または Web UI を起動
adk web my_agent

3.3 実践:マルチステップワークフローエージェントの構築

以下は完全な「研究レポート生成」ワークフローです——情報検索からレポート生成まで、完全に自動化されます:

from google.adk import Agent, Workflow
from google.adk.tools.mcp_tools import MCPToolset

# MCP ツール:検索エンジンに接続
search_tools = MCPToolset.from_url("http://localhost:3001")

# ステップ 1:情報収集
collector = Agent(
    name="collector",
    model="gemini-2.5-flash",
    instruction="ユーザーのトピックに基づいて 3-5 の重要な情報ポイントを検索し、JSON リストとして返してください。",
    tools=[search_tools],
)

# ステップ 2:深層分析
analyst = Agent(
    name="analyst",
    model="gemini-2.5-flash",
    instruction="収集した情報を分析し、重要な洞察とトレンドを抽出してください。",
)

# ステップ 3:レポート作成
writer = Agent(
    name="writer",
    model="gemini-2.5-flash",
    instruction="分析結果を要約、本文、結論を含む構造化されたレポートに整理してください。",
)

# ステップ 4:品質レビュー
reviewer = Agent(
    name="reviewer",
    model="gemini-2.5-flash",
    instruction="レポートをレビューしてください:事実の正確さ、論理的一貫性、言語品質をチェックします。修正提案を提供してください。",
)

# ワークフローを組み立て
root_agent = Workflow(
    name="research_pipeline",
    edges=[
        ("START", collector, analyst, writer, reviewer),
    ],
)

動作の流れ:ユーザーがトピックを入力 → 自動検索 → 分析 → レポート作成 → レビュー → 最終結果を出力。全体のプロセスで人の介入は不要で、各ステップの出力が自動的に次のステップの入力となります。

4. 競合との詳細比較

4.1 vs LangChain + LangGraph

LangGraph は LangChain エコシステムのワークフローソリューションで、機能的には ADK Workflow と似ています。核心的な違い:

  • ADK:1 つのフレームワークで Agent + ツール + ワークフロー + MCP を完結
  • LangChain + LangGraph:複数のパッケージを組み合わせる必要があり、設定はより複雑だが、エコシステムはより豊富

すでに LangChain エコシステムを深く使っているなら、ADK への移行コストは低くありません。しかし新規プロジェクトなら、ADK の「オールインワン」体験は明らかにスムーズです。

4.2 vs CrewAI

CrewAI は「ロールプレイ」型のマルチエージェント協力が得意で、非常に使い始めやすいです。しかし以下のシナリオでは ADK に劣ります:

  • 決定論的な実行フローが必要な場合(CrewAI の実行順序は LLM によって決まり、予測不可能)
  • MCP ツール統合が必要な場合(CrewAI はサポートしていない)
  • 条件分岐やループが必要な場合(CrewAI は順次実行のみサポート)

4.3 vs AutoGen

AutoGen の核心はマルチエージェント対話モードで、「議論型」の意思決定が必要なシナリオに適しています。ADK は「パイプライン型」のタスク処理により適しています。両者は設計思想が異なり、絶対的な優劣はありません。

5. 適切なユースケースと限界

最も適したシナリオ

  1. Google Cloud 技術スタック:すでに Vertex AI、Cloud Run、BigQuery を使っているなら、ADK のネイティブ統合で多くのアダプター作業を節約できます
  2. MCP ツールエコシステム:多くの外部ツールを接続し、標準化されたプロトコルで管理したい場合
  3. 予測可能なワークフロー:カスタマーサービスパイプライン、データ処理パイプライン、コンテンツ生成チェーン——決定論的な実行順序が必要なシナリオ
  4. ハイブリッドオーケストレーション:一部のステップは決定論的(グラフ構造)で、一部のステップは柔軟(LLM ルーティング)である必要がある場合

現在の限界

  1. Gemini バインディングの傾向:他のモデルもサポートしていますが、最高の体験には 여전히 Gemini API が必要です
  2. コミュニティエコシステムはまだ成長段階:LangChain の数千の統合と比較すると、ADK のサードパーティツールはまだ少ない
  3. ドキュメントが十分ではない:一部の高度な機能(カスタムミドルウェア、プラグインシステム)のドキュメントはまだ整備中
  4. Python / Java / Go のみ:JavaScript/TypeScript バージョンは始まったばかりで、フロントエンド統合は不便

6. FAQ

Q1: Google ADK は無料ですか?

A: ADK フレームワーク自体は完全に無料でオープンソース(Apache 2.0 ライセンス)です。ただし、Gemini モデルの使用には Google AI API 料金が必要で、無料枠が利用可能です。他のモデルを接続して費用を避けることもできます。

Q2: ADK はどの LLM モデルをサポートしていますか?

A: Gemini 2.5 シリーズ(Flash / Pro)にネイティブ最適化されています。カスタム Model Provider を通じて、OpenAI GPT-4o、Anthropic Claude、ローカル Ollama モデルなども接続可能です。ただし、一部の高度な機能(ツール呼び出しの構造化出力など)は Gemini で最も良く動作します。

Q3: MCP ツールはどこで見つかりますか?

A: MCP プロトコルにはすでに数千のコミュニティ貢献によるサーバー実装があります。MCP Servers GitHub で公式リポジトリを見つけることができ、ファイルシステム、データベース、ブラウザ自動化、Slack、GitHub などの一般的なシナリオをカバーしています。

Q4: ADK ワークフローと LangGraph の違いは何ですか?

A: 機能的には似ており、どちらもグラフ構造の実行エンジンです。違いは、ADK は組み込み機能(設定ゼロ)であるのに対し、LangGraph は追加のインストールと設定が必要な点です。ADK の API はよりシンプルで、LangGraph の可視化デバッグツールはより成熟しています。

Q5: 本番環境のデプロイにはどんなアプローチが推奨されますか?

A: 最もシンプルな方法は Docker + Cloud Run です。ADK は HTTP サービスを起動する組み込みの Runner.serve() メソッドを提供しており、Dockerfile と組み合わせてコンテナ化デプロイが可能です。大規模シナリオでは Vertex AI Agent Engine が推奨され、スケーリングとモニタリングを自動処理します。

7. 総評

Google ADK 2.0 は現在、MCP プロトコルサポートが最も優れているエージェントフレームワークであり、他に類を見ません。そのワークフローオーケストレーション能力——順次、並列、ループ、条件ルーティング——は、複雑なエージェントパイプラインを予測可能でテスト可能なものにします。

推奨指数:⭐⭐⭐⭐(4/5)

減点項目:Gemini 以外のモデルのサポートはまだスムーズではなく、コミュニティエコシステムは LangChain に比べてまだ差距があります。

一言推薦:Gemini を使い + MCP が必要 + 決定論的ワークフローが必要なら、ADK が現在の最適解です。そうでなければ、LangChain がより汎用的な選択肢です。


関連リソース:

さらに読む: