春頃からGitHubでCopilotくんにプルリクエストをレビューさせる機能を実務で使えるようになったので、色々試してみた備忘録。
レビュー依頼方法はプルリクエストを作成した後に、右側のサイドバーから、レビュアーにCopilotくんをアサインするだけ。簡単。
英語→日本語の壁
初期段階だと英語でレスすることが多かったので、概要に「日本語で回答、コメントをすること」などと書いてたが、copilot-instructions.md
というファイルをリポジトリのルートに置くと、そこに書いた指示を踏まえてレビューしてくれる。ので、以下のように追記したらほぼ日本語で回答してくれるようになった。
**重要**: 日本語で回答、コメントをすること
いつレビューしてもらうか?
自分のプルリクエストをドラフトからオープンする前
今のところ一番よく使うタイミング。自分のであればCopilotくんにレビュー依頼しやすいので初めて試す時にもおすすめしたい。
また突っ込まれる箇所が多いと通知が激しいので、他メンバーがレビューにアサインされる前とかにやっておいた方が気まずくならずに済む。
Typoを見つけることに関しては自分より信頼できると思ってる。
最近だとちょっとした表記揺れなども教えてくれることもある。
まとめブランチや巨大なプルリクエストをレビューする時
自分が休憩を始める前にアサインすると休憩中にざっくりレビューをしてくれるので恩恵を感じられる。
Copilotくんにレビュー依頼すると意外な箇所のTypoとか、ブランチ個別のプルリクエストでみた時には問題なかった箇所でもまとまって見るとこうした方がいいのでは?といった点を教えてくれることもある。
補足:他人が作ったブランチの場合
いきなりCopilotくんをレビュアーに追加すると心象を悪くしてしまうかもしれないので、自分がレビューするついでにセカンドオピニオンでCopilotくん追加しますねーと前置きしてアサインしたり、Copilotくんのコメント内容も確認して補足コメントを書き込むようにしている。
どんな内容がいいのか?
プルリクエストの概要を充実させる
意図を重視した回答をしてくれてるような気がする。
人間のレビュアーにとっても有益だと思うので効果的な書き方を研究したい。
ソースコメントで編集履歴や意図が多く書かれているコード
やぼったいと思ってたが、意外と相性がいいのか通常のコードより意図を重視した回答をしてくれる。
試したのは他チームが作ったソースを移植するための対応だった。興味深かったが自分が普段書くコードでは積極的にやることはないと思う。
Dependabotのプルリクエスト
時々、影響範囲を調べるのが難しそうだなという時に気休めで試してみているものの、Copilot wasn't able to review any files in this pull request.
などと回答が出てこないことが多い。でもこの辺をうまくレビューしてくれると助かるので今後に期待。
Copilotくんからのレビューコメントをどう受け止めるか?
提案を全部取り入れてみる
ありがとうCopilotくん。やってみるよ。
なんて全てを受け入れて修正してみたこともあるが、予定の工数内で収まらなかったり、スコープ外にも手を入れないと解決できないなど限界があった。
そもそも全部のコメントを取り入れた場合の整合性までは考慮してくれてなさそうなので取捨選択が必要だと思った。
(例えばこの部分はコンポーネントに分けたほうがいいというコメントの後に、コンポーネントに分けてない細部も直す別案を提案してくるなど。)
一旦全部にマジレスし、サクッと直せるとこは即対応。熟慮の必要があればチケット起票。
最近はこのスタイルに落ち着いた。
すぐに直せなくても確認したことを残すためにここは直したいのでチケットに起票する。これは〇〇があるのでこのままで。などと理由を返信してみる。
すると別のレビュアーから「〇〇だけど△△もあるからやっぱり直したいね」的な意見をレスしてくれたりするのでイノベーションが起きやすくもなる。