2024 11 04_daily_scrum - boostcampwm-2024/and04-Nature-Album GitHub Wiki

์ผ์‹œ: 2024-11-04

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

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

  1. ๋ฉ˜ํ† ๋ง ์ผ์ • ์ •ํ•˜๊ธฐ (์ˆ˜์š”์ผ2๋ช… ๊ธˆ์š”์ผ 3๋ช…)
  2. ์›”์š”์ผ ์˜ค๊ธฐ ์ „ : ์ž๋ฃŒ ์กฐ์‚ฌ ์Œ“๊ธฐ
  • ์นด๋ฉ”๋ผ, GPS, ๊ถŒํ•œ, Room, Firebase(๊ธฐ์ดˆ, ๋กœ๊ทธ์ธ ์ „) ๋“ฑ๋“ฑ ๊ธฐ์ˆ  ์กฐ์‚ฌ ๊ฐ ๊ธฐ์ˆ  ๋ณ„ ํŽ˜์ด์ง€ ํŒŒ๊ธฐ
    • ์ œ์ผ ๋จผ์ € ์กฐ์‚ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์‚ฌ๋žŒ
    • ํ† ๊ธ€๋กœ ์ž์‹ ์ด ์กฐ์‚ฌํ•˜๋Š” ๊ฒƒ ์ ์–ด๋‘๊ธฐ
  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜, ๊ตฌ๊ธ€ ๊ถŒ์žฅ ์•„ํ‚คํ…์ฒ˜, MVVM, MVI, MVP(Most Valuable Player), MVC ๋“ฑ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๊ธฐ
  1. ๋ฌธ์„œ ์ •๋ฆฌ ๋ฐ ๋ฐœํ‘œ ์ค€๋น„
  2. ์นด๋ฉ”๋ผ, GPS, ๊ถŒํ•œ ๋“ฑ๋“ฑ ๊ธฐ์ˆ  ์กฐ์‚ฌ ํ•ด์˜จ ๊ฒƒ ํ† ๋ก  ๋ฐ ๊ธฐ์ˆ  ์Šคํƒ ์„ ์ •
  3. Gradle, SDK ๋“ฑ ๋ฒ„์ „ ์ •ํ•˜๊ธฐ
    • ์ฝ”์•Œ๋ผ vs ๋ฌด๋‹น๋ฒŒ๋ ˆ โ‡’ ์ฝ”์•Œ๋ผ
  4. ๊ธฐ์ˆ  ํ™•์ •, ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
  5. ui composable ์ƒ์„ฑ ๋ฐ ์•ฑ ์‹œ์ž‘ํ•˜๊ธฐ, ๋„๊ฐ ๊ตฌํ˜„ ์ง„ํ–‰
  6. ์ฃผ๊ฐ„ ๋ฐฑ๋กœ๊ทธ ์ž‘์„ฑํ•˜๊ธฐ

๐Ÿ’ก๊ธฐ์ˆ  ์Šคํƒ ์ •ํ•˜๊ธฐ

1๏ธโƒฃ ์นด๋ฉ”๋ผ

์‹œ์Šคํ…œ ์นด๋ฉ”๋ผ

  • CameraX๋ฅผ ์ž ๊น ์จ๋ดค์„ ๋•Œ ํ™”์งˆ์ด ์ข‹์ง€ ์•Š์•˜์—ˆ๋‹ค.
  • AI๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ๋งŒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€?
  • CameraX๋ฅผ ์‹คํ–‰ํ•ด๋ณด์•˜์œผ๋‚˜ compile SDK ๋ฒ„์ „์„ 34 ์ด์ƒ์œผ๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ๋‚ฎ์ถฐ์•ผ ํ•œ๋‹ค. https://developer.android.com/jetpack/androidx/releases/camera
  • ๊ทธ๋ƒฅ ๋‚ด์žฅ ์นด๋ฉ”๋ผ ์“ฐ๋Š” ๊ฒƒ์ด ์˜คํžˆ๋ ค ๋” ๊น”๋”ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ.
    • ๋ฌผ๋ก  ๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด GPS์ƒํƒœ๋ฅผ ๋‘ ๋ฒˆ ํ™•์ธํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€โ€ฆ
    • ๋‚ด์žฅ ์นด๋ฉ”๋ผ ์“ฐ๋ฉด ์ทจ์†Œ, ํ™•์ธ ๊ฐ™์€ ์ฒ˜๋ฆฌ๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค..? โ† ์ข€ ๋” ํ™•์ธํ•ด์•ผํ•จ

CameraX

  • ํ›„์— ๋„์ž…ํ•  AI๋‚˜ ํ˜น์€ GPS ์ƒํƒœ์— ๋”ฐ๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— CameraX๊ฐ€ ๋‚˜์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ.
  • Intent๋ฅผ ํ†ตํ•œ ์นด๋ฉ”๋ผ ์ „ํ™˜ ๊ด€๋ จ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์ž๋ฃŒ๊ฐ€ ์—†์—ˆ๋‹ค.
    • ์‹ฌ์ง€์–ด ๊ณต์‹๋ฌธ์„œ์—๋Š” deprecated๋œ ์ฝ”๋“œ๊ฐ€ ์•„์ง๋„,,,
  • GPS ์ƒํƒœ๋ฅผ ์นด๋ฉ”๋ผ์— UI๋กœ ํ‘œ์‹œํ•˜์—ฌ ์•ˆ๋‚ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์šฐ๋ฆฌ ์•ฑ๋งŒ์˜ ๋””์ž์ธ์„ ์นด๋ฉ”๋ผ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

Google Play ์ถœ์‹œ ๊ด€๋ จ

๋ฌธ์ œ ์ƒํ™ฉ

  • 2๋Œ€ 2์˜ ์ƒํ™ฉ
  • Google Play ์ถœ์‹œ๊นŒ์ง€ ๊ณ ๋ คํ•œ๋‹ค๋ฉด targetSdk๋Š” 34 ์ด์ƒ์ด ์ถฉ์กฑ๋˜์–ด์•ผ ํ•จ์œผ๋กœ CameraX ์ ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 34 ๋ฏธ๋งŒ์˜ ๊ธฐ๊ธฐ๋Š” CameraX๊ฐ€ ์ œ๋Œ€๋กœ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด SDK ๋Œ€์‘์ด ํ•„์š”ํ–ˆ๋‹ค.

๊ฒฐ๋ก 

  • Intent ๋จผ์ € ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ํ›„ targetSdk 34์ด์ƒ์€ CameraX ์ ์šฉํ•ด๋ณด๊ธฐ

2๏ธโƒฃ ์•„ํ‚คํ…์ฒ˜

  • ๊ตฌ๊ธ€ ๊ถŒ์žฅ ์•„ํ‚คํ…์ฒ˜ vs ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜

https://velog.io/@donghune/Clean-%EA%B3%BC-Google-Recommended-Architecture-%EC%9D%B4%EC%95%BC%EA%B8%B0

https://f-lab.kr/insight/clean-architecture-vs-google-recommended-architecture-20240905

https://holy0823.tistory.com/4

image

  • ์•ˆ๋“œ๋กœ์ด๋“œ ๊ถŒ์žฅ ์•„ํ‚คํ…์ฒ˜

image

  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜
    • ๋„๋ฉ”์ธ ๋ ˆ์ด์–ด ํ•„์ˆ˜
    • ๋„๋ฉ”์ธ ๋ ˆ์ด์–ด๋ฅผ ์„œ๋กœ ๋ฐ”๋ผ๋ด„ = UI ๋ ˆ์ด์–ด์™€ Data ๋ ˆ์ด์–ด๊ฐ€ Domain ๋ ˆ์ด์–ด์— ์˜์กด

์˜๊ฒฌ

  • ์šฐ๋ฆฌ ์•ฑ์˜ ๋ณต์žก์„ฑ์€ ๋†’์€ ํŽธ์ด ์•„๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋งŽ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฉ”์ธ ๋ ˆ์ด์–ด๊ฐ€ ๊ตณ์ด ํ•„์š” ์—†์–ด ๋ณด์ธ๋‹ค. ๋”ฐ๋ผ์„œ ๊ตฌ๊ธ€ ๊ถŒ์žฅ ์•„ํ‚คํ…์ฒ˜๋กœ ๊ฐ€๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
  • ์šฐ๋ฆฌ ์•ฑ์—์„œ ์‚ฌ์šฉํ•  ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ข…๋ฅ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ, ์ด๋ฅผ ํ™œ์šฉํ•ด์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ์•„๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํด๋ฆฐ์•„ํ‚คํ…์ฒ˜๊นŒ์ง€๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋ณด์ธ๋‹ค.
  • ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • ๊ตฌ๊ธ€ ์•„ํ‚คํ…์ฒ˜๋„ ์ž˜ ๋ชจ๋ฅด๋Š”๋ฐ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋Š” ๋”์šฑ ๋” ๋ชจ๋ฅธ๋‹คโ€ฆ โ† ์ง€๊ธˆ๊นŒ์ง€ ๋„๋ฉ”์ธ ๋ ˆ์ด์–ด์˜ ํ•„์š”์„ฑ์„ ๋‹จ 1๋„ ๋А๋ผ์ง€ ๋ชปํ–ˆ๋‹ค. โ† ๊ทธ๋ƒฅ google android์—์„œ ๊ถŒ์žฅํ•œ๋‹ค๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ์“ฐ๋Š”๊ฒƒ์ด ๋‚˜์•„๋ณด์ธ๋‹ค. (๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ) ๐Ÿ‘

๊ฒฐ๋ก 

  • ๊ตฌ๊ธ€ ๊ถŒ์žฅ ์•„ํ‚คํ…์ฒ˜

3๏ธโƒฃ ์‚ฌ์ง„ ์ €์žฅ ๋ฐฉ์‹

  • Room DB(= ์•ฑ DB)์— ์‚ฌ์ง„๋งŒ Bitmap ๋ง๊ณ  URI๋กœ ์ €์žฅํ•˜๊ณ  ์‚ฌ์ง„ ์ž์ฒด๋Š” ์•ฑ ํด๋”์— ์ €์žฅํ•˜์ž.
    • ์ง„ํ™˜๋‹˜ ์•„์ด๋””์–ด ์ข‹์•„์š”.
    • Bitmap์„ Room DB์— ์ €์žฅํ•ด๋ณด๊ณ  ๋ฌด์Šจ ์ฐจ์ด์  ์žˆ๋Š”์ง€ ํ™•์ธ ํ›„ ์•ฑ ํด๋”์— ์ €์žฅํ•˜์—ฌ URI๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ.
  • Bitmap์œผ๋กœ RoomDB์— ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋‚ ์งœ, ์œ„์น˜ ๋“ฑ ๋”ฐ๋กœ RoomDB์— ์ €์žฅ ํ•„์š”
  • ์ผ๋‹จ Bitmap์œผ๋กœ ์ €์žฅํ•ด๋ณด๊ณ  ์ดํ›„์— ํŒ๋‹จํ•˜๊ธฐ

4๏ธโƒฃ Firebase

  • ์ต๋ช… ํšŒ์› ๊ด€๋ จ
    • ์ต๋ช… ํšŒ์›์œผ๋กœ SNS ์ธ์ฆ ํ•˜์ง€ ์•Š๊ณ  Friebase ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์‹ค์ œ ๊ณ„์ •์œผ๋กœ ์ „ํ™˜ ๊ฐ€๋Šฅ
    • ์ถ”๊ฐ€ ์กฐ์‚ฌ ํ•„์š”
    • ๋งŒ์•ฝ ์“ด๋‹ค๊ณ  ํ•˜๋ฉด ๋น„ํšŒ์›๋„ Room์„ ๋œ ์“ฐ๊ณ  ์„œ๋ฒ„์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ? โ‡’ ์ถ”ํ›„ ์ƒ๊ฐ

5๏ธโƒฃ ๋กœ๊ทธ์ธ ๊ด€๋ จ

  • ๋กœ๊ทธ์ธ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์–ด๋–ค๊ฐ€ ๋ผ๋Š” ํ”ผ๋“œ๋ฐฑ๊ณผ id-pw๋กœ ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ค๊ฐ€ ๋ผ๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”๊ฐ€?
    • id-pw ์ž์ฒด์ ์œผ๋กœ ๋งŒ๋“ ๋‹ค๋ฉด UI ๊ตฌ์„ฑ ๋ฐ FLOW ๊ตฌ์„ฑ์ด ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค.
    • SNS๋กœ๊ทธ์ธ์ด ๋งŽ๊ธฐ๋Š” ํ•˜๋‹ค.

๊ฒฐ๋ก 

  • ๊ตฌ๊ธ€ SNS ๋กœ๊ทธ์ธ๋งŒ ๋‚จ๊ฒจ๋‘๊ณ  ๋‚˜๋จธ์ง€ ์ œ๊ฑฐ

๐Ÿ’กํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ•„์š”

1๏ธโƒฃ ๋ผ๋ฒจ, ๋งˆ์ผ์Šคํ†ค

  • ์—ํ”ฝ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋งˆ์ผ์Šคํ†ค ์ƒ์„ฑ. ์ถ”ํ›„ ์—ํ”ฝ ์†์„ฑ ์‚ญ์ œ
  • ๋ผ๋ฒจ(๊ธฐ๋ณธ์œผ๋กœ ์žˆ๋Š” ๊ฒƒ ๊ทธ๋Œ€๋กœ + ์Šคํ† ๋ฆฌ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ)
    • ๊ธฐ๋ณธ ๋ผ๋ฒจ

      image

    • ์Šคํ† ๋ฆฌ

    • refactor

    • document

2๏ธโƒฃ ๋ฒ„์ „

  • app โ‡’ gradle
kotlinOptions {
	  jvmTarget = "1.8"
}
  • lib.versions.toml
[versions]
kotlin = "2.0.0"

๐Ÿ’ก์ฃผ๊ฐ„ ๋ฐฑ๋กœ๊ทธ ์ž‘์„ฑ

1์ฐจ ๋ฆด๋ฆฌ์ฆˆ ๋ชฉํ‘œ (0.0.1) - ์ตœ์†Œ ๋‹จ์œ„ ๊ธฐ๋Šฅ

  • ๋น„ํšŒ์› ๋™์ž‘
  • ์•ฑ ๋‚ด๋ถ€ DB(Room)์— ์ €์žฅ
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ผ๋ฒจ, ์‚ฌ์ง„, ์„ค๋ช… ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
  • ๋„๊ฐ ๊ตฌ์„ฑ (+ ํฌ๋กญ)

image

๐Ÿ’ก์—…๋ฌด ๊ด€์‹ฌ

๊ฒน์น˜๋ฉด ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋ฉด ๋จ

  • ๋„์œค โ†’ ๋ผ๋ฒจ

  • ์ •ํ˜ธ โ†’ ๊ทธ๋ฆฌ๋“œ + ๊ถŒํ•œ

  • ์ง„ํ™˜ โ†’ ์นด๋ฉ”๋ผ ์ฐ๊ณ  ์‚ฌ์ง„ ์ €์žฅ

  • ํ˜•์ค€ โ†’ Room DB

  • ์œ ์ง„ โ†’ ์‚ฌ์ง„ ํฌ๋กญํ•ด์„œ ๋ณด์—ฌ์ฃผ๊ธฐ + ์นด๋ฉ”๋ผ

  • ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ํ…Œ๋งˆ ์ €์žฅ commit โ‡’ ์ •ํ˜ธ (ํ…Œ๋งˆ ์žฅ์ธ)