[開発者向け]GitHub Copilot CLIの「/fleet」で複数エージェントを並列実行する方法

目次

はじめに

 GitHub Blogが2026年4月1日に公開した記事によると、GitHub Copilot CLIに複数のサブエージェントを並列実行できるスラッシュコマンド「/fleet」が追加されました。本稿では、/fleetの仕組みと効果的なプロンプトの書き方、注意すべき落とし穴について解説します。

参考記事

要点

  • /fleetはGitHub Copilot CLIのスラッシュコマンドで、バックグラウンドのオーケストレーターが複数のサブエージェントを並列にディスパッチして同時実行する
  • オーケストレーターはタスクを依存関係のある個別の作業単位に分解し、並列実行と直列実行を自動的に制御する
  • サブエージェントはファイルシステムを共有するが相互通信はできず、調整はすべてオーケストレーター経由で行われる
  • .github/agents/にカスタムエージェントを定義することで、タスクの種類に応じたモデルやツールを使い分けられる
  • ファイルロック機能がないため、複数エージェントが同一ファイルを書き込む場合は上書きが発生するリスクがある

詳細解説

/fleetとは何か

 /fleetは、GitHub Copilot CLIに追加されたスラッシュコマンドです。通常のCopilotがタスクを逐次処理するのに対し、/fleetはバックグラウンドのオーケストレーターが作業計画を立て、独立した複数のサブエージェントを同時に起動します。

 GitHub Blogによれば、オーケストレーターは次の流れで動作します。まずタスクを依存関係つきの個別作業単位に分解し、並列実行できる項目と待機が必要な項目を識別します。次に独立した項目を複数のサブエージェントとしてバックグラウンドに展開し、完了を確認しながら次のウェーブを送り出します。最終的に出力を検証し、成果物を統合します。各サブエージェントは独自のコンテキストウィンドウを持ちますが、ファイルシステムは共有しており、エージェント同士の直接通信はありません。

 基本的な使い方は /fleet <目的のプロンプト> と送信するだけです。非インタラクティブモードでは copilot -p “/fleet <タスク>” –no-ask-user として実行できます。–no-ask-user フラグは、プロンプトへの応答ができない非インタラクティブモードで必須となります。

効果的なプロンプトの書き方

 /fleetの性能を引き出すにはプロンプトの書き方が重要です。GitHub Blogの解説では、具体的な成果物を明示することが最初のポイントとして挙げられています。曖昧なプロンプトだとオーケストレーターが独立した作業を識別できず、逐次実行になってしまうためです。

 たとえば /fleet ドキュメントを作る のような指示ではなく、docs/authentication.md・docs/endpoints.md・docs/errors.md・docs/index.md のように具体的なファイルパスと内容を列挙する書き方が推奨されています。この場合、最初の3ファイルは並列実行され、index.md は他の3つの完成を待ってから処理されます。

 次にスコープの明示も重要な要素です。各エージェントが担当するディレクトリや変更してはいけない範囲(例:テストの変更禁止、依存パッケージのアップグレード禁止)、lint・型チェック・テストなどの検証条件をプロンプトに含めることで、サブエージェントの作業範囲が明確になります。

依存関係の宣言

 タスク間に依存関係がある場合は、プロンプト内で明示的に宣言することが求められます。GitHub Blogが示す例では、データベース層の移行を「スキーマ定義 → ORMモデル更新 → APIハンドラー更新」の順序で指定しつつ、ORMモデル更新後に行うAPIハンドラーとインテグレーションテストは並列実行できる旨を記載しています。オーケストレーターはこの宣言をもとに、直列と並列を組み合わせた最適な実行計画を立てます。

 依存関係の宣言を怠ると、後続タスクが前提となるファイルの完成を待たずに動き始めてしまう可能性があると考えられます。大規模なリファクタリングでは特に注意が必要です。

カスタムエージェントの定義

 .github/agents/ ディレクトリにMarkdownファイルを配置することで、専用エージェントを定義できます。エージェントごとに使用するAIモデル、利用可能なツール、動作指示を設定できます。GitHub Blogの例では、ドキュメント専用エージェントに claude-sonnet-4 を指定し、プロジェクトのスタイルガイドに従った文書作成を行わせる構成が紹介されています。モデルを指定しない場合はデフォルトモデルが使用されます。

 複雑なロジックには高性能モデルを、定型的なドキュメント作成には軽量モデルを割り当てるといった使い分けが可能と考えられます。タスクの特性に合わせてエージェントを使い分けることで、コストと品質のバランスを調整しやすくなります。

注意すべき落とし穴

 /fleetを使う上で把握しておきたい制約がいくつかあります。まずファイルの競合問題です。サブエージェントはファイルシステムを共有しており、ファイルロック機能がありません。複数のエージェントが同じファイルに書き込んだ場合、最後に完了したエージェントの内容が黙って上書きされます。エラーもマージも発生せず、単純に上書きされる点に注意が必要です。対策としては、各エージェントに異なるファイルを担当させるか、一時ファイルに書き出してオーケストレーターが最後にマージする方針が推奨されています。

 次にサブエージェントのコンテキスト分離です。サブエージェントはオーケストレーターの会話履歴を参照できません。エージェントが必要とする情報は、/fleetプロンプト内に含めるか、参照可能なファイルを通じて提供する必要があります。セッション内で収集した有用なコンテキストがあれば、/fleetプロンプトに明示的に含めることが求められます。

 また、並列化が進んでいるかどうかは /tasks コマンドで確認できます。オーケストレーターが作業を複数トラックに分解しているか、バックグラウンドタスクが実際に並列で動いているかを確認することで、プロンプトの改善に活かせます。

/fleetが効果的なケースとそうでないケース

 GitHub Blogによれば、/fleetが特に有効なのは複数ファイルにまたがるリファクタリング、複数コンポーネントのドキュメント一括生成、API・UI・テストにまたがる機能実装、独立した状態を持つコード変更などの場面です。

 一方、単一ファイルへの逐次的な処理であれば、通常のCopilot CLIコマンドのほうがシンプルで同等の速度で動作します。/fleetはオーケストレーションのオーバーヘッドを伴うため、分配できる実際の作業がある場合にのみコストが見合うと考えられます。まずは小さなタスクから試してオーケストレーターの分解結果を観察し、プロンプトを調整していくアプローチが現実的だと思います。

まとめ

 /fleetはGitHub Copilot CLIが並列マルチエージェント実行に対応したコマンドです。具体的な成果物の指定・スコープの明示・依存関係の宣言の3点を意識したプロンプトを書くことで、複数ファイルにまたがる作業を効率化できます。ファイル競合やコンテキスト分離の制約を把握した上で活用することが重要だと思います。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次