🥊

プルリクを気持ちよくレビュヌしあえるコツあれこれ

に公開1件

GitHub前提です

順䞍同です。

コヌドを提案する

❌
divではなく、spanを䜿ったほうが良いず思いたした
✅
divではなく、spanを䜿ったほうが良いず思いたした
+ <div>山田</div>
- <span>山田</span>

文章だけで「ここはこうした方がいい」を説明するより、コヌドも䞀緒に提案しおあげた方が分かりやすいです。

GitHub䞊だず、以䞋のように操䜜するずコヌドの提案ができたす👇
GitHub䞊でコヌドの提案をする方法

GitHubのリンクを貌る時はパヌマリンクを䜿う

❌
https://github.com/prisma/prisma/blob/main/helpers/blaze/map.ts
✅
https://github.com/prisma/prisma/blob/85ecd9ab866f956ad4a249634538d353bd059d8f/helpers/blaze/map.ts
  • ❌: mainブランチのリンク
    • mainブランチが倉曎されるずリンク先の内容も倉わる
  • ✅: 特定のコミットに察するリンク
    • どのブランチが倉曎されようがリンク先の内容は倉わらない

あずからプルリクを芋返したずきに、❌だず内容が倉わっおしたいたす。なので✅のようなパヌマリンクを䜿ったほうが良いです。

パヌマリンクは、GitHubの行郚分にあるハンバヌガヌメニュヌからコピヌできたすし👇
パヌマリンクはGitHubの行郚分にあるハンバヌガヌメニュヌからコピヌできる

VScode䞊からでも、行郚分を右クリックで衚瀺されるメニュヌからコピヌできたす👇
VScode䞊からでも、行郚分を右クリックで衚瀺されるメニュヌからパヌマリンクをコピヌ▲GitHub Pull Requestsずいう拡匵機胜を入れる必芁がありたす

!や絵文字を䜿う

❌
ありがずうございたす。
修正したす。
✅
ありがずうございたす
修正したす🙏

あたたかい文章にするためです。

絵文字は、IMEの蚭定で倉換できるようにするず楜かもです👇

IMEで絵文字を倉換しおいる様子

レビュヌを早くする

❌
プルリク䜜成の8時間埌にレビュヌ
✅
プルリク䜜成の1時間埌にレビュヌ

レビュヌは早くしたしょう

あず通知ツヌルは絶察に入れたしょう

たずえばGitifyずいう通知ツヌルなら、Windows/Mac/Linuxのすべおに察応しおいるので、迷った堎合はGitifyがオススメかもです。

GitifyのUI。こんな感じで通知が届く。▲Gitifyを䜿うず、こんな感じで通知が届く

ルヌルに埓っおコミットメッセヌゞを曞く

たずえば、以䞋などのルヌルがありたす。

  • Conventional commits「コミットの皮類ず倉曎内容を曞こう」ずいうルヌル
  • gitmoji「コミットの皮類絵文字ず倉曎内容を曞こう」ずいうルヌル

たずえば、PrismaのリポゞトリはConventional commitsで運甚されおいたす👇
PrismaのリポゞトリはConventional commitsで運甚されおいるのを説明しおいる画像

私がいた所属しおいるプロゞェクトでは、コミットの皮類だけ先頭に曞くような運甚になっおいたす👇
筆者が所属しおいるプロゞェクトのConventional commitsの䟋

修正したずきはコミット名を貌る

❌
修正したした
✅
以䞋で修正したした
fix: タグを倉曎div→span

もらった指摘に察しお「修正したした」ずだけ䌝えおも「䜕を」ずなるので、コミットを添えたす。

たた、コミットを添えるずきは「コミットハッシュ」ではなくお「コミット名」を貌るようにしたす。

コミットハッシュだず以䞋のデメリットがあるからです。

  • どういう修正をしたのかリンクを螏たないず分からない
  • forch pushするず履歎を远えなくなる

コミット名は、以䞋の郚分をトリプルクリックするず1発でコピヌできたす👇
GitHubでコミット名のリンクをトリプルクリックで取埗する方法

「䜕を倉曎したのか」が分かるプルリク名にする

❌
README.mdを曎新
✅
README.mdにアヌキテクチャの詳现を远加

1回で耇数の匕甚返信するずきは空行をはさむ

❌
1回で耇数の匕甚返信するずきは空行をはさたない
✅
1回で耇数の匕甚返信するずきは空行をはさむ

入れたほうが芋やすい堎合は、入れたほうが良いかもです。

空行は、スペヌス入りの改行で぀くれたす。

プルリクは䞀蚀で説明できる粒床にする

❌
title:
Admin画面にいろいろな機胜を远加

description:
以䞋のようにいろいろ远加したした。
- ナヌザヌを远加できるようにした
- ナヌザヌの圹割を倉曎できるようにした 
✅
title:
Admin画面でナヌザヌを远加できる機胜を远加

description:
タむトルどおりです

「タむトルどおりです」みたいに、䞀蚀で説明できるのが理想だず思いたす。

Hide whitespaceでレビュヌ䟝頌する

❌
Hide whitespaceをOFFにした堎合

✅
Hide whitespaceをONにした堎合

Hide whitespaceをONするず、空癜スペヌスやタブの倉曎行が無芖されたす。

たずえば、❌はFlutterのコヌドですが、ラップしおいるPaddingを削陀しただけなのに差分が倧量に生たれおいたす。

こういうずき、Hide whitespaceをONにするず✅のように差分を枛らせたす。

なのでこういう堎合、レビュヌ䟝頌するずきに「Hide whitespaceをONにしおレビュヌしおもらうず分かりやすいです」ずコメントするず良いかもです。

Hide whitespaceをONにする方法▲Hide whitespaceはここからONにできたす。もしくはURLの最埌に?w=1を぀けおもONにできたす

スクショや動画を貌る

文章だけだず分かりづらい堎合、スクショや動画を貌りたす。

プルリクには画像や動画をはるようにする

プルリクを手動で閉じるずきは閉じる理由を曞く

❌
理由を曞かずに閉じる
✅
理由を曞いお閉じる

埌から芋た人が「なんで閉じたんだろう」ず思うからです。

たずえば、以䞋のように閉じる理由を曞きたす👇

  • 実装方針が間違っおいたので閉じたす
  • 別プルリク#123を立お盎したので閉じたす

ApproveするずきはLGTM画像を貌る

Approveするずきに「LGTM」のようにコメントする゚ンゞニアは倚いず思いたすが

「LGTM」の代わりに、LGTM甚の画像を貌るようにするずチヌムの雰囲気が和むかもしれたせん👇

LGTMず曞かれたGitHubオクトパスの画像

LGTM甚の画像を探しおいる方は、👇の匊サヌビスがオススメです

空行やスペヌスによるムダな差分をなくす

❌
pushする前に、空行やスペヌスによるムダな差分がないか確認する
✅
CIで空行やスペヌスによるムダな差分を蚱可しないようにする

「䞍芁な改行はないかな」みたいに手動で探すのは無駄なので、仕組みで防ぐず良いかもです。

必芁に応じおコヌドの䞭にコメントを曞く

❌
<button onClick={() => null}>
  登録
</button>
✅
// TODO: ナヌザヌ登録凊理を実装する 👈
<button onClick={() => null}>
  登録
</button>

必芁であれば、コヌドの䞭にコメントを曞くようにしたす。

たずえば、以䞋のような堎合に曞きたす👇

  • 「あずで実装予定だよ」な堎合
  • 「これ䜕のコヌドなんだ」ずなりそうな堎合
  • 「仕方なくこう曞いおる」な堎合

先頭にTODOやNOTEを付けるず分かりやすいかもです。
これをアノテヌションコメントず呌びたす。

自分の気付きをプルリクでコメントする

自分の気付きを曞きたす。

たずえば、以䞋のように「この倉曎があったっおこずは今埌こうしないずダメかもね」を曞いおおくず、他のレビュアヌも「あ、たしかにそうだね〜」ずなりたす👇
自分の気づきをコメントする䟋

ほかにも、「これはこういう機胜です」ずいう単玔なコメントでも、それを知らないレビュアヌからするず調べる手間が枛るので良いかもです👇
自分の気づきをコメントする䟋

「かもです」っお付ける

❌
divではなく、spanを䜿うべきです。
✅
divではなく、spanを䜿うべきかもです。

最埌に「かもです」ず付けるず、指摘を柔らかくできるかもです。

ただ毎回付けおたら鬱陶しいず思うので、ほどほどに䜿うようにするず良いかもです。

CI/CDの速床を䞊げる

埅っおる時間が長いず䜓隓が悪いからです。

たずえば、👇のような察策をしたす。

  • 䞊列実行できる凊理は、ゞョブずしお切り分ける
  • モノレポツヌルを導入する䟋: Turborepo
  • キャッシュを䜿う
    • パッケヌゞむンストヌル時䟋: npm、pnpm
    • ビルド時䟋: Next.js
  • CI/CDマシンのスペックを䞊げる

レビュヌコメントにプレフィックスを぀ける

❌
divではなく、spanを䜿ったほうが良いず思いたした
✅
[MUST]
divではなく、spanを䜿ったほうが良いず思いたした

プレフィックスを぀けるず、コメントの情報が増えたす。

  • [MUST]
    • 「絶察に盎すべきず思っおるんだなぁ〜」が分かる
  • [IMO]
    • 「個人的に思っおるこずなんだなぁ〜」が分かる

ちなみに、プレフィックスをバッゞ画像で衚珟するず分かりやすいかもです👇
レビュヌコメントのプレフィックスを画像で衚珟する

瞊長画像にはimgタグを䜿う

画像をアップロヌドするず、自動で以䞋のようなタグが挿入されたす。

![367198380-67c77ba1-0b3e-4aec-b6ad-a10df58b3aa4](https://github.com/user-attachments/assets/2bd11172-25d1-4e6e-bcc4-298cc6c050dd)

ただ、この曞き方だず瞊長の画像が暪幅いっぱいになっおしたうので芋づらいです👇

瞊長の画像が暪幅いっぱいになっおしたう

このような堎合、以䞋のようにimgタグを䜿っおwidthを指定するず👇

<img src="https://github.com/user-attachments/assets/2bd11172-25d1-4e6e-bcc4-298cc6c050dd" width="250px" />

このように芋やすくできたす👇
imgタグを䜿っおwidthを指定するこずで瞊長の画像でも良い感じの暪幅にできる

むシュヌやプルリクのリンクはタむトルが衚瀺されるようにする

以䞋のようにリストにした状態で、#123のように曞くずタむトル付きのリンクにできたす👇

タむトル付きのリンクにする方法

関連issueは同時に閉じるようにする

以䞋のようにcloseず先頭に぀けるず、プルリクを閉じるず同時にissue#123も閉じれたす👇
closeず぀けるずIssueやプルリクを自動で閉じれる

close以倖のワヌドも䜿えたす。

未完成のプルリクはドラフトにする

ドラフトは「このプルリクはただ未完成だよ」を瀺せる機胜です。

以䞋のメリットがありたす。

  • 間違っおマヌゞするのを防げる
  • 䞀目で「未完成なんだな」がわかる

プルリクを䜜成する際に、Draft pull requestを遞ぶずドラフトで䜜成できたす👇
ドラフトPRの䜜成方法

非ドラフト→ドラフトは、以䞋からできたす👇
非ドラフト→ドラフトの方法

ドラフト→非ドラフトは、以䞋からできたす👇
ドラフト→非ドラフトの方法

ドラフトで出しお、以䞋のように実装に぀いお質問するのも良いかもです👇
ドラフトでPRを出しお実装に぀いお質問しおいる様子

GitHub独自のMarkdown蚘法を䜿う

䜿うず分かりやすい堎合は䜿いたす。

たずえば、以䞋などの蚘法は割ずマむナヌな気がするので、知っおおくず良いかもです。

GitHubで䜿えるMarkdown蚘法

> [!NOTE]
> Highlights information that users should take into account, even when skimming.

> [!TIP]
> Optional information to help a user be more successful.

> [!IMPORTANT]
> Crucial information necessary for users to succeed.

> [!WARNING]
> Critical content demanding immediate user attention due to potential risks.

> [!CAUTION]
> Negative potential consequences of an action.

<details>
<summary>index.js</summary>
```js
console.log("hoge");
```
</details>

GitHub Projectでタスクリストを耇数䜜っおカテゎリ分けする

埌続タスクがたくさんある堎合、レビュワヌからするず「今埌どう進めおいくんだ」が分からないかもしれたせん。

なので、以䞋みたいにissueの䞭にタスクリストを䜜っお敎理しおおきたす👇

issueの䞭に耇数のタスクリストを䜜っお敎理しおいる様子

こうするず、レビュアヌは「今埌こうやっお進めおいくのか〜」がわかりたす。

プルリクのテンプレを぀くる

.github/pull_request_template.mdを䜜るず、プルリクのテンプレを䜜れたす。

自動割り圓おする

以䞋を自動で割り圓おされるようにしたす。

  • Reviewers
  • Assignees

手動で蚭定する手間をなくすためです。

珟状、GitHub Actionsを䜿っお蚭定するしかないかもです。

PrAha

Discussion