株式会社オブライト
Software Development2026-03-08

Claude Code Agent SDK — カスタムAIエージェント構築ガイド|Python実装とマルチエージェント設計

Claude Code Agent SDKを使ったカスタムAIエージェント開発の完全ガイド。Python実装、カスタムツール定義、Hooks実装、サブエージェント活用、マルチエージェントオーケストレーション、CI/CD統合の実践パターンを品川区・港区のエンタープライズ向けに解説します。


Agent SDKとは — Claude Codeの機能をPythonで拡張

Claude Code Agent SDKは、Claude Codeの全ツール(Read、Write、Edit、Bash、Grep等)と機能をPythonスクリプトから利用できる公式SDKです。通常のClaude APIとは異なり、ファイルシステムアクセス、コマンド実行、マルチステップ推論といった「エージェント能力」が標準搭載されています。これにより、カスタムツールを追加したAIエージェント、複数のサブエージェントを協調させるマルチエージェントシステム、CI/CDパイプラインに組み込まれた自動化エージェントなど、Claude Codeの枠を超えた高度な実装が可能になります。品川区・港区のエンタープライズ企業では、Agent SDKでプルリクエスト自動レビュー、API仕様書の自動生成、テストケースの自動作成などを実装し、開発サイクルの大幅な加速を実現しています。

インストールと初期設定 — pip install claude-agent-sdk

Agent SDKのセットアップは非常にシンプルです:

bash
pip install claude-agent-sdk

環境変数 `ANTHROPIC_API_KEY` にAPIキーを設定するか、コード内で明示的に指定します:

python
import os
os.environ["ANTHROPIC_API_KEY"] = "sk-ant-..."

基本的なプロジェクト構成

project/
├── agents/
│   ├── reviewer.py    # コードレビューエージェント
│   ├── doc_gen.py     # ドキュメント生成エージェント
│   └── utils.py       # 共通ユーティリティ
├── .env               # APIキー(Gitignore推奨)
└── requirements.txt

渋谷区のスタートアップでは、この構成で複数の専門エージェントを管理し、チーム全体で再利用しています。

query()とClaudeSDKClient — 基本的なエージェント実行

最もシンプルなエージェント実行は `query()` 関数を使う方法です:

python
from claude_agent_sdk import query

result = query(
    "Analyze the codebase and identify potential security vulnerabilities",
    cwd="/path/to/project"
)
print(result["output"])

これだけで、Claude Codeの全機能(ファイル検索、コード解析、複数ファイルの読み取り)を使ったエージェントが実行されます。 カスタムツールとHooksを使う場合 は `ClaudeSDKClient` を利用します:

python
from claude_agent_sdk import ClaudeSDKClient, Tool

client = ClaudeSDKClient()
result = client.query(
    prompt="Review this PR",
    tools=[custom_tool],
    hooks=[pre_commit_hook],
    cwd="/path/to/project"
)

港区のWeb制作会社では、ClaudeSDKClientでプロジェクト固有のビルドツールやデプロイツールを追加し、完全自動化されたデリバリーパイプラインを構築しています。

カスタムツールの実装 — インプロセスMCPサーバー

Agent SDKの最大の特徴は、Python関数をそのままツールとして登録できる「インプロセスMCPサーバー」機能です。外部プロセスを立ち上げる必要がありません:

python
from claude_agent_sdk import Tool

def check_test_coverage(path: str) -> dict:
    """Calculate test coverage for a given file."""
    # pytest-cov等を使った実装
    coverage = calculate_coverage(path)
    return {"coverage_percent": coverage, "status": "pass" if coverage > 80 else "fail"}

coverage_tool = Tool(
    name="check_test_coverage",
    description="Calculate test coverage percentage for a source file",
    input_schema={
        "type": "object",
        "properties": {"path": {"type": "string"}},
        "required": ["path"]
    },
    function=check_test_coverage
)

client = ClaudeSDKClient()
result = client.query(
    "Check test coverage for all files in src/",
    tools=[coverage_tool]
)

エージェントは `check_test_coverage` ツールを他のClaude Code標準ツールと同様に使えます。品川区のSaaS企業では、社内データベースへのクエリツール、デプロイ状況確認ツール、顧客データ集計ツールなど、20種類以上のカスタムツールをAgent SDKで実装しています。

Hookの定義 — Python関数でライフサイクル制御

Agent SDKでは、Hooksも同様にPython関数で定義できます:

python
from claude_agent_sdk import Hook

def validate_before_commit(context):
    """Run validation checks before git commit."""
    if "git commit" in context.tool_input:
        # lint check
        result = subprocess.run(["npm", "run", "lint"], capture_output=True)
        if result.returncode != 0:
            return {"allow": False, "message": "Lint check failed. Fix errors before committing."}
    return {"allow": True}

commit_hook = Hook(
    event="PreToolUse",
    tool="Bash",
    function=validate_before_commit
)

client = ClaudeSDKClient()
result = client.query(
    "Implement feature X and commit",
    hooks=[commit_hook]
)

Python実装のHookは、複雑な条件分岐、外部APIとの連携、データベースへのロギングなど、シェルコマンドでは難しい高度な処理を実現できます。渋谷区の開発チームでは、全コミット情報をSlackとJiraに自動送信するHookをPythonで実装しています。

サブエージェントの活用 — Task toolによるコンテキスト分離

Agent SDKは `Task` ツールを通じてサブエージェントを生成できます。サブエージェントは独立したコンテキストで動作し、親エージェントと並列に実行できます:

python
from claude_agent_sdk import ClaudeSDKClient

client = ClaudeSDKClient()

# 親エージェント
result = client.query("""
Review this pull request:
1. Create a sub-agent to analyze code quality
2. Create another sub-agent to check security vulnerabilities
3. Aggregate results and generate a summary report
""")

エージェントはプロンプト内で「Use the Task tool to create sub-agents for code quality and security analysis」と判断し、自動的に2つのサブエージェントを起動します。各サブエージェントは専門タスクに集中し、結果を親エージェントに返します。 サブエージェントの利点: - コンテキストウィンドウの分離(大規模プロジェクトでもトークン制限に引っかからない) - 並列実行による高速化 - 専門化によるタスク品質向上 港区のFinTech企業では、コードレビュー・セキュリティ監査・パフォーマンステスト・ドキュメント生成の4つのサブエージェントを並列実行し、PRレビュー時間を従来の1/4に短縮しました。

マルチエージェントオーケストレーション — リードエージェント+ワーカー構成

複雑なワークフローでは、リードエージェントがタスクを分割し、複数のワーカーエージェントに配分する「オーケストレーションパターン」が有効です:

python
from claude_agent_sdk import ClaudeSDKClient
import asyncio

async def orchestrate_migration():
    lead = ClaudeSDKClient()
    
    # リードエージェントがタスク分割
    plan = await lead.query("""
    Plan migration from MongoDB to PostgreSQL:
    1. Analyze schema
    2. Generate migration scripts
    3. Create test fixtures
    4. Write documentation
    Output: JSON task list
    """)
    
    tasks = parse_tasks(plan["output"])
    
    # ワーカーエージェントを並列起動
    workers = [ClaudeSDKClient() for _ in tasks]
    results = await asyncio.gather(*[
        worker.query(task["prompt"]) for worker, task in zip(workers, tasks)
    ])
    
    # 結果をマージ
    final = await lead.query(f"Aggregate results: {results}")
    return final

result = asyncio.run(orchestrate_migration())

このパターンは、大規模リファクタリング、マイクロサービス間の整合性チェック、マルチリポジトリの一括更新など、「複数の独立したサブタスクを協調させる」シナリオで威力を発揮します。品川区のプラットフォーム企業では、20個のマイクロサービスのAPI仕様を一括更新するオーケストレーターをAgent SDKで実装しています。

権限管理とセキュリティ — パーミッションモードとサンドボックス

Agent SDKは3段階の権限モードをサポートします: 1. interactive(デフォルト) - 危険な操作は確認プロンプトを表示 2. restricted - 事前承認リストにない操作を全てブロック 3. autonomous - 全ての操作を自動承認(信頼済み環境専用)

python
client = ClaudeSDKClient(permission_mode="restricted")
client.add_allowed_commands(["npm test", "git status"])

さらに、Agent SDKはサンドボックス機能を提供します(macOS: Seatbelt、Linux: bubblewrap):

python
client = ClaudeSDKClient(
    sandbox=True,
    allowed_paths=["/project/src", "/project/tests"],
    blocked_network=True
)

これにより、エージェントは指定ディレクトリ外へのアクセス、ネットワーク通信、システムコマンドの実行ができなくなります。渋谷区のセキュリティ企業では、サードパーティ製プラグインの実行にサンドボックスを必須化しています。

CI/CDパイプライン統合 — GitHub ActionsでのAgent SDK利用

Agent SDKはCI/CD環境で真価を発揮します。GitHub Actionsの例:

yaml
name: AI Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  ai-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - run: pip install claude-agent-sdk
      - name: Run AI review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          python scripts/ai_reviewer.py --pr ${{ github.event.pull_request.number }}

`ai_reviewer.py` の実装:

python
from claude_agent_sdk import ClaudeSDKClient
import os

pr_number = os.environ["PR_NUMBER"]
client = ClaudeSDKClient(permission_mode="restricted")

result = client.query(f"""
Review PR #{pr_number}:
1. Check code quality
2. Identify security issues
3. Suggest improvements
Post review comments via GitHub API
""")

港区のSaaS企業では、このパターンで全PRに自動レビューを実装し、人間レビュアーは「AIが指摘した問題の妥当性チェック」に集中できるようになりました。レビュー時間が平均60%削減されています。

実践例: コードレビューエージェント — PR差分解析と修正提案

実用的なコードレビューエージェントの実装例:

python
from claude_agent_sdk import ClaudeSDKClient, Tool
import subprocess
import json

def get_pr_diff(pr_number: int) -> str:
    """Fetch PR diff from GitHub."""
    result = subprocess.run(
        ["gh", "pr", "diff", str(pr_number)],
        capture_output=True, text=True
    )
    return result.stdout

def post_review_comment(pr_number: int, body: str, path: str, line: int):
    """Post review comment to GitHub PR."""
    subprocess.run([
        "gh", "pr", "review", str(pr_number),
        "--comment", "--body", body,
        "--path", path, "--line", str(line)
    ])

gh_tools = [
    Tool(name="get_pr_diff", function=get_pr_diff, ...),
    Tool(name="post_review_comment", function=post_review_comment, ...)
]

client = ClaudeSDKClient()
result = client.query(
    f"Review PR #{pr_number}. For each issue found, post a review comment with specific line references and improvement suggestions.",
    tools=gh_tools
)

このエージェントは、PR差分を取得→問題点を特定→該当行にコメント投稿まで、完全自動で実行します。品川区の開発チームでは、このエージェントが「変数名のtypo」「未使用import」「エラーハンドリング不足」などを90%以上の精度で検出しています。

実践例: ドキュメント生成エージェント — コードからAPI仕様書を自動生成

Agent SDKでAPI仕様書を自動生成する実装:

python
from claude_agent_sdk import ClaudeSDKClient

client = ClaudeSDKClient()

result = client.query("""
Analyze all API endpoints in src/api/ and generate OpenAPI 3.0 specification:
1. Extract route definitions, parameters, response types
2. Read JSDoc/docstrings for descriptions
3. Generate openapi.yaml with complete schemas
4. Validate the generated spec
""")

if result["success"]:
    print("API documentation generated at docs/openapi.yaml")

エージェントは以下を自動実行: - 全APIエンドポイントファイルの検索(Glob) - 各ファイルの読み取り(Read) - ルート定義とパラメータの抽出 - OpenAPI仕様の生成(Write) - 仕様の妥当性検証(Bash: openapi-validator) 渋谷区のAPI開発チームでは、コード変更のたびにこのエージェントをCI/CDで実行し、ドキュメントが常に最新に保たれています。「ドキュメント更新忘れ」問題が完全に解消されました。

エンタープライズ活用とオブライトのサポート

Agent SDKのエンタープライズ導入では、以下の要素が重要です: 1. SSO/SCIM統合 - Anthropicのエンタープライズプランは、Okta、Azure AD等とのSSO/SCIMに対応。Agent SDKで作成した自動化エージェントも、同じ認証基盤で管理できます。 2. 監査ログ - 全エージェント実行の監査ログをCloudWatch、Datadog等に送信する標準実装。 3. コスト管理 - エージェントごとのトークン使用量追跡。予算超過時の自動停止機構。 4. チーム共有エージェントライブラリ - 社内で再利用可能なエージェントをライブラリ化し、全チームで共有。 品川区・港区エリアの株式会社オブライトでは、Agent SDKを使ったエンタープライズAI開発環境の構築支援を提供しています。カスタムツール設計、マルチエージェントアーキテクチャ設計、セキュリティ設定、CI/CD統合まで、導入から運用まで一貫してサポートいたします。

まとめ — Agent SDKで実現するAIファーストな開発環境

Claude Code Agent SDKは、「AIエージェントを開発ツールとして組み込む」未来を現実にします。カスタムツールによる業務システムとの統合、マルチエージェントによる複雑タスクの分散処理、CI/CDパイプラインへの組み込みによる継続的な自動化——これらすべてがPythonの知識だけで実現できます。品川区・港区・渋谷区エリアでAgent SDKを活用したAI開発環境の導入をお考えの企業様は、株式会社オブライトにご相談ください。プロトタイプ開発から本番運用、チーム教育まで、実績豊富なエンジニアが貴社のAI活用を加速します。

お気軽にご相談ください

お問い合わせ