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
Trunk-based developmentのすゝめ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.4k
Building a Meta Ray-Ban display app
akkeylab
0
180
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
580
typoなんかねぇよ
raspython3
0
440
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
140
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
390
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
420
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
170
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.1k
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
4.5M
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
500
So, you think you're a good person
axbom
PRO
2
2.1k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
Making the Leap to Tech Lead
cromwellryan
135
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How GitHub (no longer) Works
holman
316
150k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
640
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Done Done
chrislema
186
16k
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