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 프로젝트 성장기
Search
Kanghoon
October 13, 2023
Programming
0
290
당근 iOS 프로젝트 성장기
Let'Swift 2023 발표자료
Kanghoon
October 13, 2023
Tweet
Share
More Decks by Kanghoon
See All by Kanghoon
Modular Architecture 시작하기
kanghoon
0
6.6k
Other Decks in Programming
See All in Programming
CloudflareのSandbox SDKを試してみた
syumai
0
180
関数の挙動書き換える
takatofukui
4
750
Evolving NEWT’s TypeScript Backend for the AI-Driven Era
xpromx
0
210
イベントストーミングのはじめかた / Getting Started with Event Storming
nrslib
1
750
How Software Deployment tools have changed in the past 20 years
geshan
0
18k
AIを駆使して新しい技術を効率的に理解する方法
nogu66
1
670
目的で駆動する、AI時代のアーキテクチャ設計 / purpose-driven-architecture
minodriven
11
3.6k
「正規表現をつくる」をつくる / make "make regex"
makenowjust
1
950
Stay Hacker 〜九州で生まれ、Perlに出会い、コミュニティで育つ〜
pyama86
2
2.8k
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
470
仕様がそのままテストになる!Javaで始める振る舞い駆動開発
ohmori_yusuke
8
4.7k
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
13
5.4k
Featured
See All Featured
Music & Morning Musume
bryan
46
7k
How to Ace a Technical Interview
jacobian
280
24k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
A designer walks into a library…
pauljervisheath
210
24k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
57
Making Projects Easy
brettharned
120
6.5k
The Pragmatic Product Professional
lauravandoore
36
7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Being A Developer After 40
akosma
91
590k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
940
Transcript
4֙р Ӕ ۽ં ߸ചী ೧ ࣗѐ೧ਃ Ray Software Engineer, iOS
Github @OhKanghoon Ӕ iOS ۽ં ࢿӝ
Contents 1. Architecture ߸ച 2. UI ߸ച 3.
Feed ߸ച 4. ҊೞҊ ח ޙઁٜ
Architecture ߸ച
Architecture ߸ച Modular Architecture জਸ ױਤ۽ ܻ࠙ೞח Architecture
Ӕ জ ࣻߔѐ ݽٕ۽ ҳࢿؽ Feature-level E.g. Transfer Bank Page, Deposit Page Domain-level E.g. Transfer, Bank, Account Core-level E.g. Network, Experiment, Analytics Shared-level E.g. Common UI, Logging, Utils
Architecture ߸ച Modular Architecture ݽٕച ܳ ਤ೧ о ݢ
ਃೠ Ѫ জ ઓࢿ ޙઁܳ ೧Ѿೞח Ѫ Ӕ ஹੌ दী উೣ ࠁغח ઓࢿ ੑ ߑधਸ ࢶఖೣ
Architecture ߸ച Builder ഝਊ ೞ݅, ݽٚ ઓࢿਸ ஹੌ दী
ೞח Ѫ ࠛоמೣ ஹੌ दী ೡ ࣻ ח Dependency ৬ ۠ఋী Dynamic Dependency ܳ ࢎਊ೧ ёܳ ࢤࢿೡ ࣻ ח Builder ܳ জ ઓࢿ ܻ ҳࢿীח IoC Container ܳ ೣԋ ഝਊ
Architecture ߸ച Builder ഝਊ Builder ܳ ഝਊ೧ ёܳ زਵ۽
ࢤࢿೞח द
Architecture ߸ച নೠ ಁఢਸ জ ղীࢲ ഝਊ ઓࢿ ӏਸ
݅ೞݶ п ചݶ ইఃఫ ಁఢী ઁೠਸ ف ঋ ূפযо ചݶী ೠ ҳઑܳ ࢶఖೞח Ѫਸ ӂೣ Clean Swift ReactorKit RIBs
UI ߸ച
UI ߸ച Texture Texture ח ۣࠗ٘Ҋ ߈ ࡅܲ ੋఠಕझܳ
ਤೠ UI Framework ੑפ. Auto-layout ژח Storyboard ܳ ࢎਊೞ ঋҊ Texture Layout API ܳ ࢎਊ೧ UI ۽ ࠗఠ ੌযաח ಌನݢझ गա নೠ ߡӒ ೧Ѿী ೠ ࠗхਸ ੌ ࣻ णפ. … ……
UI ߸ച Texture рױೞѱ ܻೞݶ
UI ߸ച Texture ࢿמ ୭ചػ UI ܳ औѱ ࢿೡ
ࣻ ח Framework
UI ߸ച Texture ъ۱ೠ API 1. নೠ Node
: ழޭפ౭ ࢲ࠺झীࢲ ਃೠ ݆ ஹನք৬ ӝמ ઁҕ 2. LayoutSpec : Flexbox ӝ߈ ࡅܰҊ ਬোೠ ۨইਓ ࢸ҅о оמ 3. Intelligent Preloading : झ܀ী ٮܲ ஶబஎ ۽٘ܳ ୭ച 4. Interface State: ࠭ (Cell) о ࠁৈҊ ࢎۄח ഛೠ दਸ ঈ оמ
UI ߸ച Intelligent Preloading https://youtu.be/wrctPJxskhI
UI ߸ച Texture ীࢲ ߊࢤೠ ޙઁ 1. ֫ ੑ߷
Flexbox ഋక ۨইਓ ߑध ࡺ݅ ইפۄ Texture ةੋ LifeCylce җ ةౠೠ زٜਸ ೣԋ ण೧ঠ ೮যਃ ۽ ੋ೧ UI ߡӒ ߊࢤद ূפযীѱ झۨझ۽ ਊ೮যਃ
UI ߸ച Texture ীࢲ ߊࢤೠ ޙઁ 2. ۨਕ ҙܻ
ࠗ Texture ݫੋపցٜ Pinterest ృࢎ ١ নೠ ਬ۽ ҙܻ ࠗ iOS 15 ࠗఠ ߊࢤೞח ݺੋ ޙઁٜ ೧Ѿغ ঋ ࢜۽ iOS ߡ ܾܻૉ ؼ ٸ݃ ܻझ۽ ৈѹ
UI ߸ച UIKit ਵ۽ ഥӈ Ӕ ীࢲח द UIKit
ਸ ࢎਊೞӝ۽ Ѿೠ ٍ UI ܳ ؊ ࡅܰҊ ਬোೞѱ ѐߊೡ ࣻ ח ߑߨী ೧ Ҋೞӝ द೮যਃ
UI ߸ച FlexLayout & PinLayout ӝઓী ࢎਊೞ؍ Flexbox ӝ߈
ۨইਓ ߑधਸ ഝਊೡ ࣻ Ҋ, ࢿמ ڪযդ FlexLayout ਸ ఖ೮যਃ
UI ߸ച FlexLayout & PinLayout SwiftUI Preview ܳ ഝਊ೧
ূפয ࢤࢿਸ ֫ৈਃ
UI ߸ച о ਃೠ ߸ച 1. Frame Layout 2.
Auto Layout 3. FlexLayout & PinLayout 4. SwiftUI ചݶী ٮۄ ਬܻೠ ۨইਓ ߑध ઓ ূפযח যڃ ജ҃ীࢲب ࢎਊೡ ࣻ ח UI Component ܳ ѐߊ೧ঠ ೣ
UI ߸ച ٣ੋ दझమ UI ࢤࢿਸ ӓചೡ ࣻ ח
٣ੋ दझమ ѐߊ ٣ੋ दझమ ஹನքܳ ࢎਊೞݶ জ ಿب ૐо • নೠ জ Ӕࢿ ਗ • Figma ৬ ాੌػ ੋఠಕझ ઁҕ • ೠ ب௸ݢ
UI ߸ച ٣ੋ दझమ ఎ۽Ӓ
UI ߸ച Listing Framework ܻझ ഋక UI ٘ܳ ѐࢶೞӝ
ਤೠ ֢۱ب द೮যਃ
UI ߸ച KarrotListingUI View ৬ োѾغח Component ܳ ٜ݅Ҋ
UI ߸ച KarrotListingUI List ী ೡೞݶ
UI ߸ച KarrotListingUI Component ݽ؛ী োѾػ ܻझ ഋక UI
о ۪؊݂
UI ߸ച KarrotListingUI Concept ח SwiftUI ৬ ਬࢎೣ ࢿמ
୭ചػ UI ܳ औѱ Ӓܾ ࣻ ب۾ নೠ ӝמٜਸ ୶о
Feed ߸ച
Feed ߸ച झ܀ ࠭ ஶబஎ ֢ ஏ 100% ࠁৈ
100% ࠁৈ 60% ࠁৈ -> ֢ ചݶী ࠁৈח ࠺ਯী ٮۄ ֢ ৈࠗܳ ౸ױೞҊ ೣ
Feed ߸ച झ܀ ࠭ ஶబஎ ֢ ஏ Ӕ
David ഥୡߏ ীࢲ ূо৬ ୡߏਸ ெࠁ ই٣যܳ ѱ ظਃ
Feed ߸ച SushiBelt ࠭ܳ ெࠁҊ ӝೞח ࠺ਯী ب׳ೞݶ ঌ۰ח
ۄ࠳۞ܻܳ ѐߊ೮যਃ
Feed ߸ച SushiBelt ز ࢚
ҊೞҊ ח ޙઁٜ
ҊೞҊ ח ޙઁٜ ݽ߄ੌۖಬ ҅, ঌܿ, ؘఠ, प, ࠁউ
١ ࢲ࠺झ ӝ߈ غח য ӝמਸ द ࢸ҅ زച৬ Horizontal Component ѐߊਸ ాೠ ূפয ࢤࢿ ૐ بݫੋ ѐߊਸ ਤೠ উੋ ࢸ҅ ߑೱ о٘
ҊೞҊ ח ޙઁٜ Ҵղ৬ ܲ ҃ਸ о Ӗ۽ߥ ࢲ࠺झ
ѐߊ ݆ ࢎਊо ଵৈೡ ࣻ ח Ӓܛ ӝמ ѐߊ ҊѢې, ز֎ࢤഝ, ز֎ঌ߄ ١ নೠ ࢲ࠺झ োز নೠ ӝמਸ ೠ ചݶীࢲ ҳഅೡ ࣻ ח ਬোೠ ҳઑ ࢸ҅
ҊೞҊ ח ޙઁٜ ޙઁܳ э ೧Ѿೡ زܐܳ Ҋ যਃ
Q&A
хࢎפ