/WordBook

๐Ÿ“š๋‹จ์–ด์žฅ์„ ๊ตฌํ˜„ํ•œ ์•ฑ์ž…๋‹ˆ๋‹ค.

Primary LanguageKotlin

WordBook

030517033957585

์•ฑ ๋‹ค์šด ๋งํฌ

Google Play

๐Ÿ“š์‚ฌ์šฉ ๊ธฐ์ˆ  ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Clean Architecture, Hilt, StateFlow, Flow
  • Room DataBase, Coroutine

๐Ÿ“ฑ ๋‹ด๋‹นํ•œ ๊ธฐ๋Šฅ (Android)

  • Room DB๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹จ์–ด๋ฅผ ์ €์žฅ, ์‚ญ์ œ, ์ˆ˜์ • ํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • StateFlow์™€ ViewModel์„ ํ™œ์šฉํ•œ StatePattern์„ ํ™œ์šฉํ•˜์—ฌ ํ˜„์žฌ์˜ ์ƒํƒœ ๊ฐ’์„ ์„ ์–ธํ•˜๋Š” ๋ฐฉ์‹์˜ ๊ตฌ์กฐ ๊ตฌํ˜„
  • ๋ชจ๋“  ๋ฆฌ์ŠคํŠธ๋ฅผ ์†Œ๋น„(UI์—์„œ ์‚ฌ์šฉ)ํ•  ๋•Œ Flow๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ

โœ’ ๋ฐฐ์šด ์ 

  • Room DB์™€ Hilt, StateFlow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Clean Architecture๊ธฐ๋ฐ˜์˜ ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝํ—˜์ด ๋˜์—ˆ๋‹ค.
  • Flow๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ๋น ๋ฅธ ์ƒ์‚ฐ์ž์™€ ๋Š๋ฆฐ ์†Œ๋น„์ž ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฑํ”„๋ ˆ์…”(backpressure)๋ฅผ ์ง€์› ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์›€
  • Kotlin์˜ ์ฝ”๋ฃจํ‹ด ํ”Œ๋กœ์šฐ๋Š” ํ•ซ ์ŠคํŠธ๋ฆผ(Hot Stream)๊ณผ ์ฝœ๋“œ ์ŠคํŠธ๋ฆผ(Cold Stream) ๋‘ ๊ฐ€์ง€ ์œ ํ˜• ๊ตฌ๋ถ„๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ•™์Šต
    • ์ฐจ์ด์ ์€ ํ•ซ ์ŠคํŠธ๋ฆผ(Hot Stream)์€ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ๊ณผ ํ•จ๊ป˜ ํ•ญ์ƒ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋‹ค. (StateFlow)
    • ๋ฐ˜๋ฉด์— ์ฝœ๋“œ ์ŠคํŠธ๋ฆผ(Cold Stream)์€ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ๊ณผ ํ•จ๊ป˜ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์œผ๋ฉฐ, ๊ตฌ๋…์ž๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ ํ™œ์„ฑํ™”๋œ๋‹ค. (Flow)
  • StateFlow์™€ LiveData ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ํ•™์Šต
    • ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์—ˆ๋˜ LiveData ์™€๋Š” ๋‹ฌ๋ฆฌ, StateFlow ๋Š” ์ˆœ์ˆ˜ kotlin ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— Domain Layer ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • StateFlow์˜ ๊ฒฝ์šฐ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•˜๊ณ , ์ฝ”ํ‹€๋ฆฐ ์–ธ์–ด์˜ ๋„ ์•ˆ์ „์„ฑ(null-safety) ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. โ†’ ์ฆ‰ NullSafeํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”” ์ถ”๊ฐ€์ ์ธ ๋ชฉํ‘œ

  • ํ•™์Šต์„ ์œ„ํ•ด ์•ฑ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ธฐ๋Šฅ์ ์ธ ๋ถ€๋ถ„๋“ค์ธ ๋งŽ์ด ๋ฏธํก โ†’ ์ถ”๊ฐ€์ ์œผ๋กœ ๋‹จ์–ด์žฅ API๋“ฑ์„ ๋ฐ›์•„์™€์„œ ์ง์ ‘ ์ž…๋ ฅ ๋ฟ ์•„๋‹ˆ๋ผ ๋‹จ์–ด๋ฅผ ์ž์œ ์ž์žฌ๋กœ ์™ธ์šธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์˜ˆ์ • โ†’ ๊ฐ ํ’ˆ์‚ฌ๋งˆ๋‹ค, ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋งˆ๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด์˜ ์ •๋ ฌ์„ ๊ตฌํ˜„ํ•  ์˜ˆ์ •
  • ๋””์ž์ธ ๋ถ€์กฑ โ†’ ํˆด๋ฐ”, ๋ฐ”ํ…€ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋“ฑ์„ ํ†ตํ•ด์„œ UI/UX ์ ์œผ๋กœ ์กฐ๊ธˆ ๋” ๋‚˜์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•จ