๋จผ์ ๋ค๋
์จ ์ฌํ๊ฐ์ ์ฌํ ๊ธฐ๋ก์ ํ๊ธฐ๋ก ๊ณต์ ํ๊ณ ๊ตญ๋ด ์์ธ ๊ด๊ด์ง๋ฅผ ํ์ฑํ ํ๊ธฐ ์ํ ์๋น์ค ์
๋๋ค.
๋ง์ ํ๋์ธ์ด SNS ๊ด๊ณ ์ ์๊ณ ๋ฆฌ์ฆ์ ์์กดํด ์ฌํ์ง๋ฅผ ์ ํํ๋ฉด์, ์ผ๋ถ ๊ตญ๋ด ์ฌํ์ง๋ค์ด ์์ธ๋๊ณ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ํ๊ตญ๊ด๊ด๊ณต์ฌ ๊ณต๊ณต๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ์ฌํ ์ปค๋ฎค๋ํฐ ์ฑ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ์ฌ ์จ๊ฒจ์ง ์ฌํ์ง๋ฅผ ๋ฐ๊ตดํ๊ณ ๊ณต์ ํ ์ ์๋ ํ๋ ํผ์ ๋ง๋ จํ์ต๋๋ค๐คฉ
๐ง๐ปโ๐ป ํ ์๊ฐ
UI ๊ตฌํ์ ๋๋๋ก ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ์ง ์๊ธฐ
๊ธฐ๋ฅ ๊ตฌํํ๋ค ๋งํ๊ฑฐ๋ ์ค๋ฅ ํด๊ฒฐ์ด ์ด๋ ค์ด ๊ฒฝ์ฐ ๋๋ฃ์ ์๋
ผํ๋ฉฐ ํด๊ฒฐํ๊ธฐ
์ปจ๋ฒค์
์ค์ํ๊ธฐ
PullRequestํ ๋, ์์ ์ด ๊ตฌํํ ๊ธฐ๋ฅ ์์ธํ ์๊ฐ ๋ฐ ์๋กญ๊ฒ ์๊ฒ๋ ๊ฐ๋
์๊ฐ ๋ฐ ์ฐธ๊ณ ํ๋ ํฌ์คํธ ๋งํฌ ๋จ๊ธฐ๊ธฐ
์ค๋ณต ์ฝ๋๋ฅผ ์ค์ด๊ธฐ. ๊ฐ์ฒด์์ ์์กด์ฑ์ ์ค์ด๊ณ ๊ฒฐํฉ๋๋ ๋์ด๋ ๊ฐ์ฒด ์ค๊ณ ๋ฐ ๊ตฌํํ๊ธฐ
๐ก '์ฌ๊ฐ' ์คํ ๋ฆฌ๊ฐ ๋ด๊ธด ๊ณต๊ฐ
์ฌ์ฉ ๊ธฐ์ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
UIKit, AutoLayout
Combine, GCD
XCTest
Photos
LinkPresentation
NotificationCenter
Swinject
Alamofire, Firebase, GoogleSignIn
AppsFlyer
Snapkit, Swiftlint
Figma, SwiftPM, Github project kanban
Minimum deployment target: iOS 13.0
Project Architecture & System Flow
Clean Architecture
Input/Output binding ( in MVVM )
Coordinator
๊ฐ๊ฐ์ layer ๋ง๋ค ๊ฐ์ฒด๋ค์ protocol์ ํตํด ์์กด์ฑ์ ๋ฎ์ถ์ด ์๋ก ํ๋ ฅํฉ๋๋ค. ์ด๋ DIP ๋ฅผ ์งํค๊ณ ์ ๋
ธ๋ ฅํ์ต๋๋ค.
๋ํ layer ๋ณ๋ก Assembly์์ ๊ฐ์ฒด๋ฅผ ๋ฑ๋กํด, ๊ฐ์ฒด์ ์์กด์ฑ ์ฃผ์
์ ํ์ํ ๋ก์ง์ ํด๋น Layer์ Assembly์์ ํ์ ํ ์ ์์์ต๋๋ค.
์ดํ๋ฆฌ์ผ์ด์
๊ธฐ๋ฅ
์ฃ์กํฉ๋๋ค.
Application ๊ฐ flow๋ณ ๋์ gif๋ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์ ์ํํ๊ฒ ๋์๋ฉ๋๋ค. (์ฌํ๋ฆฌ์์๋ gif๊ฐ ๋์๋์ง ์๋ ํ์์ ๋ฐ๊ฒฌํ์ต๋๋ค๐ญ.)
GIF ์ฉ๋์ด ์์ด์ ๋๋ฌธ์ ์ผ๋ถ ํ๋ฉด์ ๋ก๋ฉ ์ง์ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
gif3
๋ก๊ทธ์ธ ํ๋ฉด
๊ตฌ๊ธ ๋ก๊ทธ์ธ ์ฐ๋
์ ํ ๋ก๊ทธ์ธ ์ฐ๋
[ ํผ๋ ์ฌํ ํ๊ธฐ ํฌ์คํธ ํ๋ฉด ]
์ ๋ชฉ+๊ธ ์ถ๊ฐ ๊ธฐ๋ณธ
์ด๋ฏธ์ง ์ฐ์ ์ถ๊ฐ
์ด๋ฏธ์ง ์ถ๊ฐ -> ๊ธ ์ถ๊ฐ -> ์ด๋ฏธ์ง ์ญ์ -> ๊ธ ์ ๊ฑฐ
์นดํ
๊ณ ๋ฆฌ ํ๋ฉด ์ด๊ธฐ->์ ํ์๋ฃ๊น์ง
์นดํ
๊ณ ๋ฆฌ ํ๋ฉด ๋๋ถ๋ฅ ์ ํ
์นดํ
๊ณ ๋ฆฌ ํ๋ฉด ์๋ถ๋ฅ ๋ค์ค ์ ํ
์นดํ
๊ณ ๋ฆฌ ํ๋ฉด ๋ค์ค ์ ํํ ์๋ถ๋ฅ ์ทจ์
ํผ๋ ํ์ด์ง ๋ฐ ๋ฆฌํ๋ ์ฑ
ํผ๋ ์นดํ
๊ณ ๋ฆฌ ํ
๋ง ์ ํ
์์ธํ๋ฉด ์ด๋
๊ณต์ ํ๊ธฐ ๋ก์ง
์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์ผ ๋ ๋งํฌ ํด๋ฆญ
์คํ๋์ง ์์ ์ฑ์ผ ๋ ๋งํฌ ํด๋ฆญ
์ ํจํ์ง ์์ ํฌ์คํธ์ผ ๋
[ ํผ๋ ์ฌํ ํ๊ธฐ ํฌ์คํธ ํ๋ฉด ]
ํผ๋ ๋ํ์ ๊ณ์ , ์ง์ญ ํ
๋ง ๋ฐ ์๋ธ ์นดํ
๊ณ ๋ฆฌ ์ํ
ํผ๋ ํฌ์คํธ ๊ทธ๋ง๋ณด๊ธฐ ๋ฐ ์คํฌ๋กค
ํผ๋ ํฌ์คํธ ํํธ ์ทจ์
ํผ๋์์ ํฌ์คํธ ํํธ ํ ์์ธํ๋ฉด ์ฐ๋
[ ์ฌํ ํ๊ธฐ ํฌ์คํธ ์์ธํ๋ฉด ]
์์ธํ๋ฉด ์คํฌ๋กค
์์ฐ์ค๋ฌ์ด ๋ค๋น๋ฐ ์ ๋๋ฉ์ด์
์นดํ
๊ณ ๋ฆฌ ํ๋ฉด
์์ธํ๋ฉด -> ํธ์งํ๋ฉด ์ด๋
[ ๋๊ธ๊ณผ ๋๋๊ธ์ ๊ธฐ๋ฅ์ ๋์ผํ๊ฒ ๋์ํด์ ๋๊ธ์ ๋์ ๊ณผ์ ์ ์๋ตํ์ต๋๋ค. ]
์์ธ ํ๋ฉด ํฌ์คํธ ๋๋๊ธ ์ถ๊ฐ
ํฌ์คํธ ๋๋๊ธ ์
๋ฐ์ดํธ
ํฌ์คํธ ๋๋๊ธ ์ญ์
๋๋๊ธ ํํธ do, undo
[ํ์ธ์ ๋๊ธ, ๋๋๊ธ ์ต์
์ ํํ๋ ๊ฒฝ์ฐ #1, #2, #3]
๋๋๊ธ ์ฐจ๋จ #1
๋๊ธ ์ฐจ๋จ(๋๋๊ธ ์กด์ฌ(O))#2
๋๊ธ ์ฐจ๋จ์ํ-> ๋ง์ง๋ง ๋๋๊ธ ์ฐจ๋จ#3
์๋ฆผ ํ๋ฉด. ์๋ฆผ ์ ๋ถ ์ ๊ฑฐ, ๋ฆฌํ๋ ์
Firestore ๊ธฐ๋ฐ ๊ณต์ง์ฌํญ ํ๋ฉด
๊ฒ์์ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ
๊ฒ์ ๋ฉ์ธํ๋ฉด, ๊ฒ์ ๋ฉ์ธํ๋ฉด ์์ ํน์ ์์ธํ๋ฉด, ๊ฒ์ ๋ฉ์ธ ํ๋ฉด์์ ๋๋ณด๊ธฐ ๋๋ฅผ ๊ฒฝ์ฐ (gif4๊ฐ)
keyboard ์ํธ์์ฉ๋๋ ๊ฒ์ ํ๋ฉด, ์ต๊ทผ ๊ฒ์ ๊ธฐ๋ก ํ๋ ์ ๊ฑฐ ๋ฐ ์ ๋ถ ์ ๊ฑฐ, ๊ฒ์ ๊ฒฐ๊ณผ ํ ํ๋ฉด, ๊ฒ์ ๊ฒฐ๊ณผ ํ ์นดํ
๊ณ ๋ฆฌ ์ ์ ์ ์ํ
๋๋ ๊ณผ์ (gif4๊ฐ)
๊ฒ์ ๊ฒฐ๊ณผ ํ ์์ธ๋ณด๊ธฐ ํ๋ฉด, ํ์ด์ง (gif 1๊ฐ )
์ฐ ๋๋ ํฐ๋ฆฌ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐ ๋ฐ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ ์์ ์ฐ ์์ธํ๋ฉด ํผ๋ ํญ ๋ฐ ์ฌํ ํ๊ธฐ ํญ (gif3๊ฐ)
์ฐ ๋๋ ํฐ๋ฆฌ ์์์ ํผ๋ ํ๋ฉด ํด๋ฆญํ ๊ฒฝ์ฐ ์ง์
๋ฐ ๋น์ด์๋ ๊ฒฝ์ฐ (gif2๊ฐ)
[ ์ค์ ๋ฉ์ธ ํ๋ฉด, ๋ด ์ ๋ณด ํ๋ฉด ]
์ค์ ๋ฉ์ธ ํ๋ฉด
๋ด ์ ๋ณดํ๋ฉด. ์นด๋ฉ๋ผ๋ก ํ๋กํ ์ด๋ฏธ์ง ์ถ๊ฐ
๋ด ์ ๋ณดํ๋ฉด. ๋๋ค์ ๋ณ๊ฒฝ
๋ด ์ ๋ณดํ๋ฉด. ํ๋กํ ์์ ๋ฐ ์ด๋ฏธ์ง ์์ ํ ์ ์ฅ
[ ์ด์ฉ ์๋ด ํ๋ฉด, ๋ฉ์ผ ๋ฌธ์ ํ๋ฉด flow ]
์ด์ฉ ์๋ด ํ๋ฉด
๋ฉ์ผ ๋ฌธ์ํ๋ฉด -> ๋ฉ์ผ ์ ์ก flow
์ฌ๊ฐํ ๋ฉ์ผํจ ๋ฉ์ผ ์์ธ๋ด์ฉ