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
赤神青空
PRO
August 10, 2026
Video
Programming
47
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Stacked PRの、何が新しいのか
赤神青空
PRO
August 10, 2026
Video
More Decks by 赤神青空
See All by 赤神青空
【ORM不要論の歴史】運用の問題は、いまの責務論に直結する
akagami
PRO
0
10
【ORM不要論の歴史】なぜ生まれ、20年前に何を言われたか
akagami
PRO
0
15
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
84
【ORM不要論の歴史】「ORM」と呼ばれているものが3つある
akagami
PRO
0
38
【Vitest5.0大解剖】Vitest5.0で消えた記法とAPI
akagami
PRO
0
23
【Vitest5.0大解剖】Vitest5.0で増えた書き方
akagami
PRO
0
32
【Vitest5.0大解剖】Vitest5.0で静かに変わる挙動
akagami
PRO
0
24
【Vitest5.0大解剖】Vitest5.0のTrace View
akagami
PRO
0
26
【Vitest5.0大解剖】Vitest5.0は何が速くなったのか
akagami
PRO
0
28
Other Decks in Programming
See All in Programming
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
130
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
440
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
Hono + Inertia + React で LP を構築した話
oukayuka
2
220
Press start. Python's next generation.
willingc
PRO
3
310
高専キャリア LT 発表内容
crysta1221
6
5.6k
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
420
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
ALB ログから Trace を気合で繋げる技術
fohte
7
880
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
230
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
570
Done Done
chrislema
186
16k
Product Roadmaps are Hard
iamctodd
55
13k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
430
Build your cross-platform service in a week with App Engine
jlugia
234
19k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
Chasing Engaging Ingredients in Design
codingconduct
0
300
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
430
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
310
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
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