Topic
โข
๋ํ์ ์ฐํฉ ๋์๋ฆฌ 'YAPP' ํ๋ก์ ํธ
โข
๊ธฐํ์, ๊ฐ๋ฐ์, ๋์์ด๋๋ค์ ์ํ ํ ๋น๋ฉ ํ๋ซํผ ์ฑ
โข
๋จ์ํ ํ๋น๋ฉ์ด ์๋, ์ค๋ ฅ ํฅ์์ ์ค์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ฑ
โข
ํ๋ก์ ํธ ํ, ์ํธํ๊ฐ๋ฅผ ํตํด ๋ ๋ฒจ์
์ ํ ์ ์๋ ์์คํ
Summary
์ธ์์๋ ๋ง์ ํ ๋น๋ฉ ํ๋ซํผ์ด ์กด์ฌํ์ง๋ง, ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ๊ฐ ์กด์ฌํฉ๋๋ค. ๊ฐ๋ นย ํ์๋ค๊ฐ์ ์ํต ๋ถ๊ฐ๋ก ํ๋ก์ ํธ๊ฐ ์งํ๋์ง ์์๋ค๊ฑฐ๋,ย ํ์๋ค์ ๋ฅ๋ ฅ์น๋ฅผ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ํ์ ๊พธ๋ฆด ๋์ ๊ณ ๋ฏผ์ด ๋ค๊ธฐ๋ ํฉ๋๋ค. ๋ํย ํ์๋ค์ ์ ์๋ณด์ฆย ๋ํ ๋์ง ์์ ์ด๋ค ์ผ์ด ์ผ์ด๋ ์ง ๋ชจ๋ฆ
๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํด ๋ณด๊ณ ์ BUDi ๋ฅผ ๋ง๋ค์ด๋ณด์์ต๋๋ค.
Key Function
โข
ํ์๊ฐ์
์ย ๋ค์ด๋ฒ ๊ณ์ ๋ก๊ทธ์ธ์ ํตํดย ๊ฐํธ๊ฐ์
์ ํ ์ ์์
โข
๋ฅ๋ ฅ์น๋ฅผย ์์น, ๋ฌ๋ชฉ, ๋๋ฌด, ์ฒ์ผ๋ก ๋ ๋ฒจํ๋ฅผ ์์ผ ๊ฐ ๊ธฐ์ค์ ๋๋ฌํ์ ์ย ๋ ๋ฒจ์
์ ์์ผ์ฃผ๋ ์์คํ
์ ์ ์ฉ
โข
ํ๋ก์ ํธย ์ด๋ ฅ ๋ฐ ํ์ ํ๊ฐ ๊ฒฐ๊ณผ๋ก ํ์์ย ์ ์๋ณด์ฆ์ด ๊ฐ๋ฅ
โข
๊ธฐ์ ์คํ์ย ํด์ํ๊ทธ๋ก ํ์ํ์ฌย ์ง๊ด์ ์ผ๋ก ์คํ์ ํ์ธํ ์ ์์
Tech Stack
[data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xmlns%3Asketch%3D%22http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch%2Fns%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%2024%2024%22%20version%3D%221.1%22%20data-ember-extension%3D%221%22%3E%3Cdefs%3E%3ClinearGradient%20x1%3D%2228.1542969%25%22%20y1%3D%2263.7402344%25%22%20x2%3D%2274.6289062%25%22%20y2%3D%2217.7832031%25%22%20id%3D%22linearGradient-1%22%3E%3Cstop%20stop-color%3D%22rgba(164%2C%20164%2C%20164%2C%201)%22%20offset%3D%220%25%22%2F%3E%3Cstop%20stop-color%3D%22rgba(164%2C%20164%2C%20164%2C%200)%22%20stop-opacity%3D%220%22%20offset%3D%22100%25%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20id%3D%22Page-1%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20%3E%3Cg%20transform%3D%22translate(-236.000000%2C%20-286.000000)%22%3E%3Cg%20transform%3D%22translate(238.000000%2C%20286.000000)%22%3E%3Ccircle%20id%3D%22Oval-2%22%20stroke%3D%22url(%23linearGradient-1)%22%20stroke-width%3D%224%22%20cx%3D%2210%22%20cy%3D%2212%22%20r%3D%2210%22%2F%3E%3Cpath%20d%3D%22M10%2C2%20C4.4771525%2C2%200%2C6.4771525%200%2C12%22%20id%3D%22Oval-2%22%20stroke%3D%22rgba(164%2C%20164%2C%20164%2C%201)%22%20stroke-width%3D%224%22%2F%3E%3Crect%20id%3D%22Rectangle-1%22%20fill%3D%22rgba(164%2C%20164%2C%20164%2C%201)%22%20x%3D%228%22%20y%3D%220%22%20width%3D%224%22%20height%3D%224%22%20rx%3D%228%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E](data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xmlns%3Asketch%3D%22http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch%2Fns%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%2024%2024%22%20version%3D%221.1%22%20data-ember-extension%3D%221%22%3E%3Cdefs%3E%3ClinearGradient%20x1%3D%2228.1542969%25%22%20y1%3D%2263.7402344%25%22%20x2%3D%2274.6289062%25%22%20y2%3D%2217.7832031%25%22%20id%3D%22linearGradient-1%22%3E%3Cstop%20stop-color%3D%22rgba(164%2C%20164%2C%20164%2C%201)%22%20offset%3D%220%25%22%2F%3E%3Cstop%20stop-color%3D%22rgba(164%2C%20164%2C%20164%2C%200)%22%20stop-opacity%3D%220%22%20offset%3D%22100%25%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cg%20id%3D%22Page-1%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20%3E%3Cg%20transform%3D%22translate(-236.000000%2C%20-286.000000)%22%3E%3Cg%20transform%3D%22translate(238.000000%2C%20286.000000)%22%3E%3Ccircle%20id%3D%22Oval-2%22%20stroke%3D%22url(%23linearGradient-1)%22%20stroke-width%3D%224%22%20cx%3D%2210%22%20cy%3D%2212%22%20r%3D%2210%22%2F%3E%3Cpath%20d%3D%22M10%2C2%20C4.4771525%2C2%200%2C6.4771525%200%2C12%22%20id%3D%22Oval-2%22%20stroke%3D%22rgba(164%2C%20164%2C%20164%2C%201)%22%20stroke-width%3D%224%22%2F%3E%3Crect%20id%3D%22Rectangle-1%22%20fill%3D%22rgba(164%2C%20164%2C%20164%2C%201)%22%20x%3D%228%22%20y%3D%220%22%20width%3D%224%22%20height%3D%224%22%20rx%3D%228%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E)
Swift,ย Kingfisher,ย Firebase,ย Alamofire,ย Moyaย ,ย SwiftLintย ,ย SnapKitย ,ย Combineย ,ย CombineCocoa
Architecture
โข
MVVM
Team
โข
๊ธฐํ์ 1๋ช
โข
๋์์ด๋ 1๋ช
โข
๋ฐฑ์๋ 2๋ช
โข
iOS ์ฑ ๊ฐ๋ฐ์ 3๋ช
Part
โข
iOS ์ฑ ๋ก๊ทธ์ธ, ์ฑํ
๊ฐ๋ฐ
โข
๋ก๊ทธ์ธ API, ํ์ ์ฐพ๊ธฐ API ์ฐ๊ฒฐ ํ ๊ฐ๋ฐ
Learned
โข
*Combine**ย ์ ์ฌ์ฉํ๋ค๋ณด๋,ย *MVVMย ํจํด๊ณผย *Subscribeย ์ ๊ฐ๋
์ ๊ณต๋ถํด๋ณผ ์ ์์์
โข
ํ๋ฉด ์ ํ ์ฝ๋๋ฅผ ๋ชจ์ ์ ์๋ย *Coordinator**ย ๋ฅผ ์ฌ์ฉํด๋ณด๋ฉฐ,ย ํ๋ฉด ์ ํ์ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์
โข
Naver API๋ฅผ ์ฌ์ฉํ์ ๋, Alamofire๋ฅผ ์ฌ์ฉํ๊ณ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋๋ฆด ์ ์๋ ๋ฌธ์ ๊ฐ ์๊น. ๋ฐ๋ผ์ย Combine์ Publisher ์ค ํ๋์ธย *dataTaskPublisher**ย ๋ฅผ ์ฌ์ฉํ์ฌ Parsing ์ ํด๋ณผ ์ ์์์.
โข
API Parsing์ย ๋ฐ์ดํฐ ๊ท๊ฒฉ์ย Genericย ์ผ๋ก ์ ์ํด ๋ฐ์ผ๋ฉด์,ย *Genericย ์ ์ฌ์ฉ**ํด๋ณผ ์ ์์์
โข
*SwiftLintย ๋ฅผ ์ฌ์ฉ**ํด๋ณด๋ฉฐ,ย ์ฝ๋ ์ปจ๋ฒค์
์ ์ค์์ฑ์ ๋ํด ์๊ฒ ๋์์