ClaudeCodeのSubAgent機能の使い方【並列実行で効率10倍】
ClaudeCodeを使いこなしている人と、まだ使い始めの人との差は「SubAgent機能を使えているかどうか」にあると言っても過言ではありません。SubAgentは、メインのClaudeCodeとは別に「専門のAIエージェント」を呼び出し、別の文脈で並列にタスクを進める仕組みです。これを使えば、大きな調査タスクを複数同時に走らせたり、コードの調査と実装を別々のエージェントに任せたりして、作業効率を一気に高められます。本記事では、SubAgentとは何か、どう設定すれば良いか、Explore/Planエージェントの使い方、自作SubAgentの作り方、そして実際の活用例までを徹底解説します。読み終わるころには、あなたもSubAgentを駆使する「ClaudeCode上級者」になっているはずです。
結論:SubAgentは「役割分担できる第二の脳」を持つ感覚
結論から言うと、SubAgentはClaudeCodeに「役割の異なるアシスタント」を増やせる機能です。メインのClaudeCodeを「司令塔」、SubAgentを「専門スタッフ」と考えるとイメージしやすいでしょう。たとえば「コードベース全体を調査するExplore担当」「設計をまとめるPlan担当」「テストだけ書くTest担当」のように、それぞれ独立したコンテキストでタスクを進められます。これにより、メインのコンテキストを汚さずに大量の調査ができたり、複数の作業を並列で走らせて時間を短縮できたりします。さらに、自作SubAgentを作れば、自社の業務に特化したエージェント(例:仕様書を読んでチェックリスト化する担当、SQLを書く担当など)を用意して、毎回呼び出すこともできます。「全部メインClaudeに任せる」のではなく「適材適所で振り分ける」のがSubAgent活用の本質です。
SubAgent機能とは何か
SubAgentは、ClaudeCodeの中で独立した別エージェントを起動できる機能です。メインのClaudeCode(あなたが対話している本体)が、必要に応じて子エージェント(SubAgent)を呼び出し、特定のタスクを任せます。子エージェントは独自のコンテキスト(会話履歴・記憶)を持ち、タスクが完了すると結果だけをメインに返します。
これがなぜ便利かというと、3つの大きなメリットがあります。
- メインコンテキストを節約できる:大量のファイルを読む調査タスクをSubAgentに任せれば、メインの会話履歴を汚さずに済みます。
- 並列実行で時間を短縮できる:複数のSubAgentを同時に走らせれば、調査・実装・テストを並行して進められます。
- 役割を分けることで精度が上がる:「コード調査だけする」「設計だけする」と役割を絞ったエージェントは、より集中したアウトプットを返してくれます。
メインエージェントとSubAgentの違い
メインエージェントは、ユーザーと直接対話する「司令塔」です。一方、SubAgentは内部的にメインから呼び出される「専門スタッフ」で、ユーザーとは直接対話しません。SubAgentが完了すると、メインに「こういう結果でした」と要約を返し、それを踏まえてメインがユーザーに最終回答します。
つまり、ユーザーから見れば「ClaudeCodeが裏で勝手に複数のスタッフを動かして、最終的な答えだけ持ってきてくれる」というイメージです。
ビルトインSubAgent:Explore / Plan / Task
ClaudeCodeには標準で用意されているSubAgentがいくつかあります。代表的なものを紹介します。
Explore(探索)エージェント
Exploreエージェントは、コードベースを広範に調査するための専用エージェントです。「このプロジェクトで認証はどう実装されている?」「データベースの操作はどこに集約されている?」といった、複数ファイルを横断する調査に強みを発揮します。
使い方の例:
このプロジェクトで認証周りがどう実装されているか、Exploreエージェントで調べてください
メインエージェントはSubAgentを起動し、SubAgentはgrep、find、readなどを駆使して認証関連のファイルを洗い出し、関係性を整理した上でメインに報告します。メインのコンテキストには「調査結果のサマリ」だけが残るので、その後の実装作業に集中できます。
Plan(計画)エージェント
Planエージェントは、実装に入る前の設計・計画フェーズを担当します。「この機能を実装するには、どのファイルをどう修正すべきか」を整理してくれます。
使い方の例:
ユーザープロフィール機能を追加したいです。Planエージェントで計画を立ててください
Planエージェントは関連ファイルを読み、影響範囲を分析し、ステップごとの実装計画を返します。複雑な機能追加では、いきなり実装に入るより、Planで計画を立ててから実装する方が確実です。
Task(汎用)エージェント
Taskエージェントは汎用型で、特定の作業(例:「テストを書く」「ドキュメントを作る」)を任せるのに向いています。役割を絞ったTaskエージェントを複数並列で走らせると、まるでチームで開発しているかのような効率が得られます。
SubAgentの設定方法
SubAgentは、~/.claude/agents/ディレクトリ(ユーザー全体)またはプロジェクトの.claude/agents/ディレクトリ(プロジェクト固有)に、Markdownファイルとして定義します。
基本フォーマット
---
name: code-explorer
description: コードベースを横断的に調査して関係性をまとめるエージェント
tools: Read, Grep, Bash
---
あなたはコード調査の専門家です。
ユーザーから依頼されたテーマについて、関連するファイル・関数・依存関係を調査し、
構造的にまとめて報告してください。
## ルール
- 不要なファイルは読まない(大量のnode_modulesなどは除外)
- 結果は箇条書きでまとめる
- ファイルパスは必ず絶対パスで報告
フロントマター部分でメタ情報を、本文でエージェントへの指示(システムプロンプト相当)を書きます。
主なフィールド
- name:エージェントの名前。呼び出すときに使います。
- description:何をするエージェントか。メインがどのエージェントを呼ぶべきか判断する材料になります。
- tools:このエージェントが使えるツールの一覧。読み取り専用にしたい場合は
Read, Grepだけにするなど、権限を絞れます。
配置場所と優先順位
- グローバル:
~/.claude/agents/(すべてのプロジェクトで使える) - プロジェクト固有:
<プロジェクト>/.claude/agents/(そのプロジェクトでだけ使える)
同じ名前のエージェントがあれば、プロジェクト固有が優先されます。
自作SubAgentを作る:実践ステップ
実際に自作SubAgentを作ってみましょう。例として、「コミットメッセージを日本語で詳細に書く専門エージェント」を作ります。
ステップ1:ディレクトリ作成
mkdir -p ~/.claude/agents
ステップ2:エージェント定義を作成
~/.claude/agents/commit-writer.mdを作成します。
---
name: commit-writer
description: 変更差分から丁寧な日本語コミットメッセージを作成する専門エージェント
tools: Bash, Read
---
あなたは丁寧な日本語コミットメッセージを書く専門家です。
## やること
1. `git status` と `git diff` で変更を把握する
2. 変更の意図を読み取り、Conventional Commits 形式で日本語のメッセージを作る
3. メッセージのみを出力する(コミットの実行はしない)
## 出力フォーマット
type(scope): 短い要約
詳細説明(なぜこの変更が必要か)
ステップ3:メインから呼び出す
commit-writer エージェントを使って、今の変更のコミットメッセージを書いてください
メインClaudeCodeはこの指示を受けて、commit-writerエージェントを起動し、結果のメッセージを返してくれます。
ステップ4:作ったエージェントを使い回す
一度作ったエージェントは、何度でも呼び出せます。プロジェクトを横断して使うものはグローバルに、特定プロジェクト専用はそのプロジェクトの.claude/agents/に置きましょう。
並列実行:複数SubAgentを同時に走らせる
SubAgentの真価は「並列実行」にあります。1つのメインClaudeCodeから複数のSubAgentを同時に起動できるため、調査・実装・テストを並行で進められます。
並列実行の指示例
以下を並列に進めてください:
1. Exploreエージェントで認証周りの調査
2. Exploreエージェントでデータベース周りの調査
3. Exploreエージェントでフロントエンドのフォーム実装の調査
すると、3つのSubAgentが同時に動き始めます。それぞれが独立したコンテキストで調査し、完了したものから順に結果を返してきます。1つずつ順番に調査するよりも、明らかに早く終わります。
並列実行のコツ
- タスクは独立させる:互いに依存するタスクは並列に向きません。
- 結果のサマリ形式を揃える:後でまとめやすくなります。
- 数を増やしすぎない:3〜5個程度が現実的。多すぎると管理が大変です。
実践例1:大規模リファクタの計画立て
大規模リファクタを進めるときの典型的なフロー。
以下のステップで進めてください:
1. Exploreエージェントで、APIクライアントが使われている箇所を全て調査
2. その結果をもとに、Planエージェントで段階的なリファクタ計画を作成
3. 計画に従って、ファイル単位で実装をTaskエージェントに振り分け
このように、SubAgent同士を組み合わせると、人間のチーム開発に近い役割分担が実現できます。
実践例2:テスト追加プロジェクト
「テストカバレッジが低いのでテストを増やしたい」というケース。
以下を並列に進めてください:
- Taskエージェント1:components/Button.tsx のテストを追加
- Taskエージェント2:components/Input.tsx のテストを追加
- Taskエージェント3:components/Modal.tsx のテストを追加
それぞれのエージェントが独立してテストを書くので、3ファイル分のテストが同時にできあがります。
実践例3:ドキュメント整備
docs/ 配下にあるMarkdownファイルを Exploreエージェントで全て読み、
古くなっている記述や、サンプルコードが現状と合っていない箇所を一覧化してください
メインのコンテキストを汚さずに、大量のドキュメントを読み込んで分析できます。
SubAgent活用のベストプラクティス
1. 役割を明確に書く
エージェントのdescriptionは、メインがどのエージェントを呼ぶべきか判断する材料です。曖昧な記述だと、適切に呼び出されません。
良い例:「TypeScriptのテストコードを Vitest で書く専門家」 悪い例:「テストを書く人」
2. ツール権限を最小限に
調査だけするエージェントにBashやWrite権限を与えると、意図しない操作をする可能性があります。Read, Grepだけに絞るなど、必要最小限にしましょう。
3. 出力フォーマットを指定する
「結果は箇条書きで」「結果はJSON形式で」など、出力フォーマットを指定すると、メイン側で扱いやすくなります。
4. プロジェクト固有エージェントを活用
社内ルール(コーディング規約、レビュー観点など)に沿った専用エージェントを作っておくと、毎回同じ品質でアウトプットが得られます。
5. メインで「並列で進めて」と明示する
明示的に「並列に進めてください」と指示しないと、ClaudeCodeは順次実行することがあります。並列にしたいときは必ず指示しましょう。
SubAgentの注意点
コンテキストは引き継がれない
SubAgentはメインとは別のコンテキストで動きます。つまり、メインで話していた内容はSubAgentは知りません。必要な情報はプロンプトに明記して渡す必要があります。
結果は要約されて戻る
SubAgentの作業ログ全てがメインに返るわけではありません。最終的な要約だけが戻ります。途中経過を見たい場合は、SubAgent側でログを残すよう指示しましょう。
過信は禁物
SubAgentも完璧ではありません。特に複雑な実装をいきなり任せると、的外れな結果が返ることがあります。Plan→実装の流れを踏むか、レビューを必ず行いましょう。
コストに注意
SubAgentもAPIコールを消費します。並列で多数走らせるとコストが嵩むため、必要なものだけに絞りましょう。
FAQ
Q1. SubAgentはいくつまで並列で動かせますか? A. 技術的な上限はありませんが、3〜5個程度が現実的です。多すぎると結果の管理が大変になり、コストも増えます。
Q2. メインのClaudeCodeで使っている設定(CLAUDE.mdなど)はSubAgentにも適用されますか?
A. プロジェクトのCLAUDE.mdはSubAgentも参照します。ただし、SubAgentに特化したルールがあれば、エージェント定義ファイル内に書くほうが確実です。
Q3. SubAgentから別のSubAgentを呼べますか? A. 基本的にはメインだけがSubAgentを呼ぶ設計です。多段のSubAgent呼び出しは推奨されません。
Q4. SubAgentが失敗したらどうなりますか? A. メインに「失敗した」という報告が返ります。メインはその情報をもとにユーザーに状況を伝え、必要なら別アプローチを提案します。
Q5. グローバルとプロジェクト固有、どちらに置くべき?
A. 汎用的なものはグローバル(~/.claude/agents/)、プロジェクト特有のルールに沿うものはプロジェクト固有(.claude/agents/)に置きましょう。
Q6. SubAgentでファイル書き込みもできますか?
A. はい、toolsにWriteやEditを含めれば可能です。ただし、書き込み権限のあるSubAgentは安全のため慎重に扱いましょう。
Q7. ユーザーが直接SubAgentと対話することはできますか? A. できません。SubAgentはメイン経由でのみ動きます。ユーザーが直接話すのはあくまでメインClaudeCodeです。
まとめ
SubAgent機能を使いこなせば、ClaudeCodeの生産性は文字通り10倍に跳ね上がります。Explore/Plan/Taskなどのビルトインエージェントを活用し、自作SubAgentで業務に特化させ、並列実行で時間を短縮する。これがClaudeCode上級者の標準的なワークフローです。最初は1つのSubAgentから試し、慣れてきたら並列実行や役割分担に挑戦してみてください。