🚧

Draft Pull Request と WIP を使い分けて透明性を上げる

2024/01/09に公開

開発環境

  • 複数のチームでアジャイル開発
  • レビュー環境
    • GitHub を使用
    • レビュアーにアサインされた人以外もレビューに参加できる
    • Pull Request 上のやりとりは Slack に通知しており、誰でも閲覧可能

Draft Pull Request のよくない使い方

普段の開発では Draft Pull Request を活用しています。

Draft Pull Request は作業がまだ途中であり、レビュー可能な状態ではないですよ〜ということを明示したい場面に用いるものです。
Draft Pull Request ではマージボタンをクリックできません。
作業完了後 Ready for review をクリックして Pull Request を Open にすると、マージボタンがクリックできるようになります。

Draft Pull Request について

Draft Pull Request は作業途中であってもフィードバックをもらいやすくするために使い始めました。
しかし、使っているうちに「レビュー可能な状態ではない」ことを示すためではなく、「レビューが完了してもマージできない」ことを示すために使われることが多くなりました。

Draft Pull Request に対するコメントは現状 Slack に通知されません
そのため、レビューが可能な状態であるにもかかわらず Draft Pull Request にしている場合、クローズドな環境でレビューが進行し、アサインされたレビュアー以外のメンバーがレビューに参加するのが難しくなりますし(Pull Request が作成されていることに気づきづらい)、指摘内容や議論の内容も共有されません。
これでは、アジャイル開発で大切とされる透明性が失われてしまいます。

WIP でマージ可否を制御する

Draft かどうかでマージ可否を制御するのをやめて、代わりに WIP を導入しました。
これにより、Pull Request のタイトルに WIPwork in progress🚧 を含んでいると、Pull Request のステータスチェックが進行中のままとなり、マージできない状態であることが視覚的にわかります。

以前の記事「マージ前にベースブランチの変更の取り込みを必須化することでコード品質を向上させる」で紹介した Status checks that are required. に WIP を指定すれば、Pull Request のタイトルに WIP 等を含んでいるとマージボタンをクリックできないようにもできます。

変更前後の Draft、Open、WIP それぞれの意味は以下の通りです。
レビュー可能になれば Open にする運用に変えたので、Pull Request 上のやりとりが Slack に通知されるようになりました🙌

変更前 変更後
Draft ・まだ作業中でレビュー不可能
・レビューが完了してもマージ不可能
・まだ作業中でレビュー不可能
WIP - ・レビュー可能
・レビューが完了してもマージ不可能
Open ・レビュー可能
・レビューが完了したらマージ可能
・レビュー可能
・レビューが完了したらマージ可能

まとめ

情報を取りに行かなくても済むように Draft Pull Request の使い方を見直しました。
透明性が上がり、以前よりやりとりや議論を把握しやすくなったと感じます。

他にもっといい方法があれば、コメントで教えてください!

BABYJOB テックブログ

Discussion