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
Ryuichi Fukami
January 13, 2022
Programming
250
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
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
The NotImplementedError Problem in Ruby
koic
1
780
net-httpのHTTP/2対応について
naruse
0
480
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
250
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
510
dRuby over BLE
makicamel
2
340
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
480
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
160
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
190
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
Webフレームワークの ベンチマークについて
yusukebe
0
170
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
550
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
170
Designing Experiences People Love
moore
143
24k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Exploring anti-patterns in Rails
aemeredith
3
410
Being A Developer After 40
akosma
91
590k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
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