サイト改善のため、同意した場合だけGoogle AnalyticsとPostHogを読み込みます。拒否しても、学習コンテンツとお問い合わせは利用できます。詳細

Claude Code の Hooks 機能を解説。ファイル保存時の自動lint、危険操作のブロック、Slack通知など、イベント駆動の自動化ワークフローを実例付きで紹介。

Anthropic が公開したハーネス設計の手法を解説。Planner・Generator・Evaluator の3エージェント構成で、数時間の自律コーディングを実現する方法。

Claude Code Skills の作成方法と活用事例を解説。カスタムスラッシュコマンドの定義、プロジェクト固有のワークフロー自動化、チームでの共有方法を紹介します。
個人で試した手順を、権限・データ・運用ルールを含む導入検討へ進めます。
Claude Code を使い込んでいくと、「1つのタスクを処理している間に、別の調査も同時に進めてほしい」「大規模なリファクタリングを複数ファイル同時に進めたい」と感じる場面が増えてきます。
そうした要望に応えるのが、Claude Code のサブエージェント機能です。メインの Claude Code セッションが子プロセスとして別の Claude Code を起動し、調査や分析を並列で実行させることで、開発の速度と精度を大幅に向上させます。
本記事では、サブエージェントの仕組みから、並列処理の具体例、コードリサーチの委譲パターン、大規模リファクタリングでの活用、制限事項、そして効果的な使い方のコツまでを体系的に解説します。
サブエージェントとは、Claude Code のメインエージェントが特定のタスクを別の Claude Code インスタンスに委譲する仕組みです。内部的には Task ツールと呼ばれる機能によって実現されています。
Claude Code は対話中にさまざまな「ツール」を使い分けています。ファイルを読む Read ツール、ファイルを編集する Edit ツール、コマンドを実行する Bash ツールなどがその例です。Task ツールはこれらと同列に存在する機能で、新しい Claude Code エージェントを子プロセスとして起動し、独立したタスクを実行させることができます。
通常の対話では、Claude Code は1つのプロンプトに対して順番に処理を進めます。しかし Task ツールを使うと、メインエージェントが「この調査はサブエージェントに任せよう」と判断し、子プロセスを立ち上げて並列に作業を進められるようになります。
メインエージェント
├── サブエージェント A: 「認証モジュールの実装パターンを調査」
├── サブエージェント B: 「テストファイルの構造を分析」
└── サブエージェント C: 「依存関係の影響範囲を特定」Read ツールや Bash ツールは「1つの操作を実行して結果を返す」単発のツールです。一方、Task ツールで起動されたサブエージェントは、自分自身がさらに Read・Edit・Bash・Grep などのツールを使いながら、複数ステップにわたる作業を自律的に進められます。
つまりサブエージェントは、単なるツール呼び出しではなくミニチュア版の Claude Code セッションです。メインエージェントから与えられた指示に基づき、必要なファイルを自分で探し、読み、分析し、結果をまとめてメインエージェントに返却します。
サブエージェントがどのように動作するかを、もう少し詳しく見ていきましょう。
メインエージェントは、ユーザーとの対話を担当する「親」プロセスです。ユーザーの指示を受け取り、必要に応じてサブエージェントを起動します。
サブエージェントは以下の特徴を持ちます。
サブエージェントの典型的なライフサイクルは以下の通りです。
この一連の流れは、ユーザーから見ると Claude Code が内部的に処理しているため、特別な操作は必要ありません。
サブエージェントの重要な設計上の特徴として、コンテキストの分離があります。メインエージェントの会話履歴が長くなっても、サブエージェントは Task ツールで渡された指示だけを見て動作します。
これにより以下のメリットが得られます。
サブエージェントの最大の強みは並列処理です。実際の開発でどのように活用できるかを具体例で見ていきましょう。
大きなコードベースで特定の機能がどこに実装されているかを調べたい場合、サブエージェントを使えば複数の観点から同時に調査できます。
たとえば「ユーザー認証の流れを把握したい」という指示に対して、Claude Code は以下のようにサブエージェントを並列起動することがあります。
メインエージェント: 「ユーザー認証の全体フローを把握したい」
│
├── サブエージェント 1: 認証ミドルウェアの実装を調査
│ → auth middleware、JWT 検証、セッション管理のコードを特定
│
├── サブエージェント 2: ログイン・サインアップの API エンドポイントを調査
│ → ルーティング定義、ハンドラ実装、バリデーションロジックを特定
│
└── サブエージェント 3: 認証関連のテストコードを調査
→ テストケース、モック設定、カバレッジ状況を把握メインエージェントは3つのサブエージェントの結果を統合して、認証フロー全体の包括的な説明をユーザーに提供します。1つずつ順番に調べるよりも、大幅に速く全体像を把握できます。
あるモジュールを変更したとき、その変更がどこに影響するかを調べるのは重要ですが手間のかかる作業です。サブエージェントを使えば、複数の観点から同時に影響範囲を調査できます。
「UserService クラスのインターフェースを変更したい。影響範囲を調べて」
│
├── サブエージェント 1: UserService を直接インポートしているファイルを列挙
├── サブエージェント 2: UserService のメソッドを呼び出しているコードを検索
├── サブエージェント 3: UserService に関連するテストファイルを特定
└── サブエージェント 4: UserService を利用している API エンドポイントを調査コードの品質チェックを複数のツールで同時に実行させることも可能です。
「このプルリクエストの品質をチェックして」
│
├── サブエージェント 1: 変更されたファイルの型チェック結果を分析
├── サブエージェント 2: 関連するテストの実行結果を確認
└── サブエージェント 3: コーディング規約への準拠状況を確認サブエージェントは並列処理だけでなく、メインエージェントのコンテキストを汚さずにリサーチを行う用途でも威力を発揮します。
数千ファイルを抱える大規模なコードベースでは、目的のコードを見つけるまでに多くのファイルを読む必要があります。これをメインエージェントが直接行うと、コンテキストウィンドウが不要な情報で埋まってしまいます。
サブエージェントに委譲すれば、探索過程のすべてのファイル内容はサブエージェントのコンテキスト内で処理され、メインエージェントには要約された結果だけが返ってきます。
ユーザー: 「このプロジェクトのエラーハンドリングのパターンを教えて」
メインエージェント → サブエージェント:
「プロジェクト内のエラーハンドリングの実装パターンを調査してください。
- どのようなエラー型が定義されているか
- エラーの伝搬方法(throw / return / Result 型など)
- HTTP レスポンスへのマッピング方法
- ログ出力の方法
を特定し、パターンごとに代表的なコード例を示してください。」
サブエージェント: 数十のファイルを読み、パターンを分類して返却
メインエージェント: サブエージェントの結果をもとに、ユーザーにわかりやすく回答新しい機能を実装するとき、既存のコードベースのパターンに合わせたいことがあります。サブエージェントに「既存の実装パターンを分析してくれ」と依頼することで、メインエージェントはその結果を踏まえた上で新しいコードを生成できます。
たとえば「新しい API エンドポイントを追加したい」という指示に対して、メインエージェントがまずサブエージェントに既存のエンドポイントの実装パターンを調査させ、その結果に基づいてコーディング規約に準拠したコードを生成する、という流れが考えられます。
リファクタリングや設計変更の前に、現状を正確に把握しておく必要があります。サブエージェントに事前調査を委譲することで、メインエージェントは調査結果を受け取ってから最適な方針を決定できます。
ユーザー: 「データベースのクエリをすべて sqlc に移行したい」
メインエージェント → サブエージェント:
「現在のデータベースアクセスコードを調査してください。
- 生 SQL を使っている箇所
- ORM を使っている箇所
- すでに sqlc を使っている箇所
それぞれのファイルパスと件数をまとめてください。」
サブエージェント: リポジトリ全体を探索し、現状を整理して返却
メインエージェント: 移行計画を立案し、優先度をつけてユーザーに提案サブエージェントは、大規模なリファクタリングの計画フェーズで特に力を発揮します。
リファクタリングを始める前に、変更対象の全体像を正確に把握することが重要です。サブエージェントを使えば、複数の観点から同時に現状を分析できます。
「状態管理を Redux から Zustand に移行したい」
│
├── サブエージェント 1: Redux store の構造を分析
│ → slice 一覧、state の型定義、セレクタの数を把握
│
├── サブエージェント 2: Redux に依存しているコンポーネントを列挙
│ → useSelector / useDispatch の使用箇所を特定
│
├── サブエージェント 3: Redux 関連のテストコードを分析
│ → store のモック方法、テストヘルパーの実装を把握
│
└── サブエージェント 4: サードパーティとの Redux 連携を調査
→ redux-persist、RTK Query などの利用状況を確認メインエージェントはこれらの結果を統合し、移行の難易度や優先順位をユーザーに提示できます。
大規模なリファクタリングは一度にすべてを変更するのではなく、段階的に進めるのが安全です。サブエージェントの調査結果をもとに、メインエージェントが段階的な移行計画を立てることができます。
たとえば以下のような計画です。
各フェーズの影響範囲と作業量がサブエージェントの調査で明確になっているため、計画の精度が高くなります。
リファクタリングの途中で、すでに変更した箇所と未変更の箇所の一貫性を確認するのも、サブエージェントの得意分野です。「古いパターンがまだ残っている箇所を探して」といった検証作業を委譲できます。
サブエージェントは強力な機能ですが、いくつかの制限があります。正しく理解して使うことが重要です。
サブエージェントはファイルの読み取りと検索のみが許可されており、ファイルの編集やコマンドの実行はできません。これは安全性を確保するための意図的な設計です。
ファイルの変更が必要な作業は、サブエージェントの調査結果をもとにメインエージェントが実行するという役割分担になっています。
| 操作 | サブエージェント | メインエージェント |
|---|---|---|
| ファイルの読み取り(Read) | 可 | 可 |
| ファイル検索(Grep / Glob) | 可 | 可 |
| ファイルの編集(Edit / Write) | 不可 | 可 |
| コマンド実行(Bash) | 不可 | 可 |
| さらにサブエージェントを起動 | 不可 | 可 |
サブエージェントはメインエージェントの会話履歴を引き継ぎません。Task ツールで渡された指示テキストだけがコンテキストです。そのため、メインエージェントとの対話で暗黙的に共有されている前提情報がサブエージェントには伝わりません。
サブエージェントに指示を出す際は、必要な情報をすべて指示テキストに含めることが重要です。「さっき話した〇〇の件」のような曖昧な参照は機能しません。
サブエージェントは独立した Claude セッションとして動作するため、それぞれがトークンを消費します。複数のサブエージェントを並列起動すると、その分だけトークンコストが増加します。
ただし、メインエージェントが同じ作業を順番に行う場合と比べて、コンテキストの膨張を避けられるため、結果的にトークン効率が良くなるケースも多くあります。特に大規模なコードベースでの探索作業では、サブエージェントを使ったほうがトータルのトークン消費が少なくなる傾向があります。
現時点では、サブエージェントの起動タイミングは Claude Code が自動的に判断します。ユーザーが「サブエージェントを使って」と明示的に指示することもできますが、最終的にサブエージェントを使うかどうかは Claude Code の判断に委ねられます。
サブエージェントの効果を最大化するためのコツをいくつか紹介します。
CLAUDE.md ファイルにサブエージェントの活用方針を記載しておくと、Claude Code が適切なタイミングでサブエージェントを使うよう誘導できます。
# ワークフロー管理
## サブエージェント戦略
- メインコンテキストを汚さないためにサブエージェントを積極活用する
- リサーチ・探索・並列分析はサブエージェントにオフロードする
- 複雑な問題にはサブエージェントで計算リソースを投入する
- 1 サブエージェント = 1 タスクで集中実行するこのように方針を明文化しておくことで、Claude Code がサブエージェントを効果的に活用する頻度が高まります。
カスタムスラッシュコマンド(Skills)と組み合わせることで、さらに体系的なサブエージェント活用が可能です。Skills については以下の記事で詳しく解説しています。
サブエージェントに渡すタスクは、具体的かつ独立して完結できる粒度にすることが重要です。
良い例:
src/auth/ ディレクトリ内のすべてのファイルで、JWT トークンの生成と検証がどのように実装されているかを調査してください」package.json の依存関係を分析し、未使用のパッケージを列挙してください」避けるべき例:
サブエージェントの最も効果的な使い方は、調査フェーズと実装フェーズを明確に分離することです。
この流れにより、「よく調べもせずにコードを変更してしまう」というミスを防ぎ、変更の品質を高めることができます。
Claude Code がサブエージェントの並列実行を判断しやすいよう、プロンプトで複数の独立した調査項目を明示することも効果的です。
以下の3点を調査してください:
1. 認証ミドルウェアの実装パターン
2. エラーハンドリングの方針
3. テストヘルパーの構造このように列挙すると、Claude Code は各項目を独立したサブエージェントに割り当てて並列処理する可能性が高くなります。
大規模な変更を行う前に、必ず「まず現状を調査して」と一言添えることで、サブエージェントによる事前調査が走りやすくなります。
React Router v6 から v7 に移行したい。
まず現状を調査して、移行計画を立ててください。この指示により、Claude Code はサブエージェントを使って現在のルーティング構成を調査し、その結果をもとに段階的な移行計画を提案してくれます。
サブエージェントの活用を強化するスキルを紹介します。
Claude Code のサブエージェント機能は、開発の速度と品質を同時に向上させる強力な仕組みです。本記事で紹介した内容をまとめます。
サブエージェントを意識的に活用することで、大規模なコードベースでの作業効率が格段に向上します。まずは「現状を調査して」と一言添えることから始めて、並列処理の恩恵を体感してみてください。