「GitHubでプルリクエストを提出する際に気をつけたいこと、全て満たしている状態で出したいこと」
そんな自分なりのプルリクチェックリストを作りました。全てチームの先輩方からアドバイスいただいた内容です。
✅ そのプルリクを見て、何がどう変わるのか、ちゃんと伝わるか?
プルリクを提出するときは、どの部分がどのように変更されるのかを明確に記述しましょう。その変更の理由や背景も書くとより親切ですし、認識のズレもなくなりスムーズです。
私たちのチームでは、Before Afterの画面スクリーンショットを添付することで、画面上での実際の変更も見えるようにしています。視覚的に変更を認識しやすくなりますし、またレビュアーが画面を開きに行く手間も省くことができます。
✅ そのプルリクの変更が多すぎないか?
プルリクは、大きな機能・リリース単位で提出する必要はありません。できるだけ最小単位にして、こまめに依頼することが大切です。
最近、私たちのチームでも大きなリリースのタスクがあり、うまく分割することができず600ファイルを超える巨大プルリクを爆誕させてしまいました。
ここまで大きくなくても、「30ファイルを超えているくらいでも"レビューちょっと後回しにしたいな〜〜"と思ってしまう」という先輩の意見もありました。小さなプルリクは素早くレビューをもらうことにも役立ちます。
そのタスクで達成すべき要件が10個あったとしても、10個完遂してからじゃないとレビューに出してはいけない、、、と考えてはいけません。
むしろ、10個一気に出してしまうとレビュアーの負担が莫大になり、レビューの質も保ちにくくなり、さらに根本的な修正があった時には手戻りの手間が半端じゃありません。少しずつ、最適な最小単位で出せるように心がけていきたいものです。
✅ 自分で気付けるレベルのミスを残していないか?
ある日先輩から、「ちょっと雑さがあるね〜自分で気付けるようなミスも混じっていて、惜しいね〜」というアドバイスをもらいました。
初心者ほど気をつけたいところだと思います、、、が、提出までに時間をかけすぎていないか気にしてしまったり、見直しても気付ける精度が低かったり、、、
難しいところですが、いつまでも意識し続けたい項目です。私はRubyMineで開発しているのですが、RubyMineで差分を一つ一つチェックしてpushした後、もう一度プルリクの差分を見て、おかしな記述はないか、明らかにリファクターすべきコードはないかをダブルチェックするようにしています。
✅ プルリクを出すブランチを間違えていないか?
これも上の項目と近いですが、絶対に避けたいミスです。私はいつもプルリクを開ける前に、「into 〜 from 〜」の部分を見るだけでなく声に出して読み上げて、確認するようにしています。
✅ 自分の意図(なぜこのコードを書いたのか)や、迷った箇所、検討中の内容は伝わるか?
「これどういう意味?」「何でこうなったの?」「この箇所には後で修正が加わるの?」
そんな質問コメントをもらいそうな箇所がないか、あらかじめ自分でチェックするようにしています。質問を想像することによって、コードの中にコメントを残すべきかどうかの再検討もできます。
また、変更の方法やコードの書き方に迷った箇所がある場合は、自身の考えや検討内容、他の候補などを自分でプルリク上にコメントを残しておきます。あるいは、プルリクを提出すると同時に口頭で伝えるようにします。すると、レビュアーから必ず意見をもらうことができ、より少ないやり取りで修正していくことができます。
✅ レビュアーを指定しているか?
プルリクの提出時には、レビュアーを指定することを忘れずに行いましょう。(私はよく忘れてしまいます。)
指定されたレビュアーはGitHub内で通知の確認ができるので、レビューが忘れ去られにくくなるはずです。
✅ Rubocopやテスト、CIは通過しているか?
プルリクを提出する前に、CI等のエラーがないかを必ず確認しましょう。これを怠ると、レビュアーが指摘する前に修正できたはずのエラーやスタイル違反が残ったままになり、無駄なやり取りが増えてしまいます。
私たちのチームではプルリク提出時のマナーとして必ず全てクリアした状態でレビューを出すように決めています。
番外編:新人も積極的にレビューをしてみると良いことたくさん
チェックリストではないですが、「新人の方でも、積極的に他の人のコードをレビューしてみること」をおすすめしたいです。
実際に私も、先輩のプルリクを見ることで、「こうやってプルリクを出すと良いんだ」という発見がたくさんありました。チェック項目1つ目の「変更点をスクリーンショットで載せること」や、5つ目の「迷った箇所をコメントで残しておいて積極的に議論を始める」という取り組みも、先輩のプルリクを見て知ったことです。
初めは先輩のプルリクを見たところでレビューできることもありませんし、まずコードの意味もわかりません。でも、プルリクの出し方自体や、他の方のコメントでコードの書き方を学ぶことはできます!とってもたくさん。
なので、自分に対して出されていない先輩方のプルリクでも、ぜひ覗きに行って、色々吸収することをおすすめしたいです。
まとめ
より分かりやすく、よりレビューのしやすいプルリクを出せるように。私自身チェック項目を守っていけるよう頑張ります。ご覧いただきありがとうございました。