はじめに
VS CodeでGitHub Copilotを試してみたときのメモです。
主にAgent Modeを使って、かんたんな機械学習プロジェクトをゼロから立ち上げ、Pull Requestを経て継続的に改善するまでを試してみました。
VS Code画面(Copilot拡張)の見方
手順
1. 環境構築
-
VS Codeをインストール
- 最新版(1.99 以降)を https://code.visualstudio.com からダウンロードして起動
- 補足:
- バージョン確認:左上メニューCode → Visual Studio Codeのバージョン情報
- バージョンアップ:左上メニューCode → 更新の確認
-
GitHub側でCopilot/Agent Modeを利用できるプランになっているか確認
- GitHub → Settings → Copilot
- “You have access through Copilot Business” と表示されれば OK
- 組織なら Org Settings → Copilot → Policies
- Editor preview features を Enabled にする(Agent 機能はプレビュー枠)
- 個人の場合はfreeプランでも利用できる
- GitHub → Settings → Copilot
-
VS Code側でGitHub Copilot拡張インストールとAgent Modeを有効化
- VS Code の拡張機能検索で “GitHub Copilot”をインストール
- 左上メニューCode → 基本設定 → 設定 で検索欄に
chat.agent.enabled
→ ✅ON- または
Ctrl + Shift + P › “GitHub Copilot: Enable Agent Mode (Preview)”
- または
- Copilot Chat パネルを開き、右下の入力欄のドロップダウンをAgentに切り替え
-
GitHub MCP サーバーを追加
-
4-1. Personal Access Token (PAT) を発行(MCPサーバー連携用)
- GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
- Generate new tokenで有効期限を短め(30 days など)に設定
- Scopesで最低限
repo
→ 「public_repo」を選ぶと全 PR/Issue 操作が可能(Workflow を回すならworkflow
も追加) - 「Generate token」→ 生成された
ghp_…
をコピーして安全な場所へ控える
-
4-2. GitHub MCP サーバーを追加
- 入力欄左上の 🛠 Tools → Add More Tools… → Add MCP Server
- Command を選択 → Next
- Server name に分かりやすい名前 github-mcp
- Command フィールド npx
- Args フィールド -y, @modelcontextprotocol/server-github
- Env にトークン GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxxx…
- Finish → “Start MCP Server” をクリック
settings.json"mcp": { "servers": { // 好きな名前で OK(ここでは github-mcp) "github-mcp": { "type": "stdio", "command": "npx", // npx に渡す引数。-y で確認スキップ "args": ["-y", "@modelcontextprotocol/server-github"], // PAT を環境変数で渡す (Fine-grained PAT でも可) "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxxxxxxx" } } } } }
(補足)接続できているか確認
- チャットで
@github list my public repositories
- 切り分けで認証なしで確認
@github search_repositories "user:your-github-id is:public" perPage=100
- 切り分けは表示→出力→Copilot
-
⇧⌘P › MCP: List Servers
→ Status が Runningか確認したり、停止・起動したり
-
-
リポジトリ共通の Copilot 命令を用意
プロジェクト直下に.github/copilot-instructions.md
を作成し、数行の方針を書いておくと Copilot が常に参照してくれます。
例:.github/copilot-instructions.mdこのリポジトリでは scikit-learn で機械学習パイプラインを実装します * コードは PEP8 に従い、必ず docstring を書きます * main 関連モジュールは /src 下に配置します * コードの品質を保つため、pytest を使用してテストを実行します * README と docs/architecture.md を常に最新に保ちます * 機密情報(例: .env ファイル)はリポジトリに含めません
ここまでの設定だけは手動で一度行います。以降は VS Codeが覚えています。
2. 空リポジトリ → PR #1(初回サンプル)
リポジトリを空のまま作成し、クローンしてVS Codeで開いたら、Copilot Chat(Agent モード)に次の一括指示を送る。
@agent
空の Python プロジェクトを初期化してください:
• README.md、.gitignore、pyproject.toml を生成
• 前処理・学習・推論のコードを src/ に、pytest テストを tests/ に生成し、テストを実行してパスさせる
• プロジェクト概要を docs/architecture.md に Markdown で書き出す
• dev ブランチにコミットし、main ブランチへ Pull Request (#1) を作成
エージェントはファイルを生成し、pytest
を走らせて合格を確認し、コミット・プッシュ・PR 作成を自動で行います。
GitHub の Pull Requests タブに “Add initial ML pipeline” が現れれば成功です。
3. 反復改善サイクル(チーム開発)
一括で任せる場合
開発者が Fork または Clone したら、次のようにまとめて指示を送る。
@agent @workspace
1. feature/metrics ブランチを切ってチェックアウト
2. FastAPI の /metrics エンドポイントを実装し、対応するテストを追加
3. テストを実行してパスさせる
4. docs/architecture.md に API 追加を反映
5. コミットして origin にプッシュし、main への Pull Request を作成
エージェントは順にタスクを実行し、まとめてPRを提出してくれます。
手順を分けて指示する場合
@agent checkout -b feature/metrics
@workspace FastAPI /metrics を追加し pytest テストも作成して実行
@agent commit "Add /metrics endpoint and tests"
@agent create PR to main title:"Add metrics" body:"Implemented endpoint and tests."
いずれの方法でも テストの生成と実行 が必ず含まれるようにしておくと品質が担保できます。
Tips
-
リポジトリ全体のコードを説明
@workspace このリポジトリ全体を俯瞰して、 アーキテクチャの概要(依存ライブラリやフレームワーク) ディレクトリ構成と各フォルダ/主要ファイルの役割 データフロー(入力 → 処理 → 出力)の流れ を 300 文字以内で日本語で説明してください
-
特定フォルダ以下を説明
@workspace src/pipelines 配下のコードだけを 200 字で日本語要約し、主要クラスと責務を列挙
-
Content Exclusion (.env などを除外): settings.jsonの修正
@agent VS Code の Copilot 設定で "**/.env" と "**/*.pem" を content exclusion に追加し commit
{ // 既存設定はそのまま残し、下記キーを追加・マージします "github.copilot.contentExclusion": [ "**/.env", "**/*.pem" ] }
-
禁止コマンド(危険な CLI)の設定: settings.jsonの修正
@agent chat.agent.blockedCommands に "rm", "shutdown", "kill -9" を追加して VS Code 設定を更新
{ // 前述のキーと併記する形で設定 "chat.agent.blockedCommands": [ "rm", "shutdown", "kill -9" ] }
-
リファクタ / Auto-PEP8
@agent @workspace PEP8 違反を自動修正し tests を再実行して commit
-
CI ワークフロー生成
@agent GitHub Actions で pytest と flake8 を回す workflow を.github/workflows/test.yml に追加