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
継続的な開発スタイル 「AbemaTV iOSアプリを週一で リリースしている話」
Search
Yuji Hato
February 22, 2019
Technology
6
4.2k
継続的な開発スタイル 「AbemaTV iOSアプリを週一で リリースしている話」
Yuji Hato
February 22, 2019
Tweet
Share
More Decks by Yuji Hato
See All by Yuji Hato
ABEMAにおける 生成AI活用の現在地 / The Current Status of Generative AI at ABEMA
dekatotoro
0
1.1k
ABEMAモバイルアプリ開発のDevOps戦略
dekatotoro
1
700
Multiplatform Engineering Roadmap for the Future
dekatotoro
1
150
Introduction to RIBs
dekatotoro
5
1.4k
iOS Adaptive UI - 解像度の異なるデバイスや画面の向きに対応する 最適なレイアウトへ -
dekatotoro
0
520
動画アプリをなめらかに動かす技術 - iOS -
dekatotoro
0
490
5分で学ぶ差分更新とRxDataSources
dekatotoro
0
350
AbemaTV モバイルアプリの開発体制と 開発プロセスの話
dekatotoro
0
280
Apple TV - tvOS入門 -
dekatotoro
0
170
Other Decks in Technology
See All in Technology
Generative UI を試そう!A2-UIでAIエージェントにダッシュボードを作らせてみた
kamoshika
1
240
チーム開発の基礎_研究を事業につなげるために
cyberagentdevelopers
PRO
8
3.9k
器用貧乏が強みになるまで ~「なんでもやる」が導いたエンジニアとしての現在地~
kakehashi
PRO
4
300
フルスタックGoでスコア改ざんを防いだ話
ponyo877
0
480
ブログの作成に音声AIツールを使って音声入力しようとした話
smt7174
1
130
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
3
350
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
670
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
8
3.1k
Goで実現する堅牢なアーキテクチャ:DDD、gRPC-connect、そしてAI協調開発の実践
fujidomoe
3
490
ローカルでLLMを使ってみよう
kosmosebi
0
130
vol11_ねこIoTLT_お遊びVibeCoding
1027kg
0
120
Open Table Formatにおけるストレージ抽象化の比較
lycorptech_jp
PRO
1
180
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
290
SEO for Brand Visibility & Recognition
aleyda
0
4.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
The SEO identity crisis: Don't let AI make you average
varn
0
400
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
Music & Morning Musume
bryan
47
7.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Agile that works and the tools we love
rasmusluckow
331
21k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
180
Amusing Abliteration
ianozsvald
0
110
We Have a Design System, Now What?
morganepeng
55
8k
Code Review Best Practice
trishagee
74
20k
Transcript
ܧଓతͳ։ൃελΠϧ ʮAbemaTV iOSΞϓϦΛिҰͰ ϦϦʔε͍ͯ͠Δʯ CA BASE CAMP2019 Yuji Hato
ށ ༐ೋ • Contributed services dekatotoro @dekatotoro yuji.hato
1. ։ൃମ੍ 2. ίʔυϕʔε 3. ։ൃϑϩʔ 4. ࠓޙͷऔΓΈ 5. ·ͱΊ
։ൃମ੍
։ൃମ੍ 80ਓ Android iOS Web New Device Streaming Client Developer
Infrastructure API Content Engineering Content Delivery Data Management SRE Direction Design QA Board CTO VPoE board / Tech Lead Tech Lead
։ൃମ੍ 80ਓ Android iOS Web New Device Streaming Client Developer
Infrastructure API Content Engineering Content Delivery Data Management SRE Direction Design QA Board CTO VPoE board / Tech Lead Tech Lead
։ൃମ੍ • iPhone • iPad • Apple TV ͦͷଞ Google
Cast AirPlay ࠶ੜ iOS Team ։ൃσόΠε
։ൃମ੍ iOSΤϯδχΞ 12~15໊ ఆऀ Πϯλʔϯ
։ൃମ੍ iOS Teamͷਓ 4 8 12 8 12 ݱࡏ ʜ
աڈ ະདྷ
։ൃମ੍ ཧͷ։ൃεϐʔυͱ࣭ ਓ
։ൃମ੍ ݱ࣮ͷ։ൃεϐʔυͱ࣭ ਓ
։ൃମ੍ ։ൃεϐʔυͱ࣭ͷԼ • Ϛωδϝϯτίετ૿ • ίϛϡχέʔγϣϯίετ૿ • ίϯϑϦΫτϦεΫ • ίʔυ࣭ͷΒ͖ͭ
։ൃମ੍ ։ൃεϐʔυͱ࣭ͷԼ • Ϛωδϝϯτίετ૿ • ίϛϡχέʔγϣϯίετ૿ • ίϯϑϦΫτϦεΫ • ίʔυ࣭ͷΒ͖ͭ
• ͷूத૿Ճ • υΩϡϝϯτෆඋ / ଐਓԽ • औΓѻ͏ίʔυൣғͷ͞ • εΩϧܦݧʹґଘ ݪҼ
։ൃମ੍ Team͝ͱͷ։ൃ ਓ ਓ ਓ
։ൃମ੍ iOSΤϯδχΞ 12~15໊ Πϯλʔϯ ఆऀόΠτ ࠶ܝ
ࠂ ࢹௌ࣭ ϚωλΠζ ւ֎ରԠ ։ൃମ੍ Team͝ͱͷ։ൃ ίΞ Apple TV
։ൃମ੍ Team͝ͱͷ։ൃ .JDSP5FBN • ͷࢄ • Ϛωδϝϯτίετͷݮ • ίϛϡχέʔγϣϯίετͷݮ
Micro Team
։ൃମ੍ OKRΛಋೖ͍ͯ͠·͢ ϚωλΠζ σόΠε֦େ ຊ࣭վળ ۀվળ ϝλσʔλ etc
ຊ࣭վળ ϚωλΠζ σόΠε֦େ ։ൃମ੍ Objectiveʹඥ͍ͮͨKey Result
ίʔυϕʔε
ίʔυϕʔε • ios ‥‥ iOSΞϓϦ • tvos ‥‥ tvOSΞϓϦ •
api ‥‥ APIϞδϡʔϧ • protobuf-swift ‥‥ .protoΛ.swiftʹมͨ͠ͷ • cmdshelf-ios ‥‥ scripts • etc ‥‥ mock, tool, sample Repositories
ίʔυϕʔε • ios • tvos • api Repositories
ίʔυϕʔε • ios • tvos • api Repositories
ίʔυϕʔε iOS
ίʔυϕʔε iOS • 10 ~ 13ਓͰ։ൃ 1ϲ݄Ͱ187ݸͷpull request͕Ϛʔδ͞Ε͍ͯͯɺ ӦۀͰฏۉ͢Δͱ18~10ݸͷpull request͕
Ϛʔδ͞Ε͍ͯΔ
ίʔυϕʔε tvOS
ίʔυϕʔε tvOS • 2~3ਓͰ։ൃ 1ϲ݄Ͱ60ݸͷpull request͕Ϛʔδ͞Ε͍ͯͯɺ ӦۀͰฏۉ͢Δͱ13ݸͷpull request͕Ϛʔ δ͞Ε͍ͯΔ
ίʔυϕʔε API
ίʔυϕʔε API • iOS, tvOSڞ௨ 1ϲ݄Ͱ35ݸͷpull request͕Ϛʔδ͞Ε͍ͯͯɺ ӦۀͰฏۉ͢Δͱ11~2ݸͷpull request͕ Ϛʔδ͞Ε͍ͯΔ
ίʔυϕʔε Tests 2009 tests 3200 tests 3526 tests 2019/02 2018/10
2017/10
ίʔυϕʔε Tests • ۃྗςετΛॻ͘ํ • ModelϩδοΫςετΛॻ͘ • UIͷςετ΄ͱΜͲॻ͍͍ͯͳ͍ σβΠϯ༷͕සൟʹมΘΔݱঢ়ͩͱίετ͕େ͖͍ ͷͱɺViewͱModelΛ͢Δઃܭʹ͍ͯ͠ΔͨΊɺUI
ModelͷςετͱQAͰ୲อ
ຖେྔͷίʔυ͕มߋ͞Ε͍ͯΔ
։ൃϑϩʔ
։ൃϑϩʔ • 2िؒαΠΫϧͷsprint։ൃͱਃ • ։ൃظؒ1िؒɺQAظؒ1िؒ چ։ൃϑϩʔ
։ൃϑϩʔ QA 1िؒ 1िؒ QA QA ਃ ਃ ਃ ਃ
QA ։ൃ ։ൃ ։ൃ چ։ൃϑϩʔ
։ൃϑϩʔ QA 1िؒ 1िؒ QA QA ਃ ਃ ਃ ਃ
QA ։ൃ ։ൃ ։ൃ چ։ൃϑϩʔ ͍։ൃ
։ൃϑϩʔ • ։ൃ༻ͷmasterϒϥϯνͱQA༻ͷqaϒϥϯνͰӡ༻ • ֤ࣗfeatureϒϥϯνΛmaster / qa͔Βͬͯ࡞ۀ • qaϒϥϯνͰςετ͕ྃͨ͠ΒϦϦʔεͰ͖Δঢ়ଶ چ։ൃϑϩʔ
branchઓུ
։ൃϑϩʔ چ։ൃϑϩʔ branchઓུ master qa feature ̎िؒਃ ։ൃ1िؒ QA1िؒ ϦϦʔεςετ
։ൃϑϩʔ چ։ൃϑϩʔ branchઓུ master qa feature ̎िؒਃ ։ൃ1िؒ QA1िؒ ϦϦʔεςετ
ɹ2"ظؒதʹ࣍ͷ։ൃΛ͍ͬͯ ΔϝϯόʔͪΖΜ͍·͢
։ൃϑϩʔ • ֤TeamͷऔΓవΊͷௐίετ • ϦϦʔεϚωʔδϟʔͷෛ୲͕େ͖͍ • 1ͭͷTeamͷԆͰϦϦʔε͕ԆͼΔ • Teamؒͷ༏ઌʹࠨӈ͞ΕϦϦʔε͕ԆͼΔ •
2िؒʹ1ճͷϦϦʔεͩͱվળͷ͕ग़ͳ͍ چ։ൃϑϩʔ ՝
։ൃϑϩʔ چ։ൃϑϩʔ ՝ ւ֎ରԠ ϚωλΠζ ίΞ ༧ఆͷਃ ࣮ࡍͷਃ ࣮ /
QA ࣮ / QA ࣮ / QA मਖ਼ / QA ϦϦʔε
։ൃϑϩʔ • 1िؒαΠΫϧͷ։ൃͱਃ • ։ൃͱQAͷظ͚ؒͳ͍ ৽։ൃϑϩʔ
։ൃϑϩʔ 1िؒ 1िؒ ਃ ਃ ਃ ਃ QA ։ൃ ਃ
ਃ ਃ ৽։ൃϑϩʔ
։ൃϑϩʔ • ֤ࣗfeatureϒϥϯνΛmaster͔Βͬͯ࡞ۀ • featureϒϥϯνͰQAޙʹmasterʹmerge • masterϦϦʔεςετΛ͢Εɺ͍ͭϦϦʔεͯ͠ྑ͍ঢ়ଶ ৽։ൃϑϩʔ branchઓུ
։ൃϑϩʔ ৽։ൃϑϩʔ branchઓུ master feature 1िؒਃ ։ൃ no QA ։ൃ
QA ϦϦʔεςετ
։ൃϑϩʔ ৽։ൃϑϩʔ branchઓུ master feature 1िؒਃ ։ൃ no QA ։ൃ
QA ϦϦʔεςετ 2"͕ෆཁͳͷ ϞσϧϩδοΫͷΈͷมߋͰςετͰ୲อͰ͖ ͍ͯΔ 2"͕ඞཁͳͷ 6*69෦ 04όϦΤʔγϣϯςετ͕ඞཁ
։ൃϑϩʔ ৽։ൃϑϩʔ branchઓུ master feature 1िؒਃ ։ൃ no QA ։ൃ
QA ։ൃ with Feature Flag ඇಉظQA ϦϦʔεςετ Feature Flag ON
։ൃϑϩʔ ৽։ൃϑϩʔ branchઓུ master feature 1िؒਃ ։ൃ no QA ։ൃ
QA ։ൃ with Feature Flag ඇಉظQA ϦϦʔεςετ Feature Flag ON 'FBUVSF'MBHΛͬͨ։ൃɺখ͍͞୯Ґ ͰίʔυϨϏϡʔͯ͠NBTUFSʹNFSHF͢Δ ͳͲɺॊೈͳ։ൃͱεϜʔζͳNBTUFSϒϥ ϯνͷਐߦ͕ΊΔΑ͏ʹͳΔ
։ൃϑϩʔ • ֤TeamͷऔΓవΊͷௐίετ͕ݮͬͨ • ϦϦʔεϚωʔδϟʔͷෛ୲͕ݮͬͨ • Teamؒͷґଘ͕ݮͬͨ • νέοτ༏ઌͷஅ͕దਖ਼ʹͳͬͨ •
ϦʔυλΠϜͷݮ ৽։ൃϑϩʔ ৼΓฦΓ
։ൃϑϩʔ • ݄༵ ϦϦʔεɺTestFlightਃ • Ր༵ • ਫ༵ masterϒϥϯνΛϏϧυɺ࣍ճPJܭըmtg •
༵ ϦϦʔεςετɺ࣍ճશମܭըmtg • ༵ۚ ਃ ৽։ൃϑϩʔ εέδϡʔϧ
։ൃϑϩʔ ৽։ൃϑϩʔ εέδϡʔϧ ݄ 19࣌ ਃ Ր ਫ ۚ
19࣌ TestFlightਃ 19࣌ masterϏϧυ TestFlight৴ ϦϦʔεςετ QA ։ൃ ϦϦʔε
։ൃϑϩʔ ৽։ൃϑϩʔ εέδϡʔϧ ݄ 19࣌ ਃ Ր ਫ ۚ
19࣌ TestFlightਃ ϦϦʔεςετ ࣍ճ PJ͝ͱܭըmtg ࣍ճ શମܭըmtg QA ։ൃ ϦϦʔε 19࣌ masterϏϧυ TestFlight৴
։ൃϑϩʔ ৽։ൃϑϩʔ εέδϡʔϧ bitrise GitHub App Store Connect TestFlight Crashlytics
Tester Designer Others Developer hook delivery pull request merge scheduler test
։ൃϑϩʔ ৽։ൃϑϩʔ εέδϡʔϧ bitrise GitHub App Store Connect TestFlight Crashlytics
Tester Designer Others Developer delivery pull request merge scheduler test hook
։ൃϑϩʔ ৽։ൃϑϩʔ εέδϡʔϧ ݄ Ր ਫ ۚ ϦϦʔεςετ ࣍ճ
PJ͝ͱܭըmtg ࣍ճ શମܭըmtg QA ։ൃ ϦϦʔε 19࣌ TestFlightਃ 19࣌ ਃ ࣗಈԽ 19࣌ masterϏϧυ TestFlight৴
ਓ͕ػցʹ߹ΘͤΔ
ࠓޙͷऔΓΈ
ࠓޙͷऔΓΈ • Feature Flagͷ׆༻ • masterϒϥϯν͍ͭͰϦϦʔεͰ͖Δঢ়ଶ • QAͳͲʹґଘ͠ͳ͍ϦϦʔεαΠΫϧ Trunk-Based Development
https://trunkbaseddevelopment.com/
ࠓޙͷऔΓΈ • ΞϓϦͷߏཁૉΛϞδϡʔϧ୯ҐͰׂ (Static FrameworkԽʣ • Ϟδϡʔϧ୯ҐͰͷىಈɺσόοά • ૄ݁߹ͳઃܭ Micro
FrameworkԽ
ࠓޙͷऔΓΈ • storyboard / xibΛΘͣίʔυͰϨΠΞτ • ίϯϑϦΫτϦεΫͷܰݮ • UIίʔυϨϏϡʔͷ্ •
࠶ར༻ੑͷ্ ※ σΟϝϦοτଟʑ͋ΔͨΊ࣮ݧతʹऔΓΈ ίʔυϨΠΞτ
·ͱΊ
·ͱΊ Micro Team × ࣗಈԽ ςετ ։ൃϑϩʔ Micro Framework Feature
Flag
εέʔϧ͢Δ։ൃTeam
Thank you