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
400
機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話 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
1.7k
ロック画面Widgetをサクッと実装してみた話
aomathwift
3
360
OS 固有の新機能をサービスに取り入れ活用していくための Tips
aomathwift
0
33
DocC Documentation Archiveをアプリ開発で活用してみよう / DocC Documentation Archive for iOS Application
aomathwift
0
410
即時通知を導入する際に考えるべきこと
aomathwift
0
3.7k
機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話
aomathwift
1
8.8k
Other Decks in Technology
See All in Technology
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
3
140
Meta Quest 3 で動く桜マシマシ WebXR アプリを IBM Cloud Code Engine と Babylon.js で作った話
1ftseabass
PRO
0
120
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
200
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
1
500
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.3k
私が trocco を推す理由
__allllllllez__
1
220
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
2
240
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
470
VS CodeでAWSを操作しよう
smt7174
8
1.7k
Kernel MemoryでAzure OpenAI Serviceとお手軽データソース連携
mitsuzono
1
250
現代CSSフレームワークの内部実装とその仕組み
poteboy
7
3.6k
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
5
520
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
274
13k
The Mythical Team-Month
searls
216
42k
Being A Developer After 40
akosma
57
580k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
Docker and Python
trallard
34
2.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
17
1.4k
Designing Experiences People Love
moore
136
23k
The Power of CSS Pseudo Elements
geoffreycrofte
60
5k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠