サブエージェントとは何か:Claude Codeの「分身の術」
Claude Codeには、メインのエージェントとは別にサブエージェント(Task tool)を起動する機能がある。これは簡単に言えば「Claude Codeの分身」だ。メインのClaude Codeが全体の指揮を取りながら、個別のタスクをサブエージェントに委任できる。
なぜこれが重要かというと、Claude Codeにはコンテキストウィンドウ(一度に扱える情報量)の制限があるからだ。大規模なプロジェクトでは、すべての情報をメインエージェントに詰め込むと、パフォーマンスが低下する。サブエージェントを使えば、各タスクが独立したコンテキストで動作するため、効率的に並列処理ができる。
この記事では、サブエージェントの仕組みから実践的な活用パターンまでを解説する。
サブエージェントの基本的な仕組み
| 項目 | メインエージェント | サブエージェント |
|---|---|---|
| 役割 | 全体の指揮・統合 | 個別タスクの実行 |
| コンテキスト | プロジェクト全体を把握 | 割り当てられたタスクに集中 |
| ファイルアクセス | すべてのファイル | すべてのファイル(読み取り中心) |
| ツール使用 | 全ツール利用可能 | 一部制限あり(編集不可の場合も) |
| 並列実行 | 1つのみ | 複数同時起動可能 |
サブエージェントはCLAUDE.mdの内容を引き継がないため、必要な指示はタスクの説明に含める必要がある。また、サブエージェントの実行結果はメインエージェントに返され、メインエージェントがそれを統合して最終的な出力を生成する。
実践パターン1:コードベース調査の並列化
従来のアプローチ(逐次処理)
大規模プロジェクトで「認証システムの現状を把握したい」という場合、従来はメインエージェントが1つずつファイルを読んで分析していた。数百ファイルのプロジェクトでは、これだけでコンテキストウィンドウの大部分を消費してしまう。
サブエージェントを使ったアプローチ(並列処理)
サブエージェントを使えば、調査を分割して並列実行できる。
| サブエージェント | 担当タスク | 調査対象 |
|---|---|---|
| エージェントA | 認証ミドルウェアの調査 | src/middleware/auth* |
| エージェントB | ユーザーモデルの調査 | src/models/user* |
| エージェントC | APIルートの認証パターン調査 | src/routes/** |
各サブエージェントが独立して調査を行い、結果をメインエージェントに報告する。メインエージェントはそれらを統合して、認証システム全体の分析レポートを生成する。
実践パターン2:テストの並列生成
テストコードの生成は、サブエージェントの最も効果的な活用シーンの一つだ。
例えば「すべてのAPIエンドポイントに対するテストを書いて」という指示に対して、メインエージェントがエンドポイントの一覧を把握し、各エンドポイントのテスト生成をサブエージェントに委任する。
| 対象 | テスト内容 | 想定所要時間 |
|---|---|---|
| /api/users | CRUD操作 + バリデーション | 約30秒 |
| /api/posts | CRUD + 権限チェック | 約30秒 |
| /api/auth | ログイン・ログアウト・トークン更新 | 約30秒 |
| /api/uploads | ファイルアップロード・バリデーション | 約30秒 |
逐次処理なら2分かかるところが、並列実行で30秒程度に短縮できる。しかも各サブエージェントは対象のエンドポイントに集中できるため、テストの品質も向上する。
実践パターン3:リファクタリングの分業
大規模なリファクタリングでは、変更箇所が多岐にわたるため、サブエージェントによる分業が効果的だ。
例えば「ESLintのルールを更新して、プロジェクト全体を修正」というタスクでは、メインエージェントがESLintの設定を更新し、各ディレクトリの修正をサブエージェントに委任する。ただし、この場合はサブエージェントに書き込み権限を与える「Explore」タイプではなく「Bash」タイプを使い、メインエージェントが最終的な変更を適用するパターンが安全だ。
サブエージェントを効果的に使うためのコツ
| コツ | 詳細 |
|---|---|
| タスクの粒度を適切に | 大きすぎるとサブエージェントのコンテキストが溢れ、小さすぎるとオーバーヘッドが無駄に。1つのサブエージェントに1つの明確な責務を持たせる |
| 指示を具体的に | CLAUDE.mdは引き継がれないため、コーディング規約や制約事項はタスク説明に含める |
| 読み取り専用を基本に | サブエージェントによるファイル編集は競合のリスクがある。調査・分析を中心に使い、書き込みはメインエージェントが担当するのが安全 |
| 結果の検証を忘れずに | サブエージェントの出力をそのまま信用せず、メインエージェントが整合性を確認する |
サブエージェントが向いているタスク・向いていないタスク
| 向いているタスク | 向いていないタスク |
|---|---|
| コードベースの調査・分析 | 単一ファイルの修正 |
| テストの並列生成 | 密に結合した変更 |
| ドキュメント生成 | 対話的なデバッグ |
| 複数ファイルの独立した変更 | コンテキストが少ないタスク |
| 大規模リファクタリングの分業 | 人間の判断が頻繁に必要なタスク |
まとめ:サブエージェントで開発の「スループット」を上げる
サブエージェントは、Claude Codeの生産性を次のレベルに引き上げる機能だ。特に大規模プロジェクトでは、コードベースの調査、テスト生成、リファクタリングの分業など、多くのシーンで威力を発揮する。
ポイントは「タスクの独立性」を意識すること。互いに依存しないタスクを切り出してサブエージェントに委任し、メインエージェントが結果を統合する——このパターンをマスターすれば、開発の「スループット」は飛躍的に向上する。
まずは「コードベースの調査」から始めてみてほしい。プロジェクトの特定の領域をサブエージェントに分析させ、レポートとして受け取る。この体験だけでも、サブエージェントの可能性を実感できるはずだ。
