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
iOSアプリの技術的負債をどう返済したか / How to repay the technic...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Keisuke Kobayashi
September 11, 2018
Programming
1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOSアプリの技術的負債をどう返済したか / How to repay the technical debt of iOS app
【ヒカ☆ラボ】【Kyash、Coiney、PAY】新しい支払いの形を作る、モバイル決済サービスの開発の裏側とは
Keisuke Kobayashi
September 11, 2018
More Decks by Keisuke Kobayashi
See All by Keisuke Kobayashi
AI 1st でエンタープライズ SaaS を立ち上げる / AI 1st Enterprise SaaS
kobakei
1
260
プロダクト開発をAI 1stに変革する〜SaaS is dead時代で生き残るために〜 / AI 1st Product Development
kobakei
0
2.8k
今日から始める依存性の注入 / First Time Dependency Injection
kobakei
26
7.8k
iOSアプリ内で不正なSSL証明書を検知する / SSL Pinning for iOS apps
kobakei
34
12k
Kyashアプリ開発の現場
kobakei
4
3k
Review of Google I/O 2017 & Prepare for Google I/O 2018
kobakei
0
350
APIクライアントをCodableで置き換えた話
kobakei
0
1.6k
開発者が知っておきたい通知の歴史
kobakei
9
7.9k
mockito-kotlin
kobakei
1
550
Other Decks in Programming
See All in Programming
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
230
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
420
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
540
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
170
どこまでゆるくて許されるのか
tk3fftk
0
300
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
240
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
270
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
430
A2UI という光を覗いてみる
satohjohn
1
170
はてなアカウント基盤 State of the Union
cockscomb
1
1.2k
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Discover your Explorer Soul
emna__ayadi
2
1.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How to Ace a Technical Interview
jacobian
281
24k
Rails Girls Zürich Keynote
gr2m
96
14k
Navigating Team Friction
lara
192
16k
The Cult of Friendly URLs
andyhume
79
6.9k
Side Projects
sachag
455
43k
What's in a price? How to price your products and services
michaelherold
247
13k
Transcript
iOSΞϓϦͷٕज़తෛ࠴Λ Ͳ͏ฦࡁ͔ͨ͠ Keisuke Kobayashi ʲώΧˑϥϘʳʲKyashɺCoineyɺPAYʳ৽͍͠ࢧ͍ͷܗΛ࡞ΔɺϞόΠϧܾ ࡁαʔϏεͷ։ൃͷཪଆͱ
ࣗݾհ • Keisuke Kobayashi • Twitter: kobakei122 • GitHub: kobakei
• Kyash, Inc • Android / iOS / Engineering Manager
ٕज़తෛ࠴ͷΛ͠·͢
͔ͭͯͷKyash iOS൛ • ͳ͔ͥ1ਓͰ࡞ͬͯΔAndroid൛ΑΓɺ 3ਓͰ࡞ͬͯΔiOS൛ͷํ͕։ൃ͕͍ • ͔͠όά͕ଟ͍ • ͦͯ͠3ਓͷ͏ͪ2ਓ͕ࣙΊͨ
͜ΕϠόΠ
ମ੍มߋ • @konifar ͕ೖࣾ͠AndroidνʔϜ • @kobakei122 ͕AndroidνʔϜ͔Β iOSνʔϜ • ·ͣணखͨ͠ͷ͕ٕज़తෛ࠴ͷฦࡁ
ٕज़తෛ࠴Λฦࡁ͍ͯ͘͠ • ιʔείʔυͷ࣭վળ • ϦιʔεपΓͷվળ • ϏϧυߴԽ
ιʔείʔυͷ࣭վળ
ະ༻ίʔυͷআ • ͱʹ͔͘ফ͢ • Find Selected Symbol in Workspace •
Androidͷ࣮Λݟͭͭɺ͢Ͱʹଘࡏ͠ͳ͍ ػೳը໘Λফ͍ͯ͘͠
ΞʔΩςΫνϟݟ͠ • MVVM + ϨΠϠʔυΞʔΩςΫνϟͷ࠾༻
MVVM • UIςετ͠ʹ͍͘ • UIͷϩδοΫΛViewController͔Βണ͕͢͜ ͱͰɺςετΛॻ͖͘͢͢Δ 7JFX 6*7JFX$POUSPMMFS 7JFX.PEFM .PEFM
ϨΠϠʔυΞʔΩςΫνϟ • ؔݺͼग़͠Λ1ํʹ౷Ұ͢Δ • ಉ͡֊ͷݺͼग़͠ېࢭ$ • ΫϥεؒͷґଘؔΛγϯϓϧʹอͭ • ֤ϨΠϠʔͷΛ໌֬ʹ͢Δ •
ΫϥεංେԽͷࢭ
·ͱΊΔͱ͜Μͳઃܭ 7JFX 7JFX.PEFM 3FQPTJUPSZ "1*$MJFOU ,FZDIBJO
·ͱΊΔͱ͜Μͳઃܭ 7JFX 7JFX.PEFM 3FQPTJUPSZ "1*$MJFOU ,FZDIBJO 6*7JFX$POUSPMMFS 5BCMF7JFX$FMMͳͲ
·ͱΊΔͱ͜Μͳઃܭ 7JFX 7JFX.PEFM 3FQPTJUPSZ "1*$MJFOU ,FZDIBJO 6*ʹؔ͢ΔϩδοΫ
·ͱΊΔͱ͜Μͳઃܭ 7JFX 7JFX.PEFM 3FQPTJUPSZ "1*$MJFOU ,FZDIBJO ֤&OUJUZͷ$36%
·ͱΊΔͱ͜Μͳઃܭ 7JFX 7JFX.PEFM 3FQPTJUPSZ "1*$MJFOU ,FZDIBJO ֤छ σʔλιʔεͷ ΛಡΈॻ͖
RxSwiftͷಋೖ • DispatchQueueͰඇಉظॲཧਏ͍ • ͲΜͲΜਂ͘ͳΔωετ • leave࿙ΕʹΑΔόά • RxSwiftͳΒඇಉظॲཧͷྻɾฒྻ࣮ߦ͕؆୯ •
ྫ: APIΛ2ͭݺͼग़ͯ͠ɺ݁Ռ͕ἧ͔ͬͯΒ ը໘ߋ৽
ϦιʔεपΓͷվળ
Storyboardͷׂ • ෳը໘Λ࣋ͭStoryboardΛಉ࣌ʹฤूͯ͠ ίϯϑϦΫτ͢Δࣄނ͕ଟൃ • 1ը໘1StoryboardʹͳΔ·Ͱׂ • ͦΕͰͨ·ʹࣄނΔͷͰνʔϜͰͷֻ͚ େࣄ
Segueېࢭ • Storyboardׂͷ͍ͭͰʹېࢭ • ը໘ભҠͰΛ͢ͱ͖ʹɺભҠϩδοΫ͕ Storyboardͱίʔυʹࢄͯ͠͠·͏ • ΘΓʹίʔυʹू͢Δ • ը໘ભҠ༻ͷstaticؔΛ༻ҙͯ͠ɺͷܕݻఆ
͢Δ
SwiftGen • ֤छϦιʔεͷఆΛࣗಈੜ͢ΔϥΠϒϥϦ • จࣈྻ • ը૾ • ৭ •
Storyboard • ଘࡏ͠ͳ͍จࣈྻը૾ΛͬͨΒϏϧυ࣌ʹΤϥʔʹͳΔ
ΧϥʔύϨοτ • όʔδϣϯཧ͢ΔΑ͏ʹ • ~/Library/Colors/ʹίϐʔ͢Δ͜ͱͰɺνʔϜ ͷશһ͕ಉ͡ύϨοτΛ༻Ͱ͖Δ • SwiftGenͱͷ૬ੑ
ϏϧυߴԽ
Embedded Framework • UIͷमਖ਼͕΄ͱΜͲͳͷͰɺModelͰ͖Δ͚ͩϏϧυͨ͠ ͘ͳ͍ • ModelΛϨΠϠʔ͝ͱʹϑϨʔϜϫʔΫԽ • Repository •
Infrastructure • Entity • Utility
CocoaPods -> CarthageҠߦ • ϥΠϒϥϦͷϏϧυ͕͍ • Carthage/Build/ҎԼgitʹίϛοτ • ͱݴ͑શͯͷϥΠϒϥϦΛҠߦͰ͖ΔΘ͚ Ͱͳ͍
• ྫ: Firebase
MBPങ͍ସ͑ • ͏ҰਓͷiOSΤϯδχΞ͕MBP 13ΠϯνΛ͍ͬͯ ͨ • MBP 15ΠϯνΛࢧڅ • ΫΞουίΞCPUiOSΤϯδχΞͷ
جຊతਓݖ • iMac Proཉ͍͠
3͔݄ޙ…
ͦ͜ʹݩؾʹΓճΔ iOSνʔϜͷ͕࢟ʂ • ։ൃͷ্ • Androidʹ͍͍ͭͨʂ • ࣭ͷ্ • Crash
Free Rate
ࠓޙͷ༧ఆ • ςετΛ͝Γ͝Γॻ͍͍ͯ͘ • ·ͩςετΛॻ͚Δঢ়ଶʹͳ͚ͬͨͩ • ViewModelத৺ʹॻ͘ํ • UIΛࡉ͔͘ϑϨʔϜϫʔΫԽ •
·ͣڞ௨Ͱ͏ΧελϜϏϡʔͳͲ • υϝΠϯ͋ͬͨ΄͏͕͍͍͔
Thanks!!!