1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code のサブエージェント機能を実務に導入する:.claude/agents/ 設計から Git Worktree 並列実行まで

1
Posted at

「一人で全部やらせる」ことの限界にぶつかった

Claude Code を使い始めると、最初は「なんでも一発でやってくれる」という感動がある。しかしプロジェクトが複雑になるにつれ、いくつかの問題に直面し始める。

  • コンテキスト汚染: 長い会話の中で、前の作業のゴミが邪魔になる
  • 並列作業できない: 「リファクタリングしつつテストを修正する」ような並列タスクが直列になる
  • 毎回同じ説明をする: 「このプロジェクトではTypeScriptを使っている」「テストフレームワークはVitestだ」を毎回伝えないといけない

この課題を解決するのが、.claude/agents/ ディレクトリへのサブエージェント定義と、Git Worktree を使った並列実行だ。実際に運用してわかったことをまとめる。

.claude/agents/ ディレクトリとは何か

.claude/agents/ はプロジェクトルートに置くディレクトリで、専門化されたサブエージェントを Markdown で定義できる場所だ。

my-project/
├── .claude/
│   ├── agents/
│   │   ├── code-reviewer.md
│   │   ├── test-writer.md
│   │   └── db-migrator.md
│   └── settings.json
├── src/
└── package.json

各エージェント定義ファイルには、フロントマターでメタデータを書き、本文にそのエージェントへの指示を書く。

---
name: code-reviewer
description: コードレビューを行うエージェント。PRのdiffを受け取り、品質・セキュリティ・命名の問題を指摘する
tools:
  - Read
  - Grep
  - Bash
---

あなたはコードレビュアーです。以下の観点でレビューを行ってください:

1. **セキュリティ**: SQL injection, XSS, 認証漏れ
2. **品質**: 単一責任の原則、テスタビリティ
3. **命名**: 意図が伝わる変数名・関数名か

指摘は具体的に、ファイル名と行番号を含めてください。

CLAUDE.md がプロジェクト全体の方針を書く場所なのに対し、.claude/agents/繰り返し発生する特定タスクの手順書を置く場所だ。

実際に使ってみた:3つのユースケース

ユースケース1:PRレビューのサブエージェント化

最もシンプルな使い方が、PRレビューの定型化だ。

---
name: pr-reviewer
description: GitHub PRのdiffをレビューし、問題を指摘する
tools:
  - Bash
  - Read
  - Grep
---

以下の手順でPRをレビューしてください:

1. `git diff main...HEAD` でdiffを取得
2. 変更されたファイルを個別に確認
3. セキュリティ・品質・命名の問題を重大度(Critical/Major/Minor)で分類して報告

## このプロジェクト固有のルール
- テストフレームワークは Vitest を使う。Jest の記法を混在させないこと
- 型引数の省略禁止(`useState<string>``useState` にしない)
- コミットは Conventional Commits に従う

Critical な問題がある場合は、作業を止めてユーザーに報告すること。

効果: 「このプロジェクトのルール」を毎回説明する必要がなくなった。エージェントを呼び出すたびに tools に記載したものだけが使えるので、意図しないファイル変更も防げる。

ユースケース2:Git Worktree を使った並列実行

サブエージェントの真価は、複数を同時に走らせるときに発揮される。ここで Git Worktree が活躍する。

Git Worktree は、1つのリポジトリに対して複数の作業ディレクトリを持てる機能だ。通常の git checkout では1つのブランチしか同時に扱えないが、git worktree add を使うと別ディレクトリで別ブランチを同時に開ける。

# メインの作業ディレクトリ(既存)
/my-project/   (main branch)

# 並列作業用のworktreeを2つ追加
git worktree add ../my-project-refactor feature/refactor
git worktree add ../my-project-tests feature/add-tests

これをClaude Codeと組み合わせると、2つの作業を独立して同時進行できる。

# ターミナル1: リファクタリング担当
cd ../my-project-refactor
claude "srcディレクトリのコンポーネントをリファクタリングして。テストは壊さないこと"

# ターミナル2: テスト追加担当(同時に実行)
cd ../my-project-tests
claude "カバレッジが50%以下のファイルにテストを追加して"

2つのエージェントは互いのファイル変更に干渉しない。それぞれ独立したブランチ・独立したディレクトリで作業しているからだ。

実際の体験: 本来なら直列で2時間かかる作業が、1時間強に短縮できた。重要なのは「ブランチが分かれているので、片方が失敗しても影響がない」という安心感だ。壊れたworktreeは git worktree remove で削除するだけで済む。

ユースケース3:DBマイグレーションの安全な自動化

DBマイグレーションは怖い作業だが、専用サブエージェントで安全性を高められる。

---
name: db-migrator
description: データベースマイグレーションを安全に生成・レビューする
tools:
  - Read
  - Bash
  - Write
---

データベースマイグレーションを行います。以下のルールを必ず守ってください:

## 必須チェックリスト
- 既存のマイグレーションファイルを全て確認してから新規作成する
- ロールバック手順(down migration)を必ず含める
- NOT NULL カラムの追加には必ずデフォルト値を設定する
- インデックスの追加は CONCURRENTLY を使う(PostgreSQL)

## 禁止事項
- カラムの削除(非推奨化してから次のPRで削除すること)
- テーブルのリネーム(アプリケーション側と同時変更が必要なため)

**作業前に必ずユーザーに計画を説明し、承認を得てから実行すること。**

「やっていいこと・いけないこと」を定義しておくと、エージェントが危険な操作を自主的に避けるようになる。これは Claude Code Hooks と組み合わせると更に安全にできる(Hooks については別記事で解説している)。

運用してわかった注意点

agents/ の粒度は「週2回以上使う作業」が目安

サブエージェントを定義すると便利だが、多すぎるとどれを使えばいいか迷う。経験上、週2回以上繰り返す作業を対象にするのが適切な粒度だった。

一度しかやらない作業はその場で直接依頼すれば十分だ。現在運用中のサブエージェントは 4〜5個が管理しやすいと感じている。

Git Worktree は事後のマージコストを意識する

並列実行で速くなっても、最終的にブランチをマージする必要がある。同じファイルを2つのエージェントが変更するとコンフリクトが発生する。

対策: ファイルの担当範囲を事前に分割する。「エージェントAは src/components/、エージェントBは src/utils/」のように役割を切り分けることで、コンフリクトを大幅に減らせた。分割できない場合は、片方が完了してからもう片方を実行する直列実行に戻す。

エージェント定義は100行以内に保つ

サブエージェント定義に長大な説明を書きすぎると、トークン消費が増えてかえって遅くなる。.claude/agents/ のファイルは 100行以内を目安に、重要なルールだけを書くようにした。詳細な背景知識は CLAUDE.md に書いて全エージェントが参照できるようにする方が効率的だ。

CLAUDE.md とサブエージェントの使い分け

混乱しやすいのが、CLAUDE.md とサブエージェント定義の違いだ。

CLAUDE.md .claude/agents/
対象 全セッション共通 特定の繰り返しタスク
内容 プロジェクト全体のルール タスク固有の手順・禁止事項
粒度 粗い(方針レベル) 細かい(手順レベル)
更新頻度 低い(月1回程度) 中程度(気づいたら随時)

CLAUDE.md には「このプロジェクトはTypeScriptを使う」「コミットはConventional Commitsに従う」といったプロジェクト全体ルールを書く。サブエージェント定義には「PRレビューのときはこの順番で確認する」という作業固有の手順を書く。

両者を使い分けることで「全体ルールはCLAUDE.mdで一元管理、タスク固有の手順はagents/で専門化」という構造になる。

サブエージェントが変えた開発体験

.claude/agents/ と Git Worktree の組み合わせで、3つの変化を実感した。

1. 説明の重複がなくなった
毎回「このプロジェクトのルール」を説明する必要がない。定義ファイルに書いておけばエージェントが自動的に参照する。

2. 並列実行で待ち時間が減った
2つの独立したタスクを同時に進められる。片方がLLMの回答を待っている間、もう片方は別の作業を進めている。

3. エージェントの行動が予測可能になった
禁止事項を定義することでミスが減った。「なぜかDBのカラムを消された」というような意図しない操作が激減した。

まずは1つのサブエージェント定義から始めることをお勧めする。週2回以上やっている繰り返し作業があれば、それがサブエージェント化の候補だ。


Claude Code の Hooks 機能(PostToolUse, Stop, Notification など)については Claude Code Hooks 完全ガイド で詳しく解説しています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?