/////
Search
Duplicate

๋ฒ„๋””(BUDi)

์ƒ์„ฑ ์ผ์‹œ
2022/08/27 11:47
ํƒœ๊ทธ
ํŒ€ํ”„๋กœ์ ํŠธ
๊ธฐ๊ฐ„
2021.08 - 2022.01
์‚ฌ์šฉ์–ธ์–ด ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
Swift
MVVM
SnapKit
Combine
Moya
Kingfisher

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ย ๋ฅผ ์‚ฌ์šฉ**ํ•ด๋ณด๋ฉฐ,ย ์ฝ”๋“œ ์ปจ๋ฒค์…˜์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ์Œ

Screenshot