πŸ“— λŒ€ν•™μƒμ˜ 첫 μ•ˆλ“œλ‘œμ΄λ“œ μ•± 개발기 😊

Jae ChanΒ·2023λ…„ 6μ›” 19일
4

JAVA

λͺ©λ‘ 보기
4/4


μ΄λ²ˆμ— 개인 ν”„λ‘œμ νŠΈλ‘œ μ•ˆλ“œλ‘œμ΄λ“œ 앱을 λ§Œλ“€μ–΄λ³΄κΈ°λ‘œ ν–ˆλŠ”λ°
μ œκ°€ λ§Œλ“€μ–΄ λ³Έ 앱은 β€μ˜€μ±…λ³Όλž˜?” λΌλŠ” μ•±μ΄μ—μš”.

πŸ™‹β€β™€οΈ : 이 앱을 개발 ν•˜κ²Œλœ 계기?
책은 μ§„μ§œ ν‰μ†Œμ— 읽으렀고 해도 잘 μ•ˆ 읽게 λ˜λŠ” 편이라, μ΄λ ‡κ²Œ 항상 ν•Έλ“œν°μ—μ„œ μΆ”μ²œν•΄μ£Όκ³  μ•ŒλžŒμ„ ν•΄μ£Όλ©΄ 책을 읽고 싢은 마음이 μ‘°κΈˆμ΄λΌλ„ 더 생기지 μ•Šμ„κΉŒ μ‹Άμ–΄μ„œ.. (근데 아이폰 μ¨μš”)

κ·Έλž˜μ„œ μ΄λŸ¬ν•œ μ‚¬μ†Œν•œ κ³„κΈ°λ‘œ 본격적으둜 μ•± κ°œλ°œμ„ 해보렀 ν–ˆλ‹€!

사싀 μ²˜μŒμ—λŠ” μ˜ν™” μΆ”μ²œ μ–΄ν”Œμ„ 해보렀고 ν–ˆμ—ˆλ‹€.

μ΄λ ‡κ²Œ λ³΄κ³ μ„œμ™€ μš”κ΅¬μ‚¬ν•­λ„ μž‘μ„±ν•΄μ„œ λ‚˜λ¦„ μ„€κ³„ν•œ 틀에 맞좰 κ°œλ°œμ„ μ‹œμž‘ν•˜λ €κ³  ν–ˆλ‹€!
ν•˜μ§€λ§Œ 문득 μ˜ν™”λ³΄λ‹¨ 책에 더 초점이 κ°€κ³  책을 μΆ”μ²œν•΄μ£ΌλŠ” μ–΄ν”Œλ‘œ μ„ νšŒν–ˆλ‹€.


πŸ“Œ 초기 UI 섀계

사싀 λ””μžμΈμ„ λ°°μ›Œλ³Έ 적이 없기에 μ΅œλŒ€ν•œ μ§κ΄€μ μœΌλ‘œ 보이도둝 μ΄ˆμ μ„ 두어 UIλ₯Ό λ””μžμΈ ν–ˆλ‹€.
μ΄λ²ˆλ…„λ„μ— Figma λΌλŠ” 쒋은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ•Œκ²Œ λ˜μ–΄ ν™œμš©ν•΄λ΄€λ‹€!

이 UIλ₯Ό 기반으둜 앑티비티에 XML둜 UI 듀을 λ„£μ–΄μ€€ λ’€ κΈ°λŠ₯듀을 κ΅¬ν˜„ν–ˆλ‹€.

πŸ“‹ μ•± ꡬ쑰도

DB 섀계

μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ 규λͺ¨κ°€ 크지 μ•Šμ€ νŽΈμ΄κΈ°μ— μ™ΈλΆ€ μ„œλ²„λ₯Ό μ‚¬μš©ν•  ν•„μš”κ°€ μ—†λ‹€κ³  μƒκ°ν–ˆλ‹€.
κ·Έλž˜μ„œ λ‚΄λΆ€ DBλ₯Ό μ‚¬μš©ν•˜κ³ μž 가볍고 μ‚¬μš©ν•˜κΈ° 쒋은 SQLiteλ₯Ό ν™œμš©ν•΄μ„œ μ‚¬μš©μž κΈ°κΈ° 내뢀에 데이터듀을 μ €μž₯ν•˜κΈ°λ‘œ ν–ˆλ‹€!

UserCategories ν…Œμ΄λΈ”

  • μœ μ €κ°€ μ„ νƒν•œ μΉ΄ν…Œκ³ λ¦¬λ₯Ό μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”

LikedBooks ν…Œμ΄λΈ”

  • μœ μ €κ°€ μ’‹μ•„μš”ν•œ 책듀을 μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”

이 λ‘κ°€μ§€μ˜ ν…Œμ΄λΈ”μ„ μ΄μš©ν•˜μ—¬ CRUDλ₯Ό κ΅¬ν˜„ν•˜κ³  μ‹€μ‹œκ°„μœΌλ‘œ λ°μ΄ν„°λ“€μ˜ 변경사항을 μ—…λ°μ΄νŠΈ 해주도둝 ν–ˆλ‹€.


πŸƒβ€β™‚οΈ 달리기

섀계λ₯Ό 마치고 본격적으둜 κ°œλ°œμ„ μ‹œμž‘ν–ˆλ‹€.

λ‚˜λŠ” Gitκ³Ό κΎΈμ€€νžˆ μΉœν•΄μ§ˆ ν•„μš”κ°€ μžˆλ‹€κ³  생각해, 항상 Git bashλ₯Ό μ΄μš©ν•˜μ—¬ ν•˜λ‚˜μ˜ κΈ°λŠ₯이 κ΅¬ν˜„ 될 λ•Œλ§ˆλ‹€ 푸쉬λ₯Ό ν•΄μ£Όκ³  μΆ”ν›„ κΉŒλ¨Ήμ„ 수 μžˆμœΌλ‹ˆ 보기 쉽도둝 컀밋 기둝을 남겼닀.

μ—λŸ¬μ™€μ˜ 싸움이 계속 λμ—ˆλ‹€. 🀧


😡 κ°œλ°œν•˜λ©΄μ„œ 생긴 문제점

μ΄λ ‡κ²Œ μ„€κ³„ν•œ λ‚΄μš©λ“€μ„ ν† λŒ€λ‘œ μ΅œλŒ€ν•œ 틀에 맞좰 μ•± κ°œλ°œμ„ ν–ˆλ‹€.
근데 큰 문제점이 μƒκ²Όμ—ˆλ‹€. 넀이버 λ„μ„œ 검색 API에 μš”μ²­ν•  λ•ŒλŠ” λ„μ„œ μΉ΄ν…Œκ³ λ¦¬ 별 검색이 μ—†λŠ” κ²ƒμ΄μ˜€λ‹€.

μ΄λ ‡κ²Œ 되면 μ–΄λ–€ λ¬Έμ œκ°€ 생기냐?

λ‚˜ πŸ§‘ : μ†Œμ„€ μ±… μΉ΄ν…Œκ³ λ¦¬ 검색λ₯Ό 넀이버 API에 μš”μ²­ν•œλ‹€!
넀이버 API 🟩 : μ†Œμ„€ μΉ΄ν…Œκ³ λ¦¬κ°€ μ•„λ‹Œ, μ±… 이름이 μ†Œμ„€μ΄ λ“€μ–΄κ°€ μžˆλŠ” 책을 κ²€μƒ‰ν•΄μ„œ 전달!

μ΄λŸ¬ν•œ 문제점이 μƒκΈ°λ˜ κ²ƒμ΄μ˜€λ‹€..
고심 끝에 λ‚΄κ°€ μƒκ°ν•œ 방법은 λ‹€μŒκ³Ό κ°™μ•˜λ‹€.

  • κΈ°μ‘΄ ❌
    μœ μ €κ°€ μ„ νƒν•œ μΉ΄ν…Œκ³ λ¦¬λ₯Ό 넀이버 API에 전달 β†’ μΉ΄ν…Œκ³ λ¦¬ μ΄λ¦„μœΌλ‘œ μ±… 검색

  • λ³€κ²½ βœ…
    μœ μ €κ°€ μ„ νƒν•œ μΉ΄ν…Œκ³ λ¦¬ β†’ μΉ΄ν…Œκ³ λ¦¬λ₯Ό μ „λ‹¬λ°›μŒ β†’ μΉ΄ν…Œκ³ λ¦¬μ— λ”°λ₯Έ 검색 ν‚€μ›Œλ“œ 지정
    β†’ μ§€μ •ν•œ 검색 ν‚€μ›Œλ“œλ‘œ 검색

넀이버 API에 검색 μš”μ²­μ„ ν•˜κΈ° 전에 λ‚΄κ°€ λ‚΄λΆ€μ—μ„œ μΉ΄ν…Œκ³ λ¦¬λ§ˆλ‹€ 검색 ν‚€μ›Œλ“œλ₯Ό 지정해
책을 검색해주도둝 ν•˜λŠ” κ²ƒμ΄μ˜€λ‹€.

λ‚˜λŠ” μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ ν•΄κ²°ν–ˆλ‹€! ν•΄κ²° ν•  λ‹Ήμ‹œ 정말 λΏŒλ“―ν–ˆμ—ˆλ‹€.


개발 μ™„λ£Œ πŸ‘¨β€πŸ’»

λͺ¨λ“  κΈ°λŠ₯듀을 μ™„μ„±ν•˜κ³  μ—λŸ¬κ°€ μ—†λŠ”μ§€ 직접 ν…ŒμŠ€νŠΈλ₯Ό ν•˜λ©° κ°œλ°œμ„ μ™„λ£Œν–ˆλ‹€.

이후 각 ν™”λ©΄ 별 μ‹€μ œ κ΅¬ν˜„ ν™”λ©΄κ³Ό κ°„λ‹¨ν•œ μ„€λͺ…을 정리해 μ΄λ―Έμ§€λ‘œ λ‚¨κ²¨λ³΄μ•˜λ‹€!

1. 초기 μ‹œμž‘ ν™”λ©΄

졜초 μ‹€ν–‰μ‹œμ—λ§Œ λ‚˜μ˜€λŠ” 화면이닀.

2. 메인 ν™”λ©΄

μ•±μ˜ 핡심인 μ±… μΆ”μ²œ 화면이닀!

3. μ’‹μ•„ν•œ μ±… λͺ©λ‘ ν™”λ©΄

κ΅¬ν˜„ν•  λ•Œ 제일 νž˜λ“€μ—ˆλ˜ ν™”λ©΄μ΄μ˜€λ‹€.
μ‚¬μš©μžμ˜ μž…λ ₯λ§ˆλ‹€ λ™μ μœΌλ‘œ λ°”λ€Œμ–΄μ•Όν•˜λ‹ˆ 제일 λ§Œλ“€κΈ° μ–΄λ €μ› λ‹€. πŸ˜“


✍ 마치며

처음으둜 μ•± κ°œλ°œμ„ ν•΄λ΄€λ‹€. ν™•μ‹€νžˆ κ°œλ°œμ€ μ—¬λŸ¬λ²ˆμ˜ 곡뢀보단 직접 κ°œλ°œμ„ ν•˜λŠ” κ²ƒμ—μ„œ λ°°μš°λŠ” 것과 κΉ¨λ‹«λŠ”κ²Œ λ§Žλ‹€κ³  λŠλ‚€λ‹€.

λ˜ν•œ μ™ΈλΆ€ APIλ₯Ό μ΄μš©ν•˜λ©΄ 쒋은 κΈ°λŠ₯의 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 많이 λ§Žλ“€ 수 μžˆμ§€ μ•Šμ„κΉŒλΌλŠ” 생각이 λ“€μ—ˆλ‹€.

곧 쒅강이 λ‹€κ°€μ˜€λŠ”λ° λ‹€μŒμ— μ€€λΉ„ν•΄λ³Ό ν”„λ‘œμ νŠΈλŠ” React둜 웹을 κ΅¬ν˜„ν•΄λ³ΌκΉŒ ν•œλ‹€!
λ„ˆλ¬΄ μž¬λ°Œμ—ˆλ˜ μ•± κ°œλ°œμ΄μ˜€λ‹€. 😊

profile
πŸ‹

0개의 λŒ“κΈ€