PoMeds ๋ Pocket Medicine ์ ์ค์๋ง๋ก, ์ฝ์ ๋ณต์ฉํจ์ ์์ด ์ฝ์ ์ฑ๋ถ์ ์นด๋ฉ๋ผ๋ก ์ฐ์ด ํธํ๊ฒ ๊ธฐ์ฌํ๊ณ , ๊ณต๊ณต API (e์ฝ์์) ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ฝ ์ฑ๋ถ์ ๊ฒ์ํ์ฌ ๋์ ๋นโข์ ๊ธฐ์ ๋ณต์ฉ์ ์ฒดํฌํ ์ ์๊ฒ ํ๋ค. ๋ก์ปฌ ํธ์ ์๋ฆผ์ผ๋ก ์ฌ์ฉ์๋ค์๊ฒ ๊ณ ์งํ๋ฉฐ, ์์ ฏ์ ์ฌ์ฉํ์ฌ ๋ณต์ฉ ์ฌ๋ถ๋ฅผ ๋น ๋ฅด๊ฒ ์ฑ์ ๋ฐ์ํ ์ ์์ต๋๋ค.
- โ ํต์ฌ Feature ๊ฐ๋ฐโฆ
- โ TCA ์ ์ต์ํด์ง๋ ์คโฆ
- โ ๋๋จธ์ง ๋ณต์ฉ ๋ฆฌ์คํธ ๊ธฐ๋ฅ ๊ตฌํ ์ค
- ์ถ์
- ํ ์คํธ ์ฝ๋ ์งํ
- ๋คํฌ ๋ชจ๋ ๊ตฌํ
- ๊ทธ ์ธ์ ์ด์ Fix
SwiftUI ์ TCA ๋ฅผ ์ฐ์ตํ๊ณ ์ ๋ง๋ ํ ์ด ํ๋ก์ ํธ๋ก, ์ถ์๊น์ง ์์ ํ๊ณ ์์ต๋๋ค. TCA ์ ์ ์ง๋ณด์ ๋ํ ๊พธ์คํ๊ฒ ๋ธ๋ก๊น ์ด ๋ ์์ ์ ๋๋ค. ํด๋ฆฐ ์ํคํ ์ณ๋ฅผ ์ผ๋ํ์ฌ ๊ตฌ์กฐ๋ฅผ ์งฐ์ง๋ง, TCA ๋ฅผ ์ ์ฉํจ์ ์์ด ์ต์ํ์ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ง ์งํํ์ต๋๋ค.
-
์ TCA ์ธ๊ฐ?
SwiftUI ๋ฅผ ์ฌ์ฉํ๋ฉด์ MVVM ํจํด์ ์ฌ์ฉํ๋ค๋ฉด, View ๋ด๋ถ์ State ๋ฅผ ๋๋ฒ ์ฌ์ฉํ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ค๋ถํฉ๋๋ค. ๋ฌผ๋ก ํ ์ ์์ง๋ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ค๊ณ ๋ง์ด ๋ถํธํ ๊ฒ์ ์๋์ง๋ง, @Binding ์ ํ๋ฉด์ ์๊ธฐ๋ ๋ฐ์ดํฐ ํ๋ก์ฐ์ ์ด์๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ก์ฐ๊ฐ ์๋ ๋จ๋ฐฉํฅ์ ํ๋ก์ฐ๋ฅผ ๊ฐ์ง TCA ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋จ๋ฐฉํฅ ํจํด์ ํ์ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฒ์ด ๋ชฉ์ ์ด์์ต๋๋ค.
-
์ด๋ค ๊ฒ์ด ์ข์๊ฐ?
State ๋ฐ Action ์ ๊ด๋ จ๋ ์ฌํญ์ Reducer ์ ๋ด์ ๋จ๋ฐฉํฅ์ผ๋ก ์ฒ๋ฆฌํ๋ ํ์คํ๊ฒ View ์ ๋น์ฆ๋์ค ๋ก์ง์ ํธํ๊ฒ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ์ด ํ์ค๋ก ํฐ ์๋ฏธ๋ฅผ ๊ฐ์ต๋๋ค.
-
์ด๋ค ๊ฒ์ด ๋์๊ฐ?
๋ค์ดํฐ๋ธ ์ฝ๋๋ก ๋ง๋ ํจํด์ด ์๋๊ธฐ ๋๋ฌธ์, ์๋ฌด๋๋ ๋ถ์์ ํ ์ ์ด ๋ง์์ผ๋ฉฐ, ํนํ ๋๋ฒ๊น ์์ ๋ฌธ์ ๊ฐ ๋ง์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋์ฑ์ด, ๋์ ์์ด ์ ๋ฐ์ดํธ๊ฐ ๋๊ณ ์์ง๋ง ์ค์ง์ ์ผ๋ก ๊ทธ ์ฌํญ์ TCA ๋ฅผ ์ฒ์ ์ฌ์ฉํด๋ณด๋ ๊ฐ๋ฐ์๊ฐ ์ ๋๋ก, ์น์ ํ๊ฒ ํ์ธํ ์ ์๋ ๊ณณ์ด ๋ง์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. (์จ๋ํํฐ๋ผ๋ฉด ๋น์ฐํ ๊ฒ์ด์ง๋ง.. v1.7 Doc) Slack ์ฑ๋์ ์ง์ ๋ค์ด๊ฐ TCA ๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ ๊ฐ๋ฐ์์ ์ง์ ์ํต์ ํด์ ์์๋ด์ผ ํฉ๋๋ค. (Slack ์์ TCA ๋ฅผ ๋ง๋ค๊ณ ์๋ ๊ฐ๋ฐ์์ ์ง์ ์ํตํ๋ค๋ ๊ฒ์ ์ข ์๋กญ๊ณ ์ฌ๋ฐ์์ต๋๋ค.)
- Binding ์ฌ์ฉ์ ์ถ๊ฐํ ๊ฒ (์ปค์คํ Alert)
- โ Realm ์ Thread ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ Dependency ์ถ๊ฐ
- Camera ์ ๊ฒฝ์ฐ ViewModel ์ด ์๋ Client ๋ก ๋ฐ๋ก Depedency ์ถ๊ฐ (์ด ๊ฒฝ์ฐ, Realm ๊ณผ ๊ฐ์ด Thread ๋ฌธ์ ๋ฅผ ๊ณ ๋ฏผํ๋ฉด์ ํด์ผํจ)
- UseCase ์ Repository ๋ฅผ Domian ์์ ์ ๋๋ก ๋ ์ฝ๋๋ก ์ถ๊ฐํ๊ธฐ
- ์์ ฏ ๋ฐ ๋ก์ปฌ ๋ ธํฐํผ์ผ์ด์ ์ถ๊ฐ
- ๊ธฐ๋ฅ ์์ฃผ๋ก ๋น ๋ฅด๊ฒ ๊ตฌํํ๋ค๋ณด๋ ํ ์คํธ๋ฅผ ์ ํ ์งํํ์ง ๋ชปํจ -> ํ ์คํธ ํด์ผ ํจ
ํธ๋ฌ๋ธ ์ํ ๋ฐ TCA ์ ๊ด๋ จ๋ ์ฌํญ์ด ๋ธ๋ก๊น ๋ ๋ธ๋ก๊ทธ ์ฃผ์์ ๋๋ค!
Navigation ๋ถ๋ถ์์์ @ObservableState
๊ฐ ์ถ๊ฐ๋๋ฉด์ ๋ฐ๋ ๊ฒ๋ค
-
์นด๋ฉ๋ผ ์ธ์
์ต๋ 8์ฅ๊น์ง ์ง์ ์ฐ์ด์ VisionKit ์ ํตํด Text ๋ฅผ ์ธ์ํฉ๋๋ค.
-
๋ณต์ฉ ๊ธฐ๋ก์ ์ ์ฅ
-
๊ณต๊ณต API ํ์ฉ (๊ฐ๋ฐ ์ค)
๊ณต๊ณต API ๋ฅผ ํ์ฉํ์ฌ, ์ฝ์ ์ฑ๋ถ์ ๋ํด ๊ฒ์ํฉ๋๋ค.
-
Local PushNotification ์ผ๋ก ์๊ฐ์ ๋ฐ๋ผ ์ฌ์ฉ์์๊ฒ ์๋ ค์ค (๊ฐ๋ฐ ์ค)
-
์์ ฏ์ผ๋ก ์ฝ๊ฒ ๋ณต์ฉ ์ฌ๋ถ๋ฅผ ํ์ธ ๊ฐ๋ฅ (๊ฐ๋ฐ ์ค)
-
SwiftUI
-
TCA
-
Alamofire
-
Combine
-
RealmSwift
-
Lottie