BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

GitHub Copilot の独自観点レビューで速さと品質を両立する

GitHub Copilot の独自観点レビューで速さと品質を両立する

はじめに

この記事はBASEアドベントカレンダーの12日目の記事です。

devblog.thebase.in

BASEのカートチームでバックエンドエンジニアをしている、かがの(@ykagano)です。
他チームのコードも含めてレビューをする機会が増えてきたので、コードレビューの話をしようと思います。

コードレビューの流れ

普段自分が行っているコードレビューの流れは下記表の通りです。

GitHub Copilot Code Reviewでは個別コメントの形でレビューしてくれるのですが、コード自体の品質を複数の観点で評価をしてもらいたいことから、別途VSCodeで複数のレビュー観点を与えた上でコードレビューを行っています。

今回はこの「VSCodeのGitHub Copilotに独自観点を与えて対象PRのコードレビューを依頼する」の部分を解説します。

No. 概要 補足
1descriptionで概要を掴む
2PRにプロジェクト用のlabelが付いているか確認をするFindy Team+で対象プロジェクトを計測しているため
3GitHub Copilot Code Reviewが実施済みか確認する実施済みでなければレビュアーに追加する
4VSCodeのGitHub Copilotに独自観点を与えて対象PRのコードレビューを依頼する詳細は後述
5その間にコードをざっと読む
6GitHub Copilotに依頼したコードレビューの応答結果を確認する
7応答結果を踏まえてコードの気になった部分をあらためて読む
8リリース影響の動作確認ができているか確認するFeatureFlagを使わないリリースの場合、既存の動作確認ができているか確認する
9気になった点があればコメントするこの時、コメントのtypoのようなnitsが一点だけならコメントしませんが、imoがあれば一緒に報告します
10問題なければApproveする

MCP ServerとCustom Instructionsの準備

VSCodeにGitHub Copilot Chatの拡張機能をインストールしていることを前提とします。
まずGitHub MCP ServerをVSCodeにインストールします。

下記GitHub MCP ServerからInstall MCP Serverボタンを押してVSCodeにインストールしてください。

github.com

インストール直後に「PAT(Personal Access Token)or App token」の入力が求められるので、いずれかを入力してください。
これでGitHub MCP Serverが使用できるようになりました。

次にCustom Instructionsを準備します。
プロジェクトの .github/instructions 配下に codereview.instructions.md ファイルを作成します。
Gistにアップロードしましたので内容はこちらのリンクからご確認ください。

https://gist.github.com/ykagano/0db4debc7339a93038858b5ec677dc8e

codereview.instructions.md の最下部に記載のコードレビューの手順を抜粋します。

# コードレビューの手順

1. [ ] まずは変更が加えられたファイルの一覧を確認してください。
2. [ ] 次に変更差分を取得して、どのような対応がされているかを解説してください。
3. [ ] 変更差分について、コードレビューガイドラインの項目について○△×で評価して表にしてください。
4. [ ] テストクラスに実装されているテストケースを列挙してください。不足しているテストがあれば指摘してください。
5. [ ] 同じネームスペース内に存在する既存実装を参照して参照したクラス名を教えてください。また、それらのクラスと比較して過度に異なる実装をしている場合は指摘してください。
6. [ ] 気になった箇所について、詳細な説明と改善案を提案してください。

コードレビューは上記手順で実行されます。
ではここからはVSCodeでCopilotにPRをコードレビューしてもらいます。

GitHub CopilotのCustom Instructionによるコードレビュー

VSCodeでCopilot Chatを開きます。
チャットの左上にある「コンテキストの追加」を選択すると、入力エリアが開くので「手順…」を選択します。

コンテキストの追加を選択
(画像は VSCode より引用)

「codereview」を選択します。

codereviewを選択

その後以下のプロンプトをチャットに入力します。

https://github.com/[org]/[repo]/pull/[num] をレビューしてください

つまりPRのURLを貼って「レビューしてください」と言うだけです。
するとGitHub MCP Serverを通して取得したコード差分をCopilotがチェックし、Custom Instructionsで与えた観点に沿ったレビュー結果が表示されます。

ここではサンプルコードをCopilotに作成してもらい、一時的に作成したPRに対してレビューしてみます。
まずPRの概要と変更内容が解説されます。

PR概要と変更内容の解説

「コードレビューガイドライン」に沿って○△×で評価してくれます。

コードレビューガイドライン評価表

テストケースが列挙され、既存実装と比較されます。

テストケースの列挙と既存実装との比較

気になった箇所と改善点を列挙してくれます。

気になった箇所と改善案

最後にPR作成者への質問があれば列挙され、総評が出力されます。

PR作成者への質問と総評

これらの情報はコードをレビューする上で、有益な情報になっていると思います。

参考にさせていただいた記事

こちらのCustom Instructionsは、以下の記事を参考に作成しています。

コードレビュー結果を○△×の表で評価する方法を使わせていただきました。

fintan.jp

多数のコードレビューガイドラインを用意されていたので非常に参考になりました。

zenn.dev

また作成にあたり @OgasawaraYuki さんにご協力いただきました(@OgasawaraYuki さんはアドベントカレンダー21日目に登場予定です)。
ありがとうございました!

おわりに

Copilotによってある種複眼でのチェックが単独で行えるようになりました。
自分の眼で確認したレビュー品質の下限を担保できる上に、レビュー速度も向上しました。

BASEではこのようにCopilotと協働いただけるエンジニアを募集しています。

binc.jp

明日は @UenoKazuki さんの記事です、お楽しみに!