0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code Agent Team 設計パターン——並列エージェントで開発を加速する

0
Posted at

Claude Code Agent Team 設計パターン——並列エージェントで開発を加速する

はじめに

Claude Code には Agent Team という機能があります。1つのタスクを複数のサブエージェントに分割して並列実行し、開発速度を大幅に向上できます。しかし、闇雲にエージェントを増やしてもトークンを無駄に消費するだけです。

この記事では「いつ Agent Team を使うべきか」「どう分割するか」という設計パターンを、実例を交えて解説します。


Agent Team とは

Claude Code の Agent ツールを使うと、親エージェント(オーケストレーター)が子エージェント(ワーカー)に独立したタスクを委譲できます。

Claude (オーケストレーター)
├── Agent A: フロントエンドのバグ調査
├── Agent B: バックエンドのAPI仕様確認
└── Agent C: テストカバレッジ計測

3つのサブエージェントが同時に動くため、直列で実行するより格段に速くなります。


設計パターン1: ファンアウト(調査の並列化)

最も使いやすいパターンです。複数の独立した調査を同時に実行します。

適用条件: 独立した情報収集タスクが3つ以上ある場合

# 例: 3つのPJのセキュリティ脆弱性を同時調査
Agent(subagent_type="security", prompt="PJのAPIエンドポイントを調査してください")
Agent(subagent_type="security", prompt="依存パッケージの既知脆弱性を確認してください")
Agent(subagent_type="security", prompt="認証ロジックのレビューを行ってください")

重要なのは、3つのエージェントが互いのファイルに触れないことです。同一ファイルを参照するエージェントを分割するとコンテキストの重複が発生し、かえって非効率になります。


設計パターン2: チェーン(段階的な処理)

前工程の出力を次工程の入力にするパターンです。

リサーチ Agent → 設計 Agent → 実装 Agent → レビュー Agent

適用例: SEO記事の自動生成パイプライン

# Step 1: キーワードリサーチ
research_result = Agent(
    subagent_type="analyst",
    prompt="ターゲットKWの競合記事を5件調査してください"
)

# Step 2: 構成案生成(research_resultを受けて)
outline = Agent(
    subagent_type="blogger",
    prompt=f"以下のリサーチを元に構成案を作ってください: {research_result}"
)

チェーンパターンは並列化できませんが、各ステップの結果が確定してから次に進むため、精度が重要なタスクに向いています。


設計パターン3: ワーカープール(大規模コード変更)

大量のファイルを一括変更する際に、ファイルをグループ分けして並列処理します。

親 Agent
├── Worker 1: src/components/ 以下を変換
├── Worker 2: src/pages/ 以下を変換
└── Worker 3: src/utils/ 以下を変換

実装例: TypeScript 4 → 5 の型定義マイグレーション

import glob

# ファイルを3グループに分割
all_files = glob.glob("src/**/*.ts", recursive=True)
chunk_size = len(all_files) // 3

agents = []
for i in range(3):
    chunk = all_files[i*chunk_size:(i+1)*chunk_size]
    agents.append(Agent(
        subagent_type="dev",
        isolation="worktree",  # ← 各エージェントが独立したブランチで作業
        prompt=f"以下のファイルをTS5対応に変換してください: {chunk}"
    ))

isolation="worktree" を使うと、各エージェントが独立したgitブランチで作業するため、コンフリクトが発生しません。


設計パターン4: コンテキスト分離(メインウィンドウの保護)

長時間のリサーチや大量のファイル読み込みは、親エージェントのコンテキストウィンドウを圧迫します。そこでサブエージェントに調査を委譲し、サマリーだけを受け取るパターンです。

# 悪い例: 親が直接大量ファイルを読む(コンテキスト圧迫)
# Read("/path/to/large/file1.md")
# Read("/path/to/large/file2.md")
# ... 50ファイル分

# 良い例: サブエージェントに委譲してサマリーだけ受け取る
summary = Agent(
    subagent_type="Explore",
    prompt="以下のディレクトリを調査して、200字以内で要約してください: /path/to/large/dir"
)

目安: ファイル数が5つ以上、または調査対象URLが3つ以上の場合はサブエージェントに委譲します。


Agent Team を使わないべき場面

エージェントを増やすことがかえってコストになるケースもあります。

NG パターン 理由
独立タスクが2つ以下 分割コスト > 時間節約
同一ファイルを参照する複数エージェント コンテキスト重複、コンフリクトリスク
簡単なGrep/Glob検索をAgentに任せる ツール直接呼び出しの方が高速・安価
エージェント内でToolSearchを使う 親のプロンプトにMCP名前空間を渡す設計に修正が必要

モデル選択の実践的指針

Agent Team のコストは選択するモデルで大きく変わります。

高コスト: Opus(複雑な推論が必要な場合のみ使用)
標準:     Sonnet(デフォルト。ほとんどのタスクはこれで十分)

チームメンバーのデフォルトは Sonnet を使いましょう。Opusが必要な場面は限定的です(CEO/PM レベルの意思決定タスクなど)。

# 推奨: Sonnetで統一
Agent(model="sonnet", subagent_type="dev", prompt="...")

# 必要な場合のみOpus
Agent(model="opus", subagent_type="pm", prompt="プロダクト戦略を策定してください")

まとめ

Agent Team 設計の実践ポイントをまとめます。

  • 3つ以上の独立タスクがある場合のみ並列化する(2つ以下はAgentを使わない)
  • ファンアウトパターンは調査・レビュー系タスクに最適
  • isolation="worktree" を活用してコンフリクトを防ぐ
  • コンテキスト保護のためにリサーチはサブエージェントに委譲する
  • モデルはSonnetで統一し、必要な場合のみOpusに切り替える

Agent Team を適切に活用することで、開発タスクのスループットを大幅に向上できます。まずは「独立した調査タスクが3つある」という状況で試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?