blog

claude code サブエージェントとは?仕組み・活用を分かりやすく解説【2026年版】

Claude Codeのサブエージェントとは?仕組みから実践活用まで徹底解説

Claude Codeを使い込むなかで、「サブエージェント」という概念に突き当たったことはないでしょうか。弊社(クリスタルメソッド)では、Claude Codeを日常的な開発実務に組み込んでいますが、サブエージェントを正しく理解してから生産性が大幅に向上しました。本記事では、Claude Codeのサブエージェントとは何か、どのような仕組みで動くのか、そして実際の開発現場でどう活かすかを、一次情報を交えながら網羅的に解説します。

Claude Codeのサブエージェントとは

Claude Codeのサブエージェントとは、メインのClaudeエージェント(オーケストレーター)が特定の作業を委任するために起動する、独立した子エージェントのことです。オーケストレーターがタスク全体を把握・分解し、個々の作業単位をサブエージェントに割り当てることで、大規模・複雑な開発タスクを並列または逐次的に処理できます。

Anthropicの公式ドキュメントでは、Claude Codeにおける「エージェント」を次のように位置づけています。Claude Codeは単なるコード補完ツールではなく、ファイル操作・コマンド実行・Web検索・外部ツール呼び出しなどを自律的に行えるエージェントランタイムとして設計されています。その上でサブエージェントは、メインエージェントの意思決定を受けて特定ツールや特定コンテキストのみにアクセスする「専門化された実行単位」として機能します。

オーケストレーターとサブエージェントの関係

オーケストレーター(メインエージェント)
タスク全体の把握・計画・委任・結果の統合
サブエージェントA
ファイル読み書き
コード生成
サブエージェントB
テスト実行
バグ検出
サブエージェントC
Web検索
ドキュメント参照
サブエージェントD
コードレビュー
リファクタリング

結果の統合・最終アウトプット

各サブエージェントは独立したコンテキストウィンドウを持ちます。これは非常に重要な特性で、メインエージェントのコンテキスト制限を超えるような大規模コードベースでも、分割して処理できることを意味します。弊社の実務でも、数万行規模のリポジトリを扱う際に、このコンテキスト分散の恩恵を直接感じています。

サブエージェントが持つツールと権限

サブエージェントに与えられるツールセットは、オーケストレーターが明示的に指定します。Claude Codeでサブエージェントが利用できる主要ツールは以下の通りです。

ツール名 主な機能 典型的な用途
Read/Write ファイルの読み取り・作成・編集 コード生成、設定ファイル更新
Bash シェルコマンドの実行 テスト実行、ビルド、パッケージインストール
WebSearch Web上の情報取得 最新ライブラリ仕様の確認、エラー調査
WebFetch 特定URLのコンテンツ取得 APIドキュメント、仕様書の参照
Task(サブエージェント起動) さらなる子エージェントの起動 階層的なタスク分解(後述)
MCP(外部ツール連携) Model Context Protocol経由の外部連携 データベース操作、外部API連携

重要なのは、サブエージェントに与えるツールを制限することでセキュリティと作業範囲を制御できる点です。例えば「このサブエージェントにはReadとWebSearchのみ許可し、ファイル書き込みは行わせない」という制御が可能です。弊社では本番環境に近いリポジトリを扱う際、Writeツールのスコープを意図的に絞ることで、意図しないファイル変更を防いでいます。

サブエージェントが起動される仕組み

Claude Codeにおけるサブエージェントの起動は、Taskツールの呼び出しによって行われます。オーケストレーターが内部的に「このサブタスクは独立した実行環境で処理すべき」と判断すると、Taskツールを通じてサブエージェントを生成します。

サブエージェント起動の内部フロー

① ユーザーがオーケストレーターに複合タスクを指示
例:「このリポジトリ全体のテストを通しつつ、READMEを更新して」
② オーケストレーターがタスクを分解・計画
「テスト実行」「README更新」を独立したサブタスクとして認識
③ Taskツールでサブエージェントを起動(プロンプト+ツールセット渡し)
各サブエージェントは独立したコンテキストウィンドウで稼働開始
④ 各サブエージェントが自律的にタスクを実行・完了報告
並列実行が可能な場合は同時進行
⑤ オーケストレーターが結果を統合し最終アウトプットを生成
ユーザーへ統一された形でフィードバック

並列実行と逐次実行の使い分け

サブエージェントは、タスク間に依存関係がない場合は並列実行、依存関係がある場合は逐次実行されます。例えば「全モジュールのユニットテスト」は各モジュールが独立しているため並列実行が有効です。一方、「コードを生成してからE2Eテストを走らせる」という手順は、前工程の完了を待つ逐次実行になります。

並列実行によりコスト(API呼び出し料金)と時間の両方が最適化されますが、並列度が高すぎるとAPIレート制限に当たる場合があります。弊社では大規模リポジトリ(ファイル数200以上)を一気に処理する際、並列数が想定を超えてレート制限エラーが発生した経験があります。そのため、CLAUDE.mdに並列サブエージェント数の目安を記載し、オーケストレーターへの暗黙のガイドラインとして活用しています。

コンテキストの継承と独立性

サブエージェントを理解する上で最も重要な概念のひとつが、コンテキストの独立性です。各サブエージェントは起動時に渡されたプロンプトと情報のみをコンテキストとして持ち、オーケストレーターの全会話履歴には直接アクセスできません。

この仕様には以下のようなトレードオフがあります。

  • メリット:コンテキストウィンドウの制限を超えた大規模処理が可能。各エージェントが軽量なコンテキストで動作するため、出力精度が上がりやすい。
  • デメリット:オーケストレーターが適切な情報を明示的にサブエージェントへ渡す必要がある。情報の渡し漏れが発生すると、サブエージェントが誤った前提で動作するリスクがある。

弊社での対処法として、CLAUDE.mdにプロジェクト全体の規約・アーキテクチャ概要・よく使うコマンドを記載しています。CLAUDE.mdはオーケストレーターとサブエージェントの双方が自動的に参照するため、「各サブエージェントが共通理解を持って動ける土台」として機能します。これはClaude Codeを実運用する上で最も効果的な工夫のひとつです。

サブエージェントの階層構造(マルチエージェント)

Claude Codeのサブエージェントは、さらにその配下でサブエージェントを起動できます。つまりサブエージェント自身がオーケストレーターとして機能する、階層的なマルチエージェント構成が可能です。

階層 役割 具体例
Level 0(ユーザー) 指示を出す人間 「このサービスに認証機能を追加して」
Level 1(オーケストレーター) 全体計画・タスク分解 バックエンド担当・フロントエンド担当・テスト担当に分割
Level 2(サブエージェント) 中間オーケストレーター兼実行 バックエンド担当がさらにDB設計・API実装・バリデーションに分割
Level 3(孫エージェント) 個別タスクの実行 特定のファイル1つを編集・特定のテストケースを記述

ただし、階層を深くしすぎるとコスト・処理時間・デバッグ難易度が急激に上昇します。弊社の経験では、実用上は2〜3階層が上限です。それ以上の階層は、エラーが発生した際の原因追跡が非常に困難になり、かえって非効率です。

サブエージェントの実践的な活用パターン

パターン1:大規模リファクタリング

50個のコンポーネントを一括でリファクタリングする場合、1つのエージェントで全コンポーネントを処理しようとするとコンテキスト限界に達します。サブエージェントを活用すると、各コンポーネントを独立したサブエージェントに割り当て、並列処理できます。弊社では実際に、レガシーなReactクラスコンポーネント群を関数コンポーネントへ一括移行する際にこのパターンを使い、手動作業比で約70%の時間短縮を実現しました。

パターン2:テスト生成と実行の分離

「コード生成サブエージェント」と「テスト生成サブエージェント」を分けることで、生成物の品質検証を構造的に組み込むことができます。生成エージェントと検証エージェントを分離すると、同じコンテキストを共有するバイアスが減り、テストがより独立した視点で書かれる傾向があります。

パターン3:調査・実装・レビューのパイプライン

調査エージェント
最新ライブラリ仕様をWeb検索・整理
実装エージェント
調査結果をもとにコードを実装・テスト実行
レビューエージェント
コーディング規約・セキュリティ観点でレビュー

このパターンはとくに新規ライブラリ導入時や、セキュリティ要件が厳しいコード変更時に有効です。各エージェントが専門的な役割に集中することで、出力の質が向上します。

パターン4:ドキュメント生成の並列化

複数モジュールのAPIドキュメントを同時生成する場合、各モジュールを担当するサブエージェントを並列起動します。弊社ではOpenAPI仕様書の自動生成にこのパターンを適用し、20モジュール分のドキュメントを数分で生成した実績があります。

サブエージェントを効果的に使うための設定と工夫

CLAUDE.mdを活用した共通コンテキストの設計

前述の通り、CLAUDE.mdはサブエージェントも自動的に読み込む設定ファイルです。以下の情報を記載することで、全サブエージェントが一貫した前提のもとで動作します。

  • プロジェクトのディレクトリ構造とその意味
  • コーディング規約(命名規則、インポート順、テストの書き方など)
  • よく使うコマンド(テスト実行コマンド、ビルドコマンド、リントコマンド)
  • 禁止事項(直接DBを触らない、特定ファイルは編集しない等)
  • 依存ライブラリの主要なバージョン情報

弊社のCLAUDE.mdには「サブエージェントは必ずテストを書いてから実装を提出すること」という一文を入れています。これが全サブエージェントへの暗黙のルールとして機能し、テスト漏れが大幅に減りました。

プロンプトで明示する情報の粒度

サブエージェントへの委任プロンプトは、「何をやるか」だけでなく「何をやらないか」も明記すると効果的です。例えば「srcディレクトリ内のuser関連ファイルのみを対象とし、それ以外のファイルには触れないこと」と明示することで、意図しないファイル変更を防げます。

コストとトークン消費の管理

サブエージェントを多用するとAPIトークン消費量が急増します。特に並列サブエージェント数が増えると、コストが線形ではなく指数的に増加する場合があります。弊社での管理方法として以下を実践しています。

  • 定期的なusage確認(/costコマンドで現セッションのコスト確認)
  • 巨大ファイルを直接渡さず、必要な部分のみをサブエージェントに渡す
  • 試験的なタスクはまず小規模のサブセットで実行してから本番適用する
  • Claude 3.5 HaikuやClaude 3.7 Sonnetの使い分け(複雑な推論が不要なサブタスクにはより軽量なモデルを指定)

サブエージェントのセキュリティと許可モデル

Claude Codeはデフォルトで、危険な操作(本番DBへの書き込み、外部ネットワークへの無制限アクセス等)の前に人間の承認(ヒューマン・イン・ザ・ループ)を求める設計になっています。サブエージェントはこの設計を継承しています。

具体的な制御方法として以下があります。

  • –allowedTools / –disallowedTools フラグ:サブエージェントに渡すツールセットをCLIオプションで明示的に制限できます。
  • –permission-mode オプションdefault(対話的に確認)、acceptEdits(ファイル編集は自動承認)、bypassPermissions(全自動・CI環境向け)の3モードから選択できます。
  • MCPサーバーのスコープ制限:外部ツール連携を行うMCPサーバーにも、アクセス可能なリソースを制限する設定が可能です。

弊社では開発環境ではacceptEditsモードを使いつつ、本番環境に近いリポジトリへのアクセスが発生する作業では必ずdefaultモードに戻して人間が確認するルールを設けています。この使い分けが、自動化の効率と安全性を両立する上で重要です。

サブエージェントが階層的に連携するマルチエージェント構造のイメージ
サブエージェントが階層的に連携するマルチエージェント構造のイメージ

サブエージェント利用時のよくある問題と対処法

問題 原因 対処法
サブエージェントが関係ないファイルを編集する 対象スコープの指示が曖昧 「src/user/配下のみ対象」と明示する
APIレート制限エラーが発生する 並列サブエージェント数が多すぎる 並列数を減らす、またはCLAUDE.mdに制限を記載
サブエージェント間で矛盾する変更が生じる 担当ファイルの境界が不明確 各サブエージェントの担当ファイルを排他的に指定
サブエージェントの出力品質がばらつく 共通ルールが各エージェントに伝わっていない CLAUDE.mdに規約を集約する
コスト予算を超過する トークン消費の見積もり不足 小規模テストを先行させてからスケールアップ
エラーの原因がどのサブエージェントか不明 実行ログの粒度が粗い 各サブタスクに識別名を付けてログを整理する

オーケストレーターモードとサブエージェントモードの違い

Claude Codeを呼び出す際、どのモードで動作しているかを意識することが重要です。

  • 通常の対話モード:ユーザーとClaudeが1対1でやりとり。ツールを使いながらタスクを完結させる基本的な動作。
  • オーケストレーターモード(–agent / エージェントループ):Claudeがオーケストレーターとして機能し、必要に応じてサブエージェントを起動する。複雑な複合タスクに向く。
  • サブエージェントとして起動される場合:オーケストレーターから受け取ったプロンプトとツールセットのみで動作する専門実行単位。

Claude Code CLIでは、claude --agentフラグや、Claude.aiのAPIからヘッドレスで起動する際のパラメータによってこれらを切り替えられます。また、Claudeが自律的にサブエージェントを起動するかどうかは、与えられたタスクの複雑さとツールのTaskへのアクセス可否によって決まります。

まとめ

Claude Codeのサブエージェントは、複雑な開発タスクを分解・並列化し、コンテキスト制限を超えた大規模処理を可能にする中核的な仕組みです。オーケストレーターがTaskツールを通じて子エージェントを起動し、それぞれが独立したコンテキストで専門的な役割を担う。この構造を理解することが、Claude Codeを単なる補完ツールではなく、真のエンジニアリングパートナーとして活用する第一歩です。

実践上のポイントとして改めて整理します。

  • CLAUDE.mdにプロジェクト共通ルールを集約し、全サブエージェントの一貫性を担保する
  • 各サブエージェントの担当スコープ(ファイル範囲・ツール制限)を明示的に指定する
  • 並列数の上限を意識し、APIレート制限・コストをモニタリングする
  • セキュリティ要件に応じてパーミッションモードを使い分ける
  • 階層の深さは実用上2〜3段階に留め、複雑化しすぎない設計を心がける

弊社でもサブエージェントの活用度合いを高めるにつれ、単純な作業時間の短縮にとどまらず、「人間が検討すべき本質的な問題」に集中できる時間が増えました。サブエージェントの仕組みを正しく把握することが、Claude Codeを最大限に引き出す鍵です。

関連記事

AIブログ購読

 
クリスタルメソッドがお届けする
AIブログの更新通知を受け取る

Study about AI

AIについて学ぶ

  • claude code 権限設定|2026年版ガイド

    claude code 権限設定|2026年版ガイド

    Claude Code 権限設定の完全ガイド|実務で使える設定例と運用ノウハウ Claude Codeを業務で活用する際、最初の壁になるのが権限設定です。ファイ...

  • claude code 拡張機能|2026年版ガイド

    claude code 拡張機能|2026年版ガイド

    Claude Code 拡張機能とは——できることと全体像 Claude Codeは、AnthropicのAIアシスタント「Claude」をターミナル上で動かす...

  • claude code 学習させない設定|2026年版ガイド

    claude code 学習させない設定|2026年版ガイド

    Claude Codeに学習させない設定とは何か Claude Codeを業務で使っていると「自分が入力したコードや会話内容がAnthropicのAI学習に使わ...

View more