1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Copilotを試してみた

Last updated at Posted at 2025-04-30

はじめに

VS CodeでGitHub Copilotを試してみたときのメモです。
主にAgent Modeを使って、かんたんな機械学習プロジェクトをゼロから立ち上げ、Pull Requestを経て継続的に改善するまでを試してみました。

VS Code画面(Copilot拡張)の見方

スクリーンショット 2025-04-30 21.43.38.png

手順

1. 環境構築

  1. VS Codeをインストール

    • 最新版(1.99 以降)を https://code.visualstudio.com からダウンロードして起動
    • 補足:
      • バージョン確認:左上メニューCode → Visual Studio Codeのバージョン情報
      • バージョンアップ:左上メニューCode → 更新の確認
  2. GitHub側でCopilot/Agent Modeを利用できるプランになっているか確認

    • GitHub → Settings → Copilot
      • “You have access through Copilot Business” と表示されれば OK
      • 組織なら Org Settings → Copilot → Policies
        • Editor preview features を Enabled にする(Agent 機能はプレビュー枠)
    • 個人の場合はfreeプランでも利用できる
  3. 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に切り替え
  4. 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か確認したり、停止・起動したり
  5. リポジトリ共通の 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を提出してくれます。

手順を分けて指示する場合

  1. @agent checkout -b feature/metrics
  2. @workspace FastAPI /metrics を追加し pytest テストも作成して実行
  3. @agent commit "Add /metrics endpoint and tests"
  4. @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 に追加 
    
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?