はじめに
Claude Codeには、特定のタスクに特化したAIを呼び出す「サブエージェント」という機能があります。サブエージェントを活用することで、コードレビュー、デバッグ、セキュリティレビューといった専門的なタスクを、それぞれの領域に最適化されたAIに委任できます。
本記事では、サブエージェントの基本概念から、ビルトインサブエージェントの活用、カスタムサブエージェントの作成方法まで詳しく解説します。この記事を読むことで、以下のことができるようになります。
- サブエージェントの仕組みと利点を理解する
/agentsコマンドでサブエージェントを管理する.claude/agents/ディレクトリにカスタムサブエージェントを作成する- セキュリティレビュー、デバッグ、コードレビュー等の専門タスクに活用する
実行環境
- オペレーティングシステム: macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上、Windows 10以上(WSL 1/2またはGit for Windows)
- ハードウェア: 4GB以上のRAM
- Node.js 18以上(npmインストールの場合のみ必要)
- インターネット接続(認証およびAI処理に必要)
- シェル環境: Bash、Zsh、またはFish推奨
前提条件
- Claude Codeがインストール済みであること
- コマンドライン操作の基礎知識
- プログラミングの基礎知識(言語は問わない)
サブエージェントとは
サブエージェントは、Claude Codeがタスクを委任できる「事前設定されたAIペルソナ」です。各サブエージェントは以下の特徴を持っています。
| 特徴 | 説明 |
|---|---|
| 専門性 | 特定の目的と専門領域に特化 |
| 独立したコンテキスト | メインの会話とは別のコンテキストウィンドウで動作 |
| ツール制限 | 使用可能なツールを個別に設定可能 |
| カスタムプロンプト | 独自のシステムプロンプトで振る舞いを制御 |
Claude Codeがタスクを受け取ると、そのタスクがサブエージェントの専門領域に該当する場合、自動的にサブエージェントに委任します。サブエージェントは独立して作業を行い、結果を返します。
サブエージェントの主な利点
サブエージェントを活用することで、以下のメリットが得られます。
graph TB
A[サブエージェントの利点] --> B[コンテキスト保全]
A --> C[専門性の活用]
A --> D[再利用性]
A --> E[柔軟な権限設定]
B --> B1[メインの会話を汚染しない<br>高レベルの目標に集中]
C --> C1[特定ドメインに最適化<br>高い成功率]
D --> D1[異なるプロジェクトで再利用<br>チーム共有可能]
E --> E1[サブエージェントごとに<br>ツールアクセスを制限]ビルトインサブエージェント
Claude Codeには、すぐに使えるビルトインサブエージェントが含まれています。
Exploreサブエージェント
Exploreサブエージェントは、コードベースの検索と分析に最適化された高速・軽量なエージェントです。
主な特徴:
- モデル: Haiku(高速・低レイテンシー)
- モード: 読み取り専用(ファイルの作成・編集・削除は不可)
- 利用可能なツール: Glob、Grep、Read、Bash(読み取り専用コマンドのみ)
使用シーン:
コードベースを検索・理解する必要があるが、変更は不要な場合に自動的に委任されます。
|
|
Exploreサブエージェントには「徹底度(thoroughness)」レベルがあります。
| レベル | 説明 |
|---|---|
| Quick | 高速検索。ターゲットを絞った検索に最適 |
| Medium | バランスの取れた探索 |
| Very thorough | 複数の場所や命名規則を網羅的に分析 |
Planサブエージェント
Planサブエージェントは、Plan Mode時に使用される調査専門のエージェントです。
主な特徴:
- モデル: Sonnet(高度な分析が可能)
- 利用可能なツール: Read、Glob、Grep、Bash
- 用途: コードベースの調査と計画立案のための情報収集
使用シーン:
Plan Modeでコードベースの理解が必要な場合に自動的に使用されます。
|
|
汎用サブエージェント
汎用サブエージェントは、探索とアクションの両方を必要とする複雑なタスク向けのエージェントです。
主な特徴:
- モデル: Sonnet(高度な推論が可能)
- 利用可能なツール: すべてのツール
- モード: ファイルの読み書き、コマンド実行、変更が可能
使用シーン:
複数のステップに依存するタスクや、探索と変更の両方が必要な場合に委任されます。
|
|
/agentsコマンドによる管理
/agentsコマンドを使用すると、サブエージェントをインタラクティブに管理できます。
サブエージェント一覧の確認
|
|
このコマンドを実行すると、以下の操作が可能なインタラクティブメニューが表示されます。
- すべての利用可能なサブエージェント(ビルトイン、ユーザー、プロジェクト)の表示
- 新しいサブエージェントのガイド付き作成
- 既存のカスタムサブエージェントの編集(ツールアクセスを含む)
- カスタムサブエージェントの削除
- 重複がある場合のアクティブなサブエージェントの確認
- 利用可能なツールの完全なリストからの権限管理
新規サブエージェントの作成フロー
/agentsコマンドを実行- 「Create New Agent」を選択
- プロジェクトレベルかユーザーレベルかを選択
- サブエージェントの詳細を定義
- アクセスを許可するツールを選択
- 保存して使用開始
カスタムサブエージェントの作成
ファイルの配置場所
カスタムサブエージェントはMarkdownファイルとして保存します。配置場所によってスコープが異なります。
| 種類 | 配置場所 | スコープ | 優先度 |
|---|---|---|---|
| プロジェクト | .claude/agents/ |
現在のプロジェクトでのみ利用可能 | 最高 |
| ユーザー | ~/.claude/agents/ |
すべてのプロジェクトで利用可能 | 低い |
同じ名前のサブエージェントが存在する場合、プロジェクトレベルのサブエージェントが優先されます。
ファイル形式
サブエージェントファイルは、YAMLフロントマターとMarkdown本文で構成されます。
|
|
設定フィールドの詳細
| フィールド | 必須 | 説明 |
|---|---|---|
name |
はい | 小文字とハイフンを使用した一意の識別子 |
description |
はい | サブエージェントの目的を説明する自然言語 |
tools |
いいえ | カンマ区切りのツールリスト。省略時はすべてのツールを継承 |
model |
いいえ | 使用するモデル(sonnet、opus、haiku)または ‘inherit’ |
permissionMode |
いいえ | パーミッションモード(default、acceptEdits、dontAsk等) |
skills |
いいえ | 自動ロードするスキル名のカンマ区切りリスト |
モデルの選択
modelフィールドでサブエージェントが使用するAIモデルを制御できます。
- モデルエイリアス:
sonnet、opus、haikuのいずれかを指定 inherit: メインの会話と同じモデルを使用(一貫性が必要な場合に有効)- 省略時: デフォルトのサブエージェントモデル(sonnet)を使用
利用可能なツール
サブエージェントには、Claude Codeの内部ツールへのアクセスを許可できます。主なツールは以下の通りです。
| ツール | 説明 |
|---|---|
| Read | ファイルの読み取り |
| Edit | ファイルの編集 |
| Write | ファイルの書き込み |
| Bash | シェルコマンドの実行 |
| Grep | 正規表現による検索 |
| Glob | パターンマッチング |
| WebFetch | Webページの取得 |
toolsフィールドを省略すると、メインスレッドのすべてのツール(MCPツールを含む)を継承します。
実践的なサブエージェント例
コードレビュー専門サブエージェント
コード品質、セキュリティ、保守性を評価するサブエージェントです。
|
|
使用方法:
|
|
デバッグ専門サブエージェント
エラー、テスト失敗、予期しない動作の調査に特化したサブエージェントです。
|
|
使用方法:
|
|
セキュリティレビュー専門サブエージェント
セキュリティ脆弱性の検出に特化したカスタムサブエージェントの例です。
|
|
使用方法:
|
|
データ分析専門サブエージェント
SQLクエリやデータ分析タスクに特化したサブエージェントです。
|
|
サブエージェントの呼び出し方
自動委任
Claude Codeは以下の要素に基づいてタスクを自動的にサブエージェントに委任します。
- リクエスト内のタスク説明
- サブエージェント設定の
descriptionフィールド - 現在のコンテキストと利用可能なツール
descriptionフィールドに「use PROACTIVELY」や「MUST BE USED」といったフレーズを含めると、より積極的にサブエージェントが使用されます。
明示的な呼び出し
特定のサブエージェントを明示的に呼び出すこともできます。
|
|
|
|
|
|
サブエージェントのチェーン
複雑なワークフローでは、複数のサブエージェントを連鎖させることができます。
|
|
CLIでのサブエージェント定義
--agentsフラグを使用して、CLIからサブエージェントを動的に定義することも可能です。
|
|
この方法は以下の場面で有用です。
- サブエージェント設定の素早いテスト
- セッション固有のサブエージェント(保存不要な場合)
- 自動化スクリプトでのカスタムサブエージェント
- ドキュメントやスクリプトでのサブエージェント定義の共有
特定サブエージェントの無効化
ビルトインやカスタムのサブエージェントを無効化するには、Task(AgentName)パーミッションルールを使用します。
settings.jsonでの設定例:
|
|
CLIでの使用例:
|
|
この機能は、セキュリティ上の理由や特定のワークフローを強制したい場合に有用です。
サブエージェントの再開(Resume)
サブエージェントは「再開」機能をサポートしており、長時間の調査や分析タスクを複数のセッションにわたって継続できます。
仕組み
- 各サブエージェントの実行には一意の
agentIdが割り当てられる - エージェントの会話は別のトランスクリプトファイル(
agent-{agentId}.jsonl)に保存される resumeパラメータで以前のエージェントを再開可能- 再開時、エージェントは以前の会話の完全なコンテキストを持って継続
使用例
初回の呼び出し:
|
|
エージェントの再開:
|
|
活用シーン
- 長時間の調査: 大規模なコードベース分析を複数セッションに分割
- 反復的な改善: コンテキストを失わずにサブエージェントの作業を継続的に改善
- マルチステップワークフロー: 関連タスクをコンテキストを維持しながら順次実行
プロジェクト固有のサブエージェント作成
プロジェクト固有のワークフローを組み込んだサブエージェントの例を紹介します。
|
|
このサブエージェントは.claude/agents/ディレクトリに配置することで、プロジェクト内で自動的に認識されます。
ベストプラクティス
サブエージェントを効果的に活用するためのベストプラクティスをまとめます。
Claude生成から始める
/agentsコマンドでサブエージェントを作成する際、Claudeに最初のバージョンを生成させてからカスタマイズすることを推奨します。この方法により、堅牢な基盤を得た上で、自分のニーズに合わせて調整できます。
単一責任の原則
1つのサブエージェントに多くの責任を持たせるのではなく、明確で単一の責任を持つサブエージェントを設計してください。これにより、パフォーマンスが向上し、動作が予測しやすくなります。
詳細なプロンプトを書く
システムプロンプトには、具体的な指示、例、制約を含めてください。ガイダンスが詳細であるほど、サブエージェントのパフォーマンスが向上します。
ツールアクセスを制限する
サブエージェントの目的に必要なツールのみを許可してください。これにより、セキュリティが向上し、サブエージェントが関連するアクションに集中できます。
バージョン管理を活用する
プロジェクトサブエージェントをGitで管理し、チームで共有・改善できるようにしてください。
パフォーマンスの考慮事項
サブエージェント使用時のパフォーマンスに関する注意点です。
| 項目 | 説明 |
|---|---|
| コンテキスト効率 | サブエージェントはメインのコンテキストを保全し、より長いセッションを可能にする |
| レイテンシー | サブエージェントは毎回クリーンな状態から開始するため、必要なコンテキストを収集する際にレイテンシーが発生する可能性がある |
まとめ
Claude Codeのサブエージェント機能を活用することで、専門的なタスクをそれぞれの領域に最適化されたAIに委任できます。本記事で解説した内容を振り返ります。
- サブエージェントの基本: 専門性、独立したコンテキスト、ツール制限、カスタムプロンプトを持つAIペルソナ
- ビルトインサブエージェント: Explore(高速検索)、Plan(計画立案)、汎用(複合タスク)
- 管理方法:
/agentsコマンドでインタラクティブに管理 - カスタム作成:
.claude/agents/にMarkdownファイルとして定義 - 活用例: コードレビュー、デバッグ、セキュリティレビュー、データ分析
サブエージェントを適切に設計・活用することで、より高品質な成果物を効率的に得られるようになります。まずはビルトインサブエージェントを試し、次にプロジェクト固有のカスタムサブエージェントを作成してみてください。