Skip to content

Latest commit

ย 

History

History
111 lines (76 loc) ยท 6.86 KB

README.md

File metadata and controls

111 lines (76 loc) ยท 6.86 KB

ํฌ์Šคํ„ฐ

์•ฑ์Šคํ† ์–ด: https://apps.apple.com/us/app/์ผ€์ดํฌํฌ/id6449973946

๐Ÿฐ ํ”„๋กœ๊ทธ๋ผํ”ผ 8๊ธฐ - 8ํŒ€

iOS iOS Android Android
์ด์Šน๊ธฐ ๊น€๋Œ€ํ™ฉ ์˜ค์›์„ ์ด์ค€๊ฒฝ
@WallabyStuff @Mason Kim @Wonseok @lee989898
Designer Designer Backend Backend
์˜ค์Šน๋ฏผ ๊น€ํ˜œ๋‚˜ ๋ฐ•์˜๋ฏผ ๋ฐฐ์ง€ํ˜„
@5m_____o @hae_na_a @Youngmin Park @govl6113

ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ : 23.03.11 ~


๋ชฉ์ฐจ


ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์ผ€์ดํฌํฌ๋ฅผ ์ด์šฉํ•ด ์ปค์Šคํ…€ ์ผ€์ดํฌ์ƒต๋“ค์„ ์ง€๋„๋กœ ํ•œ ๋ˆˆ์— ํ™•์ธํ•˜์„ธ์š”!



์ฃผ์š” ๊ธฐ๋Šฅ

1๏ธโƒฃ ์›ํ•˜๋Š” ์ง€์—ญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์ผ€์ดํฌ์ƒต์„ ๊ฒ€์ƒ‰ํ•ด์š”

  • ์ง€๋„๋ฅผ ์›€์ง์—ฌ ์ƒˆ๋กœ๊ณ ์นจํ•˜์—ฌ ์ผ€์ดํฌ์ƒต๋“ค์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ํ•„ํ„ฐ๋ฅผ ์ ์šฉ์‹œ์ผœ ์›ํ•˜๋Š” ์ข…๋ฅ˜์˜ ์ผ€์ดํฌ๋ฅผ ์ทจ๊ธ‰ํ•˜๋Š” ์ผ€์ดํฌ์ƒต๋“ค๋งŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ์ผ€์ดํฌ์ƒต๋“ค์„ ์ง€์—ญ๋ณ„๋กœ ๋ฌถ์–ด์„œ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์–ด์š”

2๏ธโƒฃ ์ผ€์ดํฌ์ƒต์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ถ๋งˆํฌํ•ด์š”

  • ํ”ผ๋“œ ํ™”๋ฉด์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ผ€์ดํฌ์ƒต์˜ ์ด๋ฏธ์ง€๋ฅผ ํ•œ ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”
  • ์ผ€์ดํฌ์ƒต์˜ ์ฃผ์†Œ, ์ผ€์ดํฌ ์ด๋ฏธ์ง€, ๋ธ”๋กœ๊ทธ ๋ฆฌ๋ทฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”
  • ์›ํ•˜๋Š” ์ผ€์ดํฌ์ƒต์„ ๋ถ๋งˆํฌ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”


๊ธฐ์ˆ  ์„ค๋ช…

MVVM + input output pattern (with combine)

app_architecture

MVVM ๊ตฌ์กฐ์— input output ํŒจํ„ด์„ combine์œผ๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์–ด์š”.


Coordinator ํŒจํ„ด ๊ณ„์ธต ๊ตฌ์กฐ

coordinator_flow

์•ฑ ๋‚ด์—์„œ ์ƒˆ๋กœ์šด ๋ทฐ์ปจ์„ ์ƒ์„ฑํ•˜๊ณ  ๋„์›Œ์ฃผ๋Š” ๋กœ์ง์˜ ๋ฐ˜๋ณต์ด ๋งŽ์ด ์ƒ๊ธฐ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ํƒ€๊ฒŸ(๋ชฉ ๋ฐ์ดํ„ฐ, ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ)์„ ๋ชจ๋“  ๋ทฐ์ปจ์„ ํ•œ ๋ฒˆ์— ๋˜๋Š” ๊ฐ ๋ทฐ์ปจ์—์„œ ์‰ฝ๊ฒŒ ๊ต์ฒดํ•ด์„œ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ์ฑ™๊ธฐ๊ธฐ ์œ„ํ•ด์„œ ์ฝ”๋””๋„ค์ดํ„ฐ ํŒจํ„ด์„ ์ ์šฉํ–ˆ์–ด์š”.


์Šคํ”Œ๋ž˜์‹œ ๋กœ์ง

Legacy splash_legacy

๊ธฐ์กด์— Splash๋ฅผ ์ฒ˜์Œ ์ง„์ž…ํ•˜๋Š” ViewController์—์„œ UIView ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์คฌ๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•ด ์คฌ์—ˆ์–ด์š”. ์ด๋ ‡๊ฒŒ ํ–ˆ๋˜ ์ด์œ ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ Splash๋ฅผ ๋„์šฐ๊ณ  fade out ์‹œํ‚ค๋ฉด์„œ Splash๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•จ ์ด์—ˆ์ฃ . ๊ทธ๋Ÿฐ๋ฐ SplashView๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž˜ ํ•ด์ง€๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋„ ์žˆ์—ˆ๊ณ , ์ดˆ๊ธฐ ์ง„์ž…ํ•˜๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ SplashView๋ฅผ ์ง์ ‘ ๋„์›Œ์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋งŽ์ด ๋–จ์–ด์กŒ์—ˆ์ฃ ๐Ÿฅน ์˜ˆ๋ฅผ๋“ค๋ฉด MainViewController์—์„œ ๋„์šฐ๋˜ SplashView๋ฅผ TabViewController๋กœ ์ด๋™ ์‹œํ‚ค๋ ค๋ฉด SplashView๋ฅผ ๋„์šฐ๊ณ  ๊ฐ€๋ฆฌ๋Š” ๋กœ์ง์„ ํ†ต์ฑ„๋กœ ์˜ฎ๊ฒผ์–ด์•ผ ํ–ˆ์—ˆ์–ด์š”.

New splash_new

๊ทธ๋ž˜์„œ ์ €ํฌ๋Š” SplashView๋ฅผ UIViewController๋กœ ๋ถ„๋ฆฌํ–ˆ์–ด์š”! ๊ทธ๋ฆฌ๊ณ  AppCoordinator์—์„œ ์ดˆ๊ธฐ์— ๋„์›Œ์ฃผ๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์œ„์— present ์‹œ์ผœ์คฌ์–ด์š”. ์ด๋•Œ modalPresentationStyle ์€ overFullScreen์œผ๋กœ ํ•ด์„œ ๋ทฐ์ปจ ์ž์ฒด๋ฅผ fade out ์‹œํ‚ฌ๋•Œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๊ฐ€ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ณด์—ฌ์ง€๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ fade out ๋˜๊ฒŒ ๋งŒ๋“ค์–ด ์คฌ์–ด์š”. ์ตœ์ข…์ ์œผ๋กœ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„ fadeOut ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‹œํ‚ค๊ณ  completion ํ•ธ๋“ค๋Ÿฌ์—์„œ dismiss(animated: false) ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์™„์ „ํžˆ ํ•ด์ง€์‹œ์ผฐ์ฃ .


MainViewModel ๊ตฌ์กฐ ๊ฐœ์„ 

Legacy architecture_legacy

๊ธฐ์กด์— CakeShopList ์—์„œ ์•„์ดํ…œ์ด ์„ ํƒ ๋์„ ๋•Œ handler๋ฅผ ํ†ตํ•ด์„œ MainViewcontroller์—์„œ ๋ฏธ๋ฆฌ ์ •์˜ํ–ˆ๋˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ ์‹œ์ผฐ์—ˆ์–ด์š”. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ MainVC์˜ ๋กœ์ง์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง€๊ณ  MapView, CakeShopListVC, ShopDetailVC ์‚ฌ์ด์˜ ์˜์กด์„ฑ์ด ๊ฐ•ํ•ด์กŒ์—ˆ์ฃ . ๊ฐ์ฒด๊ฐ„ ์˜์กด์„ฑ์ด ๊ฐ•ํ•ด์ง€๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์กŒ๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์› ์—ˆ์–ด์š”.

New architecture_new

๊ทธ๋ž˜์„œ CakeShopListVC์˜ ViewModel์ธ CakeShopListViewModel์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ  MainViewModel์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ–ˆ์–ด์š”! ์–ด์ฐจํ”ผ ๋งˆ์ปค์™€ ์ƒต ๋ฆฌ์ŠคํŠธ์˜ ์•„์ดํ…œ๋“ค์€ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๋ฐ›์ง€ ์•Š๊ณ  ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ [CakeShop] ๋ฐฐ์—ด์„ ๊ฐ€์ง€๊ณ  ๋งˆ์ปค๋„ ๋ณด์—ฌ์ฃผ๊ณ  ๋ฆฌ์ŠคํŠธ๋„ ๋ฟŒ๋ ค์คฌ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๋ทฐ๋ชจ๋ธ ์žฌ์ƒ์šฉ์ด ๊ฐ€๋Šฅํ–ˆ์—ˆ์ฃ . (๋งŒ์•ฝ ๋งˆ์ปค ๋ฐ์ดํ„ฐ, ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌํ•ด์„œ ๊ฐ€์ ธ์˜ค๋ฉด MainViewModel์„ ์„œ๋ธŒ ๋ทฐ๋ชจ๋ธ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” CakeShopListViewModel์„ ๋งŒ๋“ค์—ˆ์„ ๊ฒƒ์ž„)

๋”ฐ๋ผ์„œ CakeShopList์—์„œ ์•„์ดํ…œ์ด ์„ ํƒ๋˜๋ฉด ๋ฐ”๋กœ MainViewModel์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ณ  MainViewModel์˜ output์— ๋ฐ”์ธ๋”ฉ ๋˜์–ด์žˆ๋˜ ์•ก์…˜๋“ค์ด ๊ฐ MapView, MainVC์—๊ฒŒ ์ „๋‹ฌ๋˜์–ด ๊ฐ์ž์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ์ง์„ ๊ฐœ์„ ํ–ˆ์–ด์š”.