2024_10_31_meeting_minute - boostcampwm-2024/and04-Nature-Album GitHub Wiki

์ผ์‹œ: 2024-10-31

์ฐธ์„์ž: ์ •์œ ์ง„, ์ž„ํ˜•์ค€, ๋…ธ์ง„ํ™˜, ๊น€๋„์œค, ๊น€์ •ํ˜ธ

๐Ÿ’ก ์ง„ํ–‰ํ•  ์‚ฌํ•ญ

  1. UI๋กœ ๊ธฐํš์„œ ์ž‘์„ฑ
  2. ๋‚ด์ผ ๊ธฐํš ๊ณต์œ  ์‹œ๊ฐ„ ์ค€๋น„ โ†’ Track 4 - (10:40 - 11:00)
  3. ์นด๋ฉ”๋ผ, Room ๋“ฑ ์กฐ์‚ฌ ํ•„์š”ํ•œ ๊ฒƒ๋“ค ์ž๋ฃŒ ์กฐ์‚ฌํ•˜์ผ์‹œ: 2024-10-31

์ฐธ์„์ž: ์ •์œ ์ง„, ์ž„ํ˜•์ค€, ๋…ธ์ง„ํ™˜, ๊น€๋„์œค, ๊น€์ •ํ˜ธ

๐Ÿ’ก ์ง„ํ–‰ํ•  ์‚ฌํ•ญ

  1. UI๋กœ ๊ธฐํš์„œ ์ž‘์„ฑ
  2. ๋‚ด์ผ ๊ธฐํš ๊ณต์œ  ์‹œ๊ฐ„ ์ค€๋น„ โ†’ Track 4 - (10:40 - 11:00)
  3. ์นด๋ฉ”๋ผ, Room ๋“ฑ ์กฐ์‚ฌ ํ•„์š”ํ•œ ๊ฒƒ๋“ค ์ž๋ฃŒ ์กฐ์‚ฌํ•˜๊ธฐ
  4. 9์‹œ ๋ฉ˜ํ† ๋ง

๐Ÿ’ก ๊ธฐํš ๊ณต์œ  ๋ฐœํ‘œ ์ค€๋น„ + UI๋กœ ๊ธฐํš์„œ ์ž‘์„ฑ

ํŒ€๋ช…: ์ „๊ตญ๊ตฌ

  • ์„ค๋ช…: ์šฐ๋ฆฌ ํŒ€์›์˜ ์‚ฌ๋Š” ๊ณณ์€ ์ „๊ตญ์— ์œ„์น˜ํ•ด ์žˆ๋‹ค. ์ „๊ตญ์˜ ์ƒ๋ฌผ๋“ค์˜ ์‚ฌ์ง„์„ ์ฐ์–ด ๋„๊ฐ์— ๋“ฑ๋ก์‹œ์ผœ๋ณด์ž!

๋ฐœํ‘œ ํ๋ฆ„

  • ํŒ€๋ช…

    • ํŒ€๋ช… ์ด๋ฆ„ ์†Œ๊ฐœ
    • ๊ทธ๋ผ์šด๋“œ ๋ฃฐ
  • ํ”„๋กœ์ ํŠธ ๋ช…

    • ํ”„๋กœ์ ํŠธ ์„ค๋ช…

    ํ”„๋กœ์ ํŠธ ๋ช…: Nature Album

    (ํ•œ๊ตญ์–ด: ์ƒ๋ฌผ ๋„๊ฐ)

    • ์ฃผ๋ณ€์˜ ์‹๋ฌผ๊ณผ ๋™๋ฌผ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒ๋ฌผ์„ ์ดฌ์˜ํ•˜๊ณ  ์‹๋ณ„ํ•˜์—ฌ ๋‚˜๋งŒ์˜ ์ƒ๋ฌผ ๋„๊ฐ์„ ๋งŒ๋“ค๊ณ , ์ง€๋„ ์œ„์— ๊ธฐ๋ก๋œ ์„œ์‹์ง€๋ฅผ ํ™•์ธํ•˜๋ฉฐ ์นœ๊ตฌ๋“ค๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ ์ž…๋‹ˆ๋‹ค.
    • ์ถ”๊ฐ€ ์„ค๋ช…: ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ๋ณ€์„ ๋‘˜๋Ÿฌ๋ณด๋ฉฐ ์ƒํƒœ๊ณ„๋ฅผ ํƒํ—˜ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ƒ๋ฌผ๋“ค์„ ์‰ฝ๊ฒŒ ๊ธฐ๋กํ•˜๋ฉฐ ์ž์—ฐ์„ ๊นŠ์ด ์ดํ•ดํ•˜๊ณ  ๊ด€์ฐฐํ•˜๋Š” ์ฆ๊ฑฐ์›€์„ ๋А๋‚„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์นœ๊ตฌ๋“ค๊ณผ ๊ณต์œ ํ•จ์œผ๋กœ์จ ์ƒํƒœ ํƒํ—˜์˜ ๊ฒฝํ—˜์„ ํ™•์žฅํ•˜๊ณ  ์ž์—ฐ์— ๋Œ€ํ•œ ์†Œํ†ต์„ ๋„“ํžˆ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ƒํƒœ ๋„๊ฐ์„ ํ†ตํ•ด ์ž์—ฐ๊ณผ ์ƒํƒœ๊ณ„์— ์นœ๋ฐ€ํ•˜๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ, ์ž์—ฐ์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ๋†’์ด๊ณ  ์ƒ๋ฌผ ๋‹ค์–‘์„ฑ์— ๋Œ€ํ•œ ์ธ์‹์„ ํ™•์‚ฐํ•˜์—ฌ ์ž์—ฐ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๊นŠ์ด ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค์˜ ์ฃผ์š” ๋ชฉํ‘œ

  • ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ

  • ์„ ์ • ์ด์œ  Feature List (ex. ์‚ฌ์ง„ ์ฐ๊ธฐ, ์ง€๋„์— ํ‘œ์‹œ ๋“ฑ)

  • ๋ฐฑ๋กœ๊ทธ (๊ธฐ๋Šฅ ๋ณ„ ์™„์„ฑ๋„ ๊ธฐ์ค€์ด ์žˆ๋‹ค๋ฉด ํฌํ•จ)

  • UI Flow

  • ํŒ€ ๋‹น 20๋ถ„๊ฐ„ ๋ฐœํ‘œ(15๋ถ„)์™€ ์งˆ์˜์‘๋‹ต(5๋ถ„)์‹œ๊ฐ„์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

    • ์„œ๋น„์Šค์˜ ์ฃผ์š” ๋ชฉํ‘œ ๋ฐ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์„ ์ • ์ด์œ ๋ฅผ Feature List ๋ฐ ํ”„๋กœ๋•ํŠธ backlog๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค.
    • ๊ธฐ๋Šฅ ๋ณ„ ์™„์„ฑ๋„ ๊ธฐ์ค€์ด ์žˆ๋‹ค๋ฉด ํฌํ•จํ•˜์—ฌ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
    • ํŒ€ ๋นŒ๋”ฉ ๋ฐ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๊ฒƒ

[Feature List] ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋ฆฌ์ŠคํŠธ

  • ์นด๋ฉ”๋ผ๋กœ ์ƒ๋ฌผ ์ดฌ์˜
  • ๋„๊ฐ์— ๋‚ด๊ฐ€ ์ฐ์€ ์ƒ๋ฌผ ๋“ฑ๋ก
  • ์ง€๋„์— ๋„๊ฐ์— ์ €์žฅ๋œ ์ƒ๋ฌผ๋“ค ์œ„์น˜ ํ‘œ์‹œ
  • ์นœ๊ตฌ์˜ ๋„๊ฐ ๋ฐ ์ง€๋„ ๊ณต์œ 

[๋ฐฑ๋กœ๊ทธ ์š”์•ฝ]

  • ๋ฐฑ๋กœ๊ทธ EPIC ๋ฆฌ์ŠคํŠธ - ์Šคํ† ๋ฆฌ๋„ ์š”์•ฝ
  • ๊ธฐ๋Šฅ(Story) ๋ณ„ ์™„์„ฑ๋„ ๊ธฐ์ค€(Task ์š”์•ฝ ๋А๋‚Œ)์ด ์žˆ๋‹ค๋ฉด ํฌํ•จ(์šฐ์„ ์ˆœ์œ„ ๋ถ„๋ฐฐ) โ–ผ ์ฐธ๊ณ 

image

  • PPT(UI ํฌํ•จ ๊ธฐํš์„œ ์ž‘์„ฑ) โ† ์œ ์ง„๋‹˜
  • ๋ฐฑ๋กœ๊ทธ โ† ์ •ํ˜ธ๋‹˜, ์ง„ํ™˜๋‹˜, ๋„์œค๋‹˜, ํ˜•์ค€๋‹˜
    • task ์ž‘์„ฑ (ํ›„์— ์ž‘์„ฑ) โ‡’
    • ๋ฐฑ๋กœ๊ทธ ์ธ์ˆ˜ ์กฐ๊ฑด ์„ค์ • โ† ์ธ์ˆ˜์กฐ๊ฑด ์ž‘์„ฑ๋ถ€ํ„ฐ ์‹œ์ž‘

11์‹œ zep

์ค‘๊ฐ„ ์ •๊ฒ€ : 11:50


Q. GPS๊ฐ€ ๊บผ์ ธ์žˆ์„ ๋•Œ ์•Œ๋žŒ์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ?? (์ƒ๋‹จ์— ๊ณ„์† or ์นด๋ฉ”๋ผ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ๋งŒ)

  • ๊ถŒํ•œ ์ž์ฒด๋ฅผ ์นด๋ฉ”๋ผ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ๋งŒ ์š”์ฒญ๋ฐ›๊ธฐ์— ์นด๋ฉ”๋ผ ๊ธฐ๋Šฅ์„ ๋ˆŒ๋ €์„ ๋•Œ๋งŒ ์•Œ๋ฆผ์„ ๋„์šด๋‹ค.
  • ๋งŒ์•ฝ ์ƒ๋‹จ์— ์•Œ๋ฆผ์„ ๊ณ„์† ๋„์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์•ฑ ์‚ฌ์šฉ ์‹œ์ž‘ ์‹œ ๊ถŒํ•œ์„ ์š”์ฒญ๋ฐ›์•„์•ผ ํ•œ๋‹ค.

Q. ์•ฑ ์‹œ์ž‘ ์—ํ”ฝ์— GPS๊ด€๋ จ ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ๋Š”๊ฒŒ ๋งž๋Š” ๊ฑธ๊นŒ?

- ์‚ฌ์šฉ์ž๊ฐ€ ์ดฌ์˜ํ•œ ์‚ฌ์ง„์—๋Š” ์œ„์น˜์ •๋ณด๊ฐ€ ํฌํ•จ๋œ๋‹ค.
    - GPS ๋งค๋‹ˆ์ €๋กœ GPS์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. - ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹คโ€ฆ
    - GPS ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์ ˆํ•œ ์•Œ๋ฆผ์„ ๋ณด์—ฌ์ค€๋‹ค. (์ƒ๋‹จ ์•Œ๋ฆผ ๋“ฑ)
  • ํ˜„์žฌ ์ด ๋ถ€๋ถ„์€ ์•ฑ ์‹œ์ž‘ ์—ํ”ฝ์— ์–ด์šธ๋ฆฌ๋Š” ๋‚ด์šฉ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค.
  • ์˜คํžˆ๋ ค ๋„๊ฐ ๋“ฑ๋ก ์—ํ”ฝ์— ๋งž๋Š” ๋‚ด์šฉ์ด๋ฏ€๋กœ ๋„๊ฐ ๋“ฑ๋ก ์—ํ”ฝ์œผ๋กœ ์ˆ˜์ •

์•ฑ ์‹œ์ž‘ ์—ํ”ฝ์—

  • ์‚ฌ์šฉ์ž๋Š” GPS๊ฐ€ ๊บผ์ ธ ์žˆ๋‹ค๋ฉด ์นด๋ฉ”๋ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
    • GPS ๋งค๋‹ˆ์ €๋กœ GPS์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ์—ฐ๊ฒฐ ํ•ด์ œ์‹œ ์นด๋ฉ”๋ผ ์ „ํ™˜x
    • GPS ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์ ˆํ•œ ์•Œ๋ฆผ์„ ๋ณด์—ฌ์ค€๋‹ค. (์ƒ๋‹จ ์•Œ๋ฆผ ๋“ฑ)
      • ํ† ์ŠคํŠธ/์Šค๋‚ต๋ฐ”

๋„๊ฐ ๋“ฑ๋ก ์—ํ”ฝ์—

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ดฌ์˜ํ•œ ์‚ฌ์ง„์—๋Š” ์œ„์น˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ๋‹ค.
    • ์œ„์น˜์ •๋ณด๊ฐ€ ์—†์„ ๋•Œ ํ† ์ŠคํŠธ๋‚˜ ์Šค๋‚ต๋ฐ”๋ฅผ ๋„์šฐ๊ณ  ์žฌ์ดฌ์˜ํ•œ๋‹ค.
      • ์นด๋ฉ”๋ผ๋กœ ํ™”๋ฉด ์ „ํ™˜
    • ์œ„์น˜์ •๋ณด๊ฐ€ ์žˆ์„ ๋•Œ ์ •๋ณด ์ž…๋ ฅ ํ™”๋ฉด์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
      • ์ž…๋ ฅ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”

์œผ๋กœ ๋ถ„๋ฆฌ

๐Ÿ’ก Task๋ฅผ ์ƒ์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์—ฌ ์ƒ๊ธด ์ด์Šˆ

  • Task ์ž์ฒด๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ทธ๊ฒƒ์ด ์ธ์ˆ˜์กฐ๊ฑด์ด ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค.
    • ex) ๋‚˜์˜ ์ƒ๋ฌผ ์ง€๋„๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ƒ๋ฌผ ์ง€๋„ ํ™”๋ฉด์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
      • ์ƒ๋ฌผ ์ง€๋„ ํ™”๋ฉด์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. โ‡’ -
      • ์ธ์ˆ˜์กฐ๊ฑด์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์€ โ‡’ ์ž‘์„ฑ

๊ธฐํš ๋ฐœํ‘œ ์ˆœ์„œ

image

๐Ÿ’ก ๊ธฐ์ˆ  ์„ ์ • ๊ด€ํ•œ ๋…ผ์˜

A. ์„ค๊ณ„

๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ vs ์‹ฑ๊ธ€ ๋ชจ๋“ˆ

  • ํ•„์š”ํ•  ๋•Œ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค.
  • ์˜์กด์„ฑ ๊ด€๋ฆฌ, ๋ ˆ์ด์–ด ๋ถ„๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.
  • ์Šคํ† ๋ฆฌ์ง€ ๊ณ„์ธต ํ•„์ˆ˜, ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ํ•„์ˆ˜

๊ฒฐ๋ก 

  • ์‹ฑ๊ธ€ ๋ชจ๋“ˆ๋กœ ์‹œ์ž‘
  • ๋กœ๊ทธ์ธ๊นŒ์ง€ ๊ตฌํ˜„ ํ›„ ์ดํ›„ ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ๋กœ ๊ต์ฒดํ•˜๋Š” ์ž‘์—… ์ง„ํ–‰
  • ํ•ด๋‹น ๊ต์ฒด ์ž‘์—…์„ ํ†ตํ•ด์„œ ๊ต์ฒด ์ „๊ณผ ์–ด๋– ํ•œ ์ ์ด ๋‹ฌ๋ผ์ง€๋Š”์ง€ ํŒŒํ•ด๋ณด๊ธฐ

B. UI ํ”„๋ ˆ์ž„์›Œํฌ

  • Compose base + XML Component(API์— ๋”ฐ๋ผ View ์ถ”๊ฐ€)

์›”์š”์ผ ์˜ค๊ธฐ ์ „ : ์ž๋ฃŒ ์กฐ์‚ฌ ์Œ“๊ธฐ

  • ์นด๋ฉ”๋ผ, GPS, ๊ถŒํ•œ, Firebase(๊ธฐ์ดˆ, ๋กœ๊ทธ์ธ ์ „) ๋“ฑ๋“ฑ ๊ธฐ์ˆ  ์กฐ์‚ฌ ๊ฐ ๊ธฐ์ˆ  ๋ณ„ ํŽ˜์ด์ง€ ํŒŒ๊ธฐ
    • ์ œ์ผ ๋จผ์ € ์กฐ์‚ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์‚ฌ๋žŒ
    • ํ† ๊ธ€๋กœ ์ž์‹ ์ด ์กฐ์‚ฌํ•˜๋Š” ๊ฒƒ ์ ์–ด๋‘๊ธฐ
  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜, ๊ตฌ๊ธ€ ๊ถŒ์žฅ ์•„ํ‚คํ…์ฒ˜, MVVM, MVI, MVP(Most Valuable Player), MVC ๋“ฑ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๊ธฐ

์›”์š”์ผ ๊ฒฐ์ • ์‚ฌํ•ญ

  • ์นด๋ฉ”๋ผ, GPS, ๊ถŒํ•œ ๋“ฑ๋“ฑ ๊ธฐ์ˆ  ์กฐ์‚ฌ ํ•ด์˜จ ๊ฒƒ ํ† ๋ก  ๋ฐ ๊ธฐ์ˆ  ์Šคํƒ ์„ ์ •
  • Gradle, SDK ๋“ฑ ๋ฒ„์ „ ์ •ํ•˜๊ธฐ
    • ์ฝ”์•Œ๋ผ vs ๋ฌด๋‹น๋ฒŒ๋ ˆ โ‡’ ์ฝ”์•Œ๋ผ

Q. Carmera2 vs CameraX โ†’CameraX ์“ฐ๋Š” ๊ฒƒ์ด ์ ์ ˆํ•ด๋ณด์ธ๋‹ค.

https://developer.android.com/media/camera/choose-camera-library?hl=ko

Q. LiveData๊ฐ€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ด ๋ฌด์Šจ ์˜๋ฏธ์ธ๊ฐ€์š”?

  • liveData์˜ observer๊ฐ€ main thread์—์„œ ์ด๋ฃจ์–ด์ง
  • ์–ด๋–ค ์ƒํ™ฉ์ธ์ง€๋Š” ๋ชจ๋ฅธ๋‹ค โ‡’ ๊ฒช์–ด๋ณผ๊นŒ์š”

Q. Firebase๋Š” ์–ด๋–ค SQL? โ†’ NoSQL

  • ROOM์€ RDB ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ๋™์ผ ์ฟผ๋ฆฌ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ž„
  • Room >> Sqlite ์‚ฌ์šฉ

Q. ํŒจํ‚ค์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆ„์‹œ๋‚˜์š”?

  • ui

    • ํ™”๋ฉด ๋ณ„๋กœ ๋‚˜๋ˆ„๋Š” ํŽธ (์–ป์–ด ๊ฑธ๋ ธ๋‹ค)
  • data

  • ๊ธฐ๋Šฅ ๋ณ„๋กœ ๋‚˜๋ˆ„๋Š” ํŽธ

image

  • domain
    • model
    • repository
  • data
    • model
    • repository
    • network
  • feature
    • ํ™”๋ฉด ๋ณ„ + viewmodel

image

  • ์ด์ „ ๋ฆฌ๋ทฐ ์ฐธ๊ณ ์šฉ

    https://github.com/boostcampwm-2024/kotlin-p3-issue-tracker/pull/231

    ํ”ผ๋“œ๋ฐฑ)

    ์•„ํ‚คํ…์ฒ˜

    A)

    ์•„ํ‚คํ…์ฒ˜๋Š” ์ ์ ˆํžˆ ๋ถ„๋ฆฌํ•˜์‹ ๊ฑฐ๋„ค์š”. ์„ค๋ช…์ด ์กฐ๊ธˆ ์•ˆ๋งž์•„๋ณด์—ฌ์„œ ์œ„์— ์งˆ๋ฌธ ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค.

    ์ถ”๊ฐ€๋กœ app์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋Š”๊ฒƒ์ด ์ข‹์„๊นŒ์š”?

    ์ง€๊ธˆ์€

    • ํ™”๋ฉด
    • ViewModel
    • adapter

    ์ด๋ ‡๊ฒŒ ๋ฌถ์–ด์ ธ์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์ด์•ผ ๋ช‡ ๊ฐœ ์—†์œผ๋‹ˆ ์œ„์™€ ๊ฐ™์ด ๋ฌถ์–ด๋„ ๋ฌธ์ œ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ํŒŒ์ผ์ด 100๊ฐœ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค๋ฉด ์ฐพ์„ ์ˆ˜ ์žˆ์„๊นŒ์š”? ํ™”๋ฉด์— ํ•ด๋‹นํ•˜๋Š” adapter, viewModel์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ํด๋”๊ตฌ์กฐ๋กœ๋Š” ์ดํ•ด๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์…‹์ค‘ ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ์—ด์–ด์„œ ์ฐพ์•„๊ฐ€๋ฉด์„œ ์—ด์–ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋Ÿฐ ํด๋” ๊ตฌ์กฐ๋Š” ๋‹จ์ ์ด ์ƒ๊น๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฌถ์Šต๋‹ˆ๋‹ค.

    NIA๋ฅผ ์ฐธ๊ณ ํ•ด๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

    • feature - a
      • a๊ทธ๋ฃน adapter
      • a ๊ทธ๋ฃน viewModel
      • a ๊ทธ๋ฃน ํ™”๋ฉด ์ด๋ฆ„

    ์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋ณด๋ฉด

    • feature - home
      • home activity
      • home activity์˜ viewModel
      • home a fragment / screen
      • home a fragment์˜ viewModel
      • home a fragment์˜ adapter
      • home a fragment์˜ adapter - viewHolder
      • home b fragment / screen

    ์ด๋Ÿฐ์‹์œผ๋กœ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ์˜ ์žฅ์ ์€ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ จํ•œ ์ง‘ํ•ฉ์„ ๋ฐ”๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

Domain Layer๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

(๋กœ๊ทธ์ธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ + ๋ณด์•ˆ ์ธ์ฆ ๋ ˆํฌ์ง€ํ† ๋ฆฌ) โ‡’ domain

  • ์„œ๋กœ ๋‹ค๋ฅธ 2๊ฐœ ์ด์ƒ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•œ ํ๋ฆ„์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•  ๋•Œ ํ•„์š”

  • 1

image

  • 2

image

https://developer.android.com/topic/architecture/data-layer?hl=ko

https://developer.android.com/topic/architecture/data-layer

๊ฒฐ๋ก 

  • ์•„ํ‚คํ…์ฒ˜, ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋“ฑ ๊ณต๋ถ€ ํ›„ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๊ฒฐ์ •ํ•˜๊ธฐ

Q. ๋ผ๋ฒจ ์ƒ‰์ƒ ๋žœ๋ค? ์ง€์ •?

  • ๋žœ๋ค์œผ๋กœ ํ•œ๋‹ค๋ฉด
    • ์ƒ์„ฑํ•  ๋•Œ ๋žœ๋ค์œผ๋กœ ์ง€์ •?
    • ํ™”๋ฉด ๋ณด์ผ ๋•Œ๋งˆ๋‹ค ๋žœ๋ค?
  • ๋ชจ๋‘ 1๊ฐœ์˜ ํ†ต์ผ๋œ ์ƒ‰์ƒ์œผ๋กœ
  • ์‚ฌ์ง„์—์„œ ์ƒ‰์ƒ ์ถ”์ถœํ•˜๊ธฐ
  • ๋…ธ์…˜์ฒ˜๋Ÿผ ํŒ”๋ ˆํŠธ, ์ปฌ๋Ÿฌ์…‹์—์„œ ์ƒ‰์ƒ์—์„œ ์ง€์ •ํ•˜๊ธฐ

๊ฒฐ๋ก 

  • ์œ ์ƒ‰์œผ๋กœ ๋ผ๋ฒจ ์ƒ‰์ƒ ์ง€์ •. ์–ด๋–ป๊ฒŒ ์ง€์ •ํ• ์ง€๋Š” ๋„๊ฐ ๊ตฌํ˜„ํ•  ๋•Œ ๊ฒฐ์ •ํ•˜๊ธฐ

ROOM DB ์„ค๊ณ„ ๊ด€๋ จ

๋‹ค์Œ์ฃผ ์Šคํ”„๋ฆฐํŠธ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ ๋ชฉ๋ก

  1. ๋ผ๋ฒจ โ‡’ data class โ‡’ ํ…Œ์ด๋ธ”์— ์ €์žฅ
    1. id
    2. ๋ผ๋ฒจ ๋ฐฐ๊ฒฝ์ƒ‰
    3. ์ด๋ฆ„
  2. ์•จ๋ฒ”โ‡’ data class โ‡’ ํ…Œ์ด๋ธ”์— ์ €์žฅ
    1. id
    2. ๋ผ๋ฒจ id
    3. ์‚ฌ์ง„ ๋””ํ…Œ์ผ ์ด๋ฏธ์ง€ id
  3. ์‚ฌ์ง„ ๋””ํ…Œ์ผ โ‡’ data class โ†’ ํ…Œ์ด๋ธ”์— ์ €์žฅ
    1. id
    2. ๋ผ๋ฒจ id
    3. bitmap ์ด๋ฏธ์ง€
    4. ์œ„์น˜
    5. ์„ค๋ช…
    6. ์ดฌ์˜์ผ์‹œ
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

image


๐Ÿ’ก ์˜ˆ๋ฆฌํ•œ ๋ฐœ๊ฒฌ

  • ๋งŒ์•ฝ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋กœ ๋Œ€ํ‘œ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•œ๋‹ค๋ฉด ์ด์ „์˜ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ ํ•„๋“œ์˜ ๊ฐ’์„ false๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋„๊ฐ ์ •๋ณด๋ฅผ ํƒ์ƒ‰ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Œ
  • ๋Œ€ํ‘œ์ด๋ฏธ์ง€๋Š” [์•จ๋ฒ”] ํ…Œ์ด๋ธ” ๋‚ด์—์„œ [์‚ฌ์ง„ ๋””ํ…Œ์ผ] ํ…Œ์ด๋ธ”์˜ id๊ฐ’์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด ํƒ์ƒ‰์—†์ด ํšจ๊ณผ์ ์œผ๋กœ ๊ฐ€๋Šฅ

FireBase : NoSQL ์ค‘ Document๋กœ ๊ด€๋ฆฌ (json)

image

์œ ์ € - ๋ผ๋ฒจ ๋„ํ๋จผํŠธ id - ๋„๊ฐ์ •๋ณด ๋„ํ๋จผํŠธ id

image

Q. key๊ฐ’์„ ๋ฌด์—‡์œผ๋กœ ๋‘˜ ๊ฒƒ์ธ๊ฐ€?

  • 0 ~N์œผ๋กœ ๋‘์ž
  • ์ดฌ์˜์ผ์‹œ

โ‡’ NoSQL ์—ฐ๊ฒฐ์„ ๊ณ ๋ คํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ  ํŽธ์˜์„ฑ์„ ๋†’์ด์ž.

โ‡’ id๋ฅผ key๊ฐ’์œผ๋กœ ์ฃผ์ž.

๐Ÿ’ก ๋‹ค์Œ์ฃผ ์ง„ํ–‰ ์˜ˆ์ •

  • ๊ธฐ์ˆ  ํ™•์ •, ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
  • ui composable ์ƒ์„ฑ ๋ฐ ์•ฑ ์‹œ์ž‘ํ•˜๊ธฐ, ๋„๊ฐ ๊ตฌํ˜„ ์ง„ํ–‰
  • ๋ฌธ์„œ ์ •๋ฆฌ ๋ฐ ๋ฐœํ‘œ ์ค€๋น„๊ธฐ
  1. 9์‹œ ๋ฉ˜ํ† ๋ง