AIエージェント入門

【2026年版】Gemini CLI×ADK入門|エージェント爆速構築ガイド

【2026年版】Gemini CLI×ADK入門|エージェント爆速構築ガイド

この記事の結論

Gemini CLIとGoogle ADKの組み合わせでAIエージェントをvibe codingで構築。インストールから5分で動くコード、GitHub自動ラベリング実装例まで。

「Google ADKって、ChatGPTのAssistants APIみたいなものでしょ?」

半分正解で、半分は見落としています。ADK(Agent Development Kit)は確かにエージェント構築フレームワークですが、Gemini CLIと組み合わせた時に本領を発揮します。ADKのドキュメント(llms-full.txt)をGemini CLIに渡すと、フレームワークを熟知した状態でコードを生成してくれる——これが「vibe coding」と呼ばれる開発スタイルです。

この記事では、Gemini CLIの基本操作からADKエージェント構築、そして組み合わせたワークフローまで、5分で動く完全なコード例付きで解説します。

AIエージェント開発のフレームワーク比較については、AIエージェントツール比較ガイドもご覧ください。

Gemini CLIとGoogle ADK:それぞれ何者か

比較軸 Gemini CLI Google ADK
性質 コマンドラインAIアシスタント AIエージェント構築フレームワーク
用途 コード生成、質問応答、ファイル操作のサポート 本格的なエージェントシステムの実装
インストール npm / brew pip install google-adk
対応言語 自然言語指示 Python / TypeScript / Go / Java
対応モデル Gemini系 Gemini + 他モデル(model-agnostic)
強みの発揮 単発の開発支援タスク マルチエージェント、本番エージェントシステム

最終確認日: 2026-03-27

Gemini CLIのインストールと基本操作

インストール

# npmでインストール(推奨)
npm install -g @google/gemini-cli

# または Homebrew(macOS)
brew install gemini-cli

# バージョン確認と初回認証
gemini --version
gemini auth login

動作環境: Node.js 18+、macOS / Linux / Windows

注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

基本操作

# ワンライナーで質問
gemini "Pythonでファイルを再帰的に検索する関数を書いて"

# インタラクティブモード
gemini

# ファイルを渡して分析
gemini "このコードのセキュリティ問題を洗い出して" --attach ./src/auth.py

# @ファイル参照でコンテキストを渡す
gemini "@llms-full.txt Google ADKでマルチエージェントを作る方法を教えて"

Google ADKで5分で動くエージェントを作る

Step 1: インストールとプロジェクト初期化

# Python 3.10以上が必要
python -m venv .venv
source .venv/bin/activate  # Windowsは .venvScriptsactivate

# ADKインストール
pip install google-adk

# プロジェクト作成
adk create my_agent
cd my_agent

生成されるプロジェクト構造:

my_agent/
├── __init__.py
├── agent.py       ← エージェント定義(ここを編集)
└── .env           ← GOOGLE_API_KEY など

Step 2: 最初のエージェント実装

# agent.py
# 動作環境: Python 3.10+, google-adk>=1.0.0
# pip install google-adk

from google.adk.agents import Agent

def get_current_weather(city: str) -> dict:
    """指定した都市の現在の天気を返す(デモ用モック)。

    Args:
        city: 都市名(例: Tokyo, Osaka)

    Returns:
        weather情報のdict
    """
    # 本番ではOpenWeatherMap APIなどを呼び出す
    mock_data = {
        "tokyo": {"temp": "18°C", "condition": "曇り時々晴れ"},
        "osaka": {"temp": "20°C", "condition": "晴れ"},
    }
    city_lower = city.lower()
    if city_lower in mock_data:
        return {"status": "success", "city": city, **mock_data[city_lower]}
    return {"status": "error", "message": f"{city}のデータが見つかりません"}


def search_nearby_restaurants(city: str, cuisine: str = "any") -> dict:
    """指定都市の近くのレストランを検索する(デモ用モック)。

    Args:
        city: 都市名
        cuisine: 料理ジャンル(例: japanese, italian)

    Returns:
        レストランリストのdict
    """
    return {
        "status": "success",
        "results": [
            {"name": f"{cuisine}レストランA({city})", "rating": 4.2},
            {"name": f"{cuisine}レストランB({city})", "rating": 4.5},
        ]
    }


# root_agent が ADK の必須要素
root_agent = Agent(
    model='gemini-2.5-flash-preview',  # 2026年3月時点
    name='travel_assistant',
    description='旅行計画をサポートするエージェント。天気確認とレストラン検索が可能。',
    instruction="""
    あなたは旅行計画のアシスタントです。
    ユーザーが都市を指定したら、天気とおすすめレストランを調べて提案してください。
    情報が見つからない場合は正直に伝えてください。
    """,
    tools=[get_current_weather, search_nearby_restaurants],
)

動作環境: Python 3.10+, google-adk 1.0.0以降

Step 3: エージェントを実行する

# ターミナルで対話的に実行
adk run my_agent

# Web UIで実行(ブラウザが開く)
adk web --port 8000

# APIサーバーとして起動
adk api_server my_agent --port 8080

Gemini CLI × ADK の組み合わせワークフロー

ここが本記事の核心です。Gemini CLIにADKの仕様書(llms-full.txt)を渡すことで、ADKのAPIを正確に理解した上でコードを生成させられます。

Step 1: llms-full.txtの取得

# ADKの仕様書をダウンロード
curl -L "https://raw.githubusercontent.com/google/adk-python/main/llms-full.txt" 
  -o llms-full.txt

# ファイルサイズ確認(数MB程度)
wc -c llms-full.txt

Step 2: Gemini CLIでADKエージェントを生成

# ADK仕様書を参照しながら新しいエージェントを生成
gemini "@llms-full.txt GitHubのIssueを自動でラベリングするADKエージェントを作って。
       GitHub APIを使ってIssueのタイトルと本文を取得し、
       バグ/機能要求/質問のいずれかにラベリングするツールを実装して。
       google-adkのAgent, toolsパラメータを使って実装すること"

生成されたコードをベースに、実際のGitHub APIトークンを設定して動かします:

# gemini_adk_github_labeler.py
# Gemini CLI が生成したコードを編集・使用する例
# 動作環境: Python 3.10+, google-adk>=1.0.0, requests>=2.28.0
# pip install google-adk requests

import os
import requests
from google.adk.agents import Agent

GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN")
REPO_OWNER   = os.environ.get("GITHUB_REPO_OWNER", "your-org")
REPO_NAME    = os.environ.get("GITHUB_REPO_NAME", "your-repo")

def get_open_issues(limit: int = 10) -> dict:
    """GitHubリポジトリの未ラベルIssueを取得する。

    Args:
        limit: 取得するIssue数(最大100)

    Returns:
        Issue一覧のdict
    """
    headers = {"Authorization": f"token {GITHUB_TOKEN}"}
    url = f"https://api.github.com/repos/{REPO_OWNER}/{REPO_NAME}/issues"
    params = {"state": "open", "labels": "", "per_page": limit}
    resp = requests.get(url, headers=headers, params=params)
    if resp.status_code != 200:
        return {"status": "error", "message": resp.text}
    issues = [{"number": i["number"], "title": i["title"], "body": (i["body"] or "")[:200]}
              for i in resp.json()]
    return {"status": "success", "issues": issues}


def apply_label(issue_number: int, label: str) -> dict:
    """指定したIssueにラベルを付ける。

    Args:
        issue_number: IssueのID番号
        label: 付けるラベル名(bug/enhancement/question)

    Returns:
        処理結果のdict
    """
    valid_labels = ["bug", "enhancement", "question"]
    if label not in valid_labels:
        return {"status": "error", "message": f"無効なラベル: {label}。{valid_labels}から選んでください"}

    headers = {"Authorization": f"token {GITHUB_TOKEN}"}
    url = f"https://api.github.com/repos/{REPO_OWNER}/{REPO_NAME}/issues/{issue_number}/labels"
    resp = requests.post(url, headers=headers, json={"labels": [label]})
    if resp.status_code == 200:
        return {"status": "success", "issue": issue_number, "label": label}
    return {"status": "error", "message": resp.text}


root_agent = Agent(
    model='gemini-2.5-flash-preview',
    name='github_labeler',
    description='GitHubのIssueを自動でラベリングするエージェント',
    instruction="""
    GitHubリポジトリの未ラベルIssueを取得して、内容を分析し、
    bug(バグ報告)/ enhancement(機能要求)/ question(質問)のいずれかにラベリングしてください。
    判断が難しい場合はquestionにしてください。
    全てのIssueをラベリングしたら完了を報告してください。
    """,
    tools=[get_open_issues, apply_label],
)

# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
# GITHUB_TOKEN, GITHUB_REPO_OWNER, GITHUB_REPO_NAME を環境変数で設定すること

動作環境: Python 3.10+, google-adk 1.0.0以降, requests 2.28.0以降

Step 3: ADKで実行

# 環境変数を設定
export GOOGLE_API_KEY="your-gemini-api-key"
export GITHUB_TOKEN="your-github-token"
export GITHUB_REPO_OWNER="your-org"
export GITHUB_REPO_NAME="your-repo"

# エージェント実行
adk run github_labeler

# または Web UIで確認
adk web --port 8000

Gemini CLI単体 vs Gemini CLI + ADKの比較

単純なコード生成タスク:Gemini CLI で十分

「このファイルのバグを直して」「テストを追加して」のような単発タスクには、Gemini CLIをターミナルから呼び出すだけで対応できます。ADKを使うまでもありません。

繰り返し実行・外部API連携が必要:ADKが必要

ADKが必要になるのは以下のケースです:

  • 外部APIを使うツールが必要(GitHub, Slack, データベース など)
  • 複数のステップを自律的にこなすエージェントを作りたい
  • マルチエージェント(複数のエージェントが協調)が必要
  • 本番環境へデプロイして常時稼働させたい

最強の組み合わせ:Gemini CLIでADKのコードを生成する

「Gemini CLIにADKを教えた上でコード生成させる」ワークフローが最もコストパフォーマンスが高いです。llms-full.txtを使うことで、ADKのAPIを正確に理解した状態でコードが生成されるため、ハルシネーションが大幅に減ります。

【要注意】よくある失敗パターンと回避策

失敗1:ADKのモデル名を古いまま使う

model='gemini-1.5-pro'など廃止済みモデルを指定する

⭕ 公式ドキュメントで現在利用可能なモデルを確認してから指定する

# 確認方法
import google.generativeai as genai
genai.configure(api_key="YOUR_API_KEY")
for model in genai.list_models():
    if 'generateContent' in model.supported_generation_methods:
        print(model.name)

なぜ重要か: Geminiのモデル名は頻繁に更新されます。廃止済みモデルを指定するとAPIエラーになります。

失敗2:toolsの関数にdocstringを書かない

❌ docstringなしでツール関数を定義する

⭕ ADKはdocstringをLLMへのツール説明として使うため、必ず書く

# NG例
def get_weather(city):
    return {"temp": "20C"}

# OK例
def get_weather(city: str) -> dict:
    """指定した都市の現在の気温を返す。

    Args:
        city: 都市名(例: Tokyo, Osaka)
    Returns:
        温度情報を含むdict
    """
    return {"temp": "20C"}

なぜ重要か: ADKはdocstringをそのままLLMに渡してツールの使い方を教えます。docstringが空だとLLMがツールを正しく使えません。

失敗3:adk createせずにagent.pyを直接作る

❌ ディレクトリ構造を無視してagent.pyだけ作る

adk create プロジェクト名から始めて、生成された構造に従う

なぜ重要か: adk runはプロジェクトディレクトリ構造(__init__.pyの有無など)を必要とします。手動でファイルを作ると認識されないことがあります。

失敗4:Gemini CLIとgemini Python SDKを混同する

❌ Gemini CLIのコマンドラインツールと、pip install google-generativeaiのPython SDKを同じものだと思う

⭕ Gemini CLI = ターミナルツール。Google Generative AI SDK = PythonからのAPI呼び出しライブラリ。ADKはSDKとは別の上位フレームワーク

なぜ重要か: 混同すると「インストールしたのに動かない」というトラブルが頻発します。

参考・出典

まとめ:今日から始める3つのアクション

  1. 今日やること: pip install google-adk && adk create my_agentで雛形を作り、adk run my_agentで動作確認する
  2. 今週中: Gemini CLIをインストールしてllms-full.txtを取得。既存プロジェクトに合ったエージェントのコード生成を依頼してみる
  3. 今月中: GitHubやSlackなど実務で使うAPIと連携したエージェントをADKで構築し、adk api_serverでエンドポイント化する

あわせて読みたい:


AIエージェント開発の導入・研修については、株式会社Uravationのお問い合わせフォームからご相談ください。

この記事はAIgent Lab編集部がお届けしました。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年3月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事