ํ ์ผ ๋ชฉ๋ก์ด ์๋ iOS ๋ฌ๋ ฅ ์ฑ
![]() |
![]() |
![]() |
![]() |
---|
To-do Calendar๋ ํ ์ผ ๋ชฉ๋ก์ ๊ด๋ฆฌํ ์ ์๋ ๋ฌ๋ ฅ ์ฑ ์ ๋๋ค. ์ฑ์ด ์ ๊ณตํ๋ ๋ค์์ ๊ธฐ๋ฅ๋ค์ ์ด์ฉํ์ฌ ์ผ์ ๋ฐ ํ ์ผ์ ๊ด๋ฆฌํ์ธ์.
- ์ผ๋ฐ ๋ฌ๋ ฅ์ฑ๊ณผ ๊ฐ์ด ์ผ์ ์ ๋ฌ๋ ฅ์ ์ถ๊ฐํ์ธ์.
- ํ ์ผ๋ ๋ฌ๋ ฅ์ ์ถ๊ฐํ์ฌ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์ถ๊ฐํ ์ผ์ ๋ฐ ํ ์ผ์ ๋ฏธ๋ฆฌ์๋ฆผ์ ์ถ๊ฐํ๊ฑฐ๋, ์ด ์ค ์ ์ผ ์ค์ํ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ์ธ์.
- ์ฑ์ด ์ ๊ณตํ๋ ๋ค์ํ ์ข ๋ฅ์ ์์ ฏ์ ์ฌ์ฉํ์ฌ ๋ ๊ฐํธํ๊ฒ ์ผ์ ์ ๊ด๋ฆฌํ์ธ์.
-
์ด repository๋ฅผ ํด๋ก ๋ฐ๊ณ develop ๋ธ๋์น๋ฅผ checkout ํฉ๋๋ค.
-
clone ๋ฐ์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ./install/install.sh๋ฅผ ์คํํด์ฃผ์ธ์. ํ๋ก์ ํธ ๋น๋๋ฅผ ์ํด ํ์ํ ๋๋ฏธ ํ์ผ๋ค์ด ํ์ํ ์์น๋ก ์ด๋๋ฉ๋๋ค.
-
Tuist๋ฅผ ์ค์นํฉ๋๋ค. v3 ๋ฒ์ ์ด ํ์ํฉ๋๋ค.
-
๋ค์์ ์คํํ์ฌ dependency๋ฅผ fetchํ๊ณ Xcode project๋ฅผ ์์ฑํ์ธ์
tuist fetch tuist generate --no-open
-
์์ฑ๋ TodoCalendar.xcworkspace๋ฅผ ์ฌ์ฉํ์ฌ Xcode๋ฅผ ์คํ์ํต๋๋ค.
-
TodoCalendarApp
Scheme ์ ์ ํํ๊ณ ์ฑ์ ์คํ์ํต๋๋ค
ํด๋ก ๋ฐ์ ์ฑ์ ์คํ๋ผ์ธ ๋ชจ๋๋ก๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.(๋ก๊ทธ์ธ ๋ฐ ๊ณ์ ๊ด๋ จ ๊ธฐ๋ฅ ์ ์๋์ x) ํด๋น ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ๋น๋ํ๋ ค๋ ๊ฒฝ์ฐ ๋ฌธ์ํด์ฃผ์ธ์
Domain
โโโ Models
โโโ Repositories
โโโ Usecases
โโโ Utils
์๋น์ค ๊ตฌํ์ ์ํ Model๊ณผ Usecase ๊ตฌํ์ฒด๊ฐ ํฌํจ๋ฉ๋๋ค.
Usecase
์ ๊ฒฝ์ฐ ์ ์ฒด ์๋น์ค๋ฅผ ์๋ธ๋๋ฉ์ธ์ ๋ฐ๋ผ ์ญํ ์ด ๋๋์ด์ ธ์๊ณ , ์ฑ ๋ด์์ ์ฌ์ฌ์ฉ๋๊ธฐ ์ํ ๋ก์ง๋ค์ด ๊ตฌํ๋์ด์์ต๋๋ค.
๋ํ Usecase
๊ตฌํ์ ์ํ Repository
์ ์ธํฐํ์ด์ค๋ค์ ํฌํจํฉ๋๋ค.
Repository
โโโ Extensions
โโโ Local
โโโ Remote
โโโ Repository+Imple
Repository
๊ตฌํ์ฒด๋ค์ ํฌํํจํ๋ฉฐ, ์ด๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ/์กฐํ ํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ตฌํ์ฒด๊ฐ ํ๋๋ง ์๋ ๊ฒฝ์ฐ๋ ์์ง๋ง, ์จ๋ผ์ธ(๋ก๊ทธ์ธ)/์คํ๋ผ์ธ ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด Remote, Local ๊ตฌํ์ฒด๋ก ๋ถ๋ฆฌ๋์ด ๊ตฌํ๋๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
Presentations
โโโ CalendarScenes
โโโ CommonPresentation
โโโ EventDetailScene
โโโ EventListScenes
โโโ MemberScenes
โโโ Scenes
โโโ SettingScene
Presentation group์๋ ui๋ฅผ ๊ตฌํํ๋ framework๋ค์ ํฌํจํฉ๋๋ค. ์์ง๋๊ฐ ๋์ ํ๋ฉด๋ค์ ๋ฌถ์ด ํ๋์ framework๋ฅผ ๊ตฌํํฉ๋๋ค. ๊ฐ๋ณ framework๋ค์ ๋ค์ ํ๋ฉด๋ค์ ํฌํจํฉ๋๋ค.
CalendarScenes
: ๋ฌ๋ ฅ ๋ฐ ํด๋น ๋ ์ง์ ์ํ ์ด๋ฒคํธ ๋ฆฌ์คํธ๋ฅผ ํํํ๊ธฐ ์ํ ํ๋ฉด์ ํฌํจํฉ๋๋ค.EventDetailScene
: ์ด๋ฒคํธ ์์ธ ๋ฐ ์์ /์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ฉด๋ค์ ํฌํจํฉ๋๋ค.EventListScenes
: ๋ฌ๋ ฅ๊ณผ ์๊ด์์ด ์ด๋ฒคํธ ๋ชฉ๋ก์ ๋ ธ์ถํ๋ ํ๋ฉด์ ํฌํจํฉ๋๋ค. ๋ํ์ ์ผ๋ก ์๋ฃ๋ ํ ์ผ ๋ฆฌ์คํธ ํ๋ฉด์ด ํฌํจ๋ฉ๋๋ค.MemberScenes
: ํ์๊ณผ ๊ด๋ จ๋ ํ๋ฉด์ ํฌํจํฉ๋๋ค. ๋ํ์ ์ผ๋ก ๋ก๊ทธ์ธ ๋ฐ ํ์์ ๋ณด ๊ด๋ จ๋ ํ๋ฉด์ด ํฌํจ๋ฉ๋๋ค.SettingScene
: ์ค์ ๊ณผ ๊ด๋ จ๋ ํ๋ฉด๋ค์ด ํฌํจ๋ฉ๋๋ค.
์๋ก ๋ถ๋ฆฌ๋ framework ๊ฐ ๊ฒฐํฉ๋๋ ๋ฎ์ง๋ง ํ framework์ ์ํ ํ๋ฉด์์ ๋ค๋ฅธ framework์ ์ํ ํ๋ฉด์ผ๋ก์ ์ ํ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ Scenes
framework์ ์ ์๋ Sceene protocol
์ ์ฐธ์กฐํ๊ฒ ๋ฉ๋๋ค.
๋ํ ui๊ตฌํ์ ์ํ ๊ณตํต ๋ก์ง์ CommonPresentation
framework์ ์์นํฉ๋๋ค.
TodoCalendarApp/Sources
โโโ AppDelegate.swift
โโโ AppEnvironment.swift
โโโ Factories
โโโ Main
โโโ Root
โโโ SceneDelegate.swift
TodoCalendarApp Target์ To-do calendar ์ฑ์ ํด๋นํฉ๋๋ค. ์ฑ์ ๊ตฌํ์ ์ํด ์์ ๋์ด๋ framework ๋ฐ ๋ค๋ฅธ framework๋ฅผ ๋ชจ๋ ํฌํจํฉ๋๋ค. ์ด ์ธ ์๋์ ๊ฐ์ ํ์ผ/ํด๋๋ฅผ ํฌํจํฉ๋๋ค.
AppEnvironment.swift
: ์ฑ ์คํ ํ๊ฒฝ์ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ํฌํจํฉ๋๋ค.Factories
:Scenes
framework์ ์ ์๋ usecaseFactory ๊ตฌํ์ฒด๋ค์ ํฌํจํฉ๋๋ค. ๊ตฌํ์ฒด๋ ๋ก๊ทธ์ธ ์ฌ๋ถ์ ๋ฐ๋ผNonLoginUsecaseFactoryImple
,LoginUsecaseFactoryImple
์ผ๋ก ๋๋ ์ง๊ฒ๋๋ฉฐ, ์ด๋ค ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋ ์ง๋ ๋ก๊ทธ์ธ/๋ก๊ทธ์์ ์์ ์ ๋ถ๊ธฐ๋ฉ๋๋ค.Main
: ์ฑ ๋ฉ์ธํ๋ฉด์ ํด๋นํ๋ ์ฝ๋ ํ์ผ์ ํฌํจํ๋ ํด๋์ ๋๋ค.Root
: ์ฑ ๋ฃจํธ์ ํด๋นํ๋ ๊ฐ์ฒด๋ฅผ ํฌํจํ๋ ํด๋์ ๋๋ค.AppDelegate
,SceneDelegate
์์ ํด๋น ํด๋์ ๊ตฌํ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ๋์์ ์ํํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ํ๋ฉด๋จ์๊ตฌ์กฐ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.