Subagent(サブエージェント)とは?Claude Codeで役割を分担するAIエージェント機能を徹底解説

Subagent(サブエージェント)とは

Subagent(サブエージェント)とは、メインのAIエージェントが必要に応じて起動する、独立したコンテキストと役割を持つ子エージェントのこと。Anthropic社のClaude CodeやClaude Agent SDKで用いられる用語で、メインエージェントの文脈を圧迫せずに、調査・分析・検証などの専門タスクを並列に処理する目的で使われる。

身近な例えで言えば、プロジェクトマネージャー(メインエージェント)が、専門チーム(サブエージェント)に個別の作業を依頼するようなもの。メインエージェントが「このコードベース全体を調べて関連ファイルをリストアップしてほしい」とサブエージェントに投げると、サブエージェントは自分だけの作業スペースで調査を行い、最終的な要約だけを親に返す。こうすることで、メインの会話履歴に大量のファイル内容が流れ込むのを防ぎ、文脈効率(context efficiency)を最大化できるのがポイントです。

Subagentの読み方

サブエージェント

サブ・エージェント

Subagentの仕組み

Subagentは、メインエージェントとは別プロセス(あるいは別スレッド/別コンテキスト)で起動し、独立した会話履歴を持ちます。メインエージェントは専用のツール(Claude Codeの場合は Agent ツール、Claude Agent SDKの場合は Task API)を呼び出すことでサブエージェントを起動し、タスクの説明と期待する成果物を引数として渡します。

動作フローの概要

サブエージェントの実行フロー

① メインエージェント
タスクを分析
② サブエージェント起動
独立コンテキスト
③ 専門作業
ファイル読込・分析
④ 結果サマリ
親に返却

ここが重要なポイントですが、サブエージェントが作業中に読み込んだ大量のファイル内容や中間出力は、メインエージェントには直接見えません。親が受け取るのは、サブエージェントが最後に返した1つのメッセージ(要約・報告書)だけです。この設計によって、コンテキストウィンドウを節約しつつ、並列で多数のタスクを走らせることが可能になります。

Claude Codeでのサブエージェントの種類

Claude Codeにはあらかじめ用途別のサブエージェント(agent type)が用意されています。主なものは以下の通りです。

エージェント種別 用途
general-purpose 汎用調査・複雑なタスクの実行
Explore コードベース探索・ファイル検索に特化
Plan 実装計画の設計・アーキテクチャ検討
カスタムエージェント ユーザーが .claude/agents/ ディレクトリに定義

開発者は .claude/agents/ ディレクトリにMarkdownファイルを置くことで、独自のサブエージェントを定義できます。各ファイルの先頭にフロントマター(YAML)でメタ情報を書き、本文に役割の説明を記述する形式です。

Subagentの使い方・実例

Claude Code CLIでの起動例

Claude Codeでサブエージェントを呼び出す最もシンプルな例は、ユーザーが明示的に Task(エージェント起動ツール)を要求する方法です。内部的には以下のような呼び出しが行われます。

# Claude Codeでのサブエージェント起動イメージ(内部動作)
Agent({
  description: "ブランチのリリース可否監査",
  subagent_type: "general-purpose",
  prompt: "現在のブランチでリリースできる状態か監査してください。"
          "未コミット変更・main比の差分・テストの有無・CIの状態を確認し、"
          "完了/未完了チェックリストで200字以内で報告してください。"
})

カスタムサブエージェントの定義例

独自のサブエージェントをプロジェクトに追加するには、.claude/agents/security-reviewer.md のようなファイルを作ります。

---
name: security-reviewer
description: 脆弱性観点でコード差分をレビューする専門エージェント
tools: Read, Grep, Glob
---

あなたはセキュリティレビュー専門のエンジニアです。
与えられたコード差分に対して、以下の観点から監査してください。

- SQLインジェクション・XSS・CSRFの余地
- 機密情報(APIキー等)のハードコード
- 認証・認可ロジックの抜け
- 依存ライブラリの既知脆弱性

優先度(高・中・低)付きで箇条書き報告し、
修正案のコード例も添えてください。

実務ではこうしたカスタムサブエージェントを複数用意しておき、メインエージェントが状況に応じて呼び分けるスタイルが主流になりつつあります。実務で特に効果的なのは、並列検索(複数の検索クエリを別々のサブエージェントに投げて一気に結果を集約)と、独立した検証(実装を行ったエージェントとは別のエージェントにレビューを依頼する)のパターンです。

Subagentのメリット・デメリット

メリット

✅ コンテキスト効率

大量のファイル読み込みを親の文脈に流し込まない。

✅ 並列化

複数のタスクを同時に走らせて実行時間を短縮できる。

✅ 専門化

特定タスク(セキュリティ監査、UIレビュー等)に特化した役割を作れる。

✅ 独立検証

別コンテキストで確認することで、メインの判断にバイアスをかけない。

デメリット

⚠️ トークンコスト

複数エージェントを起動するため、単純な作業には過剰。

⚠️ プロンプト設計

サブに渡すプロンプトが曖昧だと期待通りの結果にならない。

⚠️ 情報ロス

サブが確認した詳細は親に渡らない(要約のみ)。

⚠️ デバッグ難

内部の試行錯誤が見えないため、何が起きたか追いづらい。

Subagentとマルチエージェントの違い

「マルチエージェント」はより広い概念で、対等な関係の複数エージェントが協調・交渉する枠組みも含みます。一方「Subagent」は親子関係が明確で、親がタスクを渡し、子が結果を返すという指揮命令系統がはっきりしているのが特徴です。

観点 Subagent マルチエージェント
関係 親子(階層) 対等/階層どちらも
通信 タスク依頼 → 結果返却の単純往復 交渉・投票・役割分担など多様
典型用途 コード調査・検証の並列化 複雑な意思決定・シミュレーション
代表例 Claude Code Agent、Claude Agent SDK AutoGen、CrewAI、LangGraph

よくある誤解

誤解1「サブエージェントを起動すれば速くなる」

注意してほしいのは、1つだけ起動しても速度的メリットは小さいという点です。速度短縮の効果は並列実行してこそ生きます。単一タスクではむしろ起動コストで遅くなることもあります。

誤解2「サブエージェントはメインより賢い」

サブエージェントは役割特化しているだけで、モデル自体の能力はメインと同じか、場合によっては小型モデル(Haiku等)を使うこともあります。実務ではメインより軽量なモデルを割り当てる構成が多く、コスト最適化の手段として使われます。

誤解3「親子間で全情報が共有される」

繰り返しになりますが、サブが確認した詳細情報は親に自動的には渡りません。親に伝えたい情報は、サブエージェントが明示的に最終メッセージに含めて返す必要があることを覚えておいてください。

実務での活用シーン

大規模コードベースの調査

モノレポ構成で10万行を超えるコードベースの場合、全体を親エージェントが読み込むとコンテキストがすぐに枯渇します。Exploreサブエージェントに「〇〇機能に関連するファイルを列挙して」と依頼すれば、親のコンテキストを消費せずに調査結果だけを得られます。

独立レビュー(セカンドオピニオン)

親が書いたコードや分析結果を、別のサブエージェントに白紙状態からレビューさせるパターン。親の思考に引きずられない独立判断が得られます。マイグレーション安全性の検証や、セキュリティ観点の再チェックに有効です。

並列ドキュメント調査

「AとBとCのライブラリを比較したい」というケースで、3つのサブエージェントに同時にドキュメント調査を依頼し、親が最終的に比較表にまとめる、という使い方もできます。実務では情報収集時間を大きく短縮できる定番パターンです。

ステータスチェック

「このブランチで出荷可能か?」のような複合的な質問に対し、git状態・テスト状況・設定ファイルの3方向を並列に調べる用途にも向いています。

よくある質問(FAQ)

Q1: サブエージェントは同じモデルが使われるのですか?

Claude Codeでは親と同じモデルがデフォルトですが、サブエージェント定義の model フロントマター(例: model: haiku)で別モデルを指定できます。Haikuに委譲することでコストを下げるのが定石です。

Q2: サブエージェントからさらにサブエージェントを起動できますか?

実装によりますが、一般的にはネストが深くなりすぎないように制限されていることが多いです。Claude Codeの一部エージェントタイプは再帰起動が無効化されています。

Q3: サブエージェントの会話履歴を後から見ることはできますか?

Claude CodeにはSession情報を参照する手段があり、サブエージェントの動作ログも確認できるケースがあります。ただし通常の表示では、親が受け取った最終メッセージのみが残ります。

Q4: Agent SkillsやMCPとは何が違いますか?

Agent Skillsは「実行手順やノウハウのパッケージ」、MCP(Model Context Protocol)は「外部ツール接続のプロトコル」、Subagentは「別コンテキストで動く子エージェント」と、それぞれレイヤーが異なります。これらは組み合わせて使うものです。

Q5: サブエージェントを使わないほうがいいのはどんな時?

タスクが単純で、親のコンテキストで完結する場合です。1ファイル編集やメッセージ送信など、親がそのまま処理すべき作業にサブエージェントを挟むのは過剰設計になります。

まとめ

  • Subagent(サブエージェント)は、親エージェントから起動される独立コンテキストの子エージェント
  • 主目的はコンテキスト効率の最大化並列化
  • Claude Codeでは general-purposeExplorePlan などの用途別エージェントが標準提供
  • .claude/agents/ ディレクトリにMarkdownを置くことで独自エージェントを定義可能
  • 親が受け取るのはサブの最終メッセージのみ。詳細情報は伝搬しない
  • 軽量モデル(Haiku等)をサブに割り当てることでコスト最適化ができる
  • 単一タスクには過剰。並列実行や専門レビュー時に真価を発揮する

参考文献・出典

📚 参考文献・出典

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA