新卒エンジニアがチーム開発でGitHubを使うときに気を付けていること（レビュアー編）

この記事は [ZOZOテクノロジーズ #5 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zozo_tech5) 13日目の記事です。
昨日は @saitoryuji による [新卒エンジニアがチーム開発でGitHubを使うときに気を付けていること（レビュイー編）](https://qiita.com/saitoryuji/private/b7d66eae8b1baee6099e) でした。

# 前書き
以下に書いてある内容は、いろんな方のQiitaの記事等を見て自分で実践してみた結果やチームで実践している内容を踏まえて個人的見解で書いています。
そのため、完全な正解ではないです。
参考にしていただいて、チーム内でどうしていくのが自分たちにあっているかを議論するきっかけになればと思います。

# ～プルリクをレビューするまで（レビューする側）～

## 【Must】否定的な言葉は使わない！
理由 : レビュイーの心理的安全性を保つため！
本当にひどいコードだったとしても伝え方は考えよう！
コードを書いた側は時間を使って、自分の中での正解と思われるコードを書いたはず。
それを頭ごなしに否定されると人格を否定されたと感じる場面もあるだろう。

**絶対に相手を批判するような内容のレビューはしない！！！！**
思いやりを持ってレビューしよう！

Ref : [Pull Requestのレビューが辛くて会社をやめたい](https://anond.hatelabo.jp/20150419125822)
Ref : [コードレビューは粗探しや指示ではない](https://employment.en-japan.com/engineerhub/entry/2018/01/24/110000#%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AF%E7%B2%97%E6%8E%A2%E3%81%97%E3%82%84%E6%8C%87%E7%A4%BA%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84)

## レビュワーは早くレビューをしよう！
理由 : プルリクのレビューがなかなか終わらず次の作業に入れないという状況を防ぐため！
チーム内で無理のないレビュー期限を設けよう！
期限までにレビューが終わらない場合はその旨だけでもコメントするとレビュイーは安心！

Ref : [レビュワーやasigneeはすぐにプルリクを見よう](https://qiita.com/ikuwow/items/fb52a54c086398eb5b92#%E3%83%AC%E3%83%93%E3%83%A5%E3%83%AF%E3%83%BC%E3%82%84asignee%E3%81%AF%E3%81%99%E3%81%90%E3%81%AB%E3%83%97%E3%83%AB%E3%83%AA%E3%82%AF%E3%82%92%E8%A6%8B%E3%82%88%E3%81%86)

## レビューコメントにラベルを付ける

理由 : レビュー内容の優先度がわかるようになる！
また、必ずしも修正しなければいけない内容ではないが、一応コメントしておきたいときに便利。

```
[must] 必ず対応してほしい！ロジックにバグがある！
[imo] 自分の意見や提案・好み。 自分ならこう書くけどどうかな？
[nits] 些細な指摘。 ほんの小さな指摘だけど出来れば直してほしい。インデントやタイポ、コード規約
[ask] 質問,確認。 コードの意味や背景が分からないから教えて！こういう理解でOK?
```
Ref : [レビューコメントにラベルをつけるだけで開発効率があがって幸せになれそうな話](https://qiita.com/godgarden/items/3ea57a7ee6dbff1df6e6)

## Resolve Conversations は積極的に使っていこう！
理由 : コメント内容が解決したことがわかるため！
あとはプルリクが縦に長くなって可読性が下がることを防ぐため！
基本的には最初にコメントを書いた人がResolveする！

```
例1
レビュワー : この処理ってどうなってますか？
レビュイー : ほげほげになってます！
レビュワー : なるほど！ありがとうございます！ ←この時点でレビュワーがResolveする！

レビュワー : この処理はこのままでも問題ないけど、こうしたほうが可読性上がりそうですね！
レビュイー : なるほど！以下のコミットで修正しました！（コミットIDつける）
レビュワー : 確認しました！修正ありがとうございます！  ←この時点でレビュワーがResolveする！
```

Ref : https://qiita.com/azujuuuuuun/items/b93f33e6135228bcdec5

## レビュワーにアサインされていないプルリクも積極的に見よう！
理由 : できるだけいろんな人のコードを見て他人の知識を吸収しよう！
アサインされている人以外のレビューで気付ける点があればなおよし！
レビュワーにアサインされてないのになんでレビューしたんだよ！って怒る人がいなければ積極的にやろう！

## コーディングに自信がない人でもレビューをする！
理由 : レビューとは、指摘・アドバイスをすることではない！
自信がない人は他人のコードをみて、どうしてこの書き方にしたのか？というような質問もレビューでしてみよう！
また、自分ができてないことでも臆さずレビューに書くことも大事！

## Submit Review を使い分けよう！
理由 : レビューした結果、どういった状態かわかるようにするため！

```
Comment : 軽微な指摘、コメント
Approve : 承認
Request Change : 修正依頼
```
![submit_review.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385322/157fd04c-acaf-947c-b867-90e8cd01e2b8.png)


# ～レビュー完了後～

## マージが完了後ブランチの削除をしよう！
理由 : 対応完了したブランチが残っているとブランチを探すときにノイズが多くなって効率が下がるため！
マージした人は積極的に削除をしよう！
使いおわったおもちゃを片付けるのと同じ！
※削除してもリストアもできるので安心だよ！

# ～もっとGitHubを使いやすくするために～

## Pull Panda を導入しよう！
理由 : 自分がアサインされているプルリクやレビュー待ちのプルリクのリマインドがSlackに送られてくるので便利！
Ref : [無料になった Pull Panda を GitHub に導入すると、Pull Requestのやり取りが自動化されて便利に！！](https://dev.classmethod.jp/tool/github/happy-pull-panda/)

---
以上、新卒エンジニア（入社1年半くらいですけど、、、）がチーム開発でGitHubを使うときに気を付けていること（レビュアー編）でした！
明日は @ikeponsu さんが記事を書いてくれます！乞うご期待！