- ๊ฒฝ๋ถ๋ํ๊ต ๊ณต๋๊ตฌ๋งค ์ปค๋ฎค๋ํฐ
- ๋๋์ผ๋ก ์ฌ๋ฉด ์ ๋ ดํ ์ํ์ฉํ ์ด ๋, ํ๊ต ๊ธฐ์์ฌ์์ ๋ฐฐ๋ฌ ์์์ด ๋จน๊ณ ์ถ์๋ฐ ๋ฐฐ๋ฌํ ๋๋ฌธ์ ๋๋ฌด ๋น์ธ ๋น์ฉ์ ๋๋๊ณ ์ถ์ ๋, 1+1 ํ์ฌํ๋ ์ผํ๋ชฐ ์ท์ ํ๋๋ง ์ฌ๊ณ ์ถ์ ๋ ๊ฐ์ด ์ด ํ์์ ํธ๋ฆฌํ๊ฒ ์ฐพ์ ์ ์๋๋ก ๋์์ฃผ๋ ์๋น์ค
๐ย ์ด ๋ค์ด๋ก๋ ์ 727 (2022.03.02์ผ ๊ธฐ์ค) ๋ฌ์ฑ!
- ์๋๋ก์ด๋ ์ ์ฉ ์ฑ๊ณผ ํฉํ๋ฉด ์ด ๋ค์ด๋ก๋ ์ 1200 ์ด์!
- ์ด ํ์๊ฐ์ ์ ์ 1000 ์ด์ ๋ฌ์ฑ!
- ์ฑ์คํ ์ด ์์ ๋คํธ์ํน ์นดํ ๊ณ ๋ฆฌ 110์ ๋ฌ์ฑ! (2021.09.15์ผ ๊ธฐ์ค)
- iOS, Android, ๋ฐฑ์๋, ๊ธฐํ์, ๋ง์ผํฐ๋ก ์ง๋ก๋ฅผ ํฌ๋งํ๋ ๊ฒฝ๋ถ๋ ํ์๋ค์ด ๋ชจ์ฌ ์ ๋งคํ ๊ฐ์ ํ๋ก์ ํธ๋ง๊ณ ์ ๋๋ก๋ ํ๋ก์ ํธ๋ฅผ ํ๋ ํด๋ณด์ ํ๊ณ ํ์ํ ์ฑ
-
๋ํ์๋ค์ ์ง๊ฐ์ ๊ฐ๋ณ์ต๋๋ค. ์ท, ์ํ์ฉํ, ๋ฐฐ๋ฌ์์,
์ด๋ค๊ฑธ ์ฌ๋๋ผ๋ ์ต๋ํ ์ธ๊ณ ๊ฐ์ฑ๋น ์ข๊ฒ ๊ตฌ๋งคํ๊ณ ์ถ์ดํฉ๋๋ค.
-
๊ทธ๋ฐ๋ฐ ์ ๋ ดํ๊ฒ ๊ตฌ๋งคํ๊ณ ์ถ์ผ๋ฉด ๋๋์ผ๋ก ๋๋ 1+1์ผ๋ก ๊ตฌ๋งคํด์ผ ํ ๋๊ฐ ๋ง์ต๋๋ค.
๊ทธ๋์ ๊ณต๋๊ตฌ๋งค๋ผ๋๊ฒ ์กด์ฌํฉ๋๋ค.
-
๊ฒฝ๋ถ๋ํ๊ต์๋ ๊ณต๊ตฌ์ ๋ํ ์์๊ฐ ๋ง์ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์นด์นด์คํก ์คํ์ฑํ ๋ฐฉ ํํ๋ก ๊ณต๊ตฌ ๋ชจ์ง์ด ๋ง์ด ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
-
ํ์ง๋ง ์คํ์ฑํ ๋ฐฉ์ ๊ฒ์๊ธ ํํ๋ก ๊ตฌ๋ถ๋์ง ์์ UI/UX์ ์ผ๋ก ๋ง์ ๋ถํธํจ์ ๋๊ผ์ต๋๋ค.
- ํ ๋ฒ์ ๋ง์ ๊ธ์ด ์ฌ๋ผ์ค๋ฉด ๊ธ์ด ๋ฌปํ๊ธฐ ์ผ์ค
- ์ก๋ด๊ณผ ์์ฌ ๊ณต๊ตฌ ๋ชจ์ง ๊ธ ๊ตฌ๋ถ์ด ์ด๋ ค์
- ๊ณต๊ตฌ ์ฐธ์ฌ์์ ๋ณ๋ ์ฑํ ๋ฐฉ์ ๋ค์ ํ ๋ฒ ๋ ๊ฐ์คํด์ผํ๋ ๋ถํธํจ
- ์ฌ๊ธฐ ๋๋ ์ ์์ ๋ํ ์ํ์ฑ ๅค
- ๊ณต๊ตฌ ๋ชจ์ง ๊ธ ํ์ธ ๋ฐ ์ ๊ท ๋ชจ์ง ๊ธ ๊ฐ์ค ๊ธฐ๋ฅ
- ๋ชจ์ง ์ค์ธ ๊ณต๊ตฌ์ ๋ชจ์ง ์๋ฃ๋ ๊ณต๊ตฌ ๊ตฌ๋ณ ๊ฐ๋ฅ
- ๋ง๊ฐ๋ ๊ณต๊ตฌ๋ ๋ณ๋ ๋ง๊ฐ์ฒ๋ฆฌํ์ฌ ๋ ์ด์ ์ฑํ ๋ฐฉ ์ ์ฅ์ด ๋์ง ์๊ฒ ๊ตฌํ
- ๊ณต๊ตฌ ๊ธ ์์ ๊ธฐ๋ฅ
- ๊ณต๊ตฌ ๊ธ ๊ฒ์ ๊ธฐ๋ฅ
- ์ฑํ
๊ธฐ๋ฅ
- ๊ณต๊ตฌํ๊ณ ์ถ์ ํ๋ชฉ์ ์ฌ๋ฆฌ๋ฉด ์๋์ผ๋ก ์ฑํ ๋ฐฉ ๊ฐ์ค โ ํฌ๋ง์๊ฐ ์ฑํ ๋ฐฉ์ ์ฐธ์ฌํ๋ ๋ฐฉ์
- WebSocket๊ณผ StarScream ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ ์ค์๊ฐ ์ฑํ ๊ธฐ๋ฅ
- Socket์ ์ฐ๊ฒฐ๋์ด ์์ง ์์ผ๋ฉด FCM์ ํตํด ๊ฐ์ธ ์๋ฆผ ๋ฐ์ก ๊ฐ๋ฅ
- ์ฑํ ์ฐธ์ฌ, ๋๊ฐ๊ธฐ, ์ค์๊ฐ ์ฌ์ฉ์ Ban ๊ธฐ๋ฅ
- ์ฌ์ง ๋ณด๋ด๊ธฐ ๊ธฐ๋ฅ
๋ฐ๋ชจ ์์ ๋งํฌ : https://drive.google.com/file/d/1AWt3Opp9z7dmQ26cTil_KCyJ1GYzKdyv/view?usp=sharing
- MVVM (ReactorKit)
- iOS ๊ฐ๋ฐ์ 1๋ช
- Android ๊ฐ๋ฐ์ 2๋ช
- ๋ฐฑ์๋ ๊ฐ๋ฐ์ 1๋ช
- ๊ธฐํ์ 2๋ช
- iOS ์ฑ ์ ์ฒด ๊ฐ๋ฐ
- v 1.1 ์ถ์ ์ดํ iOS ๊ฐ๋ฐ์ 1๋ช ์ด ๋ ํฌ์ ๋์ด ํ์ ์ค
- ๊ฐ๋ฐํ์ฅ
- ์ ์ฒด ๊ฐ๋ฐ ์ผ์ ์กฐ์จ ๋ฐ ํ ์ ์ฒด์ ํจ๊ป ๊ธฐ๋ฅ ๊ตฌํ ๋ฐฉ์ ํ ๋ก ์ฃผ๋
- ๋ชจ๋๊ฐ ์ด๋ณด์๊ธฐ ๋๋ฌธ์ iOS, Android์ ๋ฐฑ์๋ ๋ด๋น ํ์๋ค๊ณผ ์๋ง์ ์ํ์ฐฉ์ค๊ฐ ์์์ง๋ง ์ํํ ์ค์ฌ์ ์ญํ ์ ์ํํ์ฌ ์์กฐ๋ก์ด ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ์์ต๋๋ค.
- ๋์์ธ
- ์ด๊ธฐ์ ๋์์ด๋๋ฅผ ๊ตฌํ์ง ๋ชปํด ์ ๊ฐ Figma๋ก ํ๋กํ ํ์ดํ์ ์งํํ์์ต๋๋ค.
- ์ค์ ์ ์ ์ ํผ๋๋ฐฑ์ ์ง์์ ์ผ๋ก ๋ฐ๊ณ ์ถ์ด โ๊ฐ๋ฐ์์๊ฒ ๊ฑด์์ฌํญ ๋ณด๋ด๊ธฐโ๋ผ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์์ต๋๋ค.
- ๊ฑด์์ฌํญ์ด ์ ์๋๋ฉด ํ์ด ์ฐ๋ ํ์ ํด๊ณผ ์ฆ์ ์ฐ๋์ด ๋์ด ์๋์ ๊ฐ์ด ์ด๋ค ๋ถํธํจ์ ๋๋ผ๋์ง ํ์ธํ ์ ์์์ต๋๋ค.
[ ํผ๋๋ฐฑ ๋ฐ๊ณ ๊ฐ์ ๋ฐ ์ถ๊ฐํ ์ฃผ์ ๊ธฐ๋ฅ ]
- ์ฑํ ๋ฐฉ์์ ์ฌ์ง ๋ณด๋ด๊ธฐ ๊ธฐ๋ฅ ์ถ๊ฐ
- ์ฑํ ๋ฐฉ/๊ณต๊ตฌ๊ธ์์ ์๋๋ฐฉ์ด ๋งํฌ๋ฅผ ์ฌ๋ฆฌ๋ฉด URL๋ก ์ธ์ํ๊ณ ์ด๋ฅผ ํญํ์ ๋ ๋ธ๋ผ์ฐ์ ๋ก ์ด๋
- ๊ธฐ์กด ๋จ๋ฐฉํฅ์ด๋ ๊ฑด์์ฌํญ ๋ณด๋ด๊ธฐ ๊ธฐ๋ฅ์ ์๋ฐฉํฅ์ผ๋ก ๋ฐ๊ฟ ๊ฐ๋ฐํ๊ณผ ์ค์ 1:1 ๋ฌธ์๊ฐ ๊ฐ๋ฅํ๊ฒ๋ ๋ณ๊ฒฝ
- ๊ธฐ์กด ํ์ ์ธ์ฆ ๋ฐฉ์์ธ ์น๋ฉ์ผ ์ธ์ฆ ๋ฐฉ์์ ๋ํ ๋ถํธ ์ ์๊ฐ ๋ง์ ๋ชจ๋ฐ์ผ ํ์์ฆ ์บก์ณ (OCR ๊ฒ์ฌ) ๊ธฐ๋ฅ ์ถ๊ฐ
- Firebase Dynamic Link๋ฅผ ์ด์ฉํ ๊ณต๊ตฌ๊ธ ๊ณต์ ๊ธฐ๋ฅ ์ถ๊ฐ
- ๊ณต๊ตฌ๊ธ ์ ๋ ฌ ๊ธฐ๋ฅ ์ถ๊ฐ (โ๋ชจ์ง ์ค ์ฐ์ โ, ์ต์ ์โ)
โ ย ์คํ ๋ฆฌ๋ณด๋ โ 100% Code-based layout์ผ๋ก ์ ํ
- ํ์ ์ ๋ฐ์ํ๋ conflict ์ต์ํ, ๋น๋ ํ์ ๋จ์ถ๊ณผ code based UI์ ๋ํ ๊ฐ๊ฐ์ ์ตํ๊ธฐ ์ํด ์กด์ฌํ๋ 40๊ฐ ์ด์์ Storyboard VC์ XIB๋ฅผ ์ ๋ถ SnapKit, Then, BaseViewController๋ฅผ ์ด์ฉํ์ฌ ์ ํ
โ ย Git Flow๋ฅผ ์ด์ฉํ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ํ์ ์ฐ์ต
- ์ข์ธก ์ฌ์ง: Git Flow ์ฌ์ฉ ์
- ์ฐ์ธก ์ฌ์ง: Git Flow ์ฌ์ฉ ํ
โ ย ํ์๊ณผ์ ์ฝ๋ ๋ฆฌ๋ทฐ ์ค์
- ์๋ก ์ค๋ฅ๋ฅผ ๋ด์ฃผ๊ณ ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์๋์ง ์ฒดํฌํ์ฌ ์ ์ฒด์ ์ธ ์ฝ๋ ํ์ง์ ์ฌ๋ฆด ์ ์์์ต๋๋ค.
โ ย Shared Instance ์ฌ์ฉ ์ง์ ๋ฐ Dependency Injection ์ ์ฉ
- Thread-safe ํ์ง ์์ Shared instance ์ฌ์ฉ์ ์ง์ํ๊ณ , ํ์ํ ๊ณณ์์ ์ง์ ์์ฑ ํ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ
- ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๋ถ๋ด์ ์ค์ฌ์ฃผ๊ณ , ํด๋น ํด๋์ค๊ฐ ์ ํํ ์ด๋ค ๋ค๋ฅธ ๊ฐ์ฒด์ ์์กดํ๋์ง ๋ช ํํ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด Dependency Injection ์ ์ฉ
โ ย ย ReactorKit ์ ํ
- ๊ธฐ์กด์๋ View Controller์ ViewModel์ ํต์ ์ ์ํด์ Delegate Pattern์ ์ด์ฉ
- ํ์ง๋ง Delegate protocol์ด ์ปค์ง์๋ก ์ํ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๊ณ ์ฝ๋ ๊ฐ๋
์ฑ์ด ๋งค์ฐ ๋จ์ด์ ธ RxSwift๋ฅผ ์ด์ฉํ ๋ฐ์ธ๋ฉ์ด ์ ์คํด ๋ณด์์
- ๋ถ๋ถ์ ์ผ๋ก ์ ์ฉํด ๋๊ฐ๊ธฐ ์ฝ๊ณ ์ํ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ReactorKit์ ์ฌ์ฉํ๊ธฐ๋ก ์ ํ ํ ์ง๊ธ๊น์ง 80% ์ด์ ์ ํ ์๋ฃ
- ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋์ ๋๊ฒ ์ข์์ก๊ณ , ์ด๋ค ํจ์๊ฐ ์คํ๋๋์ง ํ์ ํ๊ธฐ ์ํด ์ด๋ฆฌ์ ๋ฆฌ ํ์ผ์ ์ฐพ๋ ํ์๊ฐ ํ์ ํ ๊ฐ์
โ ย Alamofire โ Moya ์ ํ
- ๋ชจ๋ ๋ณ๊ฐ๋ก ์์ฑ๋์ด ์๋ API ํต์ ํจ์๋ ์ ์ง๋ณด์ํ๊ธฐ ์ด๋ ต๊ณ , ์ง๋์น๊ฒ ์ฝ๋์ ์์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ Moya ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ถ ๋ฆฌํฉํ ๋ง ์๋ฃ
- ์ข์ธก ์ฌ์ง: Moya ์ฌ์ฉ ์
- ์ฐ์ธก ์ฌ์ง: Moya ์ฌ์ฉ ํ
-
Coordinator Pattern ์ ์ฉ
- ๊ธฐ์กด MVVM ๊ตฌ์กฐ์์ Coordinator ํจํด์ ์ ์ฉ์ํจ MVVM-C ๊ตฌ์กฐ๋ฅผ ์ ์ฉํด Navigation Logic์ ViewController์ ๋ถ๋ฆฌ ๊ฐ๋ฅ
- RxFlow ์ ์ฉ ์๋ฃ
- ๊ธฐ์กด MVVM ๊ตฌ์กฐ์์ Coordinator ํจํด์ ์ ์ฉ์ํจ MVVM-C ๊ตฌ์กฐ๋ฅผ ์ ์ฉํด Navigation Logic์ ViewController์ ๋ถ๋ฆฌ ๊ฐ๋ฅ
-
์ฑํ Local Caching
- ์ฑํ
๋ชฉ๋ก ๋ถ๋ฌ์ค๊ธฐ๊ฐ ํ์ฌ๋ API ํธ์ถ์ ํตํด์๋ง ์ด๋ฃจ์ด์ง๋๋ฐ, Local Caching์ ์ด์ฉํ์ฌ ๋ถํ์ํ API ํธ์ถ ํ์๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์๊ฐ์ ์ค์ฌ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ ๊ตฌํ์ด ๊ฐ๋ฅํด ๋ณด์ธ๋ค.
- Realm ๋๋ CoreData๋ฅผ ์ด์ฉํ Local Caching ์ ์ฉ ์์
- ์ฑํ
๋ชฉ๋ก ๋ถ๋ฌ์ค๊ธฐ๊ฐ ํ์ฌ๋ API ํธ์ถ์ ํตํด์๋ง ์ด๋ฃจ์ด์ง๋๋ฐ, Local Caching์ ์ด์ฉํ์ฌ ๋ถํ์ํ API ํธ์ถ ํ์๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์๊ฐ์ ์ค์ฌ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ ๊ตฌํ์ด ๊ฐ๋ฅํด ๋ณด์ธ๋ค.
-
Unit Test ์ ์ฉ
- ๊ธฐ๋ฅ์ด ์ ์ ๋ง์์ง๋ฉด์ ํ ์คํธํด์ผ ํ ๊ธฐ๋ฅ๋ ๋ง์์ง๊ณ ๊น๋นกํ๊ณ ํ ์คํธ๋ฅผ ํ์ง ์์ผ๋ฉด ์น๋ช ์ ์ธ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋ํ
- Index out of range error, UI error, nil ์ฒ๋ฆฌ ๋ฑ ๋ค์ํ ์๋ฌ๋ฅผ ์๋์ ์ผ๋ก ํ
์คํธํ๊ธฐ ์ํ Unit Test ๊ฐ ์ ์คํด๋ณด์
- Unit Test ์ ์ฉ ์์
-
Fast Lane ๋์ ์ผ๋ก ๋ฐฐํฌ ์๋ํ
- v1.0, 1.0.1, 1.1, 1.1.1 ๋ฑ ๋ค์ํ ๋ฒ์ ์ ์ฑ์คํ ์ด์ ๋ฐฐํฌํ๋ฉด์ ๋ถํ์ํ๊ฒ ๋ญ๋น๋๋ ๋ฐ์ด๋๋ฆฌ ์ ๋ก๋ ์๊ฐ๊ณผ ์ฌ์ฌ ์ ์ถ ์ค๋น ์๊ฐ์ด ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์
- ๋ฐฐํฌ ์๋ํ๋ฅผ ํตํ ๋ถํ์ํ๊ฒ ๋ญ๋น๋๋ ์๊ฐ์ ์ค์ผ ํ์๊ฐ ์์ด๋ณด์.
- Fast Lane ๋์ ์์
โ ย ๋ฐฑ์๋์ ์ฒซ ํ์
- ์ฒ์์ผ๋ก ๋ฐฑ์๋์ ํ์ ์ ํ๋ ํ๋ก์ ํธ์์ต๋๋ค. iOS ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ๋ฐฐ์ฐ๊ณ ๋ฐ๋ก ์์ํด์ ๋ชจ๋ฅด๋ ๊ฒ์ด ํฌ์ฑ์ด์์ต๋๋ค.
- ์ฒ์ ๋ค์ด๋ณด๋ ์๋ง์ ์ฉ์ด๋ค ๐คฏ: JWT, AccessToken, RefreshToken, MultipartFormData, JSON Encoding, PostMan, ERD, FCM ๋ฑ๋ฑ..
- ๋ชจ๋ฅด๋ ๊ฒ์ด ์์ผ๋ฉด ๊ณต๋ถํ๊ณ , ํ์๊ณผ ํจ๊ป ๋์๊ฐ๋ค๋ ๋ง์ธ๋๋ก ์ ๊ธฐ์ ์ผ๋ก ์คํฐ๋ ์ธ์ ์ ์ด์ด ๊ฐ๋ ์ ์ตํ๊ณ ํ๋ก์ ํธ์ ๊ฐ๋ ์ ์ ์ฉํ์์ต๋๋ค.
- ์์ญ๊ฐ์ ๊ฐ๊ฐ ๋ค๋ฅธ API..์ด๋ค๊ฑด query string, ์ด๋ค๊ฑด multipartFormData, ๋ ์ด๋ค๊ฑด json string.. ์ฒ์์๋ ๋๋ฌด ํผ๋์ค๋ฌ์ ์ง๋ง ๋ฐฑ์๋ ํ์๊ณผ ์ฐจ๊ทผ์ฐจ๊ทผ ์ด์ผ๊ธฐํ๊ณ ์ธํฐ๋ท์ ๋ค์ ธ๊ฐ๋ฉฐ ์ด๋ป๊ฒ๋ API ํต์ ์ด ์ด๋ค์ง๊ฒ ํ์ต๋๋ค.
- ๋ฌด์๋ณด๋ค, ํ์
์ด ์ฒ์์ด๋ค๋ณด๋ ์ค๋ฅ๊ฐ ๋๋ฉด ํ๋ก ํธ ๋ฌธ์ ์ธ์ง ๋ฐฑ์๋ ๋ฌธ์ ์ธ์ง ํ์
ํ๋ ๊ฒ์ด ์ฒ์์ ์ ์ผ ํ๋ค์์ต๋๋ค.
- ๋ฐฑ์๋ ๋ฌธ์ ๋ผ๋ ์ ๋ฌธ์ ๊ฐ ์ผ์ด๋๋ ๊ฒ ๊ฐ์์ง, ๋๋ ๋ฌด์์ ์๋ํด๋ดค๊ณ ์ด๋ ๊ฒ ํด๋ ์ ๋๋ค๋ ๊ฒ์ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฑ์๋ ํ์์ ์ ์ฅ์์ ์๊ฐํ๋ฉฐ ์ํตํ๋ ์ญ๋์ ๊ธฐ๋ฅด๊ฒ ๋์์ต๋๋ค.
โ ย ์ฑํ ๊ธฐ๋ฅ (WebSocket)
- ์ ์ผ ๋ง๋งํ์๊ณ ์ ์ผ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ๋ ๊ธฐ๋ฅ์ ๋๋ค.
- ๋จ์ํ ์ฑํ ๋ด์ฉ์ด ์๋ค๊ฐ๋คํ๋ ๊ฒ์ ๋์ด์ ์ค์๊ฐ์ฑ ๋ณด์ฅ + ์ด์ ์ฑํ ๋ถ๋ฌ์ค๊ธฐ + Socket์ด ๋๊ธฐ๋ฉด FCM ๋ณด๋ด๊ณ ์๋ฆผ ๋ฐ๊ธฐ ๋ฑ ์ฌ์ฉ์ ์ ์ฅ์์ ์๊ฐํ๊ณ ๊ตฌํํด์ผ ํ ๊ฒ์ด ๋๋ฌด ๋ง์ ์ด๋ณด ์ ์ฅ์์ ๋ง์ด ์ด๋ ค์ ์ต๋๋ค.
- ๊ด๋ จ ๋ฌธ์๋ ๋ธ๋ก๊ทธ๋ ๊ฑฐ์ ์์ด ๋งจ ๋ ์ ํค๋ฉํ๋ฏ ์ ๋ง์ ์ค๋ฅ๋ฅผ ๋ง๋ฅ๋จ๋ฆฌ๋ฉด์ ๊ตฌํ์ ์ฑ๊ณตํ์ต๋๋ค.
โ ย ์ ๋ง์ ๊ฒฝ์ฐ์ ์ ์๊ฐ
- ๊ฐ๋ฐ์ ํ ๋๋ ํญ์ Golden Path์ ์๊ฐํ์ง๋ง, ์ค์ ์ ์ ๋ ๊ฐ๋ฐ์๊ฐ ์์ํ์ง๋ ๋ชปํ ๋ฐฉ๋ฒ์ผ๋ก ์ฑ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋ชธ์ ๋๊ผ์ต๋๋ค.
- 1.0 ์ถ์ ํ ์๋ฐฑ๋ช
์ด ๋ชฐ๋ ธ์ ๋ ๊ฐ์ข
crash/error ๋ก๊ทธ๊ฐ Crashlytics์ ์์ฒด ์๋ฒ์ ์ฐํ๋ ๊ฒ์ ๋ณด๊ณ ์์ ๋์ ํ๋ ธ์ต๋๋ค.
- iOS, Android, ๋ฐฑ์๋ ํ ๊ฒ ์์ด ์ฌ์ ์ ๋ฐ๊ฒฌํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํด ๊ธํ๊ฒ 1.0.1, 1.0.2 ๋ฒ์ ๋ฑ์ ๋ฐฐํฌํ์์ต๋๋ค.
โ ๋ค์ํ ์๋ฌ ์ฒ๋ฆฌ์ ๋ํ ํ์์ฑ์ ๋๊ผ๊ณ ๊ฐ ์๋ฌ์ ๋ฐ๋ผ ์ฌ์ฉ์ํํ ์ ์ ํ๊ฒ UI๋ก ํ์ํด์ค์ผ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
REST API
์ฐ๋ ๋ฐฉ์์ ๋ํด ์๊ณ ํ๋ก์ ํธ์ ์ ์ฉํด ๋ณผ ์ ์์์ต๋๋ค.Web Socket
์ ์ด์ฉํ ์ค์๊ฐ ์ฑํ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ณผ ์ ์์์ต๋๋ค.- Storyboard์ Code-Based Layout ๋ ๊ฐ ๋ชจ๋ ํ์ฉํด ๋ณผ ์ ์์์ผ๋ฉฐ ๋ ์ฌ์ด์ ์ฅ๋จ์ ์ ๋ชธ์ ๋๋ ์ ์์์ต๋๋ค.
BaseViewController
,Moya
๋ฑ์ ์ ์ฉํ์ฌ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ธฐ ์ํ ๊ณ ๋ฏผ์ ํด ๋ณผ ์ ์์์ต๋๋ค.Dependency Injection
์ ๋ํด์ ๊ณต๋ถํ๊ณ ์ ํ์ํ์ง ์ดํดํ ์ ์์์ต๋๋ค.Delegate Pattern
์ ํ๊ณ๋ฅผ ๋๋ผ๊ณRxSwift
์ReactorKit
์ ๊ณต๋ถํ๊ณ ์ง์ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ํด ๋ณผ ์ ์์์ต๋๋ค.- โ ํ์ ํธํ "๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ๊ณ ๋ฏผํ๊ณ ์ ์ฉํด ๋ณผ ์ ์์์ต๋๋ค. (ํฌ๋๋ง์ผ ์ฑ ๋ฒ์ & iOS ๋ฒ์ )
- ๋ฌด์กฐ๊ฑด ์ต์ ์ฑ ๋ฒ์ ์ ์ฌ์ฉํ๋ ์ ์ ๋ง ๊ณ ๋ คํ์ง ์๊ณ , ์ด์ ๋ฒ์ ๊ณผ ์ต์ ๋ฒ์ ์ฌ์ฉ์๋ค์ด ์๋ก ํธํ๋ ์ ์๊ฒ UI์ Model ๋ถ๋ถ์ ๊ณ ๋ คํ์์ต๋๋ค.
โ ย ์ธ์คํ๊ทธ๋จ ํ๋ณด ๊ณ์ ๊ฐ์ค
โ ย ์ธํฐ๋ทฐ ์์ ์ดฌ์
โ ย ๊ฒฝ๋ถ๋ ์ ๋ฌธ ์ธํฐ๋ทฐ
-> ๋ฐ๋ผ์ ๋ณ๋๋ก ์ฌ์ฉํ๊ณ ์ถ์ผ์๋ค๋ฉด [email protected] ์ผ๋ก ์ฑํจ๊ณผ ์ฌ์ ๋ฅผ ์๋ ค์ฃผ์๋ฉด ์ฌ์ฉํด ๋ณด์ค ์ ์๋๋ก ํ ์คํธ ๊ณ์ ์ ์์๋ก ๋ณด๋ด๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค :)
-> ํ์ฌ ๋ณด๊ณ ๊ณ์๋ Repository๋ Fork๊ฐ ๋ ๋ฒ์ ์ ๋๋ค. ์ค์ Repo๋ private organization์ ์ ์ฅ๋์ด ์์ผ๋ฉฐ ์ง์ ์ ์ง๋ณด์ ์ค์ ๋๋ค. ๋ฐ๋ผ์ ์ปค๋ฐ ๊ธฐ๋ก๊ณผ ์ฝ๋๋ ์ค์ ์ ๋ค๋ฅผ ์ ์์์ ์๋ ค๋๋ฆฝ๋๋ค.