- ํ๋ก์ ํธ ํ๋์ ๋ณด๊ธฐ
- ์ฃผ์ ๊ธฐ๋ฅ
- ์ํคํ ์ฒ
- ๋ชจ๋ ๊ตฌ์ฑ
- ๊ธฐ์ ์คํ
- ์์ํ๊ธฐ
- ํ์ ๊ท์น
Poppool์ ํ์ ์คํ ์ด ๋ฐฉ๋ฌธ์ ์ฆ๊ธฐ๋ ์ฌ์ฉ์๋ฅผ ์ํด ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ๋ค์ด๋ฒ ์ง๋ ๊ธฐ๋ฐ์ ์ง๋๋ฅผ ์ค์ฌ์ผ๋ก ํ์ ์คํ ์ด๋ฅผ ํ์ํ๊ณ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋๋ก ๊ตฌ์ฑ๋์์ต๋๋ค. ReactorKit๊ณผ Rx ๊ธฐ๋ฐ ์ค๊ณ๋ก ํ๋ฉด ๊ฐ ์์กด์ฑ์ ๋ฎ์ถ๋ฉด์๋ ์ค์๊ฐ ์ํธ์์ฉ์ ๋ถ๋๋ฝ๊ฒ ์ ๊ณตํ๋ฉฐ, ์์ฒด ๊ตฌ์ถํ DI ์ปจํ ์ด๋๋ฅผ ํตํด ๋ชจ๋ ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ๋ค์ด๋ฒ ์ง๋ SDK(NMapsMap)๋ฅผ ์ฐ๋ํ์ฌ ์ค์๊ฐ ์์น, ๋ง์ปค ํด๋ฌ์คํฐ๋ง, ์นดํ ๊ณ ๋ฆฌ ๊ธฐ๋ฐ ํํฐ๋ฅผ ์ ๊ณตํ๊ณ , ํ์ ์์ธ ์ ๋ณด๋ฅผ ์บ๋ฌ์ ๋ก ๋ ธ์ถํฉ๋๋ค.
- ์ง๋ ์์ญ ์ด๋ ์ ViewPort์ ๋ง์ถ ์คํ ์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ ํํ ๋ง์ปค์ ๋ํ ์์ธ ํ๋ฉด์ผ๋ก ๋ค๋น๊ฒ์ด์ ํฉ๋๋ค.
- ReactorKit ๊ธฐ๋ฐ ๊ฒ์ ํ๋ฉด์์ ์ต๊ทผ ๊ฒ์์ด, ์นดํ ๊ณ ๋ฆฌ ํ๊ทธ, ํํฐ ์ํธ๋ฅผ ์ ๊ณตํ๋ฉฐ ๋ถ๋งํฌยทํ์ด์ง๋ค์ด์ ์ ํฌํจํ ํ๋ถํ ์ก์ ์ ์ ์ํฉ๋๋ค.
- ํค์๋ ๊ธฐ๋ฐ ํ์ ๋ชฉ๋ก์ ์ ์ค์ผ์ด์ค๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ์ํ๋ฅผ ๊ฐฑ์ ํ๊ณ , ํ๋ฆฌํจ์นญ์ผ๋ก ์คํฌ๋กค ๊ฒฝํ์ ๊ฐ์ ํฉ๋๋ค.
- ์ง๋ ๊ด๋ จ ์ ์ค์ผ์ด์ค๋ ์ ํํ ์นดํ ๊ณ ๋ฆฌ์ ์ง๋ ์์ญ์ ๋ฐ์ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ฉฐ, ์์น ๊ธฐ๋ฐ ํํฐ๋ง ๋ก์ง์ ์ ๊ณตํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ ์ด์ด๋ Alamofire Provider๋ฅผ ํตํด API๋ฅผ ํธ์ถํ๊ณ , ์๋ต DTO๋ฅผ ๋๋ฉ์ธ ๋ชจ๋ธ๋ก ๋ณํํฉ๋๋ค.
- ๊ณตํต ๋ฒํผ, ๋ ์ด๋ธ, ๊ฒ์๋ฐ ๋ฑ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ์ฌ ํ๋ฉด ๊ฐ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
- ๋ชจ๋ํ๋ ํด๋ฆฐ ์ํคํ ์ฒ: Presentation, Domain, Data, Core(Infrastructure) ๋ ์ด์ด๋ก ๋๋์ด ์ฑ ์์ ๋ถ๋ฆฌํ์์ผ๋ฉฐ, ๊ฐ ๋ ์ด์ด๋ Interface ๋ชจ๋์ ํตํด ์๋ก ํต์ ํฉ๋๋ค.
- ์์กด์ฑ ์ฃผ์
์ปจํ
์ด๋: ์ปค์คํ
DIContainer์
@Dependencyํ๋กํผํฐ ๋ํผ๋ฅผ ์ฌ์ฉํด ๋ฐํ์์ ์์กด์ฑ์ ๋ฑ๋ก/ํด๊ฒฐํฉ๋๋ค. - ๋ฆฌ์กํฐ๋ธ ์ํ ๊ด๋ฆฌ: ReactorKit๊ณผ RxSwift๋ฅผ ํตํด ํ๋ฉด ์ํ๋ฅผ ์ ์ธ์ ์ผ๋ก ๊ธฐ์ ํ๊ณ , ์ฌ์ฉ์ ์ก์ ์ ๋ช ํํ ๋ถ๋ฅํฉ๋๋ค.
| ๊ณ์ธต | ์ฃผ์ ๋ชจ๋ | ์ค๋ช |
|---|---|---|
| Presentation | Presentation, LoginFeature, SearchFeature, DesignSystem |
ํ๋ฉด, ๋ค๋น๊ฒ์ด์ , ๊ณตํต UI ์ปดํฌ๋ํธ ์ ์ |
| Domain | Domain, DomainInterface |
์ํฐํฐ, ๋ฆฌํฌ์งํ ๋ฆฌ/์ ์ค์ผ์ด์ค ์ธํฐํ์ด์ค์ ๊ตฌํ ์ ๊ณต |
| Data | Data |
๋คํธ์ํฌ ํต์ , DTO ๋ณํ, ์ ์ฅ์ ๊ตฌํ ๊ด๋ฆฌ |
| Core | Infrastructure |
๋ก๊น , ๋คํธ์ํฌ, DI ๋ฑ ๊ณตํต ์ธํ๋ผ ์ ๊ณต |
- Language & Tooling: Swift 5.9, Xcode 16.2
- Reactive: ReactorKit, RxSwift, RxCocoa
- UI/UX: SnapKit, FloatingPanel, NMapsMap, Custom Design System
- Networking: Alamofire ๊ธฐ๋ฐ Provider, TokenInterceptor, RxSwift Observables
- Third-Party Services: Kakao SDK, Naver Maps ์ธ์ฆ ์ค์ ์ ์ฑ ์คํ ์ ์ด๊ธฐํํฉ๋๋ค.
- ์ ์ฅ์๋ฅผ ํด๋ก ํฉ๋๋ค.
git clone https://github.com/PopPool/iOS.git
- ํ์ํ ์๋ธ๋ชจ๋ ๋๋ Swift Package Dependencies๋ฅผ Xcode์์ Resolveํฉ๋๋ค.
Poppool.xcworkspace๋ฅผ ์ด๊ณ ,Secrets๊ตฌ์กฐ์ฒด์ ํ์ํ API ํค(์นด์นด์ค, ๋ค์ด๋ฒ ์ง๋ ๋ฑ)๋ฅผ ์ค์ ํฉ๋๋ค.- iOS 16 ์ด์ ์๋ฎฌ๋ ์ดํฐ ํน์ ๊ธฐ๊ธฐ์์ ๋น๋ ๋ฐ ์คํํฉ๋๋ค.
- ์๋ก์ด ์์กด์ฑ์
DIContainer.register๋ฅผ ํตํด ๋ฑ๋กํ๊ณ , ํ์ํ ๊ณณ์์๋@Dependency๋ํผ๋ก ์ฃผ์ ๋ฐ์ต๋๋ค. - ํ๋ฉด ์ํ๋ ReactorKit์ ํตํด Action/Mutation/State ํจํด์ผ๋ก ์ ์ํ๋ฉฐ, RxSwift DisposeBag์ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ๋คํธ์ํฌ ๋ก๊น ๊ณผ ์๋ฌ ์ฒ๋ฆฌ๋ Provider ๋ ๋ฒจ์์ ๊ณตํต์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ๋๋ฉ์ธ์์๋ ์์ ๋ชจ๋ธ๋ง ๋ ธ์ถํฉ๋๋ค.
