FLINTERS BLOG
💨

「GitHub Copilot in VS Codeでレビュー負荷を減らす」という名のCopilotの機能紹介をした

に公開

株式会社FLINTERSの小林です。

先日、会社のAI研究会というイベントで「GitHub Copilot in VS Codeでレビュー負荷を減らす」というテーマの発表をしました。この記事で発表内容を紹介します。
当日はスライドっぽいHTMLをGeminiに生成してもらいましたが、ここではテキストでまとめています。

テーマについて

表テーマ(建前)は、昨今の生成AIによる成果物(≒プルリクエスト)の量が増加しコードレビューの重要性と負担は増していく中で、GitHub Copilotを活用することでその負担を軽減できるのではないかという提案です。
と言いつつ、裏テーマ(本音)は「GitHub Copilot in VS Codeのいろんな機能を紹介したい」であり、モチベーションはそっちにあります。
ここ2ヶ月くらいでも様々な機能が追加されているのですが、まだまだ知らない方もいそうだったので知るきっかけにでもなれば良いなという気持ちがありました。
そのため、現実的にどれくらいレビュー負荷を軽減できるのかというより、ハンズオン的に機能に触れてもらうことを重視しました。

Copilotを使っていく

前提としてレビュアーとしてGitHubのプルリクエストをレビューする立場にあり、ローカルで自身のコードをレビューしてもらったり、botに自動でレビューさせるという内容ではありません。
Copilotにプルリクエストを説明してもらったり、問題になりそうな箇所を洗い出してもらったりします。

今回はGitHub Copilot in VS Codeの以下の機能を組み合わせて使用します(2025年7月現在のVS Code最新バージョン1.102で確認)。

この他にもCustom instructionsなどの機能がありますが、今回は使いませんでした。

流れは以下の通りです。

  1. GitHub MCPの有効化 - CopilotがGitHub APIと連携できるよう設定します。
  2. Tool Setsの定義 - 関連するツールをグループ化し、管理しやすくします。
  3. カスタムチャットモードの定義 - レビュー専用のチャットモードを作成します。
  4. プロンプトファイルの定義 - レビュー観点をまとめたプロンプトファイルを作成します。
  5. レビュー実施 - 定義したチャットモードとプロンプトを使って、プルリクエストのレビューを行います。

いろんな設定は大体Copilot Chatの歯車アイコンから行えます。

1. GitHub MCPの有効化

VS CodeのUIにおいてPluginと同列でMCPサーバーが表現されるようになって、主たる機能に格上げされたなという印象です。
今回はGitHub MCPを使用します。

  1. VSCodeの設定(settings.json)で以下の項目を true に設定:
{
  "chat.mcp.enabled": true
}
  1. GitHub MCPをインストール
    1. 方法A (推奨): VS CodeのMCP用マーケットプレイスから "GitHub" 拡張機能をインストール
    2. 方法B: GitHub MCPのリポジトリを参考にインストール

2. Tool Setsの定義

Agentが使う各種ツールをグループ化できる機能です。
Copilot Chatの歯車アイコンからTool Setsを選択し、以下のようなjsonを追加します。
組み込みツールとGitHub MCPから読み取りのみのツールをグループ化しています。

{
  "read": {
    "tools": [
      "changes",
      "codebase",
      "extensions",
      "fetch",
      "findTestFiles",
      "githubRepo",
      "problems",
      "search",
      "searchResults",
      "usages",
      "vscodeAPI",
    ],
    "description": "コードの読み取りを行うためのツールセット"
  },
  "githubRead": {
    "tools": [
      "activePullRequest",
      "get_code_scanning_alert",
      "get_code_scanning_alert",
      "get_file_contents",
      "get_issue",
      "get_issue_comments",
      "get_me",
      "get_pull_request",
      "get_pull_request_comments",
      "get_pull_request_files",
      "get_pull_request_reviews",
      "get_pull_request_status",
      "list_code_scanning_alerts",
      "list_commits",
      "list_issues",
      "list_pull_requests",
      "search_code",
      "search_issues",
      "search_repositories",
      "search_users"
    ],
    "description": "GitHub上のコードの読み取りを行うためのツールセット"
  }
}

3. カスタムチャットモードの定義

組み込みのAsk, Edit, Agentモードに加えてカスタムのモードを定義できる機能です。使えるツールやモデルを指定できます。
今回はレビュー用に読み取りっぽい機能のみを持つチャットモードを作成します。
Copilot Chatの歯車アイコンから「Modes」を選択し、以下のようなマークダウンを追加します。
モード名はReadOnlyとします。(ReadOnly.chatmode.mdというファイル名になる)

---
description: '読み取り専用のチャットモード。ファイルの編集は行わない'
tools: ['read', 'githubRead']
---

あなたはファイルの編集を行うことを禁止されています。
一方でローカルファイルに留まらず、ツールを使って外部のリソースを自律的に取得することは推奨されます。

4. プロンプトファイルの定義

事前にプロンプトを定義して再利用することができる機能です。作ったプロンプトはチャットの入力欄で/に続いてプロンプト名を入力することで実行できます。
今回はレビュー観点などをまとめさせるプロンプトファイルを作成します。
Copilot Chatの歯車アイコンから「Prompts」を選択し、以下のようなマークダウンを追加します。
プロンプト名はreview-prとします。(review-pr.prompt.mdというファイル名になる)

---
mode: agent
---
与えられたプルリクエストをコードの変更内容、プルリクエストのタイトル、説明文、コメントを元に概要をまとめ、コードレビューを実施してください。

## 大事なこと
- プルリクエストの情報を取得するために、github toolsを使用すること
- 必ずコードの変更内容を確認すること
- 必要に応じて変更対象外のファイルも含めて確認すること
- 必要に応じて関連issueや関連プルリクエストなども確認すること
- ライブラリの使用方法などはコードベースのパッケージマネージャーから利用バージョンを確認し、そのバージョンに基づいて判断すること

## プルリクエストの概要として含めてほしい情報
- 変更内容の目的や背景
- レビュイーが意図している変更内容は何か
- 意図とコードの変更内容を照らし合わせて、意図通りの変更が行われているか

## レビュー観点
- 変更対象内外で一貫性があるか
- コードの可読性は高いか
- 適切な命名がされているか
- コードの構造は適切か (冗長なコード、過度な共通化はないか)
- テストは適切に追加されているか
- パフォーマンスやセキュリティに問題はないか
- ドキュメントは更新されているか
- typoや文法ミスなどケアレスミスはないか

プルリクエストの概要(タイトルと本文など)に留まらず、diffや関係しそうな情報を自律的に取得してもらうことを意識しています。
レビュー観点はお好みで。
正直そこまで詰めきれていない内容です。

5. レビュー実施

ChatモードをReadOnlyに切り替え、

/review-pr https://github.com/your-repo/pull/123

のようにプロンプトの指定とレビューしたいプルリクエストのリンクを入力します。
Chatモードのおかげでローカルファイルの編集やGit操作は行われないはずなので、chat.tools.autoApprovetrueにしても安心かもしれません。(自己責任で)
関連するissueやプルリクエストを自律的に収集して良い感じに情報を整理してくれる、はずです。

まとめ

Agentic Codingは過渡期でツールや機能が次々と出てきます。キャッチアップが苦じゃない人には楽しい時代かもしれませんが、そうでない人にはなかなか大変な時代かもしれません。
その中でGitHub Copilotは他の先進的なツールでヒットしたアプローチを後追いで取り入れているような印象(個人的な感想)があり、情報量に打ちのめされている人はとりあえずGitHub Copilotの機能から追ってみるのも良いかもしれません。

FLINTERS BLOG
FLINTERS BLOG

Discussion