"๊ฐ๊ฐ์ ๊นจ์ฐ๋ ๋ํ, ๊ธฐ์ ๋ก ์ด๋ค๋ธ ์ธ๊ณ"
๋น์ฐํ ์ ํ์ ์์ฌํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ๋จธ๋ฌด๋ฅด๊ณ ์ถ์ ๋ชฐ์ ์ ๊ณต๊ฐ์ ์ค๊ณํฉ๋๋ค.
![]() Demian @YooGyeongMo |
![]() Echo @shinmingyu |
![]() Martin @Jihan-Chae |
![]() Ito @changjaemun |
|---|
๐ช Ito
โ์ฐ์ ์ค๋ฅด๊ธด ํ๋ค์ฃ , ๊ทธ๋ฌ๋ ์ ์์ ์ ๋ง์ ๊ทธ๋ด ๊ฐ์น๊ฐ ์ถฉ๋ถํฉ๋๋ค.โ
๐ฃ Demian
โ์ค๊ต๋ ํ์ ์์ด. ๋ถ๋ฌ์ง ๋ผ๊ฐ ๋ ํฐ ๊ตํ์ ์๊ฒจ์ค ํ ๋๊น.โ
๐น Martin
โ์ธ์์ ์ด๋ง์ ๋ดค์ด? ๊พน ์ฐธ๊ณ ์น๋ค ๋ณด๋ฉด, ์ด๋์ ๋ฌ์ฝคํด์ง ๊ฑฐ์ผ.โ
๐ฃ๏ธ Echo
โํ์ด์ ์ ์ ๋ฐ๋์ด. ํ์๊ฐ ์์์ผ๋๊น.โ
โ๋ง๋ณด๋ค ๊ณต๊ฐ์ด ๋จผ์ ๋ง์ ๊ฑฐ๋ ๊ฒฝํโ ์ฐ๋ฆฌ๋ ์์ด๋ค์๊ฒ ์ฝํ๋ ๋ํ์ฑ ์ด ์๋, ๋ชธ์ผ๋ก ๋๋ผ๋ ๋ํ ์ธ๊ณ๋ฅผ ์ฃผ๊ณ ์ถ์์ต๋๋ค.
ํ ๊ธฐ๊บผ์ด ๋น์ฃผ๋ฅ๋ iPad๋ก ๋ํ๋ฅผ ํผ์น๊ณ ,iPhone(๋งค์ง ์๋)๋ฅผ ์ด์ฉํ ์ธํฐ๋ ์ ์ ๊ธฐ๋ฐ์ผ๋ก iPad๊ฐ ์ฃผ๋ณ ๊ธฐ๊ธฐ(HomeKit)๋ฅผ ์ ์ดํด ๋น, ์๋ฆฌ, ๊ณต๊ฐ์ด ํ๋๊ฐ ๋๋ ๋ชฐ์ ํ๊ฒฝ์ ๋ง๋๋ ์ ์ผ๋ฌด์ดํ ๊ฐ๊ฐ ๊ธฐ๋ฐ ๋ํ ์ฑ์ ๋๋ค.
์์ด๋ค์ iPad ์์์ ์ฑ ์ฅ์ ๋๊ธฐ๋ฉฐ, ์ค์ ๋ฐฉ ์์ ์กฐ๋ช ์ด ๊น๋นก์ด๊ณ ๋ฐ๋ ์๋ฆฌ์ ์์ ์ด ์ด์ฐ๋ฌ์ง ์ง์ง์ฒ๋ผ ๋๊ปด์ง๋ ์ด์ผ๊ธฐ ์ธ๊ณ์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.
๐ iPad๋ ๋์๊ด์ฒ๋ผ ์ฅ๋ฉด์ ๊ณ ๋ฅด๊ณ SplitView๋ก ์ฑ
์ ํผ์ณ์ค๋๋ค.
๐ฑ iPhone์ ์ฅ๋ฉด๋ณ ์ธํฐ๋์
์ ์ ์ดํ๊ณ , ์ฃผ๋ณ ์ฅ์น๋ฅผ ์ปจํธ๋กคํฉ๋๋ค.
๐ก ์กฐ๋ช
, ์ฌ์ด๋, ์ฐ์ถ์ HomeKit์ผ๋ก ๊ณต๊ฐ์ ๋ฐ๋ก ๋ฐ์๋ฉ๋๋ค.
๐ ์์ธํ ๊ธฐํ ๋ฐฐ๊ฒฝ์ Notion ํ์ด์ง์์ ํ์ธํ์ค ์ ์์ด์. ๐ Notion ๋ณด๋ฌ๊ฐ๊ธฐ
๐ ๊ฐ๋ฐ์ ๊ฐ์ด๋ ๋ณด๋ฌ๊ฐ๊ธฐ
๐ iPad Library
- ์ฌ๋ฌ ์ฅ๋ฉด ๊ธฐ๋ฐ์ ๋ํ์ฑ ์ SplitView๋ก ๊ตฌ์ฑ (์ ํ โ ํผ์น๊ธฐ)
- ๊ฐ ์ฅ๋ฉด์ ๋ฐ๋ผ HomeKit ์ฅ์น ์ ์ด (์กฐ๋ช , ์ฌ์ด๋, ๊ธฐํ ์กํฐ)
๐ฌ iPhone-based Interaction
- ๊ฐ ์ฅ๋ฉด์ ๋ฐ๋ผ Multipeer Connectivity(P2P)๋ก ์ฐ๊ฒฐ๋ iPad์๊ฒ ์๊ทธ๋.
| ํญ๋ชฉ | UIKit (Imperative) | SwiftUI (Declarative) |
|---|---|---|
| ์ ์ธ๋ฐฉ์ | ๋ช ๋ นํ | ์ ์ธํ |
| ์ ์ง๋ณด์ | ์ํ & ์ด๋ฒคํธ ๋ถ๋ฆฌ ์ด๋ ค์ | ์ํ ๊ธฐ๋ฐ ๋ฐ์ธ๋ฉ โ ๊ตฌ์กฐ ๊ฐ๊ฒฐ |
| ๋ฌ๋ ์ปค๋ธ | ํ์ ๋๋ถ๋ถ ๋ฏธ์ | ๋ด๋ถ ํ์ต ์๋ฃ, ์ต์ ๊ธฐ์ ์ ์ ํฉ |
| Agile ๋์์ฑ | ๊ตฌ์กฐ ๋ณ๊ฒฝ ์ ๋น์ฉ ํผ | ๋น ๋ฅธ ํ๋กํ ํ์ดํ, ๋ฐ๋ณต ๊ฐ๋ฐ์ ์ ๋ฆฌ |
โ SwiftUI ๋์ ์ด์ :
- ๋ด๋ถ ํ SwiftUI & SwiftData ๊ฒฝํ โ ๋น ๋ฅธ ์คํ ๋ฐ UI ๊ตฌ์กฐ ๋์
- ๋ช ํํ ์ํ ํ๋ฆ๊ณผ ๋ฐ์ธ๋ฉ โ ์ ์ง๋ณด์ ์ฉ์ด
| ํญ๋ชฉ | MVC | MVP | MVVM (+ Coordinator) | TCA |
|---|---|---|---|---|
| View ์ฑ ์ | View + Controller ํผ์ฌ | View โ Presenter ์ ๋ฌ | View โ ViewModel ๋ฐ์ธ๋ฉ | View โ Store (Reducer) |
| ๊ฒฐํฉ๋ | Controller-View ๋์ | View-Presenter 1:1 | ViewModel ๋ฐ์ธ๋ฉ, ๋ฎ์ ๊ฒฐํฉ๋ | View-Store ๋ถ๋ฆฌ |
| ํ ์คํธ ์ฉ์ด์ฑ | โ ๋ฎ์ | โญ Presenter ํ ์คํธ ๊ฐ๋ฅ | โญ ViewModel ํ ์คํธ ์ฉ์ด | โญ Reducer ํ ์คํธ ๊ฐ๋ฅ |
| SwiftUI ์ ํฉ์ฑ | โ UIKit์๋ง ์ ํฉ | โ UIKit ๊ธฐ๋ฐ | โญ SwiftUI ์นํ | โญ SwiftUI ์ต์ ํ ๊ตฌ์กฐ |
| ํ์ต ๋์ด๋ | ๋ฎ์ | ์ค๊ฐ | ์ค์ (SwiftUI์์ ์์ฃผ ์ฌ์ฉ) | ์ (DSL ๊ธฐ๋ฐ ๋ณต์กํจ) |
| Agile ๋์์ฑ | โ ์ํฅ๋ ํผ | ๋ณดํต | โญ ์ ์ฐํ ๋ชจ๋ ๋ถ๋ฆฌ, ๋ฐ๋ณต ๋์ ๊ฐ๋ฅ | โญ ์ผ๊ด๋ ์ํ ๊ด๋ฆฌ ๊ฐ๋ฅ |
- View โ ViewModel๋ก ์ญํ ๋ถ๋ฆฌ โ SRP ์ถฉ์ค
- ํ ์คํธ ๋จ์ ๋ช ํํ, ์ํ ๊ด๋ฆฌ ์ฉ์ด
- ํ๋ฉด ํ๋ฆ์ ๊ฐ์ฒด๋ก ์์ โ ๋ค๋น๊ฒ์ด์ ๋ก์ง ๋ถ๋ฆฌ
- SwiftUI NavigationStack ์ค์ฒฉ ๋ฌธ์ ํด์
- View/ViewModel์ ์์ฑ ์ฑ ์ ๋ถ๋ฆฌ
- ํ๋ฉด ์์ฑ ํ๋ฆ ํต์ผ โ ์ ์ง๋ณด์/DI ์ฉ์ด
TCA๋ ๋งค๋ ฅ์ ์ธ ์ ํ์ด์ง๋ง, ์ด๊ธฐ ๋์ ์ ๋ฌ๋ ์ปค๋ธ์ DSL ๋ถ๋ด์ผ๋ก ์ธํด ์ ์ธํ์์ต๋๋ค.
| ์ ๋ต | ์ค๋ช | ์ฅ์ | ๋จ์ | ์ ํ ์ด์ |
|---|---|---|---|---|
| ๋ฉํฐ ํ๊ฒ (Multi Target) | ๊ธฐ๊ธฐ๋ณ ๋ณ๋ ํ๊ฒ ๊ตฌ์ฑ | - ๊ฐ ๊ธฐ๊ธฐ ์ต์ ํ - ๋ ๋ฆฝ์ ๋๋ฒ๊น |
- ์ค์ ๋ณต์ก - ์ฝ๋ ์ค๋ณต ๊ฐ๋ฅ์ฑ - ์ ์ง๋ณด์ ์ด๋ ค์ |
๊ณตํต ๋ชจ๋์ด ๋ง์ ํ๊ฒ ๋ถ๋ฆฌ๋ ๋ถํ์ํ๊ฒ ๋ณต์กํ๊ณ ์ค๋ณต๋จ |
| ์ธ๋ถ ํ๋ ์์ํฌ ๋ชจ๋ํ | SPM/XCFramework๋ฅผ ํตํ ๋ชจ๋ ๊ด๋ฆฌ | - ๋์ ์ฌ์ฌ์ฉ์ฑ - ์ฝ๋ ๋ ๋ฆฝ์ฑ - ๋ถ์ ๊ฐ๋ฅ |
- ์ด๊ธฐ ์ค์ ๋ณต์ก - ๋น๋ ๋๋ฆผ - ๋ด๋ถ ๋ณ๊ฒฝ ๋ฐ์ ์ง์ฐ |
์ ์์ผํ๊ฒ ๋น ๋ฅด๊ฒ ๋ณํ๋ ๊ตฌ์กฐ์ ๋ง์ง ์์ ์์ ํ์์ ๊ณผํ ๋ถ๋ฆฌ ๊ตฌ์กฐ |
| ๋ด๋ถ ํด๋ ๊ธฐ๋ฐ ๋ชจ๋ํ (์ ํ) | Presentation, Interaction ๋ฑ์ผ๋ก ๋๋ ํฐ๋ฆฌ ๊ธฐ์ค ๊ธฐ๋ฅ ๋ชจ๋ ๋ถ๋ฆฌ | - ๊ตฌ์ฑ ๋จ์ - ๋น ๋ฅธ ๊ตฌ์กฐ ๋ณ๊ฒฝ ๋ฐ์ - ๋น๋ ๋น ๋ฆ |
- ๋ช
์์ ๋ชจ๋ ๊ฒฝ๊ณ ๋ถ์กฑ - ์ํ ์ฐธ์กฐ ์ฃผ์ ํ์ |
SwiftUI + MVVM์ ๊ฐ์ฅ ์์ฐ์ค๋ฝ๊ณ ๋น ๋ฅธ ์คํ๊ณผ ๋ฐ๋ณต์ ์ต์ ํ |
- ์ด๊ธฐ ์ ์ฐํ ์ค๊ณ ๋ฐ ๋น ๋ฅธ ๋ฐ์ ์ฃผ๊ธฐ๊ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์, ๋ด๋ถ ํด๋ ๊ธฐ๋ฐ ๋ชจ๋ํ ์ฑํ
- SPM์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ๋ ์์ํฌํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ ํฉํ์ง๋ง, ์ด๋ฒ ํ๋ก์ ํธ๋ ๊ธฐ๊ธฐ ๊ฐ ์ ๊ธฐ์ ์ฐ๊ฒฐ๊ณผ ๋น ๋ฅธ ๋ฐ๋ณต ๊ฐ๋ฐ์ด ํต์ฌ
MVVM + Coordinator + Factory๊ตฌ์กฐ์ ๋ง๋ฌผ๋ ค ๋ช ํํ ํด๋๋ง๊ณผ ์ญํ ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง
gitGraph
commit id: "v1.0.0"
branch "feat/#7/InteractionModule"
checkout "feat/#7/InteractionModule"
commit id: "๐ฌ ๊ธฐ๋ฅ ๊ฐ๋ฐ"
commit id: "๐ง ํ
์คํธ ์๋ฃ"
checkout "main"
merge "feat/#7/InteractionModule" id: "โ
PR ๋จธ์ง"
branch "fix/#12/HomeKitCrash"
checkout "fix/#12/HomeKitCrash"
commit id: "๐ ๋ฒ๊ทธ ์์ "
checkout "main"
merge "fix/#12/HomeKitCrash" id: "โ
๋จธ์ง ์๋ฃ"
mainโ ๊ธฐ๋ฅ ๊ฐ๋ฐ ํตํฉ ๋ธ๋์นfeat/,fix/,refactor/,chore/โ ๊ธฐ๋ฅ/์์ /๋ฆฌํฉํ ๋ง/์ธํ ๋จ์ ๋ธ๋์น- PR ๊ท์น:
feat/#7/InteractionModule๋ฑ ์ด์ ๊ธฐ๋ฐ ๋ธ๋์น ์ด๋ฆ + ๋ผ๋ฒจ๋ง




