GitHubのDraft Pull Request を活用しよう

こんにちは。ATOM事業部エンジニアのyuinaです。

Githubの Draft Pull Request という機能をご存知でしょうか?

とても便利な機能のため、ご紹介します。

github.blog

Draft Pull Request を使うメリット

通常、PullRequestを作るのは以下のタイミングかと思います。

  • 作ったコードをマージしたい時
  • 作ったコードをとりあえず見てほしい時
  • コードの実装方針についてディスカッションをしたい時

コードをマージしたい時は通常のPRをそのまま出し、コードをマージしたい時以外はWIPをつける運用が一般的ではないでしょうか。

WIP管理には様々な方法があると思います。

開発者間でのルールのみで運用することもあるでしょうし、Github AppsのWIPというアプリを導入するのもよく見る光景かもしれません。

github.com

もしアプリを導入する時は、誰かが導入するために時間を使うこともあるでしょうし、そもそもアプリを入れるために許可が必要なことも。
またアプリを導入したとして、それでも間違えてマージしてしまったりしてしまうことはあるかもしれません。過去私はやらかしたことがあります・・・

Draft Pull Requestを使うために追加でアプリを入れる必要はないため、使い始める時は一人からスタートできます。
また、Draftを解除しない限り管理者でもマージできないため、安全にRepository運用ができるメリットがあります。

どんなときに効果的なのか

Draft Pull Requestを使うと、こんなときに効果を発揮します。

  • まだマージはしないが実装したコードを見てもらいたい時
  • コードの実装方針についてディスカッションをしたい時

今後はWIP管理はDraft Pull Requestを使うと、良い運用ができるかもしれません。

Draft Pull Request の使い方

使い方は簡単。
PullRequestを作る際に横のプルダウンからCreate Draft Pull Requestを選択し、その後は普段のPullRequestと同様に作成するだけです。

普段ならCreate pull requestのボタンが以下のようにDraft pull request となっていれば大丈夫です。

Draftにするとアイコンがこのようなアイコンになります。

この状態にしてあげると、Draft解除しない限りマージできません。Closeは通常のPRと変わらず行えます。

Draftの解除はページ下部のReady for Review をクリックするだけです。

運用しているとこんなこともあるかもしれません。

  • 間違えてDraftPRを解除してしまい、Draftに戻したい時
  • 間違えて普通のPRで作ってしまったけれど、Draftにしたい時

そんなときはReviewersにあるConvert to draftをクリックするだけでDraftに変更できます。

運用例

私が実際に使っている運用例をご紹介します。

全てのコードが完成してCIで最終チェックをしたい時

PullRequestにCIのチェックを設けているチームは多いはずです。

Draft Pull Requestでも特殊な設定を行っていない限りはCIが普通に回ります。
最後にCIを回してチェックしてもらうような時に一時的にDraftにしておき、問題なければOpenしてレビューをしてもらうという運用をしています。

まだマージはしないけれど、チームメンバーに変更内容を伝えたい時

サービス開発をしていると、DBの設計をマイグレーションファイルにしたりすることも多々あると思います。
この場合、どのような変更を行うのかをチームメンバーに伝えて影響範囲を確認してもらうことも。

そんなときに別ブランチに全てまとめておいてDraft Pull Requestで見れるようにしています。
このDraft Pull Requestを確認してもらうだけでどのような変更が入るのかを情報共有できるようになります。 補足の情報が必要な時はレビューの時のようにコメントをつけることも可能なため、文章で纏めて伝えるよりも伝わりやすくなります。

まとめ

簡単に導入ができて、安全なRepository運用ができる機能であるDraft Pull Request。 これまで使っていなかった方も是非一度使ってみてください。