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
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
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
新卒PdEのリアル
ryu1013
1
470
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
190
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
220
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.6k
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
420
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
55
36k
typoなんかねぇよ
raspython3
0
680
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
310
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
130
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
270
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
640
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
New Earth Scene 8
popppiees
3
2.5k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
650
Abbi's Birthday
coloredviolet
3
9.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
260
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
How to Talk to Developers About Accessibility
jct
2
540
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