はじめに

コードレビューは品質を担保するために欠かせないプロセスですが、レビュアーの負担が大きく、レビュー待ちでマージが遅延することも少なくありません。GitHub Copilot Code Reviewは、AIがプルリクエストを自動的にレビューし、セキュリティの脆弱性やコーディング規約違反を指摘してくれる機能です。

2025年12月現在、Copilot Code Reviewはパブリックプレビューから正式版へと進化し、CodeQL・ESLint・PMDなどの静的解析ツールとの連携機能も追加されています。本記事では、Copilot Code Reviewの自動レビュー設定方法、カスタムレビュー観点の指定方法、そしてセキュリティ・コーディング規約チェックの自動化について詳しく解説します。

Copilot Code Reviewの概要

主な機能と特徴

Copilot Code Reviewは、プルリクエストに対してAIが自動的にフィードバックを提供する機能です。

  • あらゆるプログラミング言語に対応: 言語を問わずコードをレビュー可能
  • コード変更に対するインラインコメント: 問題箇所を特定し、具体的な改善提案を表示
  • ワンクリック修正: 提案された変更をボタン一つで適用可能
  • 静的解析ツール連携: CodeQL、ESLint、PMDによる高精度なセキュリティ・品質チェック
  • カスタム指示対応: プロジェクト固有のレビュー観点を設定可能

利用可能なプラン

Copilot Code Reviewは以下のプランで利用できます。

プラン 利用可能 月間プレミアムリクエスト
Copilot Pro 可能 プランに含まれる
Copilot Pro+ 可能 プランに含まれる
Copilot Business 可能 組織ポリシーで有効化が必要
Copilot Enterprise 可能 組織ポリシーで有効化が必要

対応環境

Copilot Code Reviewは以下の環境で利用できます。

  • GitHub.com(Webブラウザ)
  • GitHub Mobile
  • VS Code
  • Visual Studio
  • Xcode
  • JetBrains IDEs

手動でレビューをリクエストする方法

まずは基本となる手動でのレビューリクエスト方法を確認しましょう。

GitHub.comでの手順

  1. プルリクエストページを開く
  2. 右側のサイドバーにある「Reviewers」メニューをクリック
  3. 表示されるリストから「Copilot」を選択
  4. 通常30秒以内にレビュー結果が表示される

Copilotのレビューは「Comment」として投稿されます。「Approve」や「Request changes」ではないため、マージをブロックすることはありません。人間のレビュアーによる承認と併用する形で活用できます。

レビュー結果の活用

Copilotのレビューコメントには、問題の説明と修正提案が含まれます。

  • 提案の適用: 「Commit suggestion」ボタンで提案された変更をそのまま適用
  • バッチコミット: 複数の提案をまとめて1つのコミットとして適用
  • Coding Agentへの引き継ぎ: 「Implement suggestion」で、Copilot Coding Agentに修正を委託し、新しいプルリクエストを作成

自動レビューの設定方法

Copilot Code Reviewの真価は自動レビュー機能にあります。プルリクエストが作成されるたびに自動的にレビューが実行されるよう設定することで、レビュープロセスを大幅に効率化できます。

個人設定での自動レビュー有効化

Copilot ProまたはCopilot Pro+プランの個人ユーザーは、自分が作成するすべてのプルリクエストに対して自動レビューを有効化できます。

  1. GitHubの任意のページで右上のプロフィール画像をクリック
  2. 「Copilot settings」を選択
  3. 「Automatic Copilot code review」のドロップダウンをクリック
  4. 「Enabled」を選択

この設定を有効にすると、あなたが作成するすべてのプルリクエストでCopilotが自動的にレビューを開始します。

リポジトリ単位での自動レビュー設定

リポジトリ管理者は、Repository Rulesetsを使用してリポジトリ全体で自動レビューを有効化できます。

  1. リポジトリの「Settings」ページを開く
  2. 左サイドバーの「Code and automation」セクションで「Rules」→「Rulesets」を選択
  3. 「New ruleset」→「New branch ruleset」をクリック
  4. Ruleset名を入力(例:「Copilot Auto Review」)
  5. 「Enforcement Status」を「Active」に設定
  6. 「Target branches」で対象ブランチを指定(例:「Include default branch」または「Include all branches」)
  7. 「Branch rules」セクションで「Automatically request Copilot code review」にチェック

追加オプション

自動レビューには以下のオプションを設定できます。

オプション 説明
Review new pushes 新しいコミットがプッシュされるたびにレビューを実行
Review draft pull requests ドラフト状態のプルリクエストもレビュー対象に含める

「Review draft pull requests」を有効にすると、人間のレビューをリクエストする前の段階でエラーを早期発見できます。

組織全体での自動レビュー設定

組織オーナーは、複数のリポジトリに対して一括で自動レビューを設定できます。

  1. 組織の「Settings」ページを開く
  2. 左サイドバーの「Code, planning, and automation」セクションで「Repository」→「Rulesets」を選択
  3. 「New ruleset」→「New branch ruleset」をクリック
  4. Ruleset名を入力
  5. 「Target repositories」で対象リポジトリのパターンを指定
    • 例:*feature(featureで終わるすべてのリポジトリ)
    • 例:*(すべてのリポジトリ)
  6. 「Target branches」で対象ブランチを指定
  7. 「Automatically request Copilot code review」にチェック

パターンマッチングでは、包含パターンと除外パターンを組み合わせることができます。例えば*cat*に一致するリポジトリを対象としつつ、not-a-catを除外するといった設定が可能です。

カスタムレビュー観点の設定

Copilot Code Reviewは、プロジェクト固有のコーディング規約やセキュリティポリシーに基づいたレビューを行うようカスタマイズできます。これにより、チームの開発ルールに沿った一貫性のあるフィードバックを得られます。

リポジトリ全体のカスタム指示

.github/copilot-instructions.mdファイルを作成することで、リポジトリ全体に適用されるレビュー観点を設定できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# コードレビューガイドライン

## セキュリティチェック
When performing a code review, apply the following security checks:
- SQLインジェクションの脆弱性がないか確認してください
- ユーザー入力のサニタイズが適切に行われているか確認してください
- 認証・認可のロジックに問題がないか確認してください
- 機密情報がハードコードされていないか確認してください

## コーディング規約
When performing a code review, check the following coding standards:
- 変数名と関数名は意味のある名前になっているか
- 関数は単一責任の原則に従っているか
- エラーハンドリングが適切に実装されているか
- ネストが深すぎる(3レベル以上)箇所がないか

## パフォーマンス
When performing a code review, focus on performance issues:
- N+1クエリが発生していないか
- 不要なループ処理がないか
- メモリリークの可能性がないか

パス別のカスタム指示

.github/instructions/ディレクトリ内に*.instructions.mdファイルを作成することで、特定のファイルパスに対してのみ適用される指示を設定できます。

フロントエンドコード向けの設定例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
---
applyTo: "src/components/**/*.tsx,src/pages/**/*.tsx"
---
# Reactコードレビューガイドライン

When performing a code review on React components:
- useEffectの依存配列が正しく設定されているか確認してください
- メモ化(useMemo, useCallback)が適切に使用されているか確認してください
- コンポーネントのPropsに適切な型定義があるか確認してください
- アクセシビリティ(aria属性、セマンティックHTML)が考慮されているか確認してください

バックエンドコード向けの設定例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
---
applyTo: "src/api/**/*.ts,src/services/**/*.ts"
---
# APIエンドポイントレビューガイドライン

When performing a code review on API endpoints:
- 入力バリデーションが実装されているか確認してください
- エラーレスポンスが統一されたフォーマットで返されているか確認してください
- 認証ミドルウェアが適切に設定されているか確認してください
- レート制限が考慮されているか確認してください

テストコード向けの設定例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
---
applyTo: "**/*.test.ts,**/*.spec.ts"
---
# テストコードレビューガイドライン

When performing a code review on test files:
- テストケースが十分なカバレッジを持っているか確認してください
- エッジケースがテストされているか確認してください
- モックが適切に使用されているか確認してください
- テストが独立して実行可能か確認してください

カスタム指示の有効化と無効化

リポジトリ設定から、カスタム指示の使用を有効化または無効化できます。

  1. リポジトリの「Settings」→「Copilot」→「Code review」を開く
  2. 「Use custom instructions when reviewing pull requests」のトグルを切り替え

組織レベルでカスタム指示を管理している場合、組織の設定がリポジトリ設定より優先されます。

特定の機能での指示の除外

パス別指示ファイルでexcludeAgentキーワードを使用することで、特定の機能でのみ指示を無効化できます。

1
2
3
4
5
6
---
applyTo: "**"
excludeAgent: "code-review"
---
# この指示はCopilot Coding Agentでのみ使用され、
# Code Reviewでは使用されません

逆に、excludeAgent: "coding-agent"とすることで、Code Reviewでのみ使用される指示を作成することもできます。

静的解析ツールとの連携

2025年のアップデートにより、Copilot Code Reviewは静的解析ツールと連携して、より高精度なセキュリティ・品質チェックを実行できるようになりました。

利用可能な静的解析ツール

ツール 対象言語 主な検出項目
CodeQL 多言語対応 セキュリティ脆弱性
ESLint JavaScript/TypeScript コード品質・スタイル
PMD Java, Apex他 コード品質・潜在的バグ

静的解析ツールの有効化

プレビュー機能にアクセスできるユーザーは、以下の手順で静的解析ツールを有効化できます。

  1. 組織またはエンタープライズの設定で「Opt in to preview features」を有効化
  2. CodeQLはデフォルトで有効、ESLintとPMDは手動で有効化が必要
  3. Rulesetsで使用するツールを選択

CodeQLによるセキュリティチェック

CodeQLを有効にすると、以下のようなセキュリティ脆弱性を自動的に検出できます。

  • SQLインジェクション
  • クロスサイトスクリプティング(XSS)
  • パストラバーサル
  • 安全でないデシリアライゼーション
  • ハードコードされた認証情報

CodeQLの検出結果は、通常のレビューコメントとして表示され、修正提案も含まれます。

ESLintによるJavaScriptコード品質チェック

ESLintを有効にすると、JavaScriptおよびTypeScriptのコードに対して以下のチェックが行われます。

  • 未使用変数の検出
  • 一貫性のないコーディングスタイル
  • 潜在的なバグ(型の不一致など)
  • ベストプラクティスへの準拠

既存のESLint設定ファイル(.eslintrc.jseslint.config.js)がある場合、その設定が考慮されます。

セキュリティ・コーディング規約チェックの自動化

Copilot Code Reviewを活用して、セキュリティチェックとコーディング規約チェックを完全に自動化するワークフローを構築しましょう。

推奨構成

以下のファイル構成で、包括的な自動チェック体制を整えることができます。

.github/
├── copilot-instructions.md              # 共通のレビュー観点
└── instructions/
    ├── security.instructions.md         # セキュリティチェック
    ├── frontend.instructions.md         # フロントエンドコード規約
    ├── backend.instructions.md          # バックエンドコード規約
    └── api.instructions.md              # API設計チェック

セキュリティチェック用カスタム指示の例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
---
applyTo: "**/*.ts,**/*.js,**/*.tsx,**/*.jsx"
---
# セキュリティレビューチェックリスト

When performing a code review, apply the checks in this security checklist:

## 入力検証
- すべてのユーザー入力がサニタイズされているか
- 正規表現によるバリデーションが適切か
- ファイルアップロードの種類とサイズが制限されているか

## 認証・認可
- 認証が必要なエンドポイントに認証ミドルウェアが設定されているか
- 認可チェックがビジネスロジックの前に行われているか
- セッション管理が安全に実装されているか

## データ保護
- 機密データが適切に暗号化されているか
- ログに機密情報が出力されていないか
- 環境変数から機密情報が取得されているか

## エラーハンドリング
- エラーメッセージに内部情報が含まれていないか
- 例外が適切にキャッチされているか
- スタックトレースが本番環境で非表示になっているか

コーディング規約チェック用カスタム指示の例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
---
applyTo: "**/*.ts,**/*.tsx"
---
# TypeScriptコーディング規約

When performing a code review, verify compliance with these coding standards:

## 命名規則
- 変数・関数名はcamelCaseを使用
- クラス・インターフェース名はPascalCaseを使用
- 定数はSCREAMING_SNAKE_CASEを使用
- プライベートメンバーには_プレフィックスを使用しない

## 型定義
- any型の使用を避け、具体的な型を定義
- 関数の引数と戻り値には型注釈を付与
- unknown型を適切に使用してany型を回避
- 型ガードを使用して型の絞り込みを行う

## 関数設計
- 関数は30行以内を目安
- 引数は3個以下を推奨
- 純粋関数を優先
- 副作用を持つ関数は明示的に命名

## コメント
- 複雑なロジックには説明コメントを追加
- JSDocで公開関数をドキュメント化
- TODOコメントには担当者と期限を記載

ベストプラクティスと注意点

効果的なカスタム指示の書き方

Copilot Code Reviewに効果的なカスタム指示を作成するためのポイントをまとめます。

  1. 明確で具体的な指示を書く: 「良いコードを書いてください」ではなく「関数は単一責任の原則に従っているか確認してください」のように具体的に
  2. 「When performing a code review」で始める: レビュー時に適用されることを明示
  3. チェックリスト形式で記述: 確認項目を箇条書きにすることで漏れを防ぐ
  4. 優先度の高い項目を先に記載: セキュリティチェックなど重要な項目を最初に
  5. 2ページ程度に収める: 指示が長すぎると効果が薄れる可能性がある

Copilot Code Reviewの限界

Copilot Code Reviewは強力なツールですが、以下の点を理解しておく必要があります。

  • 人間のレビューの代替ではない: AIのレビューは補助的な役割であり、最終判断は人間が行う
  • すべての問題を検出できるわけではない: ビジネスロジックの正当性など、コンテキストが必要な判断は苦手
  • 誤検知の可能性: 時として不要な指摘や誤った提案を行うことがある
  • プレミアムリクエストのクォータ消費: 自動レビューはプルリクエスト作成者のクォータを消費

レビュー結果の検証

Copilotのレビュー結果は必ず検証しましょう。

  • 提案された変更が本当に改善になるか確認する
  • 誤った指摘にはサムズダウン(👎)でフィードバックを送る
  • 有用な指摘にはサムズアップ(👍)で評価する

このフィードバックは、GitHubがCopilot Code Reviewの品質向上に活用します。

まとめ

GitHub Copilot Code Reviewは、コードレビュープロセスを大幅に効率化する機能です。本記事で解説した内容を実践することで、以下のメリットを得られます。

  • レビュー待ち時間の短縮: 自動レビューにより、人間のレビュー前に問題を発見
  • 一貫性のあるレビュー品質: カスタム指示により、チーム全体で統一されたレビュー観点を適用
  • セキュリティチェックの自動化: CodeQL連携により、セキュリティ脆弱性を早期発見
  • コーディング規約の自動適用: ESLint/PMD連携により、コード品質を維持

まずはリポジトリのRulesetsで自動レビューを有効化し、.github/copilot-instructions.mdでプロジェクト固有のレビュー観点を設定することから始めてみてください。AIと人間のレビュアーが協力することで、より高品質なコードを効率的に生み出せるようになります。

参考リンク