Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Trunk-based developmentのすゝめ
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryuichi Fukami
January 13, 2022
Programming
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Trunk-based developmentのすゝめ
Ryuichi Fukami
January 13, 2022
More Decks by Ryuichi Fukami
See All by Ryuichi Fukami
NEWTにおけるiOS18対応の進め方
ryu1sazae
0
1.3k
ABEMA新卒1年目を大公開
ryu1sazae
0
2.8k
Actorへの第一歩
ryu1sazae
0
1.6k
Other Decks in Programming
See All in Programming
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
160
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
510
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
8.6k
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
160
速習iPhone Duo対応
yuukiw00w
2
820
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
240
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.9k
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
setup-vp GitLab対応の裏側
naokihaba
0
120
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
260
Security issues being discussed on Web Platforms
petamoriken
0
1.2k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.4k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Practical Orchestrator
shlominoach
192
12k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
340
YesSQL, Process and Tooling at Scale
rocio
174
15k
WCS-LA-2024
lcolladotor
0
830
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Docker and Python
trallard
47
4.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
First, design no harm
axbom
PRO
2
1.3k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
Transcript
Trunk-Based Development🐯 Ryuichi Fukami @ryu1sazae @ABEMA iOSνʔϜษڧձ 2022/01/13
࣍ • Trunkͱ • Feature branch development • Trunk-Based development
• Feature branch development vs Trunk-Based development • ·ͱΊ
Trunkͱ • װɺथװɺ(टɾ࢛ࢶͱ۠ผͯ͠ମͷ)ɺମɺ(ͷͷ)ຊମɺओཁ෦ɺ • ϝΠϯɺϝΠϯϥΠϯͱݺΕΔ • ͜ͷεϥΠυͰϝΠϯϒϥϯνͷ͜ͱΛࢦ͢
Feature branch development 1. τϥϯΫ͔ΒϒϥϯνAΛ࡞ 2. ͦͷϒϥϯνAͰɺతͷ࣮͕ྃ͢Δ·Ͱɺ࡞ۀΛߦ͏ɻͦͷؒɺඞཁ Ͱ͋ΕϒϥϯνA͔Βࡉ͔͘ϒϥϯνΛΔ 3. ࣮͕ྃ
& ϦϦʔεʹؚΊͯΑ͍ͱஅ͞Εͨ߹ɺϒϥϯνAΛτϥ ϯΫʹऔΓࠐΉ(Feature f lagͰ੍ޚՄೳͳ߹ϦϦʔελΠϛϯάͰͳ͘ ͯϚʔδՄೳ)
Trunk-Based development • ιϑτΣΞ σϦόϦʔͱ৫ͷύϑΥʔϚϯεΛվળ͢ΔೳྗͰ͋Γɺ DevOpsͷҰͭ 1. ։ൃऀ͕ࣗͷ୲ࢪࡦΛINVESTͷݪଇʹैͬͯখ͞ͳόονʹׂ 2. ʮτϥϯΫ͔ΒϒϥϯνΛΓɺ࡞ۀ͕ྃ࣍ୈτϥϯΫʹϚʔδ͢
ΔʯΛόονຖʹߦ͏
INVESTͷݪଇ • ಠཱ͍ͯ͠Δ(Independent) όονຖΛՄೳͳݶΓಠཱͤ͞Δ(͋ΔόονΛଞͷόονʹґଘͤ͞ͳ͍)͜ͱͰɺνʔϜϝϯόʔ͕ҙͷॱংͰ࡞ۀΛߦ͑ΔΑ͏ʹ͢Δ • ަবͰ͖Δ(Negotiable) ϑΟʔυόοΫΛಘΒΕΔΑ͏ʹ͢Δ e.g.
ViewͷσβΠφʔ֬ೝ, ࡉ͔͍ػೳͷQA • Ձ͕͋Δ(Valuable) ؔऀʹՁΛఏڙͰ͖Δ • ݟੵΓΛՄೳʹ͢Δ(Estimable) ݟੵΓ͕Մೳ • খ͘͢͞Δ(Small) ͔࣌ؒΒͰτϥϯΫʹϚʔδՄೳ • ςετͰ͖Δ(Testable) ߦͬͨ࡞ۀ͕Կ͔͠Βͷํ๏Ͱظ௨Γʹಈ࡞͢Δ͜ͱΛ֬ೝͰ͖Δ e.g. Ϣχοτςετ, QA, ϞχλϦϯάπʔϧ, etc… ࢀߟ: https://cloud.google.com/architecture/devops/devops-process-working-in-small-batches#how_to_work_in_small_batches
Trunk-Based developmentͷϝϦοτ • ϦϦʔεΛؾʹͤͣτϥϯΫʹϚʔδͰ͖ΔτϥϯΫʹϚʔδͰ͖Δ ※ ߹ʹΑͬͯFeature f lagͳͲͷ੍ޚʹΑͬͯɺϦϦʔε൛ͰػೳΛӅ͢(= μʔΫϩʔϯν͢Δ)
ඞཁ͋Γ • όον͝ͱͷ։ൃظؒ(= τϥϯΫʹϚʔδ͞ΕΔ·Ͱͷظؒ)͕͘ͳΔ • τϥϯΫ(ϝΠϯϒϥϯν)ΛϚʔδͨ͠ࡍʹίϯϑϦΫτ͕ൃੜ͠ʹ͍͘ (ൃੜͨ͠ͱͯ͠ඍྔͰࡁΉ) • ίʔυΛৗʹ࠷৽ͷঢ়ଶʹอͭ͜ͱ͕Ͱ͖Δ • τϥϯΫʹϚʔδ͞ΕΔόον1ͭͷมߋ͕খ͍ͨ͞ΊɺόάൃੜͷϦεΫ͕ ܰݮ͞ΕΔ
Trunk-Based developmentͷσϝϦοτ • ၆ᛌͨ͠ϨϏϡʔ͕͍͠߹͕͋Δ • Feature f lagͷ੍ޚʹ͔ͳΓؾΛ͏ඞཁ͕͋Δ • ϨϏϡʔͷසΛ্͛Δඞཁ͕͋Γɺ͜ΕΛϨϏϡϫʔ͕ڐ༰Ͱ͖ͣʹɺPRͷbase-branch͕
ωετ͠ଓ͚ΕɺϝϦοτΛڗडͰ͖ͳ͘ͳΔ ↪︎ ϨϏϡʔස͕͍ͱɺ։ൃऀΑΓଟ͘ͷมߋΛ̍PRʹऩΊΑ͏ͱͯ͠͠·͏ ↪︎ มߋ͕େ͖͍ͱϨϏϡʔͷϞνϕʔγϣϯ͕Լɺக໋తͳϛεΛݟಀ͢ՄೳੑUP😭 ※ Feature branch developmentͰಉ༷ʹPRΛΓ͚͍ͯΔ߹ͲͪΒʹͯ·Δ ↓ҎԼͷ͜ͱ͕ඞཁ 1. ϨϏϡʔΛͳΔ͘ૣ͘ߦ͏จԽ࡞Γ💪 ɹ2. ϨϏϡʔͷ༏ઌॱҐΛܾΊΔ
Feature branch development vs Trunk-Based development Feature branch development Trunk-Based
development τϥϯΫʹϚʔδ͢ΔࡍʹϦϦʔεΛ ؾʹ͢Δඞཁ͕͋Δ͔ ※ Feature fragͳͲͰ੍ޚ͍ͯ͠Δ߹ࠩͳ͍ ͋Δ 🥺 ͳ͍ 🥳 ※ ߹ʹΑͬͯ͋Δ τϥϯΫʹϚʔδ͞ΕΔ·Ͱͷظؒ िؒ ~ ϲ݄ 🥺 ࣌ؒ ~ 🥳 τϥϯΫʹϚʔδޙͷόάൃੜ֬ ߴ 🥺 🥳 ίϯϑϦΫτղফίετ ߴ 🥺 🥳 ϨϏϡʔස(ϨϏϡϫʔͷෛՙ) ※ Feature branch developmentͰಉ༷ʹϒϥϯνΛΓ͚͍ͯΔ ߹ࠩͳ͍ 🥳 ߴ 🥺
Trunk-Based developmentͷ༗ޮੑͷଌΓํ 1. ΞΫςΟϒͳϒϥϯνΛνʔϜͰܾΊͨҎԼʹͰ͖͍ͯΔ͔ → ϒϥϯν͕Γଓ͚͍ͯΕɺϒϥϯνΛ࠷৽ͷঢ়ଶʹอ͍ͯͯͳ͍͜ͱʹͳΔ 2. ίϯϑϦΫτ͍ͯ͠Δ࣌ؒ(≒ ίϯϑϦΫτղফʹ͔͔Δ࣌ؒ)ͷ͞
→ ίϯϑϦΫτղফʹ͕࣌ؒܰݮ͞ΕΔ͜ͱ͕ϝϦοτނʹ 3. τϥϯΫʹϚʔδ͞ΕΔϒϥϯν / τϥϯΫ͔ΒΒΕΔϒϥϯν → 1ͷࢦඪΛΛ͞ΒʹݫີԽ 4. ϨϏϡʔϦΫΤετૹ৴ ~ มߋͷঝೝʹ͔͔Δ࣌ؒͷ͞ → ͜Ε͕Ͱ͖͍ͯͳ͍ͱ։ൃऀ1PRʹؚΉมߋΛେ͖͘͢Δʹ͋Δ
·ͱΊ • Trunk-Based developmentΛߦ͏͜ͱͰɺόάൃੜ֬ & ίϯϑϦΫτղফ ίετ͕ͷͰɺ৺ཧత҆શੑUP ☺ • ϦϦʔε࣌ʹػೳΛӅͨ͢ΊʹɺFeature
f lagͳͲΛ༻͍ͯ͠ͳ͍νʔϜ΄ ͲɺTrunk-Based developmentͷϝϦοτେ͖͍ 💪 • ͍ͣΕʹͯ͠ϝϦοτ͔Γ & ಪ🐯ͳͷͰɺՄೳͳݶΓTrunk-Based developmentΛ͠Α͏🚀
ࢀߟ • https://cloud.google.com/architecture/devops/devops-tech-trunk-based- development • https://cloud.google.com/architecture/devops/devops-process-working- in-small-batches