【Claude Code】サブエージェントを並列で実行して処理時間を短縮&コンテキスト圧縮を避ける方法

Claude Codeでサブエージェントを並列で実行して処理時間を短縮&コンテキスト圧縮を避ける方法です。

Claude Code 1.0.62

サブエージェントとは

Claude Codeのアップデートにより、「カスタムエージェント」を作成できるようになりました。
例えば「コードレビューをする役割のカスタムエージェント」を作っておいて、それをメインのエージェント(普段対話しているエージェント)からサブエージェントとして呼び出すことが可能です。

サブエージェントとして呼び出すと、以下のメリットが享受できます。

  • エージェントごとにコンテキストが分離されているため、独立したタスクをサブエージェントに委譲することでコンテキストを節約できる
  • サブエージェントは並列で実行できるため、複数のタスクを同時処理できる
  • 一度作成したサブエージェントは様々な場面で再利用できる

詳細については 公式ドキュメント もご参照ください。

本記事ではこのサブエージェントを作って、以下のポストのようにそれらを並列実行する方法を紹介します。

カスタムエージェントの作成方法

カスタムエージェントは/agentコマンドからClaude Codeとの対話形式で作成することが可能です。推奨らしいので一度やってみることをお勧めします。
が、細かい制御がしづらいので本記事では手動で作成していきます。

ここでは例として、簡単な命名規則チェック用のエージェントを作成してみましょう。中身は適当です。

---
name: naming-checker
description: コードの命名規則をチェックするエージェント
color: green
---

# 命名規則チェック用の指示
あなたはコードの命名規則をチェックする専門エージェントです。
以下の観点から命名をレビューしてください。

- 変数名、関数名の命名が適切か
- キャメルケース、スネークケースなどの記法が統一されているか
- 意味のある名前が付けられているか
- 省略形の使用が適切か

レビュー結果は具体的な改善提案とともに報告してください。

上部に書いてあるname, descriptionがそれぞれカスタムエージェントの名前と説明です。
colorについては次節で説明します。

これを、.claude/agents/naming-checker.md に保存します(このあたり他の設定ファイルと同様なので詳細は割愛)。

動作確認

作成したカスタムエージェントは、Claude Codeを再起動した後、@マークを使用して呼び出すことができます。
途中まで名前を打ち込むと、下図のようにエージェントの候補が表示されます。

エージェントの候補

以下のようにレビューを依頼してみます。

@naming-checker 最新のコミットをレビューして

すると先ほど作成したカスタムエージェントをサブエージェントとして起動してレビューをしてくれます。

サブエージェントを起動

こんな感じでカスタムエージェントは単体で実行ができるので、動作確認もしやすいし再利用性も高いと言えます。

なお前節で指定した color はここでエージェント名の背景色として使われます。地味に便利なので適当な色を設定しておくといいです。
下図の色が使えるようです。

複数のサブエージェントを並列実行

さて複数のサブエージェントを並列で実行することで、従来の逐次処理と比較して処理時間を大幅に短縮できます。
例えば、命名規則チェック、パフォーマンス分析、セキュリティチェックなどを同時に実行できます。

この動作を簡単に確認するために、もう一つカスタムエージェントを作ってみます。

---
name: performance-analyzer
description: コードのパフォーマンスを分析するエージェント
color: purple
---

# パフォーマンス分析用の指示
あなたはコードのパフォーマンスを分析する専門エージェントです。
以下の観点からパフォーマンスをレビューしてください。

- アルゴリズムの時間計算量・空間計算量
- ループの効率性とネストの深さ
- データ構造の適切性
- 無駄な処理や重複処理の有無
- メモリリークの可能性
- データベースアクセスやAPI呼び出しの最適化

パフォーマンス上の問題を発見した場合は、具体的な改善案と推定される効果を含めて報告してください。

これを先ほどのエージェントと同様に保存して、Claude Codeを再起動して以下のように依頼します。

@agent-naming-checker と @agent-performance-analyzer を同時に起動して、最新のコミットをレビューして

すると下図のように二つのサブエージェントが立ち上がって並列で処理を行ってくれます。結果はメインのエージェントが教えてくれます。

並列実行

ちなみに僕が使った感じ、並列にと指示をしても逐次処理されてしまうことがあったのですが、そういう時は以下のポストのようにしたら解決したので試してみてください

参考

docs.anthropic.com