Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Stacked PRの、何が新しいのか
Search
赤神青空
August 10, 2026
Programming
24
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Stacked PRの、何が新しいのか
赤神青空
August 10, 2026
More Decks by 赤神青空
See All by 赤神青空
MySQLとPostgreSQLって何が違うの?
akagami
0
30
第何正規形かを判定する
akagami
0
19
なぜ正規化するのか
akagami
0
22
1NFから3NF
akagami
0
20
3NFの先にあるもの
akagami
0
13
Cloudflare「Kitesurf」を読む
akagami
0
15
AWS Amplifyの、何が良いのか?
akagami
0
14
続・AWS Amplifyの、何が良いのか?
akagami
0
14
pnpm、そろそろ移行していいのでは
akagami
0
9
Other Decks in Programming
See All in Programming
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.5k
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
700
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
150
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
230
Flow は今どうなっているか
mizdra
PRO
0
570
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1k
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
5
1.9k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
190
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
190
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.8k
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
140
テーブルをDELETEした
yuzneri
0
140
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Building an army of robots
kneath
306
46k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
490
Color Theory Basics | Prateek | Gurzu
gurzu
0
420
Ruling the World: When Life Gets Gamed
codingconduct
0
300
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
470
Making Projects Easy
brettharned
120
6.7k
First, design no harm
axbom
PRO
2
1.2k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Transcript
2026年08月12日(水) Stacked PRの、何が新しいのか GitHub Stacked Pull Requests / 手で積むのと何が違うか 赤神
青空
▪大きなPRを切りたい理由が、前より切実になっている 書く速さは上がった。読む速さは上がらない コードを書く速さが上がった結果、律速がレビュー帯域に移った。 これまでの詰まり 書く人が足りない。だから生成を速くした。 いまの詰まり 読む人が足りない。生成を速くしても効かない。 「PRを小さく切る」の価値が上がっている。ではなぜ、今までやらなかったのか。 今ココ 導入
2/13
▪2026年7月30日に出た機能の話をする前に 積むこと自体は、前からできた baseを指定するだけなので、GitHubの新機能を待つ必要はなかった。 全部 main を向けて独立に出す 依存があると成立しない 上の層の差分に、下の層の変更が混ざる ブランチを積んで base
を指定する 依存は表現できる。手でもできた Meta や Google は10年以上これをやっている 今ココ 経緯 3/13
▪「積む」が実際にやっていること ブランチは全部持つが、PRは自分の層だけ見せる feature- feature- feature- C A main B D
E 含むコミット PRの差分 A‧B‧C‧D‧E E だけ (PR# ) A‧B‧C‧D D だけ (PR# ) A‧B‧C C だけ (PR# ) A‧B — base が一つ下を向くので、見えるのは自分の分だけになる 今ココ 経緯 4/13
▪手で積んだときに、いちばん面倒だったところ 下を1回直すと、上が全部やり直しになる ⼿でブランチを積んでいたころ 指摘を反映する feature- の C → C′ feature-
を rebase D → D′ ハッシュが書き換わる feature- を rebase E → E′ 下が動いた分だけ巻き添え force push × さらに feature- がマージされたら feature- の base を⼿で付け替え これを層の数だけ、レビューのラウンドごとに繰り返す。3層×2ラウンドで「1個の⼤きなPRのほうが楽だったのでは」となる Stacked PRs 指摘を反映する feature- の C → C′ 上の層はカスケードで追随する gh stack rebase / sync 画⾯のボタンからサーバ側で実⾏することもできる マージ後の付け替えも⾃動 feature- が落ちると feature- の base は main になる ⼿元のブランチだけは置いていかれる。ハッシュが変わっているので gh stack sync で追いつく 上:層の数だけリベースして force push/下:伝播も付け替えも自動になった 今ココ 経緯 5/13
▪機能として何が新しいのか 外れたのは、分割のコストのほう ✕ 手で積んでいたころ 下の層を直すたび、上を全部リベース リベースでハッシュが変わり、さらに上も巻き添え 下がマージされたら、上のbaseを手で付け替え 3層×2ラウンドで「大きいPRのほうが楽」になる ◯ いま
下の層が変わると、上は自動で追随する 下がマージされると、上のbaseは自動で付け替わる 上のPRをマージすると、下の未マージ層も一緒に着地 GitHub側がStackを1つの単位として持っている 分割の利益を、リベースの運用コストが食い潰していた。だから選ばれなかった。 今ココ 経緯 6/13
▪ここは手動スタックでは作れなかった 中段のPRも、mainと同じ基準で審査される 全PRが、直接のbaseではなく スタックのbase(=main)に対して評価される。 手で積むと 中段のbaseは feature-1 。mainのブランチ保護は効か ない。 いまは
必須レビュー・必須チェック・CODEOWNERSが全層に効 く。 便利になった話ではなく、手では用意できなかった保証がついた話です。 今ココ 何が新しいのか 7/13
▪init で始めて、add 3層のスタックを作って出す で重ねて、submit で出す bash gh extension install github/gh-stack
gh stack init feature/table # 1段目 git add . && git commit -m "テーブル定義を追加" gh stack add -Am "サービス層を追加" feature/service gh stack add -Am "APIを追加" feature/api gh stack submit 今ココ 何が新しいのか # push・PR作成・Stack化 8/13
▪コストが外れると、選択肢としての意味が変わる 1人で3回見るか、3人で1回ずつ見るか 1本の⼤きなPR 1,000⾏ 全領域が1つに⼊る レビュアーA スキーマを⾒る ロジックを⾒る UIを⾒る 完了
同じ⼈が順番に⾒るので、他の誰も先に進めない 完了 3層のStack 各層 300⾏前後 層ごとに担当を 割り当てられる スキーマを⾒る レビュアーA ロジックを⾒る レビュアーB UIを⾒る レビュアーC 依存が本物のときだけ効く。並⾏して作れただけの変更を積むと、 マージ段階でまた直列に戻る 上:1人が順番に見るので後続が全部待つ/下:層ごとに担当を分けて同時に見る 今ココ 効きどころ 9/13
▪着手前にきれいに分けられる人は、たぶんいない 切り分けは、作業しながら見つかる 見つける → ついでのバグ修正を 切り離す 別で出したくなる 分割は設計ではなく発見 着手前に正しい切り方は決まらない。触 ってから分かる。
差し込む gh stack modify で 下の層として挿入する 手だと、これが最悪だった → 自動で追随 途中に層を入れると、上を全部リベース し直すことになる。 積み直る 上の層が その上に乗り直す だから後回しにできる 分けるかどうかを、出す直前まで決めな くてよくなる。 挿し込んだとき実際に何が起きるかは、まだ手元で確かめていない 今ココ 効きどころ 10/13
▪自動化されたのは機械的な部分だけ 入れたあとに効いてくるコスト リベースは自動でも、「読み直し」は自動にならない。 01 02 03 全層で workflow が走る。metadata で
間引く設計が要る 技術的なリベースは自動でも、影響を受 けた層は再レビューが要る 同一リポジトリの直列のみ。並べ替えは CLIからしかできない CI費用が段数倍 今ココ 制約 下を直すと上が揺れる forkと分岐は不可 11/13
▪4月から7月で9リリース。public 消えて、戻ってきたコマンドがある preview は仕様が動くという意味 gh stack merge 5月、削除 は一度削除されてから、復活した。 ブラウザを開くだけのプレースホルダだった。マージAPI待
ちで外された。 7月、復活 v0.1.0 でアトミックな一括マージとして実装され直した。 ほかにも、内部APIから公開APIへの移行や、引数の削除が入っています。 今ココ 制約 12/13
▪「うちも前からブランチ切ってた」から先の話 持ち帰り 01 手法は新しくない。外れたのは運用コスト できるかどうかではなく、割に合うかどうかが変わった。だから今から選択肢になる。 02 中段のPRもmain基準で審査される 手で積んだスタックには無かった保証。設定変更なしで既存のルールが全層に効く。 03 まず個人リポジトリで3層つくる
途中の層を直したとき、modify で層を挿し込んだときに何が起きるかを見る。 分割できない変更に出会ったら、設計が絡まっているサインかもしれない 今ココ まとめ 13/13