PaPoo
cover
technews
Author
technews
世界の技術ニュースをリアルタイムでキャッチし、日本語でわかりやすく発信。AI・半導体・スタートアップから規制動向まで、グローバルテックシーンの「今」をお届けします。

GitHubが「Stacked PRs」を用意した話:大きな変更を“小さく、順番に”レビューする新しい流れ

キーポイント

大きなPR、正直しんどい。だから「分割して積む」

GitHubが公開した GitHub Stacked PRs は、ひと言でいうと「でかい変更を、小さく切って順番にレビューできるようにする仕組み」です。

これ、地味に見えてかなり重要です。
というのも、大きなPRってレビューする側にとってかなりつらいんですよね。差分が多すぎてどこを見ればいいか分からないし、少し直しただけで別の場所にも影響が出るし、時間が経つとコンテキストも飛ぶ。結果としてレビュー品質が落ちて、チーム全体の速度も落ちやすい。

そこで出てくるのが stacked PRs
変更を「1本の巨大なPR」ではなく、​複数の小さなPRの連なりとして扱います。各PRはそれぞれ独立してレビューしやすいサイズにして、最後はまとめて本流のブランチに入れる、という考え方です。

個人的には、これはGitの世界でずっと“できる人はやっていた”テクニックが、ついにGitHubの正式な体験として整ってきた、という印象があります。かなり嬉しい進化ではないでしょうか。

Stacked PRsってどういう構造?

元記事では、stack をこう説明しています。

つまり、こんな感じです。

main ← PR #1 · auth-layer ← PR #2 · api-endpoints ← PR #3 · frontend

下のPRが土台で、その上に次の変更を積んでいくイメージです。
ここがポイントで、上のPRは下のPRの変更を前提にしているので、​順番に意味があるんですね。

普通のPRだと「このPR単体で完成していること」が理想ですが、Stacked PRsでは「小さな完成品を順番に積む」感じです。
この発想は、複雑な機能開発ほど効いてきそうです。認証、API、フロントエンドみたいに層が分かれている作業には、かなり相性がよさそうだと思います。

GitHubが“スタック全体”を理解してくれるのが面白い

この機能の良いところは、ただの運用ルールではなく、​GitHub自体がスタックを理解してくれる点です。

元記事によると、GitHubはスタックをエンドツーエンドで扱います。具体的には:

これ、かなり大事です。
なぜなら、stacked PRs は「工夫すればできる」だけだと、実運用で面倒になりがちだからです。GitHubがUI・ルール・CIまで含めて面倒を見てくれるなら、チームに導入しやすい。

特にレビュー画面で、今見ているPRが全体のどこにあるのか分かるのは大きいです。
スタック型の開発は便利ですが、油断すると「このPRってどこまでが前提だっけ?」と迷子になりやすいので、​可視化はかなり本質的だと思います。

何がうれしいのか:レビュー、衝突、速度

元記事が強く押している理由はシンプルで、​大きなPRは扱いづらいからです。

image_0002.svg

1. レビューしやすい

小さいPRなら、レビューする人は変更意図を追いやすいです。
「これは認証の変更」「これはAPI追加」「これはUI調整」と、役割が分かれれば、コメントも的確になります。

2. コンフリクトに強くなる

変更を長期間ため込むほど、他の人の作業とぶつかりやすくなります。
Stacked PRsでは、下の層から順に積み上げるので、​早い段階で変更を分離しやすい。結果として、衝突のダメージを抑えられる可能性があります。

3. チーム全体が速くなる

大きなPRが1本あると、レビュー待ちで止まりやすい。
でも小さいPRが連なっていれば、先頭から順にレビューを進めやすいし、必要なら一部だけ先にマージすることもできる。これ、地味ですが開発体験に効きます。

個人的には、「チームの速度を上げる」と聞くと新機能をどんどん増やす話に見えがちですが、実際はレビュー負荷を下げることのほうが効くことが多いと思います。Stacked PRsはまさにそこを狙っている感じです。

使い方は意外と柔軟。CLIだけじゃない

元記事では、gh stack CLI が紹介されていますが、​必須ではありません
ここはかなり重要です。

Stacked PRs は次の方法で扱えます。

つまり、「CLIを入れないと何もできない」という話ではありません。
チームの文化や好みに合わせて導入できるのは、かなり現実的です。新しい仕組みは、便利でも“専用手順だらけ”だと途端に広がりにくいので、これは良い設計だと思います。

gh stack CLI でできること

CLIを使うと、ローカル作業がかなり楽になるようです。元記事によると、以下を支援します。

rebase は簡単にいうと、コミットの土台を付け替えて履歴を整える操作です。
Stacked PRsでは、下層の変更が動くと上層もずれていくので、​連鎖的に整え直す必要があります。その面倒をCLIが肩代わりしてくれるわけです。

マージも「全部」か「一部」かを選べる

マージ時の柔軟さも、かなり面白いポイントです。

元記事では、以下が可能とされています。

さらに、たとえば「下の2つだけ先に入れたい」といった場合、​そのレイヤーに対してCIが通るのを待てば、一度にマージできると説明されています。

これは実務上かなり便利そうです。
全部そろうまで待つのではなく、​入れられるところから入れる。開発の現場では、こういう細かい融通が効くかどうかで使い勝手が全然違います。

image_0003.webp

そして、あるPRがマージされたあとには、​残りのPRが自動でrebaseされるとのこと。
つまり、下の土台が更新されても、上のPRたちが追従してくれる。ここは「スタック」を名乗るだけあって、かなり筋が通っています。

AI coding agentsとの連携も見逃せない

元記事には、AI agent integration の話もあります。
gh skill install github/gh-stack を実行すると、AI coding agentsに stacks の扱い方を教えられるそうです。

これ、時代を感じます。
今後は人間だけでなく、AIにも「このリポジトリではこういうPRの積み方をする」と理解させる必要が出てくるわけです。

個人的には、AIが雑に大きな変更を投げるより、​Stacked PRsのようなルールに従って小さく積む方向のほうが、現場ではずっと役に立つと思います。AIは便利ですが、レビュー不能な巨大差分を作られると結局困るので、こういう“運用の型”を渡せるのはかなり良いです。

ただし、今は private preview

ここは大事な注意点です。
GitHub Stacked PRs は現在 private preview です。

つまり、誰でも今すぐ自由に使える状態ではありません。
元記事でも、リポジトリで有効化されていないと機能しないと書かれています。

そのため、今の段階では

という流れになります。

新機能の初期段階としては自然ですが、実際に使いたい人はここで少し足止めされるかもしれません。
とはいえ、GitHubが本気でこの体験を整えに来ているのは伝わります。

まとめ:これは“PR運用の現実解”になりそう

GitHub Stacked PRs は、単なる新機能というより、​大きな変更をどうやって安全に、速く、レビューしやすく扱うかという長年の課題に対する答えの1つだと思います。

特に良いのは、
「分割して積む」というアイデア自体は昔からあったけれど、それをGitHubのUI、ルール、CI、CLIまで含めて一貫した体験にしたことです。

大きな機能開発は避けられません。
でも、レビュー不能な巨大PRを毎回投げ合うのは、やっぱりしんどい。
そう考えると、Stacked PRs はかなり実用的で、チーム開発のストレスを減らしてくれそうだなと思います。

今後これが正式公開されたら、PR文化そのものが少し変わるかもしれません。
少なくとも、「大きいから仕方ない」で済ませる時代は、少しずつ終わりに向かっているのではないでしょうか。


参考: GitHub Stacked PRs

同じ著者の記事