2024.02 ~ Now
Feelin์ ์์ ๊ฐ์ฌ์ ๋ํ ์์ ์ ์๊ฐ๊ณผ ๊ฐ์ ์ ๊ณต์ ํ๋ iOS ์ฑ์ ๋๋ค. ์ฌ์ฉ์๋ค์ ์ข์ํ๋ ์ํฐ์คํธ์ ๋ ธ๋ ๊ฐ์ฌ์ ๊ดํ ์์ ๋ง์ ํด์์ด๋ ๊ฐ์ ์ ๋ ธํธ ํํ๋ก ์์ฑํ๊ณ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋ํ ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ ๋ ธํธ์ ์ข์์, ๋๊ธ์ ๋จ๊ธฐ๊ฑฐ๋ ๋ถ๋งํฌํ ์ ์์ต๋๋ค.
- ์ํคํ ์ฒ: CleanArchitecture + MVVM
- ๋ชจ๋ํ: Tuist
- UI: FlexLayout, PinLayout
- Network: Combine, Kingfisher
- ๋ก๊ทธ์ธ: ์์ ๋ก๊ทธ์ธ (์นด์นด์ค, ์ ํ๋ก๊ทธ์ธ)
๊ตฌ์กฐ๋
โโโ Projects
โ โโโ App
โ โโโ Coordinator
โ โ โโโ App
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Root
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Home
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Main
โ โ โ โโโ Derived
โ โ โ โโโ InfoPlists
โ โ โโโ MyPage
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Onboarding
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ SearchNote
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Sources
โ โ โโโ TabBar
โ โ โโโ Derived
โ โ โ โโโ InfoPlists
โ โ โโโ Interface
โ โ โ โโโ Sources
โ โ โโโ Sources
โ โ โโโ Testing
โ โ โ โโโ Sources
โ โ โโโ Tests
โ โ โโโ Sources
โ โโโ Core
โ โ โโโ LocalStorage
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Example
โ โ โ โ โโโ Sources
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Error
โ โ โ โ โโโ StorageInterface
โ โ โ โโโ Sources
โ โ โ โโโ Storage
โ โ โโโ Network
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ API
โ โ โ โ โโโ DTO
โ โ โ โ โ โโโ Request
โ โ โ โ โ โโโ Response
โ โ โ โ โโโ EndPoint
โ โ โ โ โโโ Error
โ โ โ โโโ Sources
โ โ โ โ โโโ EndPoint
โ โ โ โ โโโ Extensions
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Sources
โ โโโ DependencyInjection
โ โ โโโ Sources
โ โ โโโ DIContainer
โ โ โโโ Inject
โ โโโ Domain
โ โ โโโ Artist
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Errors
โ โ โ โ โโโ Services
โ โ โ โ โโโ UseCase
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Derived
โ โ โ โโโ InfoPlists
โ โ โโโ Note
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Errors
โ โ โ โ โโโ Model
โ โ โ โ โโโ Models
โ โ โ โ โโโ Services
โ โ โ โ โโโ UseCases
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Notification
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Errors
โ โ โ โ โโโ Models
โ โ โ โ โโโ Services
โ โ โ โ โโโ UseCases
โ โ โ โโโ Sources
โ โ โ โ โโโ NotificationRoot
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ OAuth
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Error
โ โ โ โ โโโ Helpers
โ โ โ โ โโโ Model
โ โ โ โ โโโ Service
โ โ โ โ โโโ UseCase
โ โ โ โโโ Sources
โ โ โ โ โโโ Service
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ PostTextUseCase
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โโโ Report
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Errors
โ โ โ โ โโโ Model
โ โ โ โ โโโ Services
โ โ โ โ โโโ UseCases
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Shared
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Errors
โ โ โ โ โโโ Models
โ โ โ โ โโโ Protocols
โ โ โ โ โโโ Services
โ โ โ โ โโโ UseCasess
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Sources
โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ UserProfile
โ โ โโโ Derived
โ โ โ โโโ InfoPlists
โ โ โโโ Interface
โ โ โ โโโ Sources
โ โ โ โโโ Errors
โ โ โ โโโ Models
โ โ โ โโโ Services
โ โ โ โโโ UseCase
โ โ โโโ Sources
โ โ โโโ Testing
โ โ โ โโโ Sources
โ โ โโโ Tests
โ โ โโโ Sources
โ โโโ Feature
โ โ โโโ Home
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โ โโโ Sources
โ โ โ โโโ Example
โ โ โ โ โโโ Sources
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Errors
โ โ โ โ โโโ Models
โ โ โ โ โโโ Protocols
โ โ โ โ โโโ ViewControllers
โ โ โ โ โ โโโ Note
โ โ โ โ โ โโโ Notification
โ โ โ โ โ โโโ UserLink
โ โ โ โ โ โโโ WritingNote
โ โ โ โ โโโ ViewModels
โ โ โ โ โ โโโ Notification
โ โ โ โ โโโ Views
โ โ โ โ โโโ Cells+SupplementaryViews
โ โ โ โ โโโ Components
โ โ โ โ โโโ Report
โ โ โ โ โโโ SearchNote
โ โ โ โ โโโ UserLink
โ โ โ โ โโโ WritingNote
โ โ โ โโโ Sources
โ โ โ โ โโโ HomeRoot
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Main
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โ โโโ Sources
โ โ โ โโโ Example
โ โ โ โ โโโ Resources
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โโโ Sources
โ โ โโโ MyPage
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Example
โ โ โ โ โโโ Resources
โ โ โ โ โโโ Sources
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Models
โ โ โ โ โโโ ViewControllers
โ โ โ โ โ โโโ PageControl
โ โ โ โ โโโ ViewModels
โ โ โ โ โโโ Views
โ โ โ โ โโโ Cells
โ โ โ โโโ Sources
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Onboarding
โ โ โ โโโ Derived
โ โ โ โ โโโ InfoPlists
โ โ โ โโโ Example
โ โ โ โ โโโ Sources
โ โ โ โโโ Interface
โ โ โ โ โโโ Sources
โ โ โ โ โโโ Components
โ โ โ โ โ โโโ Login
โ โ โ โ โ โโโ Profile
โ โ โ โ โ โโโ UserAgreement
โ โ โ โ โโโ Models
โ โ โ โ โโโ ViewControllers
โ โ โ โ โโโ ViewModel
โ โ โ โโโ Sources
โ โ โ โ โโโ OnboardingRoot
โ โ โ โโโ Testing
โ โ โ โ โโโ Sources
โ โ โ โโโ Tests
โ โ โ โโโ Sources
โ โ โโโ Sources
โ โโโ LayoutUtil
โ โ โโโ Derived
โ โ โ โโโ InfoPlists
โ โ โโโ Sources
โ โโโ Shared
โ โโโ DesignSystem
โ โ โโโ Derived
โ โ โ โโโ InfoPlists
โ โ โ โโโ Sources
โ โ โโโ Resources
โ โ โโโ Sources
โ โ โโโ Buttons
โ โ โโโ Cells
โ โ โโโ Extensions
โ โ โโโ Models
โ โ โโโ ViewControllers
โ โ โโโ Views
โ โ โโโ FeelinPagerTabStrip
โ โโโ Sources
โ โโโ ThirdPartyLib
โ โโโ Util
โ โโโ Derived
โ โ โโโ InfoPlists
โ โโโ Sources
โ โ โโโ CombineCocoa
โ โ โโโ Errors
โ โ โโโ Extensions
โ โ โ โโโ Combine
โ โ โโโ Keychain
โ โ โ โโโ Model
โ โ โโโ Logger
โ โ โโโ Models
โ โ โโโ Preview
โ โ โโโ ViewControllers
โ โโโ Tests
โ โ โโโ Sources
โ โโโ Util.xcodeproj
| ๋ ์ง | ๋ฒ์ |
|---|---|
| 24.12 | v1.0.0 |
| 25.01 | v1.0.1 |
| 25.01 | v1.0.2 |
| 25.04 | v1.0.3 |
๊ธฐํ์ ์๊ตฌ์ฌํญ ๋ถ์
๊ธฐํ์๊ฐ ์์ ํ๊ฒ ํ์ ๋์ง ์์ ์ํฉ์์๋, ๋ค์๊ณผ ๊ฐ์ ๋ณธ์ง์ ์๊ตฌ์ฌํญ์ ํ์ธํ๋ค:
- ๋ชจ๋ ํ๋ฉด์์ ํ์/๋นํ์ ์ฌ๋ถ์ ํ ํฐ ๋ง๋ฃ ์ํ๋ฅผ ์ผ๊ด๋๊ฒ ์ฒ๋ฆฌํด์ผ ํจ
- ๋ก๊ทธ์ธ/ํ์๊ฐ์ /์๋๋ก๊ทธ์ธ/๋ฅ๋งํฌ ๋ฑ ๋ค์ํ ํ๋ฉด ์ ํ ํ๋ก์ฐ๊ฐ ์กด์ฌ
- ๋ ธํธ ์์ฑยท์์ ยท์ญ์ , ์์ ํ๋ ์ด์ด ๋ฑ ์ฌ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธ๊ฐ ๋ง์
- ์ฌ๋ฌ ๋ช ์ด ๋ณ๋ ฌ๋ก ๊ฐ๋ฐํ๊ธฐ ์ข์ ๊ตฌ์กฐ๊ฐ ํ์
์ํคํ ์ฒ ๊ฒํ ๋ฐ ์ ์ ๊ณผ์
ํ๋ฃจ์ข ์ผ ๊ณ ๋ฏผํ ํ์
์ฒ์์๋ Clean Swift๋ฅผ ๊ฒํ ํ์ง๋ง, ์ค์ ํ๋ก์ ํธ ์๊ตฌ์ฌํญ๊ณผ ๋ง์ง ์๋ ๋ถ๋ถ์ด ๋ง์๋ค.
Clean Swift์ ํ๊ณ
- Router๋ ํ๋ฉด ๋จ์ ๋ค๋น๊ฒ์ด์ ๋ง ๋ด๋น โ ์ฑ ์ ์ฒด ํ๋ก์ฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ ๋ถ์ฌ
- SceneDelegate/AppDelegate์์ rootViewController๋ฅผ ์ง์ ๊ต์ฒดํ๋ ๋ฐฉ์์ ์ ์ง๋ณด์์ฑ ์ ํ, ์์-ํ์ ๋ชจ๋ ๊ฐ ์์กด์ฑ ์ฆ๊ฐ
- PopToViewController ๋ฐฉ์์ ํ๋ฉด ์ ์ฆ๊ฐ ์ ๊ด๋ฆฌ ๋ณต์ก๋ ๊ธ์ฆ
- Storyboard ๊ธฐ๋ฐ ์์ ๊ฐ ๋ง์, ์ฝ๋ ๊ธฐ๋ฐ UI ๊ตฌ์ฑ๊ณผ ๊ถํฉ์ด ๋์จ
๊ฒฐ๊ณผ์ ์ผ๋ก, Clean Swift๋ ํ๋ก์ ํธ๋ฅผ ์ํ ์ ํ์ด ์๋, ์ํคํ ์ฒ์ ํ๋ก์ ํธ๋ฅผ ๋ผ์ ๋ง์ถ๋ ๋ชจ์์๊ฐ ๋จ.
์ ํ ์ด์
-
๋ค๋น๊ฒ์ด์ ์ค์ ๊ด๋ฆฌ
- Coordinator๊ฐ ๋ชจ๋ ํ๋ก์ฐ๋ฅผ ํตํฉ ๊ด๋ฆฌํ๊ณ , ๊ฐ ํ๋ฉด์ ์์ ์ ๋ก์ง์๋ง ์ง์ค
- Parent-Child ๊ตฌ์กฐ๋ก ๋ณต์กํ ํ๋ก์ฐ๋ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌ ๊ฐ๋ฅ
-
๋ช ํํ ์ฑ ์ ๋ถ๋ฆฌ
- ํ๋ฉด ์ ํ ์ฑ ์์ Coordinator๊ฐ, ํ๋ฉด ๋ก์ง์ ViewModel์ด ๋ด๋น
- SceneDelegate, AppDelegate ์์กด ์ ๊ฑฐ๋ก ์ ์ง๋ณด์์ฑ ํฅ์
-
ํ ์คํธ ์ฉ์ด์ฑ ๊ฐํ
- ViewModel์ UI์ ๋ถ๋ฆฌ๋์ด ๋จ์ ํ ์คํธ ์ฉ์ด
- Coordinator ์ญ์ ๋ค๋น๊ฒ์ด์ ํ๋ฆ์ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธ ๊ฐ๋ฅ
-
์ ์ฐํ ํ์ฅ์ฑ
- ์ ๊ท ํ๋ก์ฐ ์ถ๊ฐ ์ ๊ธฐ์กด ๊ตฌ์กฐ ๋ณ๊ฒฝ ์์ด ์๋ก์ด Coordinator๋ง ์ถ๊ฐํ๋ฉด ๋จ
- ํ๋ฉด ์ฌ์ฌ์ฉ๋ ์ฌ์์ ธ ๊ฐ๋ฐ ํจ์จ์ฑ ์ฆ๊ฐ
-
์ฑ๋ฅ๊ณผ ๋ฆฌ์์ค ๊ด๋ฆฌ ์ต์ ํ
- NavigationController ์ฌ์์ฑ ์์ด ํ๋ก์ฐ ์ ํ ๊ฐ๋ฅ
- ๋ฉ๋ชจ๋ฆฌ ๋ฆด๋ฆฌ์ฆ ์์ ๋ ๋ช ํํด์ ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๋ ์ ๋ฆฌ
- ํ๋ก์ฐ ๋ณ๊ฒฝ ์๊ตฌ์๋ ์ค์ Coordinator๋ง ์์ ํ๋ฉด ๋์ ๊ฐ๋ฅ
- ์ฌ์ฌ์ฉ์ฑ ๋์ ํ๋ฉด์ ์ด๋์๋ ๋์ผ ํจํด์ผ๋ก ํธ์ถ ๊ฐ๋ฅ
- ์๋ฌ ํธ๋ค๋ง๋ Coordinator์์ ์ผ๊ด ์ฒ๋ฆฌํด ์ผ๊ด์ฑ ํ๋ณด
- Clean Architecture ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ธต ๊ฐ ์ญํ ๊ณผ ์์กด์ฑ ๋ช ํ
๋ชจ๋ํ ์ ๋ต ๋ฐ Tuist ๋์ ๋ฐฐ๊ฒฝ
๋ชจ๋ํ์ ํ์์ฑ
ํ๋ก์ ํธ ์ด๊ธฐ๋ถํฐ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋ชจ๋ํ๊ฐ ํ์์ ์ด๋ผ ํ๋จํ๋ค
ํด๋ฆฐ ์ํคํ ์ฒ ์คํ
- ํด๋ฆฐ ์ํคํ ์ฒ์์ ๊ฐ ๋ ์ด์ด๋ ๋ช ํํ๊ฒ ์ฑ ์์ด ๋ถ๋ฆฌ๋์ด์ผ ํจ
- ํด๋ ๊ตฌ๋ถ๋ง์ผ๋ก๋ ๋ ์ด์ด ๊ฐ ๋ช ํํ ๊ฒฝ๊ณ๋ฅผ ์ ์งํ๊ธฐ ์ด๋ ค์
- ๋ชจ๋ ๋จ์๋ก ๋ ์ด์ด๋ฅผ ๋ถ๋ฆฌํ๋ฉด, ๊ฐ ๋ ์ด์ด์ ๋ ๋ฆฝ์ฑ๊ณผ ์ฑ ์ ๋ถ๋ฆฌ๊ฐ ํ์คํด์ง๊ณ , ๋ถํ์ํ ์์-ํ์ ์์กด์ฑ๋ ์ ๊ฑฐ ๊ฐ๋ฅ
์๋น์ค ํ์ฅ์ฑ ๋๋น
- ์ด๊ธฐ MVP ์ดํ ์ ์ ๋ฐ์์ ๋ฐ๋ผ ์ง์์ ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ๊ฐ ์์๋จ
- ํ๋์ ๋ชจ๋์ ๋ชจ๋ ๊ธฐ๋ฅ์ด ๋ด๊ธฐ๋ฉด, ํ์ผ์ด ๊ธ๊ฒฉํ ๋ง์์ง๊ณ , ๋น๋ ์๊ฐ ์ฆ๊ฐ ๋ฐ ์์ฐ์ฑ ์ ํ๋ก ์ด์ด์ง ๊ฐ๋ฅ์ฑ ์์
- ๊ธฐ๋ฅ๋ณ, ๋๋ฉ์ธ๋ณ ๋ชจ๋ํ๋ก ํ์ฅ์ฑ์ ํ๋ณดํ๊ณ , ๋น๋ ์ต์ ํ๊น์ง ๊ณ ๋ ค
๋น ๋ฅธ ๊ฐ๋ฐ ๋ฐ ๋๋ฒ๊น
- ๋ฐ๋ชจ ์ฑ์ด๋ ๊ฐ ๋ชจ๋ ๋จ์ ํ ์คํธ์ฉ AppTarget ๊ตฌ์ฑ๋ ์ฉ์ดํด์ ธ, ๋น ๋ฅธ ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋ฐ ๋๋ฒ๊น ํ๊ฒฝ ๊ตฌ์ฑ์ ์ ๋ฆฌ
๋ชจ๋ํ ๋๊ตฌ๋ก Tuist ์ ํ ์ด์
์ฝ๋ ๊ธฐ๋ฐ ํ๋ก์ ํธ ๊ด๋ฆฌ
- ๊ฐ ๋ชจ๋ ๋จ์ ์ค์ , App ์ค์ ์ ์ฝ๋๋ก ๊ด๋ฆฌ ๊ฐ๋ฅ
- ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์์๋ .xcodeproj ์ถฉ๋ ์์ด ์์ ์ ์ผ๋ก ๊ด๋ฆฌ ๊ฐ๋ฅ
์์กด์ฑ ์๊ฐํ ๋ฐ ๊ด๋ฆฌ
- tuist graph ๊ธฐ๋ฅ์ ํตํด ๋ชจ๋ ๊ฐ ์์กด์ฑ์ ํ๋์ ํ์ ๊ฐ๋ฅ
- ์์กด์ฑ ์ฌ์ดํด์ด๋ ๋ถํ์ํ ์์กด์ฑ ์ ์ ์ ์ฌ์ ์ ๋ฐฉ์ง
๋น๋ ๋จ๊ณ์์ ์ํธ ์ฐธ์กฐ ์ฒดํฌ
- ๋ชจ๋ ๊ฐ ์์กด์ฑ ๊ท์น์ Tuist ๋ ๋ฒจ์์ ๊ฐ์ ํ ์ ์์ด, ์์์น ๋ชปํ ์์-ํ์ ๋ชจ๋ ๊ฐ ์์กด์ฑ ๊ผฌ์ ๋ฐฉ์ง
์์ฐ์ฑ ๋๊ตฌ ํ์ฉ
- Makefile, Tuist Template ๋ฑ์ ํ์ฉํด ๊ฐ ๋ชจ๋๋ณ ํ์ ํ์ผ ๋ฐ ํ ํ๋ฆฟ์ ์๋ ์์ฑ ๊ฐ๋ฅ
- ์ ๊ท ๋ชจ๋ ์ถ๊ฐ ์ ์ผ๊ด๋ ๊ตฌ์กฐ๋ก ๋น ๋ฅด๊ฒ ๊ตฌ์ฑ ๊ฐ๋ฅ
๊ธฐ๋ ํจ๊ณผ
- ๊ธฐ๋ฅ ์ถ๊ฐ ์ ํ์ํ ๋ชจ๋๋ง ์์ โ ๋น๋ ์๊ฐ ๋จ์ถ
- ๋ ์ด์ด ๊ฐ ์์กด์ฑ ๋ช ํ โ ์ ์ง๋ณด์์ฑ ๋ฐ ํ ์คํธ ์ฉ์ด์ฑ ๊ฐํ
- ์๋น์ค ํ์ฅ์๋ ์ํคํ ์ฒ ์ ์ฒด๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ , ๋ ๋ฆฝ์ ์ผ๋ก ๊ธฐ๋ฅ ์ถ๊ฐ ๊ฐ๋ฅ
- ์ ๊ท ์ฐธ์ฌ์ ์จ๋ณด๋ฉ ์ ์ ์ฒด ๊ตฌ์กฐ ์ดํด๋ โ
Coordinator ํจํด ์ ์ฉ
๋ฌธ์ ์ํฉ
- ๋ก๊ทธ์ธ ์ดํ ํน์ ์์น๋ก ์ด๋ํ๊ฑฐ๋, ๋ฅ๋งํฌ๋ก ํน์ ํ๋ฉด์ ์ง์ ํ๋ ํ๋ก์ฐ๊ฐ ์กด์ฌ
- ๋นํ์์ด ํน์ ๊ธฐ๋ฅ์ ์คํํ๋ค๊ฐ ๋ก๊ทธ์ธ ํ ๋ค์ ํด๋น ๊ธฐ๋ฅ์ ์ด์ด๊ฐ๋ ํ๋ฆ์ด ํ์
- ์ค๋ณต ๋ก๊ทธ์ธ/ํ ํฐ ๋ง๋ฃ ๊ฐ์ ๊ธ๋ก๋ฒ ์ด๋ฒคํธ ๋ฐ์ ์์๋ ์ผ๊ด์ ์ธ ํ๋ฉด ์ ํ์ด ํ์
์์ธ ๋ถ์
- Clean Swift์ Router๋ ๊ฐ๋ณ ํ๋ฉด ๋จ์์์๋ง ๋์
- ์ฑ ์ ์ฒด์ ํ๋ก์ฐ๋ฅผ ๊ด๋ฆฌํ๋ AppRouter ๊ฐ์ ๊ฐ๋ ์ด ๋ถ์ฌ
- SceneDelegate/AppDelegate์์ rootViewController๋ฅผ ์ง์ ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ ์ ์ง๋ณด์์ฑ ์ ํ ๋ฐ ์๋์น ์์ ์ฌ์ด๋ ์ดํํธ ๊ฐ๋ฅ์ฑ ์กด์ฌ
์ ํํ ๋ฐฉ๋ฒ
- ํ๋ฉด ์ ํ ํ๋ฆ์ ์ค์ Coordinator์์ ์ผ๊ด ๊ด๋ฆฌ
- ๊ฐ ํ๋ฉด์ ์์ ์ ๋ก์ง๊ณผ UI์๋ง ์ง์คํ๊ณ , ๋ค๋น๊ฒ์ด์ ํ๋ฆ์ Coordinator์๊ฒ ์์
- ํ๋ฉด ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ๋ Coordinator๊ฐ ๋ด๋นํ์ฌ, ํ๋ฉด์ ๋ ๋ฆฝ์ฑ ์ ์ง
๊ธฐ๋ ํจ๊ณผ
- ๊ฐ ํ๋ฉด์ด ์์ ์ ์ญํ ์๋ง ์ง์ค โ ๋จ์ผ ์ฑ ์ ์์น ๊ฐํ
- ๋ณต์กํ ๋ค๋น๊ฒ์ด์ ํ๋ก์ฐ๋ ๋จ์ผ ์ง์ ์ ์์ ๊ด๋ฆฌ โ ์ ์ง๋ณด์์ฑ ๊ฐ์
- ๊ธ๋ก๋ฒ ์ด๋ฒคํธ ๋ฐ์ ์์๋ Coordinator์์ ์ ์ฒด ํ๋ก์ฐ๋ฅผ ์ ์ด โ ์ผ๊ด์ฑ ์ ์ง
์ค์ ํจ๊ณผ
- ํ๋ฉด ์ ํ ํ๋ฆ์ด ๋ช ํํด์ง๊ณ , Flow ๋ณ๊ฒฝ ์์๋ Coordinator๋ง ์์ ํ๋ฉด ๋๋ ๊ตฌ์กฐ ํ๋ณด
- ์ฌ์ฌ์ฉ์ฑ์ด ๋์ ํ๋ฉด์ ๋ค๋ฅธ Coordinator์์๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ํธ์ถ ๊ฐ๋ฅ โ ์ค๋ณต ๋ก์ง ๊ฐ์
- Alert, ํ์ ๊ฐ์ ๊ณตํต UI ์ฒ๋ฆฌ๋ ์ค์ Coordinator์์ ํตํฉ ๊ด๋ฆฌ
์์กด์ฑ ์ฃผ์ ์ ๋ต ๋ฐ ๊ตฌํ
๋ฌธ์ ์ํฉ
- ํ๋ฉด ์์ฑ ์๋ง๋ค ํ์ํ ๋คํธ์ํฌ ์๋น์ค, ์ ํธ๋ฆฌํฐ ๊ฐ์ฒด ๋ฑ์ ์ง์ ์์ฑ
- ๊ฐ ํ๋ฉด๋ง๋ค ์ค๋ณต ์ฝ๋ ๋ฐ์, ์์ฑ ๋ฐฉ์์ด ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง๋ ๋ฌธ์
- ํ ์คํธ ์์๋ ์ค์ ์๋น์ค ๊ฐ์ฒด๋ฅผ ์ง์ ์ฃผ์ ํด์ผ ํด์, ํ ์คํธ๊ฐ ์ด๋ ค์
์์ธ ๋ถ์
- ๋คํธ์ํฌ ๋ ์ด์ด ๋ฐ ์ ํธ๋ฆฌํฐ ๊ฐ์ฒด ์์ฑ ์ฑ ์์ด ํ๋ฉด ์ชฝ์ ์กด์ฌ
- ํ๋ฉด๋ณ๋ก ํ์ํ ์์กด์ฑ ๋ฆฌ์คํธ๊ฐ ๋ค๋ฅด๋ค ๋ณด๋, ํ๋ฉด๋ง๋ค ์์ฑ ๋ก์ง์ด ๋ฌ๋ผ์ง
- Mock ์ฃผ์ ๊ฐ์ ํ ์คํธ ์ ์ฐ์ฑ ํ๋ณด๊ฐ ์ด๋ ค์
์ ํํ ๋ฐฉ๋ฒ
- DIContainer๋ฅผ ๋ง๋ค์ด ๊ฐ์ข ์์กด์ฑ์ ์ปจํ ์ด๋์ ๋ฑ๋กํ๊ณ , ํ์ํ ๋ ๊บผ๋ด์ฐ๋ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝ
- ํ๋ฉด์์๋ ํ์ํ ์์กด์ฑ๋ง ์ฃผ์ ๋ฐ๊ณ , ์ง์ ์์ฑํ์ง ์๋๋ก ์์
- ๊ณตํต ์์กด์ฑ์ @Injected ๊ฐ์ ํ๋กํผํฐ ๋ํผ๋ก ๊ฐ๋จํ๊ฒ ์ฃผ์ ๋ฐ์ ์ ์๋๋ก ๊ตฌ์ฑ
๊ธฐ๋ ํจ๊ณผ
- ํ๋ฉด์ ์์ฑ ์ฑ ์ ๋ถ๋ฆฌ โ ๋จ์ผ ์ฑ ์ ์์น ๊ฐํ
- ํ ์คํธ ์ Mock ๊ฐ์ฒด ์ฃผ์ ๊ฐ๋ฅ โ ํ ์คํธ ์ฉ์ด์ฑ ํฅ์
- ์์กด์ฑ ๊ด๋ฆฌ ์ผ์ํ โ ์์ฑ ๋ฐฉ์์ ์ผ๊ด์ฑ ์ ์ง ๋ฐ ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ
์ค์ ํจ๊ณผ
- ์์กด์ฑ ๊ด๋ฆฌ ํฌ์ธํธ๊ฐ ๋จ์ผํ๋์ด, ์ ๊ท ์๋น์ค ์ถ๊ฐ/๊ต์ฒด๊ฐ ๊ฐํธํด์ง
- ์์กด์ฑ ์ฃผ์ ํจํด์ด ํต์ผ๋์ด, ์ฝ๋ ๊ฐ๋ ์ฑ ํฅ์
- ๋คํธ์ํฌ ํ ์คํธ ๋ฑ์์๋ ์ค์ ๊ฐ์ฒด ๋์ Mock ๊ฐ์ฒด ์ฃผ์ ๊ฐ๋ฅ โ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ํ์ฅ
๊ฒฐ๊ณผ์ ์ผ๋ก ์์กด์ฑ ๊ด๋ฆฌ์ ๊ฐ์ฒด ์์ฑ ์ฑ ์์ ํ๋ฉด์์ ๋ถ๋ฆฌํ๊ณ , ๋ชจ๋ ๊ฐ ๊ฒฐํฉ๋๋ ๋ฎ์ถ๋ ํจ๊ณผ๋ฅผ ์ป์๋ค.
ํ ์คํธ ์ ๋ต ๋ฐ ๊ตฌํ
๋ฌธ์ ์ํฉ
- ๋คํธ์ํฌ ์์ฒญ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ง ํ ์คํธํ๋ฉด ์ถฉ๋ถํ์ง ์์
- ํ ํฐ ๋ง๋ฃ, ๋ฐ์ดํฐ ํ์ฑ ์คํจ ๋ฑ ๋ค์ํ ์๋ฌ ์ผ์ด์ค๊ฐ ์กด์ฌ
- ์ธ๋ถ ํ๊ฒฝ ๋ณํ์ ๋ฐ๋ฅธ ๋์ ๋ณด์ฅ์ ์ํด ์ ๊ตํ ํ ์คํธ ํ์
์์ธ ๋ถ์
- ๋คํธ์ํฌ ๋ ์ด์ด๊ฐ URLSession์ ์ง์ ์์กด
- ์ค์ ์์ฒญ์ ๋ณด๋ด์ผ๋ง ํ ์คํธ๊ฐ ๊ฐ๋ฅํด, ๋คํธ์ํฌ ์ํฉ์ ๋ฐ๋ผ ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ๋ฌธ์
- ๋คํธ์ํฌ ๋ ์ด์ด์ ์ธํฐํ์ด์ค์ ๊ตฌํ์ด ๋ถ๋ฆฌ๋์ง ์์, Mock ๊ตฌ์ฑ ์ด๋ ค์
์ ํํ ๋ฐฉ๋ฒ
- POP(Protocol Oriented Programming) ๊ธฐ๋ฐ์ผ๋ก ๋คํธ์ํฌ ๋ ์ด์ด ๊ตฌ์ฑ
- ๋คํธ์ํฌ ์์ฒญ ์ธํฐํ์ด์ค๋ฅผ ํ๋กํ ์ฝ๋ก ์ ์ํ๊ณ , ์ค์ ๊ตฌํ๊ณผ Mock ๊ตฌํ์ ๋ถ๋ฆฌ
- ํ ์คํธ ์ Mock ๋คํธ์ํฌ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ์ฌ, ์ํ๋ ์๋ต๊ณผ ์๋ฌ๋ฅผ ์๋ฎฌ๋ ์ด์
๊ธฐ๋ ํจ๊ณผ
- ๋คํธ์ํฌ ํ๊ฒฝ์ ์ํฅ์ ๋ฐ์ง ์๊ณ , ๋ค์ํ ์ผ์ด์ค์ ๋ํ ํ ์คํธ ๊ฐ๋ฅ
- ์๋น์ค ๋ ์ด์ด๋ ์ค์ ๋คํธ์ํฌ ๊ตฌํ์ฒด๊ฐ ์๋ ํ๋กํ ์ฝ์ ์์กด โ ํ ์คํธ ์ ์ฐ์ฑ ๊ทน๋ํ
- ์๋ฌ ์ฒ๋ฆฌ ๋ก์ง์ ์์ ์ฑ ํ๋ณด
์ค์ ํจ๊ณผ
- ์์ ๊ฐ๋ฅํ ๋๋ถ๋ถ์ ์๋ฌ ์๋๋ฆฌ์ค ํ ์คํธ ์๋ฃ
- ์ ๊ท API ์ถ๊ฐ ์์๋ ๋์ผํ ํจํด์ผ๋ก ํ ์คํธ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ โ ํ ์คํธ ํจํด ์ ๋ฆฝ
- ๋คํธ์ํฌ ๋ ์ด์ด ์ ๋ขฐ์ฑ ๊ฐํ โ ํด๋ผ์ด์ธํธ ๋ ์ด์ด ๋ก์ง๋ ๊ฐ์ ์ ์ผ๋ก ๊ฒ์ฆ ๊ฐ๋ฅ

