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
機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話 After Talk
Search
aoi
October 01, 2021
Technology
0
510
機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話 After Talk
https://cookpad.connpass.com/event/222056/
aoi
October 01, 2021
Tweet
Share
More Decks by aoi
See All by aoi
モバイルアプリの行動ログの運用つらさ解消法 / mobile-log-troubleshooting
aomathwift
3
2.6k
ロック画面Widgetをサクッと実装してみた話
aomathwift
3
430
OS 固有の新機能をサービスに取り入れ活用していくための Tips
aomathwift
0
63
DocC Documentation Archiveをアプリ開発で活用してみよう / DocC Documentation Archive for iOS Application
aomathwift
0
610
即時通知を導入する際に考えるべきこと
aomathwift
0
4.8k
機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話
aomathwift
1
10k
Other Decks in Technology
See All in Technology
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
7.7k
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
300
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
How Do I Contact HP Printer Support? [Full 2025 Guide for U.S. Businesses]
harrry1211
0
120
Operating Operator
shhnjk
1
590
スタートアップに選択肢を 〜生成AIを活用したセカンダリー事業への挑戦〜
nstock
0
200
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
1.9k
赤煉瓦倉庫勉強会「Databricksを選んだ理由と、絶賛真っ只中のデータ基盤移行体験記」
ivry_presentationmaterials
2
360
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
310
AI時代の開発生産性を加速させるアーキテクチャ設計
plaidtech
PRO
3
160
敢えて生成AIを使わないマネジメント業務
kzkmaeda
2
440
「クラウドコスト絶対削減」を支える技術—FinOpsを超えた徹底的なクラウドコスト削減の実践論
delta_tech
4
170
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Unsuck your backbone
ammeep
671
58k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
970
Speed Design
sergeychernyshev
32
1k
Side Projects
sachag
455
42k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
RailsConf 2023
tenderlove
30
1.1k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Transcript
After Party iOSDC JAPAN 2021 ػೳ͝ͱʹಈ࡞͢ΔϛχΞϓϦͰಈ࡞֬ೝΛരʹͨ͠ɹొஃޙஊ 2021/10/01 Cookpad.Inc @aoi
ࣗݾհ • aoi @aomathwift • Cookpad Inc. iOS App Developer
• CookpadMart
ηογϣϯΛݟ͍͍ͯͨͩͨօ͞Μ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
Agenda • ηογϣϯͷ֓ཁ • Discord, TwitterͰͷ Q&A ৼΓฦΓ
ηογϣϯͷ֓ཁ
ΫοΫύουΞϓϦ • ։ൃن͕େ͖͍ • Ϗϧυ࣌ؒͷ͕͞՝ → ϑϧϏϧυΛΊ͍ͨ
CookpadCore Cookpad ɾɾɾ Cookpad Tsukuru Feature A Feature B Feature
C 🔥 ػೳ୯ମͰϏϧυՄೳͳϚϧνϞδϡʔϧߏΛಋೖ
Feature Module • υϝΠϯΛڞ༗Ͱ͖Δ୯ҐͰྨ͢Δ • Ϟδϡʔϧ୯ମͰ 1 ͭͷػೳʹඞཁͳ࣮͕݁͢Δ → Ϟδϡʔϧ୯ମͰϏϧυ͕Մೳ
https://fortee.jp/iosdc-japan-2021/proposal/1b05a1c0-91ef-401a-b3f3-36f0e57a6a25
CookpadCore Feature A Feature A Sandbox FeatureModule Aͱ CoreͷΈΛϏϧυ FeatureModule
A ͷ ػೳͷΈΛͭΞϓϦ έʔγϣϯλʔήοτ
None
Sandbox ΞϓϦͷ࣮ͷಛ • ଞͷ Feature Module ʹґଘ͠ͳ͍ • ωοτϫʔΫϦΫΤετͳͲͷ෭࡞༻Environment ͱ͍͏
DI ίϯςφΛ༻͍ͯμϛʔͷ࣮Λೖ
Transition Environment Network CookpadEnvironment StubbableEnvironment Logger Cookpad Sandbox Test
Sandbox ΞϓϦͷϝϦοτ • Ϗϧυ͕͍ • ֬ೝ͍ͨ͠ը໘ʹ͙ͨ͢ͲΓண͚Δ • ༷ʑͳঢ়ଶΛ࠶ݱͰ͖Δ
Discord / Twitter Ͱͷ Q&A ৼΓฦΓ
ϛχΞϓϦ QA ͳͲʹ͏ʁ • جຊΤϯδχΞ͕ಈ࡞֬ೝʹ͏తͷΈ • QAଓςετΛ݉ͶΔͷͰΞϓϦΛ͏͔ͯ͝͠Β͏ • σβΠφʔ͕ศརʙͬͯݴͬͯͬͯͨ͜ͱ͠͠
ϛχΞϓϦ QA ͳͲʹ͏ʁ • μϛʔϦΫΤετΛΘͳ͚ΕQA࣮ػςετͰͷར༻ ͋Γ͔ʁ • ࢀߟʹ͍ͨ͠ ϥϯλΠϜσόοάͷεεϝ
ϛχΞϓϦඋ୭͕ͬͯΔʁ • Έ࡞Γج൫νʔϜͷϝϯόʔ͕ͬͯΔ ‣ ࣗಈੜεΫϦϓτͷ༻ҙ ‣ μϛʔ࣮ͷඋɹetc… • SandboxScene ͷ࣮ར༻֤ػೳͷ։ൃνʔϜ͕Δ
࣮ࡍͲΕ͘Β͍ޮԽ͞Ε͔͔ͨΔʁ • ϑϧϏϧυʹ͔͔Δ࣌ؒܭଌ͠ଓ͚͖͕ͯͨɺSandbox λʔήοτͰ ͷσʔλܭଌͯ͠ͳ͔ͬͨ😢 • ࠓޙҎԼͷΛܭଌ͍͠1ճ͋ͨΓͷϏϧυ͕࣌ؒݮগ͍ͯ͠Δ͜ͱ Λఆྔతʹݟ͍ͨ ‣ શͯͷϏϧυʹ͓͚ΔϏϧυ࣌ؒ
‣ શϏϧυ࣮ߦճͷ͏ͪ Sandbox Ͱ࣮ߦͨ͠ճͷׂ߹
SwiftUI ͱͷڞଘͲ͏ͯ͠Δʁ • Sandbox ͷΈࣗମ UIKit Ͱͷ࣮Λલఏʹ࡞ΒΕ͍ͯΔ • View ͕
SwiftUI Ͱ࣮͞Ε͍ͯΔ Scene UIHostingController Ͱϥοϓͯ͠ಉ͍͡ํΛ͍ͯ͠Δ
XcodePreviews ར༻ͯ͠Δʁ • Cookpad ΞϓϦશମͰ ࠷ۙ·Ͱ Xcode Previews ͕͑ͳ͔ͬͨ ☠
• Sandbox Target Ͱ Preview Λ࣮ߦ͢Δͱ͑Δ • UIKit Ͱ࣮͞ΕͨίϯϙʔωϯτΛϓϨϏϡʔ͢ΔͨΊͷΈΛ༻ ҙ • SwiftUI ͷը໘͕૿͑ΕҠߦݕ౼
https://engineering.mercari.com/blog/entry/2019-12-13-155700/
XcodePreviews ར༻ͯ͠Δʁ • ϙοϓΞοϓը໘ͳͲΛ֬ೝ͢ΔͨΊͷϛχΞϓϦΛ SwiftUI Ͱ༻ҙʢUICatalogʣ
None
Sandbox ͍ࣺͯલఏʁ • ίϛοτͯ͠ϝϯςΛ͍ͯ͘͠લఏ • ࠷ݶͷίʔυͷ҆ఆੑΛ୲อ͢ΔͨΊʹPRͷʹϏϧυ͕௨ Δ͜ͱΛνΣοΫ͍ͯ͠Δ
None
ϛχΞϓϦΛࣾʹͲ͏ͬͯਪਐ͍ͯ͠ ͘ʁ • ػೳ։ൃऀʢར༻ऀʣ͚ʹϛχΞϓϦͷϝϦοτΛଧͪग़͢ • ·͙ͣͬͯ͘͢Εͦ͏ͳਓʹചΓࠐΜͰΈΔ • https://fortee.jp/iosdc-japan-2021/proposal/1b05a1c0-91ef- 401a-b3f3-36f0e57a6a25 Ͱղઆ͞Εͯ·͢
None
ΞΧϯτػೳͲ͏ఏڙͯ͠Δʁ • ը໘͝ͱʹݻఆΛฦ͢ • ͦͷଞͷঢ়ଶجຊతʹ࠷ॳ͔ΒݻఆΛࢦఆ͠ɺ֬ೝ͍ͨ͠ ঢ়ଶ͝ͱʹը໘Λ༻ҙ͢Δ
ΞΧϯτػೳͲ͏ఏڙͯ͠Δʁ • ঢ়ଶ͕ଟ͍߹ઃఆը໘ͰΛϥϯλΠϜͰมߋͰ͖ΔΑ͏ ʹ͢Δͷ͕Φεεϝ
None
Sandbox࠲ஊձؾʹͳΔ • ΈΛඋ͢Δج൫νʔϜ͕ Sandbox ʹؔ͢Δ։ൃνʔϜ ଆͷҙݟΛऔΓೖΕվળ͢ΔͨΊʹ࣮ࢪ • ࣄલʹࡶʹεϓϨουγʔτʹҙݟΛॻ͍ͯΒͬͯɺͦΕΛ ΈΜͳͰݟͳ͕ΒΘ͍Θ͍ஊٛ͢Δ
ࢀߟࢿྉ • https://speakerdeck.com/aomathwift/ji-neng-gotonidong-zuo- suruminiapuridepurebiyusaikuruwobao-su-nisitahua • େنͳΞϓϦͷϚϧνϞδϡʔϧߏͷ࣮ફ https:// speakerdeck.com/giginet/da-gui-mo- naapurifalsemarutimoziyurugou-cheng-falseshi-jian •
ϥϯλΠϜσόοάͷεεϝ https://speakerdeck.com/noppefoxwolf/ iosdc21
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠