実際に会社で使っているプルリクエストのテンプレートを紹介します!
ラブグラフでCTOをしております横江( @yokoe24 )です!
今日は 弊社の秘伝のタレ!!
プルリクエストのテンプレート をご紹介します!
(以降、「プルリクテンプレ」と略します)
プルリクテンプレって?
まず「プルリクテンプレ」自体を初めて知る方は、
以下の GitHub の公式記事をお読みください。
.github/pull_request_template.md
というファイルをリポジトリに置くことで、
新たなプルリクエストを作るときの概要欄がそのファイルの中身通りになります。
レビュアーがレビューするにあたって知っておきたい情報 を入れてもらうためのテンプレートで、
OSS でもよく設定されています。
(例: https://github.com/twbs/bootstrap/blob/main/.github/PULL_REQUEST_TEMPLATE.md )
ラブグラフのプルリクテンプレを公開!
では、さっそく公開です!!
# 概要
<!-- タスクのURL。なければ次の行を削除してください -->
Notion:
<!-- デザインのURL。なければ次の行を削除してください -->
Figma:
<!-- レビュアーが理解できるよう、このプルリクの概要と共に、どうしておこなったかの背景が以下に書かれているとグッド -->
# 細かな変更点
<!-- コード自体の変更についてサマリを記載する。レビュアーが「なんで概要に書かれていないこれが変更されたんだろう?」と思わないように説明するのがポイントです -->
- 箇条書きで
- UI変更はスクショ添付するとグッド
## スクリーンショット
<!-- Command + Shift + Control + 4 でスクリーンショットして Command + V でここに貼り付けるのが楽。以下のテーブルは必要に応じて使ってください -->
| | Before | After |
| :---: | :----: | :---: |
| | | |
# 影響範囲・懸念点
<!-- レビュアーに見てほしい点、影響しそうな機能 -->
# おこなった動作確認
<!-- おこなった動作確認を箇条書きで。大きなUI変更は iOS Safari / Android Chrome での確認もすること -->
* [ ]
# その他
<!-- レビュアーへのメッセージや一言などあれば -->
工夫している点
何を書く項目かの説明をしている
このプルリクテンプレで工夫しているのは、HTMLコメントである <!-- -->
を使って
なにを入力してほしいかのガイドを書いているところ にあります。
『細かな変更点』のところなんかは、つい最近まで箇条書きの部分しかなくてガイドはなかったのですが、
新しく入ってきた人から『概要』との違いがわからないとの声もあり追加しました。
消さないといけない文字をできるだけ少なくしている
上で、HTMLコメントである <!-- -->
を使っていると書きましたが、それと関連している話で、
例えば
<!-- タスクのURL。なければ次の行を削除してください -->
Notion: https://www.notion.so/<タスクID>
と書かれている場合、プルリク作成者は https://www.notion.so/<タスクID>
の部分を削除してから URL を貼るという一手間が生まれます。
<!-- タスクのURL。なければ次の行を削除してください -->
Notion:
としておけば、 プルリク作成者は「文字の部分選択→削除」という手間を介さず、URLを貼るだけ で済みます。
プルリクエストにかける時間を少しでも減らすことは、塵も積もれば山となるで大切です。
「じゃあなんで細かな変更点のところは -
の後ろに文字が書かれているの?」という質問が生まれると思いますが、
これは Markdown に慣れていない方が -
の後ろに文字を書くことで箇条書きになることを最初知らなかった、という背景があったりします。今はもういらないかも。
今後の改善点
『影響範囲・懸念点』の項が難しい
『影響範囲・懸念点』の項に何を書くのかがけっこう難しく、自分でも迷うときがあります。
「このコードの変更をした」→「ってことは、変更箇所の X だけでなく Y にも影響ありそうだよね」→「だから動作確認として X と Y の両方を確認しておくのがいいよね」という考えを持つための整理項目だったり、
「このカラムの名前だと XXX の意味合いとも取られそうなので、さらにいい案求む!」というレビュアーへのお願いをするための項目だったりするのですが、
なかなかプルリクテンプレではその意図を説明しきれなくて、プルリクを書く人にとってわかりづらくなっています。
結果として、この項目を未入力のままプルリクを作る人もいるのですが、
実際は影響範囲が、動作確認に書かれていること以外にわたっているプルリクも存在してしまっています。
プルリクのテンプレートとしてこの項目の説明をどうすれば伝わるか、難しさを感じています。
未入力でプルリクが作られやすい項目があるときは、項目が必要ないか、項目の説明が理解しにくいか のどちらかだと思うので、
この項目は要改善です。
『おこなった動作確認』内のチェックボックスをどうするか
* [ ] テスト1
* [ ] テスト2
のようにマークダウンを書くと、チェックボックス付きの箇条書きになるので現在は活用しています。
ただ、動作確認はたいていプルリクエストを作る前にはもう実施済みなことが多いので、
ここがチェックボックスである必要があるかは迷っています。
プルリクエストを作る前に動作確認をする人にとっては、
ここをチェック済みに書き換えることが少々面倒で、ただの箇条書きのほうがありがたく、
一方で、プルリクをとりあえず作って、あとで動作確認する派もいるため、ここは迷いどころです。
最後に:プルリクテンプレの重要性
プルリクエストのテンプレートはとても重要です。
「なぜその変更をしたのか」というのは、コミットメッセージだけだと追いきれなく、
会社の歴史と同じだけ積み重なっていくソースコードにおいては、
昔いた社員がどうしてこの変更をしたのか、という情報を追うときにプルリクエストは大きな役割を果たします。
テンプレートとしてプルリクエストに書いておいてほしいことが書かれていると、
レビュアー(現在いる社員)が助かるだけでなく、未来の社員も助かるのです!
しっかり活用して、 「なぜここのコードは、こう変更されたのか」 を
誰もが追いやすい地盤を整えておきましょう!!👋
Discussion
参考にしてみます!
ありがとうございます!! うれしいです!!