「フロントエンドを直している間にバックエンドのテストも走らせたい」「コードレビューとドキュメント生成を同時にやってほしい」——複雑なタスクをClaudeに頼むとき、一人のClaudeが順番にこなすより、専門家チームが並列で動いてくれたほうが速いはずです。
Claude CodeのSubagentsはこれを実現します。.claude/agents/ディレクトリにMarkdownファイルを置くだけで、専門スキル・独立コンテキスト・専用ツールを持つサブエージェントを定義できます。メインのClaudeが適切なタスクを自動で委譲し、結果を集約します。
Claude Code全般の使い方はClaude Code完全ガイドを、HooksとのAgent Hook連携はClaude Code Hooks完全ガイドを参照してください。
Subagentsの基本概念
メインエージェントとSubagentの関係
Claude Codeのセッションはオーケストレーター(メインエージェント)とサブエージェントの2層で構成されます。メインがタスクを分析し、専門性が必要な部分をサブエージェントに委譲します。サブエージェントはそれぞれ独立したコンテキストウィンドウで動くため、お互いの会話が混ざらず、並列実行できます。
| 役割 | 動作 | 特徴 |
|---|---|---|
| オーケストレーター | タスク分析・委譲・結果集約 | ユーザーと直接会話するメインClaude |
| サブエージェント | 専門タスクを独立して実行 | 独立コンテキスト・専用ツール・worktree対応 |
サブエージェントが呼ばれる仕組み
メインエージェントはサブエージェントのdescriptionを読んで、タスクが適合するかどうかを判断します。「コードレビューをして」という指示が来たとき、descriptionに「コードレビューに特化」と書かれたエージェントが自動的に呼ばれます。ユーザーが「reviewerを呼んで」と明示的に指定することもできます。
| 呼び出し方式 | 説明 | 使い分け |
|---|---|---|
| 自動委譲 | descriptionとタスクが一致したときに自動で委譲 | よく使う専門タスクに設定 |
| 明示的呼び出し | 「reviewerエージェントを使って」と指定 | 特定エージェントを確実に呼びたいとき |
| 並列委譲 | 複数エージェントを同時に起動 | 独立したタスクを同時進行させたいとき |
Subagentの定義方法
.claude/agents/ディレクトリに配置する
サブエージェントは.claude/agents/ディレクトリ内のMarkdownファイルで定義します。ファイル名がエージェントの識別子になります。
your-project/ ├── .claude/ │ ├── agents/ │ │ ├── reviewer.md ← コードレビュー専門エージェント │ │ ├── tester.md ← テスト生成専門エージェント │ │ ├── doc-writer.md ← ドキュメント生成専門エージェント │ │ └── security.md ← セキュリティ監査専門エージェント │ └── settings.json ├── src/ └── ...
Markdownファイルの構造
フロントマターにエージェントのメタデータを、本文にシステムプロンプトを書きます。
--- name: reviewer description: コードレビューに特化したエージェント。セキュリティ・パフォーマンス・可読性・テストカバレッジの観点でレビューする。コードレビューを依頼されたとき、またはPull Requestの準備時に呼ばれる。 tools: - Read - Glob - Grep isolation: worktree --- あなたはシニアソフトウェアエンジニアとしてコードレビューを行います。 ## レビュー観点 **セキュリティ(Critical/Major)** - SQLインジェクション・XSS・認証バイパスの可能性 - シークレット・APIキーのハードコード - 不適切な権限・入力バリデーション不足 **パフォーマンス** - N+1クエリ・不要なループ・メモリリーク - 非同期処理の適切さ **可読性・保守性** - 命名の明確さ - 関数の単一責任原則 - コメントの適切さ ## 出力形式 問題がある場合は severity(critical/major/minor)と行番号を明記してください。 問題がない場合は「LGTM」と返してください。
フロントマター設定項目
| キー | 型 | 説明 | 例 |
|---|---|---|---|
name |
string | エージェントの識別子 | reviewer |
description |
string | どんなタスクを担当するかの説明(委譲判断に使われる) | コードレビュー専門... |
tools |
string[] | このエージェントが使えるツール | [Read, Glob, Grep] |
isolation |
string | worktreeを指定するとgit worktreeで隔離実行 |
worktree |
descriptionは「どんなとき呼ばれるべきか」を具体的に書くほど精度が上がります。例えば「コードレビューに特化」だけでなく「コードレビューを依頼されたとき、またはPull Requestの準備時に呼ばれる」のように呼ばれるシーンを明記するのがポイントです。
実践的なSubagent定義例
テスト生成エージェント
--- name: tester description: テスト生成に特化したエージェント。新しい関数・クラス・APIエンドポイントが実装されたとき、または「テストを書いて」と依頼されたときに呼ばれる。既存テストのスタイルに合わせてユニットテスト・統合テストを生成する。 tools: - Read - Glob - Grep - Write isolation: worktree --- あなたはテスト専門エンジニアです。 ## 作業手順 1. Glob でプロジェクト内の既存テストファイルを検索 2. Read で2〜3件のテストファイルを読んでスタイルを把握 3. 実装コードを Read して関数・クラスのインターフェースを理解 4. 同じパターンでテストファイルを生成 ## テストカバレッジ要件 - 正常系: すべての主要フローをカバー - 異常系: エラーケース・境界値・null/undefined入力 - エッジケース: 空配列・空文字列・最大値・最小値 ## 注意事項 テストフレームワークは既存コードに合わせること(Jest/Vitest/Mocha等を確認してから書く)。
ドキュメント生成エージェント
--- name: doc-writer description: ドキュメント生成に特化したエージェント。関数・クラス・APIのドキュメントを書くとき、またはREADMEやCHANGELOGの更新時に呼ばれる。既存ドキュメントのスタイルに合わせて生成する。 tools: - Read - Glob - Grep - Write --- あなたは技術ドキュメント専門のライターです。 ## 対応するドキュメント - **JSDoc/TSDoc**: 関数・クラス・インターフェースのインラインコメント - **README.md**: プロジェクト概要・セットアップ・使い方 - **CHANGELOG.md**: バージョンごとの変更履歴 - **API仕様書**: エンドポイントの引数・レスポンス・エラーコード ## 品質基準 - 具体的なコード例を必ず含める - 引数・戻り値の型を明記 - エラーが発生するケースを記載 - 読んだ人がすぐ使えるレベルの説明にする
セキュリティ監査エージェント
--- name: security description: セキュリティ監査に特化したエージェント。認証・認可・入力バリデーション・暗号化・シークレット管理に関するコードを確認するとき、またはセキュリティレビューを依頼されたときに呼ばれる。 tools: - Read - Glob - Grep --- あなたはアプリケーションセキュリティの専門家です。 ## チェック項目 **認証・認可** - JWT検証の適切さ(有効期限・署名検証・アルゴリズム指定) - 認可チェックの漏れ(水平権限昇格・垂直権限昇格) **入力バリデーション** - SQLインジェクション(ORMを使わない生クエリ) - XSS(htmlエスケープ・CSPヘッダー) - コマンドインジェクション(shell実行への入力混入) **シークレット管理** - ハードコードされたAPIキー・パスワード・トークン - .envファイルのgit追跡 - ログへの機密情報出力 重大な問題はCRITICAL、修正推奨はWARNINGとして出力してください。
Subagentを呼び出す3つの方法
方法1:自然言語で自動委譲
最もシンプルな使い方です。メインエージェントがdescriptionを参照して適切なサブエージェントを自動で呼びます。
# Claude Codeに自然言語で依頼するだけ claude > src/api/payment.ts を実装してください。 > 実装後にコードレビューとユニットテストの生成もお願いします。 # 内部動作: # 1. メインが実装を行う # 2. 「コードレビュー」→ reviewer エージェントへ委譲 # 3. 「ユニットテスト生成」→ tester エージェントへ委譲 # 4. 両エージェントが並列実行 # 5. 結果をメインが集約して報告
方法2:エージェントを明示的に指定
# エージェント名を直接指定 > security エージェントを使って src/auth/ ディレクトリ全体をセキュリティ監査してください # または > reviewer と tester を両方使って、この変更のレビューとテスト生成を並列で行ってください
方法3:複数エージェントを並列起動
# 複数の独立したタスクを同時に依頼 > 以下を並列で実行してください: > 1. frontend エージェント:src/components/UserDashboard.tsx を新デザインに更新 > 2. backend エージェント:src/api/user.ts にページネーションAPIを追加 > 3. tester エージェント:既存のAPIテストのカバレッジを確認 # Agent Teamsが自動的に: # 1. 各エージェント用のworktreeを作成 # 2. 3エージェントを並列起動 # 3. それぞれの結果を収集 # 4. メインが統合レポートを生成
Worktreeによる隔離実行
フロントマターにisolation: worktreeを指定すると、サブエージェントはgit worktreeで分離された作業空間で動作します。これにより複数エージェントが同じファイルに同時書き込みしてコンフリクトを起こす問題を防げます。
| 設定 | 動作 | 適したケース |
|---|---|---|
isolation: worktree |
独立したgit worktreeで実行。変更があればworktreeブランチを保持 | 書き込みを伴うエージェント(tester・doc-writer等) |
| isolation指定なし | メインと同じ作業空間で実行 | 読み取り専用エージェント(reviewer・security等) |
# サブエージェント実行中にworktreeが作成される git worktree list # 実行例: # /path/to/project main # /path/to/project-worktree-tester worktree-tester-20260324 # /path/to/project-worktree-frontend worktree-frontend-20260324 # エージェント完了後: # - 変更なし → worktreeは自動削除 # - 変更あり → worktreeを保持(マージをメインに委ねる)
変更が入ったworktreeはエージェント完了後も残ります。メインエージェントが各worktreeの差分を確認してマージするか、「worktreeの変更をmainにマージして」と指示すれば自動でマージします。コンフリクトが発生した場合は通常のgitマージフローで解決します。
SubagentsとAgent Teamsの違い
Claude CodeにはSubagentsとAgent Teamsという2つの並列実行の仕組みがあります。混同しやすいので整理します。
| 概念 | 定義場所 | エージェント数 | 主な用途 |
|---|---|---|---|
| Subagents | .claude/agents/*.md |
1体ずつ(必要に応じて並列) | 専門タスクの委譲・再利用可能な専門家定義 |
| Agent Teams | メインエージェントへの指示 | 複数(通常2〜5体) | 大規模タスクの並列実行・タスク分割 |
Agent Teamsは「大規模なリファクタリングを複数エージェントで分担する」ような一時的な並列実行に適しています。Subagentsは「レビューやテスト生成のように繰り返し使う専門家」を定義するのに適しています。実際にはSubagentsとして定義したエージェントをAgent Teamsで複数呼ぶという組み合わせが最も強力です。
実践パターン集
パターン1:フルスタック並列開発
--- name: frontend description: フロントエンド実装に特化したエージェント。React・Vue・CSS・UIコンポーネントの実装・修正時に呼ばれる。 tools: [Read, Write, Edit, Glob, Grep] isolation: worktree --- Reactコンポーネントの実装専門。既存コンポーネントのスタイル・パターンを必ず先に確認してから実装する。
--- name: backend description: バックエンドAPI実装に特化したエージェント。Express・FastAPI・Node.jsのAPIエンドポイント・ビジネスロジック実装時に呼ばれる。 tools: [Read, Write, Edit, Glob, Grep] isolation: worktree --- APIエンドポイントの実装専門。OpenAPI仕様を参照してインターフェースの一貫性を保つ。
> ユーザープロフィール編集機能を実装してください。 > frontend エージェントで ProfileEditForm コンポーネントを作成し、 > backend エージェントで PATCH /api/users/:id エンドポイントを同時に実装してください。 > tester エージェントで両方のテストも並列で作成してください。
パターン2:Pull Request自動準備
> このブランチをPRに出す前の最終チェックをしてください。 > reviewer エージェントでコードレビューを行い、 > security エージェントでセキュリティ監査を行い、 > doc-writer エージェントでCHANGELOGを更新してください。 > 3つが完了したらレビュー結果のサマリをまとめてください。
パターン3:大規模リファクタリングの分割実行
> src/utils/ 配下の全ファイルをTypeScript strictモードに対応させてください。 > ファイルを5つずつに分けて、それぞれ独立したサブエージェントに割り当てて > 並列実行してください。完了したものから順次レポートしてください。
Subagent設計のベストプラクティス
| 原則 | 良い例 | NGな例 |
|---|---|---|
| 単一責任 | 「コードレビュー専門」「テスト生成専門」と明確に分ける | 「何でもできる汎用エージェント」 |
| ツール最小化 | 読み取り専用エージェントにはRead/Glob/Grepのみ付与 | 全エージェントにBash・Writeを付与 |
| description具体化 | どんなシーンで呼ばれるかをdescriptionに明記 | 「コードが得意」など抽象的な説明 |
| 独立性確保 | 他エージェントの結果に依存しないタスクを担当させる | 前のエージェントの出力が必要なタスクを並列にする |
| worktree活用 | 書き込みを伴うエージェントにはisolation: worktree |
全エージェントをworktreeなしで並列実行 |
グローバルSubagentsの設定
プロジェクト固有でなく全プロジェクトで使いたいエージェントは~/.claude/agents/(グローバル)に置きます。プロジェクト設定(.claude/agents/)が優先され、同名エージェントがある場合はプロジェクト設定が使われます。
# 全プロジェクト共通のエージェントは ~/.claude/agents/ に置く
~/.claude/
└── agents/
├── reviewer.md ← 全プロジェクトで使う共通レビュアー
└── security.md ← 全プロジェクトで使うセキュリティ監査
まとめ
Claude Code Subagentsは「再利用可能な専門家チーム」をコードで定義する仕組みです。.claude/agents/にMarkdownファイルを追加するだけで、レビュー・テスト・セキュリティ監査が自動化される開発環境が整います。
まずはreviewerエージェント1つだけ定義してみるところから始めましょう。「コードを変更したらreviewerを呼んで」と指示するだけで、シニアエンジニアのレビューが毎回自動で入る環境が手に入ります。慣れてきたらtester・doc-writerを追加し、最終的にはPR準備を完全自動化できます。
HooksのAgent Hookと組み合わせると、ファイル保存のたびにSubagentが自動チェックを実行する完全自動化も実現できます。詳しくはClaude Code Hooks完全ガイドを参照してください。
よくある質問
QSubagentsに課金はどうなりますか?
A各サブエージェントは独立したAPIコールを消費します。2体を並列実行すれば時間は半分になりますがトークン消費は約2倍になります。Claude Codeのサブスクリプション(Pro/Max)内のAPIクレジットから消費されます。/costコマンドで現セッションの消費量を確認できます。
Qサブエージェントがエラーになった場合はどうなりますか?
Aサブエージェントがエラーで終了した場合、メインエージェントにエラー内容がフィードバックされます。メインエージェントはエラーを踏まえて再試行するか、別のアプローチを取ります。並列実行中の1体が失敗しても他のエージェントの実行は継続されます。
Q.claude/agents/に置けるファイル数に制限はありますか?
A制限はありませんが、エージェント数が増えすぎるとメインエージェントがdescriptionを読む際のコンテキストを消費します。10体以下が実用的な上限の目安です。使用頻度の低いエージェントはグローバル設定に移すか、ファイル名の先頭に_を付けて無効化できます。
Qサブエージェントの実行順序は制御できますか?
A並列実行の場合は順序制御できません。順序が重要な場合(Aの結果をBが使う等)は、メインエージェントへの指示を「Aを完了してからBを実行」と明示するか、メインが段階的に委譲する形にします。
QSubagentsはインターネット検索できますか?
AフロントマターのtoolsにWebSearchを追加すれば検索できます。ただしWebSearchを持つエージェントは実行時間が延びるため、本当に検索が必要なエージェント(ライブラリの最新バージョン確認等)にのみ付与するのが適切です。
QSubagentsはプロジェクトのsettings.jsonと組み合わせて使えますか?
Aはい。settings.jsonのHooks(特にAgent Hook)とSubagentsは密接に連携します。Agent HookでファイルWrite後に特定のSubagentを自動起動する設定が可能です。詳しくはClaude Code Hooks完全ガイドを参照してください。

