Agent Modeによるマルチファイル自動実装
3.1 Agent Modeの概要と従来モードとの違い
Section titled “3.1 Agent Modeの概要と従来モードとの違い”Copilot Chatの3つのモード
Section titled “Copilot Chatの3つのモード”Copilot Chatには、目的に応じた3つのモードが用意されている。
flowchart LR
subgraph Ask["Ask(質問)モード"]
A1["`質問に回答
コードは変更しない`"]
end
subgraph Edit["Edit(編集)モード"]
B1["`ユーザーが指定した
ファイルを編集
各ターンで承認`"]
end
subgraph Agent["Agent(エージェント)モード"]
C1["`自律的にサブタスクを分解
複数ファイルを横断編集
ターミナル実行・自己修復`"]
end
Ask --> Edit --> Agent
| 特性 | Ask | Edit | Agent |
|---|---|---|---|
| コードの変更 | しない | する | する |
| 対象ファイルの決定 | — | ユーザーが指定 | Copilotが自動判断 |
| ターミナルコマンド実行 | — | — | 自動実行 |
| エラーの自動修復 | — | — | ループで自己修復 |
| MCPサーバー連携 | — | — | 対応 |
Agent Modeは、Copilot Chatの中で最も自律性が高いモードであり、従来の「1ファイルの補完」から「プロジェクト全体を理解した上での自律的な実装」へとパラダイムを変えるものである。
Agent Modeの動作原理
Section titled “Agent Modeの動作原理”Agent Modeでは、ユーザーからの指示を受け取ると、Copilotが以下のステップを自律的に繰り返す。
flowchart TD
A["`ユーザーの指示
自然言語で目的を記述`"] --> B["`タスク分解
必要なサブタスクを特定`"]
B --> C["`ファイル探索
関連ファイルを自動検出`"]
C --> D["`コード生成・編集
複数ファイルを横断して変更`"]
D --> E["`ターミナル実行
ビルド・テスト・lint等`"]
E --> F{"`エラー発生?`"}
F -->|Yes| G["`自己修復
エラー内容を分析して修正`"]
G --> E
F -->|No| H["`差分プレビュー
ユーザーに確認を求める`"]
H --> I{"`承認?`"}
I -->|Yes| J["`変更を適用`"]
I -->|No| K["`フィードバックを受けて再修正`"]
K --> D
Agent Modeの利用場面
Section titled “Agent Modeの利用場面”Agent Modeは以下のような場面で特に効果を発揮する。
新機能の実装: 「ユーザー認証機能をJWT+リフレッシュトークンで実装して」のように、複数ファイルにまたがる機能実装を一度の指示で完了できる。
バグ修正: エラーメッセージや再現手順を伝えると、原因の特定から修正、テストの追加までを一貫して行える。
リファクタリング: 「このモジュールをClean Architectureに沿って再構成して」のようなアーキテクチャレベルの変更にも対応する。
テスト追加: 「このディレクトリ内のすべてのサービスクラスに対してユニットテストを追加して」のように、広範囲のテスト生成が可能である。
3.2 自然言語による機能実装の実践例
Section titled “3.2 自然言語による機能実装の実践例”効果的なプロンプトの構造
Section titled “効果的なプロンプトの構造”Agent Modeで高品質な結果を得るには、プロンプトに以下の要素を含めることが重要である。
目的(What): 何を実現したいのかを明確に述べる。
制約(How): 使用する技術スタック、コーディング規約、設計パターンを指定する。
境界(Scope): 変更して良い範囲と、変更すべきでない範囲を明示する。
出力期待(Output): テスト追加の要否、ドキュメント更新の要否を指定する。
プロンプト例:APIエンドポイントの追加
Section titled “プロンプト例:APIエンドポイントの追加”以下の要件でユーザープロフィール更新APIを実装してください。
## 要件- PATCH /api/users/:id/profile エンドポイントを追加- リクエストボディ: { displayName?: string, bio?: string, avatarUrl?: string }- Zodによる入力バリデーション- 認証済みユーザーのみアクセス可能(既存のauthMiddlewareを使用)- 自分以外のプロフィールは更新不可
## 技術スタック- Express.js + TypeScript- Prismaを使用したDB操作- 既存のエラーハンドリングパターンに従う
## 追加作業- ユニットテストをVitestで作成- 既存のOpenAPIスキーマ(docs/openapi.yaml)を更新プロンプトのアンチパターン
Section titled “プロンプトのアンチパターン”曖昧すぎる指示: 「APIを良くして」→ Copilotが何をすべきか判断できない。
指示の過積載: 1つのプロンプトに10以上の無関係な要件を詰め込むと、後半の要件が抜け落ちやすい。
大きなタスクは段階的に分割する。
否定形のみの指示: 「〜しないで」だけでなく、「代わりに〜して」と肯定形で方向性を示す。
3.3 MCP(Model Context Protocol)サーバー連携
Section titled “3.3 MCP(Model Context Protocol)サーバー連携”MCPとは何か
Section titled “MCPとは何か”Model Context Protocol(MCP)は、AIモデルと外部ツール・データソースを接続するためのオープン標準プロトコルである。
Agent ModeとMCPサーバーを組み合わせることで、Copilotの作業範囲がエディタ内のファイル操作を超え、外部サービスとの連携が可能になる。
flowchart TD
A["`Copilot Agent Mode`"] --> B["`MCP プロトコル`"]
B --> C["`GitHub MCP サーバー
Issue・PR・リポジトリ操作`"]
B --> D["`Playwright MCP サーバー
ブラウザ自動操作・テスト`"]
B --> E["`カスタム MCP サーバー
DB・社内API・外部サービス`"]
B --> F["`ファイルシステム MCP
ファイル読み書き`"]
デフォルトで利用可能なMCPサーバー
Section titled “デフォルトで利用可能なMCPサーバー”GitHub MCP サーバー: Copilotに標準搭載されており、ゼロコンフィグで利用できる。
Issue管理、PR操作、リポジトリ検索などGitHub.com上のリソースにアクセスできる。
OAuthによるワンクリック認証(推奨)またはPersonal Access Token(PAT)での認証に対応する。
Playwright MCP サーバー: ブラウザ自動操作とE2Eテストを提供する。
Agent Modeから「ログインフローのテストを書いて」と指示するだけで、Playwrightがテストを生成・実行し、結果をCopilotに返す。
MCPサーバーの設定方法(VS Code)
Section titled “MCPサーバーの設定方法(VS Code)”VS CodeではCommand Paletteから MCP: Open User Configuration を実行し、mcp.json にサーバー定義を追加する。
{ "servers": { "github": { "url": "https://api.githubcopilot.com/mcp/" }, "playwright": { "command": "npx", "args": ["-y", "@playwright/mcp@latest"] } }}MCPサーバー利用時のベストプラクティス
Section titled “MCPサーバー利用時のベストプラクティス”- 最小権限の原則: MCPサーバーにはタスク遂行に必要な最小限の権限のみを付与する
- 定期的な棚卸し: 開発環境にアクセスできるMCPサーバーの一覧を定期的に監査する
- 段階的な導入: まず実績のあるMCPサーバー(GitHub、Playwright)から始め、徐々にカスタムサーバーを追加する
- プロンプトファイルとの組み合わせ: MCPサーバーごとにCopilotの振る舞いをガイドするプロンプトファイルを用意する
3.4 チェックポイントと自動修復機能の活用
Section titled “3.4 チェックポイントと自動修復機能の活用”チェックポイント機能
Section titled “チェックポイント機能”Agent Modeでは、各ステップの途中結果がチェックポイントとして記録される。
問題が発生した場合、任意のチェックポイントまでロールバックして、そこから別のアプローチで再試行できる。
この機能は、Agent Modeが大量のファイルを変更する場面で特に重要である。
変更が意図した方向と異なると感じた場合、すぐに前の状態に戻して指示を修正できる。
自動修復ループ
Section titled “自動修復ループ”Agent Modeはターミナルコマンド(ビルド、テスト、lint等)を自動実行し、エラーが発生した場合はエラーメッセージを分析して修正を試みる。
この「実行→エラー検出→修正→再実行」のループを自動で繰り返す。
flowchart LR
A["`コード生成`"] --> B["`ビルド実行`"]
B --> C{"`成功?`"}
C -->|No| D["`エラー分析`"]
D --> E["`自動修正`"]
E --> B
C -->|Yes| F["`テスト実行`"]
F --> G{"`成功?`"}
G -->|No| D
G -->|Yes| H["`完了`"]
- Using Copilot agent mode in VS Code
- Enhancing GitHub Copilot agent mode with MCP - GitHub Docs
- Setting up the GitHub MCP Server - GitHub Docs
- Using the GitHub MCP Server - GitHub Docs
- About Model Context Protocol (MCP) - GitHub Docs
- Major agentic capabilities improvements in GitHub Copilot for JetBrains IDEs - GitHub Changelog