· 18 分で読める · 8,796 文字
GitHub Copilot Agent Modeを本番環境で使いこなすセットアップ完全ガイド
GitHub Copilot Agent Modeは、複数ファイルの変更や依存関係の解決を自動化する次世代型コーディング支援機能です。本記事では、セットアップから実務運用まで、すぐに導入できる具体的な手順とハマりやすいポイントの解決策を紹介します。
GitHub Copilot Agent Modeとは何か
Agent Modeは従来のCopilotの「単一ファイル補完」から進化した機能です。AIエージェントがプロジェクト全体を理解し、複数ファイルにまたがった修正提案や実装を行います。実務では、バグ修正時に関連するテストファイル・設定ファイルまで一括で修正される体験が期待できます。
これは単なる高度な補完ではなく、AIが開発者の「意図」を理解して主体的にコードベースを改善するアプローチです。そのため、セットアップと運用時の設定が極めて重要です。
Agent Modeと通常モードの根本的な違い
通常のCopilot Chat では、ユーザーが「このバグを修正して」と指示した場合、修正案を提示するだけです。一方、Agent Mode では、Copilotが自ら複数ファイルを検査し、依存関係を特定し、テストを実行して検証した上で、修正内容を確定します。
graph TD
A["ユーザーの指示
『ログイン機能のバグを修正'"] --> B{実行モード}
B -->|通常Chat| C["修正案を
テキストで提示"]
B -->|Agent Mode| D["コードベース全体を分析"]
D --> E["関連ファイル特定"]
E --> F["テスト実行"]
F --> G["修正内容を自動適用"]
C --> H["開発者が手動実装"]
G --> I["修正完了
テスト合格"]
セットアップに必要な前提条件
ライセンス・アカウント要件
Agent Mode を利用するには、以下の条件を満たす必要があります:
- GitHub Copilot Pro または GitHub Copilot Enterpriseのライセンスが必須
- 無料版では Agent Mode は利用不可
- Enterprise ユーザーは管理画面で明示的に Agent Mode を有効化する必要がある
実務では、チーム全体で導入する場合、GitHub Enterprise Admin が機能設定を行う必要があります。個人開発者なら、Copilot Pro へのアップグレードで即座に利用開始できます。
開発環境・IDEの確認
Agent Mode は以下の環境で動作確認済みです:
- VS Code 1.95.0 以上(GitHub Copilot Extension 1.220.0 以上)
- JetBrains IDEs(IntelliJ IDEA、PyCharm、WebStorm など)最新版
- Visual Studio 2022 バージョン 17.8 以上
- Neovim(copilot.nvim プラグイン経由)
筆者の経験上、VS Code が最も安定しており、企業環境での採用率も高いため、本ガイドでは VS Code を主軸に説明します。
ステップ1:VS Code 環境での初期セットアップ
GitHub Copilot Extension のインストール・更新
VS Code の拡張機能マーケットプレイスから「GitHub Copilot」を検索し、最新版をインストールしてください。既にインストール済みの場合は、バージョンが 1.220.0 以上であることを確認します。
VS Code のコマンドパレット(Ctrl+Shift+P / Cmd+Shift+P)を開き、以下のコマンドを実行:
Extension: Show Running Extensions
GitHub Copilot のバージョンを確認し、更新がある場合は「Update」をクリックしてください。
GitHub アカウントの認証
VS Code 左下の「Accounts」アイコン(または Ctrl+Shift+P で「GitHub Copilot: Sign In」)をクリックし、GitHub アカウントでログインします。
認証フロー:
1. VS Code が GitHub OAuth ページを開く
2. 「Authorize GitHub Copilot」をクリック
3. 認証完了後、VS Code に戻る
4. ステータスバーに GitHub ユーザー名が表示される
認証が完了すると、VS Code のステータスバー(右下)に GitHub Copilot のアイコンが表示され、「Signed in」と表示されます。
Agent Mode の有効化
現在、Agent Mode はまだベータ段階であり、デフォルトでは無効になっています。有効化するには、VS Code の設定ファイル(settings.json)を編集します。
Ctrl+Shift+P / Cmd+Shift+P で「Preferences: Open Settings (JSON)」を実行し、以下の行を追加:
{
"github.copilot.advanced": {
"agentMode.enabled": true
}
}
設定を保存すると、Copilot Chat ウィンドウに新しい「Agent」ボタンが表示されます。このボタンをクリックすることで Agent Mode に切り替わります。
ステップ2:プロジェクト設定と Agent Mode の最適化
Copilot 用の .gitignore・コンテキスト設定
Agent Mode が効率的に動作するには、AIエージェントに「何を見るべき」かを正確に伝える必要があります。プロジェクトルートに .copilotignore ファイルを作成し、AIが無視すべきファイルを指定します。
node_modules/
.venv/
dist/
build/
*.log
.env
.DS_Store
migrations/
coverage/
これにより、Agent Mode は大規模なライブラリやビルド成果物を解析対象から除外し、実際のソースコード へのフォーカスが高まり、分析速度も向上します。
プロジェクト構造の可視化
Agent Mode の理解度を向上させるために、プロジェクトのルートに簡単な説明ファイルを配置することが効果的です。README.md の他に、.github/copilot-context.md という隠しファイルを作成してください。
# Copilot Agent Context
## プロジェクト概要
This is a Node.js REST API for user authentication and profile management.
## ディレクトリ構造
- `/src` - メインのアプリケーションロジック
- `/tests` - Jest テストスイート
- `/config` - 環境別設定ファイル
- `/db` - データベーススキーマ・マイグレーション
## 技術スタック
- Runtime: Node.js 20.x
- Framework: Express.js 4.x
- DB: PostgreSQL 15
- ORM: TypeORM
## 主要なエントリーポイント
- `/src/index.ts` - アプリケーション起動ポイント
- `/src/routes/auth.ts` - 認証エンドポイント
- `/src/middleware/auth.ts` - 認証ミドルウェア
この情報を提供することで、Agent Mode は文脈を正確に理解し、より的確な修正提案を行うようになります。
flowchart LR
A["Agent Mode
初期化"] --> B["プロジェクト構造
スキャン"]
B --> C{コンテキスト
ファイル存在?}
C -->|Yes| D["メタデータ読み込み"]
C -->|No| E["ファイル体から推測"]
D --> F["コード分析
高精度"]
E --> G["コード分析
基本精度"]
F --> H["Agent Ready"]
G --> H
ステップ3:実践的な Agent Mode の使用方法
マルチファイル修正タスクの実行
Agent Mode の真価は、複雑なマルチファイル修正で発揮されます。具体例として、Express API のエラーハンドリング機能を改善する場合を見ていきましょう。
Copilot Chat を開き(Ctrl+L / Cmd+L)、Agent Mode をオンにした状態で以下のプロンプトを入力します:
@workspace すべてのエンドポイントのエラーハンドリングを統一的な形式に修正してください。
エラーレスポンスは以下の形式で統一:
{
"error": {
"code": "ERROR_CODE",
"message": "User-friendly message",
"timestamp": "ISO8601"
}
}
既存のエラーハンドリングパターンを分析して、
必要なコードを複数ファイルにまたがって修正してください。
テストも更新してください。
@workspace キーワードを使うことで、Agent Mode はプロジェクト全体を対象に分析を開始します。その後、以下のような処理が自動実行されます:
- 全エンドポイントのエラーハンドリングコードをスキャン
- 既存のパターンを識別
- 統一フォーマットへの修正案を複数ファイルで生成
- 対応するテストケースを自動更新
実務での具体的なコード例
以下、実際のプロジェクトで Agent Mode が生成した修正例です。
修正前のエラーハンドリング(src/routes/auth.ts):
// 修正前:エラーハンドリングが不統一
app.post('/login', async (req, res) => {
try {
const user = await db.getUser(req.body.email);
if (!user) {
return res.status(404).json({ message: 'User not found' });
}
const isValid = await validatePassword(req.body.password, user.password);
if (!isValid) {
return res.status(401).json({ error: 'Invalid credentials' });
}
res.json({ token: generateToken(user.id) });
} catch (err) {
console.error(err);
res.status(500).send('Internal error');
}
});
Agent Mode による修正後:
// 修正後:エラーハンドリングが統一
import { ErrorResponse, createErrorResponse } from '../utils/errorHandler';
app.post('/login', async (req, res) => {
try {
const user = await db.getUser(req.body.email);
if (!user) {
return res.status(404).json(
createErrorResponse('USER_NOT_FOUND', 'User not found')
);
}
const isValid = await validatePassword(req.body.password, user.password);
if (!isValid) {
return res.status(401).json(
createErrorResponse('INVALID_CREDENTIALS', 'Invalid email or password')
);
}
res.json({ token: generateToken(user.id) });
} catch (err) {
logger.error('Login error:', err);
res.status(500).json(
createErrorResponse('INTERNAL_ERROR', 'An unexpected error occurred')
);
}
});
さらに Agent Mode は、新しく src/utils/errorHandler.ts を自動生成します:
// src/utils/errorHandler.ts(Agent Mode が自動生成)
export interface ErrorResponse {
error: {
code: string;
message: string;
timestamp: string;
};
}
export function createErrorResponse(
code: string,
message: string
): ErrorResponse {
return {
error: {
code,
message,
timestamp: new Date().toISOString(),
},
};
}
export const ErrorCodes = {
USER_NOT_FOUND: 'USER_NOT_FOUND',
INVALID_CREDENTIALS: 'INVALID_CREDENTIALS',
INTERNAL_ERROR: 'INTERNAL_ERROR',
VALIDATION_ERROR: 'VALIDATION_ERROR',
} as const;
対応するテストも自動更新されます:
// tests/routes/auth.test.ts
describe('POST /login', () => {
it('should return USER_NOT_FOUND when user does not exist', async () => {
const response = await request(app)
.post('/login')
.send({ email: 'nonexistent@example.com', password: 'pass' });
expect(response.status).toBe(404);
expect(response.body.error.code).toBe('USER_NOT_FOUND');
expect(response.body.error.timestamp).toBeDefined();
});
it('should return INVALID_CREDENTIALS on wrong password', async () => {
// テストの詳細...
});
});
複雑な依存関係の解決
実務では、単なるコード修正ではなく、複雑な依存関係の解決が必要になります。例えば、データベーススキーマ変更時に、すべての関連するクエリ・マイグレーション・テストを一括で更新する場合です。
Agent Mode でこうしたタスクを実行する際は、より詳細なコンテキストを提供することが重要です:
@workspace
以下の要件に基づいて、users テーブルのスキーマ変更を実装してください:
変更内容:
- created_at カラムを TIMESTAMP WITH TIME ZONE に変更
- new_column: last_login_ip (VARCHAR 45) を追加
影響を受けるファイル:
1. Database migration files in /db/migrations/
2. TypeORM entity: /src/entities/User.ts
3. All queries in /src/queries/
4. Related tests in /tests/queries/
実行内容:
- マイグレーションファイルを作成
- User エンティティを更新
- 既存クエリを修正(型チェック含む)
- テストを追加・更新
- README に変更内容をドキュメント化
よくあるハマりポイントと解決策
Agent Mode が有効化されない場合
問題: Copilot Chat に Agent Mode オプションが表示されない。
原因と解決策:
- バージョンが古い:VS Code と GitHub Copilot Extension を最新版に更新
// VS Code コマンドパレット Help: Check for Updates - settings.json が正しくない:JSON 形式エラーを確認
// settings.json の正しい形式確認 { "github.copilot.advanced": { "agentMode.enabled": true } } // JSON バリデータで検証:https://jsonlint.com/ - Copilot Pro / Enterprise ライセンスがない:ライセンス状態を確認
// GitHub の Account Settings で Copilot Plan を確認 https://github.com/settings/copilot
Agent Mode が分析を完了できない場合
問題: 「Unable to analyze project」というエラーが表示される。
原因: プロジェクトが大規模すぎるか、.gitignore の設定が不十分。
解決策:
// .copilotignore を作成・拡張
node_modules/
.venv/
dist/
build/
*.log
.env*
.git/
vendor/
.next/
out/
coverage/
// プロジェクトサイズを確認(1GB 以上は処理が遅い可能性)
du -sh .
プロジェクトが極めて大規模な場合は、Agent Mode を特定のディレクトリのみに限定して実行することも有効です:
@workspace /src
認証ロジックに関連するすべてのファイルのみを分析対象にして、
セキュリティ脆弱性をチェックしてください。
生成されたコードが不正確な場合
問題: Agent Mode が型情報を誤解し、TypeScript エラーが発生。
原因: プロジェクトのコンテキストが不十分か、複雑な型定義。
解決策:
// tsconfig.json を確認して、パス設定が明確になっているか確認
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": ["src/*"],
"@utils/*": ["src/utils/*"],
"@types/*": ["src/types/*"]
}
}
}
// 複雑な型は明示的に型定義ファイルで定義
// src/types/index.ts に集中管理
パフォーマンス・コストに関する考慮事項
API コストの見積もり
GitHub Copilot Pro は月額 20 ドルの定額制ですが、Enterprise では API 呼び出しに基づく従量課金が発生する場合があります。Agent Mode は複数回のコード分析・生成を行うため、以下の点を考慮してください:
- 大規模プロジェクト:1 回のAgent 実行で複数の LLM 呼び出しが発生
- 複雑なタスク:プロンプトトークンが増加(詳細なコンテキスト提供のため)
- 繰り返し実行:同じタスクを何度も実行しないよう留意
Enterprise 導入の場合は、月間の API 使用量をモニタリングし、チーム全体への使用ガイドラインを設定することが重要です。
実行時間とタイムアウト
Agent Mode が大規模プロジェクトを分析する場合、数分かかることがあります。VS Code のタイムアウト設定が短い場合、途中で処理が中断される可能性があります。
// settings.json でタイムアウトを拡張
{
"github.copilot.advanced": {
"agentMode.enabled": true,
"agent.timeout": 300000 // 5分(ミリ秒)
}
}
Agent Mode と通常Chat の使い分けガイド
| 用途 | 通常 Chat | Agent Mode |
|---|---|---|
| 単一ファイルの修正 | ✅ 推奨 | 不要 |
| マルチファイル修正 | 手動で複数提案が必要 | ✅ 推奨 |
| 依存関係の解決 | 精度が低い | ✅ 推奨 |
| 簡単な質問・説明 | ✅ 十分 | オーバースペック |
| リファクタリング | 提案のみ | ✅ 自動実装 |
セキュリティと運用上の注意点
機密情報の漏洩防止
Agent Mode がコードを分析する際、GitHub の API にコンテンツが送信されます。以下のセキュリティ対策を必須とします:
- .env ファイル:.gitignore に明記し、.copilotignore でも除外
// .copilotignore .env .env.* !.env.example secrets/ private/ - 認証トークン・API キー:絶対にコード内にハードコードしない
- 顧客データ:本番環境のデータをコミットしない
チーム運用時のポリシー
複数開発者が Agent Mode を使用する場合、以下のポリシーを定めることを推奨します:
- 生成されたコードは「提案」として扱い、必ずコードレビューを実施
- セキュリティ関連・認証ロジックは Agent Mode に頼らず、人間が実装
- 月間 API 使用量をレポート・監視
- 新規プロジェクトは .github/copilot-context.md を必ず作成
代替ツールとの比較
Agent Mode 以外の AI コーディング支援ツールとの比較を以下に示します:
| ツール | マルチファイル対応 | 自動実行 | コスト |
|---|---|---|---|
| Copilot Agent Mode | ✅ 高度 | ✅ Yes | $20/月(Pro) |
| Cursor IDE | ✅ 対応 | 部分的 | $20/月 |
| Tabnine | 基本のみ | ❌ No | $15/月(Pro) |
Agent Mode は特にマルチファイルの自動修正に優れており、大規模リファクタリングやバグ修正ではこの機能が最大の価値を提供します。
よくある質問
A: 部分的に可能ですが、推奨しません。Agent Mode は「提案」機能です。本番環境への適用前に、必ず人間による厳密なコードレビューとテストを実施してください。特にセキュリティ関連や決済処理を含むコードは、AI の提案を参考にしつつも、チームで十分な検討を行う必要があります。
おすすめAIリソース
- Anthropic Claude API Docs Official Claude API reference. Essential for implementation.
- OpenAI Platform Official GPT series API documentation with pricing details.
- Hugging Face Open-source model hub with many free models to try.