🔎

GitHub Copilotの実務活用術:レビュー・テスト自動化・開発効率化のリアル

に公開

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

はじめに

株式会社PREVENTの永田です。
Github Copilotを社内に導入してどのような形で活用しているかを紹介します。

レビュー

開発効率化するうえで、レビュー負荷が高く、レビュー待ちがネックになるという課題を抱えていました。そこで、以下の2つの解決策を実施しました。

  • レビュー依頼する前に、Copilotレビューを行う
  • プルリクエストの粒度を小さくする

ここでは前者についてお話します。
Copilotが一次レビューでtypoや単純なロジックミスを事前に指摘してくれることで、人間のレビューでは「仕様として正しいか」に集中できるようになりました。結果として、レビューの質を落とさずに負荷を下げられています。
https://docs.github.com/ja/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review?tool=webui

簡単にやり方を説明します。
プルリクエストをOPENしたら、ReviewersにCopilotをアサインします。

以下のようにレビューしてくれます。

vscode上でもCopilotレビューは可能ですが、GitHub上で実施すると、レビュー担当者がレビュー時に参照できるため便利です。
https://docs.github.com/ja/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review?tool=vscode

基本はレビューコメントが英語なので、日本語にしたい場合はinstructionsに記述することで対応できます。

.github/instructions/copilot-instructions.md
# 基本ルール
- レビューは日本語で行ってください

テスト自動化

テストを書くことの重要性は認識しつつも、当たり前に書くという習慣が根付いていませんでした。Copilotにテストを書いてもらうようにしたことで、テストを書くハードルが下がり、習慣化させることができました。
弊社では以下のようなやり方をしています。

カスタムインストラクションを書きます。
https://docs.github.com/ja/copilot/how-tos/configure-custom-instructions/add-repository-instructions?tool=webui

.github/copilot-instructions.md
# コード生成ルール
- テストコード生成ルールは、.github/instructions/test.instructions.mdに従ってください

具体的な内容は記述しませんが、以下のようなことを書いています。

.github/instructions/test.instructions.md
# テストファイル作成場所

- ルートディレクトリの `test` フォルダにテストファイルを作成してください。
- テストファイルは、対応するコンポーネントやページのファイルと同じ階層に配置してください。

# テスト作成ルール

## ファイル名

- テストファイル名は `[元ファイル名].spec.ts` の形式にしてください。

## 基本構造

## テスト内容

## テストライブラリとインポート

## モック

## テストケースの命名規則

## 参考ファイル

## 追加ガイドライン

Copilot Agentにテスト自動生成の指示をするとテストコードが記述されたファイルが生成されます。
先に基本となるテストコードを1つ書いておく必要はありますが、それをもとにいい感じに作成してくれます。
最初は手直しが必要でしたが、都度カスタムインストラクションのアップデートやCopilot AgentのModelの進化によって、質の良いテストコードが生成されるようになってきていると思いました。

別のやり方も行っています。
テスト作成のissueを作り、copilotをissueにアサインするだけで、テスト生成のプルリクエストを作成してくれます。
生成されたプルリクエストのコードを人がレビューします。
問題あれば、コメントで@copilotに指摘し、修正してもらいます。
実際に、バックエンド側のテストが書けていなかったところを数日で書き終えた実績があります。

開発効率化

Github Copilot ChatのAskをよく使います。
https://docs.github.com/ja/copilot/how-tos/chat-with-copilot/chat-in-ide
以下の使い方と非常に相性が良いと感じており、開発スピードが向上しました。

  • たたき台の作成
  • 既存コードの理解

最後に

AIの精度が確実に上がってきており、業務で使うのが当たり前になってきていると思っています。
弊社では、さらにAIをうまく活用していくために、知識平準化ためのAI知識共有会やAIを試すグループワークなどを実施していこうと考えています。

Discussion