4章 §2-A・マルチエージェントチーム実習 (Claude中心)
空の実習フォルダから始めてClaude Desktop App/Claude Codeを中心にシナリオを体験する実習ガイド — Desktopアプリを基準に案内し、CLI対応を続けて紹介する | ← 4章 §1 リファレンス文書に戻る | 4章 §2-B Antigravity中心 →
AGENTS.md仕様として記述し、その仕様をClaude系では事前定義サブエージェントファイルとして「実装」する順序に従う(2章 §5 AGENTS.md参照)。定義は一つ、実行方式のみがツールごとに異なるという原則を手作業で確認することがこの実習の核心的な目標です。Antigravityでの対応方法は4章 §2-Bを参照します。
準備: 必要なプログラムのインストール
以下の実習はClaude Desktop AppとClaude Code(CLI)を中心に進められます。ローカル環境にこれらのツールがまだない場合は、このハンドブックに同梱されている環境設定自動化ツールであるセットアップガイドが、この章の実習に正確に必要な構成を自動的にインストールします。案内に従ってスクリプトをダウンロードし、ローカルで実行すればよいです。
スクリプトを実行する前に事前インストールチェックリストを先に読んでください。この文書には以下の前提条件がまとめられています。
- アクティブなClaude Pro/MaxサブスクリプションおよびAntigravity使用のためのGoogleアカウント(個別のAPIキーではなく、サブスクリプション/アカウントベースのプランである必要があります)
gh auth loginを実行できるGitHubアカウント- 最低5GBの空きディスク容量
- 管理者(admin)またはsudo権限
① ブラウザでgithub.com/signupにアクセスします。
② メールアドレス、パスワード、ユーザー名(username)を入力します — usernameは後でリポジトリURL(
github.com/<username>/...)にそのまま使われるため慎重に決めてください。③ 自動登録防止のためのパズル/コード認証を通過します。
④ 登録時に入力したメールに届いた認証メールを開き、メール認証を完了します — このステップをスキップすると、その後の
gh auth loginやリポジトリ作成がブロックされる可能性があります。⑤ 無料(Free)プランで登録すれば十分です — このハンドブックの実習・PR練習に有料プランは必要ありません。
登録が終わったら、GitHub CLI(
gh)が上記インストールスクリプトに含まれて一緒にインストールされ、以下のgh auth loginコマンドでターミナルをそのアカウントと接続します。
gh auth login # 案内に従って: GitHub.com選択 → HTTPS選択 → ブラウザでログイン(推奨)選択 # ブラウザが開いたら、さっき作成したアカウントでログインして認証コードを確認します
Windowsでインストールする
このハンドブックのパス表記はWindows基準ですので、Windowsユーザーは以下のコマンドで5throck/setupリポジトリをクローンし、PowerShellを管理者権限で実行した後、続くコマンドを実行します。
① スタートメニューを開いて
PowerShellを検索します。② 検索結果の「Windows PowerShell」をマウス右クリックします。
③ 表示されるメニューから「管理者として実行」を選択します。
④ ユーザーアカウント制御(UAC)ウィンドウが表示されたら「はい」を押して承認します。
ウィンドウのタイトルバーに
管理者: Windows PowerShellのように「管理者」が付いていれば正しく開いています。wingetインストールなど一部のステップは管理者権限なしで実行するとエラーになったり、静かにスキップされる可能性があります。
git clone https://github.com/5throck/setup.git cd ./setup .\setup-windows.ps1 # 選択オプション: -WSL2, -WezTerm, -Docker, -Force (既にインストールされているツールも再インストール)
スクリプトが終了したら、ターミナルを完全に閉じてから再度開くとPATH変更が適用されます。
macOS / Linuxでインストールする
以下のコマンドで5throck/setupリポジトリをクローンして使用します。macOSはsetup-mac.sh、Linuxはsetup-linux.shを実行し、どちらも--wezterm、--docker選択フラグをサポートしています。
git clone https://github.com/5throck/setup.git # macOS cd ./setup && bash setup-mac.sh # Linux cd ./setup && bash setup-linux.sh
インストールの検証
OSに関わらず、setup-common.tsをbunで実行すると、インストール状態をチェックするチェックリスト表が出力されます。すべての項目が✅で表示されれば、以下の実習を進める準備が整ったことになります。
cd ./setup && bun setup-common.ts
このプロジェクトがインストールするツールのうち、この章の4ツール実習と直接関連するものは以下の通りです。Claude Desktop App、claude(Claude Code CLI)、Antigravity(Desktop)、agy(Antigravity CLI)、および.claude/agents/*.mdベースのサブエージェント実行に必要なbun、以降の章で使用されるgh(GitHub CLI)まで一緒にインストールされます。
agy)は別途ランタイムインストールが必要ない単一コンパイルバイナリです — 解凍後にPATHに入れるだけで即座に実行できます。古い資料に残っている「Geminiコマンドラインインターフェース(CLI)をnpmでグローバルインストール」のような案内はもはや有効ではありません。最新のインストール方法はantigravity.google/docs/cli/getting-startedで確認してください。
%USERPROFILE%\workshop-setup-logs\フォルダにログが残ります。問題を解決する際はこのログから確認してください。
harness-lab/を新規作成し、reviewer役割をツール中立的なAGENTS.md仕様として先に記述した後、Claude Desktop Appで事前定義サブエージェントとして「実装」して呼び出してみます。このフォルダは実習専用のため、他のプロジェクトファイルと混ざりません。
-
① 実習フォルダの作成と移動
現在のフォルダの下に
harness-labフォルダを新規作成し、その中に移動します。以降のすべてのコマンドはこのフォルダ内で実行します。mkdir -p harness-lab cd harness-lab
-
② 共通役割仕様の作成 —
AGENTS.mdClaudeやAntigravity、その他AGENTS.md標準をサポートするどのツールで開いても同じ意味で読み取れるよう、
reviewer役割をツール依存の表現なしに純粋なテキストで記述します。このファイル一つが「何をする役割か」の唯一のオリジナルとなり、以下の二つのツールは各々の方式でこのオリジナルを実装するだけです。macOS/Linux/Git Bashでは以下のコマンドをそのまま使用します。cat > AGENTS.md << 'EOF' ## Agent: reviewer Role: Review text files for typos, logical flaws, and improvement points. Input: Path to the text file to be reviewed Output: List of typos, logical flaws, and improvement points Permissions: Read-only — does not directly modify files. EOF
Windows PowerShellでは
catコマンド自体はGet-Contentのエイリアスとしてファイル読み取りにそのまま使用できます。ただし<< 'EOF'のように複数行を直接入力するheredoc構文はサポートされていないため、同じ内容は引用符付きのhere-string(@'...'@)で作成してSet-Contentでファイルに書き込みます。@' ## Agent: reviewer Role: Review text files for typos, logical flaws, and improvement points. Input: Path to the text file to be reviewed Output: List of typos, logical flaws, and improvement points Permissions: Read-only — does not directly modify files. '@ | Set-Content AGENTS.md
ターミナルや別のエディタで事前にファイルを作成しません。以下の3ステップをそのまま実行します — 灰色のコードボックスはすべて「コピー」ボタンでそのままコピーして貼り付ければよい内容です。
-
① Claude Desktop Appでプロジェクトを開く
Claude Desktop Appを実行し、さっき作成した
harness-lab/フォルダをプロジェクトとして開きます。 -
② サブエージェント作成リクエスト — チャットウィンドウに以下の文をそのまま貼り付けて送信
AGENTS.mdに記載されているreviewer役割仕様に従って、.claude/agents/reviewer.mdにreviewerサブエージェントを作成してください。toolsはRead、Grepのみを許可し、modelはsonnetに設定してください。
Claude Desktop AppはAGENTS.mdの「役割/入力/出力/権限」仕様を読み取り、その内容を.claude/agents/reviewer.mdのYAML frontmatter(description、tools)とシステムプロンプトに移してWriteツールで直接生成します。仕様はそのままで、表現形式だけがツールに合わせて変わったのです — 生成が終わったら、チャットに表示されたファイル内容をAGENTS.mdと比較してみてください。 -
③ レビュー対象ファイルの作成 + サブエージェントの呼び出し — 同じチャットウィンドウに続けて貼り付けて送信
notes.txtファイルを作成し、「このプロジェクトは非常に良い。これはとても良い。」と書き込んだ後、reviewerサブエージェントでnotes.txtをレビューしてください。
Claude Desktop AppはAgent(Task)ツールをdescription="notes.txtのレビュー"、subagent_type="reviewer"で呼び出します。画面にはサブエージェントがスポーンされる過程と、作業を終えた後にメインセッションに戻る要約結果が順番に表示されます。
Claude Code(CLI)でも同様に — ターミナルでclaudeを実行した後、②③の文をそのままチャットに貼り付ければ、コマンドラインインターフェース(CLI)が同じようにAGENTS.md仕様を読み取り.claude/agents/reviewer.mdを直接生成・呼び出します。CLIでは追加でPostToolUseなどの自動化フックが発火するという違いがあります(Appではフックは発火しません)。
harness-lab/.claude/agents/reviewer.mdファイルが実際に生成されたか、その中のdescription・tools・modelフィールドが要求通りになっているか確認します。最後の応答には、誤字・論理的欠陥・改善点を分けたリストが表示されるのが正常です — reviewerが「修正しました」のような返答をした場合はtools制限が正しく適用されていません。
reviewerサブエイジェントでという表現が抜けているか、.claude/agents/reviewer.mdの生成が先に完了していない状態で③をリクエストした場合です。②の応答でファイル生成が終わっているか先に確認してから③を送信してください。
harness-lab/フォルダで、二つ目の役割writerもG-1と同じ方式でAGENTS.mdに先に仕様を記述した後、Claude Desktop Appに事前定義サブエージェントとして実装します。writerが先に草稿を書き、reviewerがその結果を批評するパイプラインを順序を守って指揮させます。
-
共通役割仕様の追加 —
AGENTS.mdにwriter項目を追記G-1で作成した同じ
AGENTS.mdにwriter役割を続けて記述します。reviewer項目はそのまま残し、以下の内容だけを追加します。macOS/Linux/Git Bashでは以下のコマンドをそのまま使用します。cat >> AGENTS.md << 'EOF' ## Agent: writer Role: Write a short draft of 3-5 sentences on a given topic. Input: Topic, file path to save Output: Draft text file Permissions: Write allowed — saves only to the specified file. handoff_to: reviewer (proceeds to review after draft completion) EOF
Windows PowerShellでは here-stringを
Add-Contentで追記します(Set-Contentはファイルを上書きするため、必ずAdd-Contentを使用してreviewer項目が消えないようにしてください)。@' ## Agent: writer Role: Write a short draft of 3-5 sentences on a given topic. Input: Topic, file path to save Output: Draft text file Permissions: Write allowed — saves only to the specified file. handoff_to: reviewer (proceeds to review after draft completion) '@ | Add-Content AGENTS.md
G-1と同様にファイルを事前に準備しません。G-1で開いておいた同じharness-lab/チャットで続けて進めます。
-
① writerサブエージェント作成リクエスト — チャットウィンドウにそのまま貼り付けて送信
AGENTS.mdに記載されているwriter役割仕様に従って、.claude/agents/writer.mdにwriterサブエージェントを作成してください。toolsはWrite、Readを許可し、modelはsonnetに設定してください。
Claude Desktop AppはAGENTS.mdのwriter仕様を読み取り、Writeツールで.claude/agents/writer.mdを直接生成します。G-1で既に作成しておいたreviewer.mdと同じ.claude/agents/フォルダ内に並んで配置されます — AGENTS.mdのhandoff_to: reviewerが次のステップで実際に繋がります。 -
② writer → reviewer 順次パイプライン実行リクエスト — 同じチャットウィンドウに続けて貼り付けて送信
writerサブエージェントでdraft.txtに「リモートワークの利点」というトピックの草稿を書かせ、完了したらreviewerサブエージェントでdraft.txtをレビューしてください。二つのステップを順番に進めてください。
メインセッションはまずsubagent_type="writer"でAgentを呼び出してdraft.txtを生成させ、その結果が戻ってきてから初めてsubagent_type="reviewer"呼び出しを送ります。二つの専門家間の依存関係を調整するのは、サブエージェントではなくメインセッションの役割です。
writer呼び出し → 完了 → reviewer呼び出し → 完了の順序で二回のサブエージェントスポーンが表示されるのが正常です。一度しか表示されない場合は、オーケストレーターがパイプラインを一つのステップにまとめてしまった可能性があるため、リクエスト文に「順番に」が明示されているか再度確認してください。完了後、harness-lab/draft.txtを開いて草稿が実際に保存されているかも確認します。
Claude Code(CLI)でも同様に — 同じwriter.md/reviewer.mdをそのまま使用し、ターミナルで①②の文をそのまま貼り付ければ同様に順次ディスパッチされます。
writer・reviewer二つのサブエージェントはそのまま残し、リクエストの性質だけを変えながらオーケストレーターが実際に誰を、何回、どの順序で呼び出すか観察します — サブエージェント定義は一度も新しく作成しないことが核心です。
D-1を終えた同じチャットで続けて進めます。毎回どのサブエージェントが何回呼び出されるか、画面に表示される過程に注目します。
-
① 単純リクエスト — reviewer一つだけが必要な場合
draft.txtの誤字だけをざっと見てください。
オーケストレーターは今回のリクエストにwriterが必要ないと判断し、reviewer一つだけを呼び出します。同じチーム(writer+reviewer)が定義されていても、実際に投入される要員はリクエスト毎にオーケストレーターがその都度決定するということを示す最も単純な例です。 -
② 複合リクエスト — writerとreviewerを二視点で組み合わせ
draft2.txtに「週4日勤務制」というトピックで新しい草稿を書いてください。草稿が完了したら、その草稿を文法視点と論理視点の二つでそれぞれ独立して同時にレビューしてください。
今回はwriter一回(パイプラインの最初のステップ)の後に、reviewerが「文法視点」と「論理視点」という異なる指示を受けて二回同時に(ファンアウト)呼び出されます。パイプライン(writer → reviewer)とファンアウト(reviewer ×2同時実行)という二つのオーケストレーションパターンが一つのリクエスト内で組み合わされることを確認できます — 同じ二つのサブエージェントで①とは完全に異なる形状のワークフローが作られました。
.claude/agents/に事前に固定されていますが、後者は毎リクエスト毎に新しく決定されます。
Claude Code(CLI)でも同様に — 同じwriter.md/reviewer.mdをそのまま使用し、ターミナルで①②の文をそのまま貼り付ければ同様に動作します。
topic-a.txt、topic-b.txt草稿作成)をClaude Code Agent Teamsで並列に回してみます。
同じharness-lab/フォルダで実験的機能であるAgent Teamsを有効化します。Desktop AppではteammateModeは必ずin-processでなければなりません(tmuxはサポートされていません)。
-
① 設定ファイルの作成 (ターミナル) —
.claude/settings.jsonがない場合は新規作成、ある場合は以下の二つのキーをマージmacOS/Linux/Git Bashでは以下のコマンドをそのまま使用します。
このコマンドは.claude/settings.jsonファイル全体を上書きします。既に他の設定が入っているファイルの場合は、既存の内容がすべて消えるため、必要な設定がある場合は事前にバックアップするか、以下の内容を手動でマージしてください。cat > .claude/settings.json << 'EOF' { "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" }, "teammateMode": "in-process" } EOFWindows PowerShellでは here-stringで同じファイルを作成します。
@' { "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" }, "teammateMode": "in-process" } '@ | Set-Content .claude/settings.json -
② Claude Desktop Appの再起動
設定を適用するには、Claude Desktop Appを完全に終了してから再度開きます。
-
③ チームメイト並列スポーンリクエスト — チャットウィンドウに以下の文をそのまま貼り付けて送信
writerチームメイト二名を並列でスポーンして、一つはtopic-a.txtに「在宅勤務」、もう一つはtopic-b.txtに「週4日勤務制」の草稿を同時に書かせてください。各ファイルが完了したらreviewerチームメイトがレビューするようにし、共有作業リストも表示してください。
topic-a.txt/topic-b.txt間に依存関係がないため同時に進行し、チームメイト間ではSendMessageで直接メッセージをやり取りすることもできます。ただしDesktop Appでは一部のキーボードナビゲーション(Shift+Downなど)が制限されます。
.claude/settings.jsonがharness-lab/フォルダ基準で保存されたか(別のフォルダに保存すると認識されません)、②②でClaude Desktop Appを完全に再起動したかの二点を見落としている場合です。JSON構文エラー(カンマの欠落など)で設定ファイル自体が無視される場合も多いため、エディタで開いて構文を再度確認してください。
Claude Code(CLI)でも同様に — 同じ設定と同じリクエスト文がそのまま動作します。CLIではのみteammateMode: "tmux"を追加で選択でき、tmux分割ウィンドウで各チームメイトの画面を並べて見ることができる点がDesktop Appと異なります。
G-1のnotes.txtより少し複雑で、論理的欠陥がある文章を用意します。チャットウィンドウに以下の文をそのまま貼り付けます。
-
① レビュー対象ファイルの準備
argument.txtファイルを作成し、以下の内容を書き込んでください: 「在宅勤務は常にオフィス勤務より生産的である。なぜなら、在宅勤務をしている人々が在宅勤務が良いと言っているからである。したがって、すべての会社は在宅勤務のみを行うべきである。」
-
② haikuティアでレビュー
チャットウィンドウに以下の文をそのまま貼り付けます。Claude Desktop Appは
reviewer.mdのmodelフィールドをhaikuに変更した後、レビューを実行します。.claude/agents/reviewer.mdのmodelフィールドをhaikuに変更してください。そしてargument.txtをreviewerサブエージェントでレビューしてください。
-
③ sonnetティアで同じリクエストを繰り返す
同じ方式で
modelをsonnetに変更してからレビューします。循環論法(circular reasoning)などの論理的欠陥を正確に指摘できるか、haiku結果と比較します。.claude/agents/reviewer.mdのmodelフィールドをsonnetに変更してください。そしてargument.txtをreviewerサブエージェントでレビューしてください。
-
④ opusティアで同じリクエストを繰り返す
同じ方式で
modelをopusに変更してからレビューします。応答時間と指摘の深さが②③とどう異なるか記録します。.claude/agents/reviewer.mdのmodelフィールドをopusに変更してください。そしてargument.txtをreviewerサブエージェントでレビューしてください。
.claude/agents/reviewer.mdを直接開いてmodel:値がhaiku/sonnet/opusのうち意図した値と正確に一致しているか確認してください。
実習の最終整理
5つのシナリオをすべて終えたら、harness-lab/フォルダをどうするか整理します。次章(5章)では新しい実習フォルダを使用するため、必ず残しておく必要はありませんが、今まで作成したAGENTS.md・サブエージェント定義を比較してみたい場合は、削除前に一度眺めておくことをお勧めします。
もう必要ない場合は、フォルダ全体を削除します。macOS/Linux/Git Bashでは以下のコマンドをそのまま使用します。
cd .. rm -rf harness-lab
Windows PowerShellでは
cd .. Remove-Item -Recurse -Force harness-lab
git init && git add -A && git commit -m "harness-lab実習記録"でローカルコミットだけ残す方法もあります。その後参考資料として置いておき、次章の実習は別の新しいフォルダで開始しても構いません。
.claude/settings.jsonに有効化したCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMSフラグはharness-lab/フォルダのみに適用される設定のため、フォルダを削除すると一緒に消えます。他のプロジェクトでもAgent Teamsを継続して使用したい場合は、そのプロジェクトの.claude/settings.jsonに同じ設定を別途追加する必要があります。
参考動画
- ENIntroducing Claude Code — Anthropic公式Claude Code紹介動画
- JA【初心者】Claude Codeの全体像がたった9分で丸分かり! — Claude Codeの全体像を非エンジニアにもわかりやすく解説
Claude Code/App 2026-07基準 | 2026年7月14日作成
← 4章 §1 マルチエージェントチーム活用リファレンス · 4章 §2-B Antigravity中心実習 · 5章 ai-workspace-standards紹介 →