15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

プルリクエストを段階的に出してレビューしやすくしよう!

Posted at

一つの機能を実装する際に、プルリクエストを分割して出すことでレビュアーの負担を減らそうという提案です。
下記の図のイメージです。

スクリーンショット 2018-02-22 23.04.44.png

背景

プルリクエストを程よい粒度で分割できれば良いので、わざわざこんな回りくどいことをせず、基本的には直接masterブランチなりに適度にプルリクエストを出せば良いと思います。

図の例のようにUIだけ実装している時などに、masterにマージすると変な状態のコードがリリースされてしまってマズいという場合があり、そういう場合のプルリクエスト運用の提案になります。

デプロイ可能な単位でmasterにマージしたいが、プルリクエストは適度に分割したい、という感じです。

どの開発現場でも起きうる結構普遍的な問題なのかと思っているのですが、調べてみたら今回のような具体的な手法みたいなのがあまり見当たりませんでした。
これ絶対既に誰かやってると思ったんですが... :thinking:

私が知らないだけで、

  • 既にこのやり方に名前がついていたり
  • もっとスマートなやり方があったり
  • 「うちではこんな感じにやっていて、いい感じに回ってるよ!」

などの情報があれば是非教えてください!

やってみた

まだこれから試していく、という段階です。
1回だけこのフローでプルリクを出したのですが、レビュアーの方には「やりやすくて良かった」という旨の言葉を頂けました。

また、この案では最初に空コミットをするので、このWIPパターンと組み合わせてプルリクを出したりしました。

Work in ProgressパターンによるPull Requestを利用した開発フロー

調べてみた

こういうやり方は既に世に出回っているだろうと調べたメモを書いておきます。

参考1

「巨大プルリク1件vs細かいプルリク100件」問題を考える(翻訳)

10 lines of code = 10 issues.
500 lines of code = "looks fine."
Code reviews.

記事内で↑こちらのツイートが引用されていましたが、私も身に覚えがありますし、こういったことが起きないように巨大なプルリクエストはできるだけ避けたいと考えています。

具体的には下記のアプローチが書いてありました。

  • 「早期」かつ「頻繁に」
  • 粒度を小さくする
  • 作業のスコープを絞る

上部の図の例だと、ui と api というスコープ分割してレビューがしやすくなり、分割されたことでプルリクの粒度も小さくなっています。

参考2

なぜあなたのPull Requestは読まれないのか

記事内で Issueの単位とPRの単位は違う ということを書かれています。
これは巨大プルリクを減らすためには良い考え方だなと思いました。
漠然とそうあるべきだよなーみたいなことは思っていた気がしますが、ちゃんと明文化しておくことが大事だなと思いました。

細かい方法はやり方は私の案のものと異なりますが、概ね同じようなアプローチなのかなーと思って読みました。

まとめ

巨大なプルリクはレビュー辛い :joy:

15
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?