Skip to content

πŸ“š 기획 회의 정리본 (μž‘μ„±μΌ : 2024 10 31)

Hyein Jeong edited this page Nov 5, 2024 · 2 revisions

기획 회의 정리본

  • λΆ„λ₯˜: μ •κ·œ 회의 정리
  • 생성 μΌμ‹œ: 2024λ…„ 10μ›” 31일 μ˜€ν›„ 5:55
  • 선택: 정리본

πŸ“Β μ˜€λŠ˜ ν•˜λ£¨ λ‚΄μš© μš”μ•½

이번 μ£Ό ν”„λ‘œμ νŠΈ "선따라 길따라(DDara)"와 κ΄€λ ¨λœ ν™œλ™μ„ μ‹œκ°„ μˆœμ„œμ— 따라 μ •λ¦¬ν•˜κ² μŠ΅λ‹ˆλ‹€. 이번 주의 ν™œλ™μ€ κΈ°νšνšŒμ˜λΆ€ν„° μ‹œμž‘ν•˜μ—¬ ν…ŒμŠ€νŠΈ μ„€μ •, 각 κΈ°λŠ₯별 μ‹œλ‚˜λ¦¬μ˜€ 기획, 기술적 도전 사항 및 회의 결둠에 이λ₯΄κΈ°κΉŒμ§€ κ΄‘λ²”μœ„ν•˜κ²Œ μ§„ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


1. 10μ›” 31일 μ˜€μ „ - 기획 회의 및 ν…ŒμŠ€νŠΈ μ€€λΉ„

  • 기획회의 진행:
    • 10μ›” 31일 μ˜€μ „ 10μ‹œλΆ€ν„° νŒ€ 전체 기획 νšŒμ˜κ°€ μ—΄λ ΈμŠ΅λ‹ˆλ‹€. 이번 νšŒμ˜λŠ” ν”„λ‘œμ νŠΈ 초기 ꡬ상을 λͺ…ν™•νžˆ ν•˜κ³ , ν•„μš”ν•œ 기술 μŠ€νƒκ³Ό κΈ°λŠ₯을 κ΅¬μ²΄ν™”ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.
    • 주제 정리: 쀑μž₯λ…„μΈ΅ μ‚¬μš©μžμ—κ²Œ μ‰½κ²Œ κΈΈ μ•ˆλ‚΄λ₯Ό μ œκ³΅ν•˜λŠ” μœ„μΉ˜ 기반 지도 μ›Ήμ„œλΉ„μŠ€λ‘œ 주제λ₯Ό κ΅¬μ²΄ν™”ν•˜μ˜€μŠ΅λ‹ˆλ‹€. "선따라 길따라(DDara)"λΌλŠ” μ„œλΉ„μŠ€λͺ…을 μ„ μ •ν•˜κ³ , νŒ€λͺ…은 "따라따라"둜 κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.
    • μ‚¬μš©μž μ„€μ • 및 μ£Όμš” κΈ°λŠ₯ λ…Όμ˜: μ‚¬μš©μžλŠ” μžμ‹ λ§Œμ˜ 경둜λ₯Ό μ„€μ •ν•  수 μžˆλ„λ‘ ν•˜λ©°, κ²½λ‘œλŠ” 지도 μœ„μ—μ„œ 그리기 도ꡬλ₯Ό 톡해 μ§κ΄€μ μœΌλ‘œ μ„€μ •λ©λ‹ˆλ‹€. κ²½λ‘œλ§ˆλ‹€ 마컀λ₯Ό μΆ”κ°€ν•˜κ³ , μ‹€μ‹œκ°„ μœ„μΉ˜λ₯Ό μΆ”μ ν•˜λŠ” κΈ°λŠ₯을 톡해 μ‚¬μš©μž κ²½ν—˜μ„ ν–₯μƒμ‹œν‚€κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.
  • 기술 μŠ€νƒ μ„€μ •:
    • Vite, Tailwind 및 넀이버 지도 API: μ„œλΉ„μŠ€ ν™˜κ²½μ„ Vite와 Tailwindλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬μΆ•ν•˜κ³ , 넀이버 지도 API둜 지도λ₯Ό ν‘œμ‹œν•˜λ©° λ‹€μ–‘ν•œ 경둜 및 마컀λ₯Ό μΆ”κ°€ν•  κ³„νšμ„ μ„Έμ› μŠ΅λ‹ˆλ‹€.
    • @types/navermap ν™œμš©: 넀이버 지도 API에 ν•„μš”ν•œ νƒ€μž…μ„ λ³„λ„λ‘œ μ„€μ •ν•˜μ—¬ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ νŽΈλ¦¬ν•˜κ²Œ μž‘μ—…ν•  수 μžˆλ„λ‘ μ€€λΉ„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • κΈ°λŠ₯ ν…ŒμŠ€νŠΈ κ³„νš 수립:
    • κ°„λ‹¨ν•œ 경둜 μ„€μ •κ³Ό λ§ˆν‚Ήμ΄ κ°€λŠ₯ν•˜λ„λ‘ 넀이버 지도 API와 Polyline을 ν™œμš©ν•œ λ§ˆν‚Ήμ„ ν…ŒμŠ€νŠΈν•˜μ—¬ 초기 기술 ν™˜κ²½κ³Ό 지도 μ„€μ •μ˜ 문제λ₯Ό ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

2. 10μ›” 31일 μ˜€ν›„ - μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€ 기획

μ˜€ν›„ μ‹œκ°„μ—λŠ” 넀이버 지도 APIλ₯Ό μ΄μš©ν•œ 지도 생성, 경둜 ν‘œμ‹œ, 마컀 배치 κΈ°λŠ₯ 등을 κ³ λ €ν•˜μ—¬ ꡬ체적인 μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

  • μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€ 개발:
    • μ‹œλ‚˜λ¦¬μ˜€ μ„ΈλΆ€ν™”: 각 νŒ€μ›μ€ 쀑μž₯λ…„μΈ΅ μ‚¬μš©μžλ₯Ό κ³ λ €ν•˜μ—¬ μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ„ΈλΆ„ν™”ν–ˆμŠ΅λ‹ˆλ‹€. 손녀가 ν• λ¨Έλ‹ˆμ—κ²Œ μ‹€μ‹œκ°„μœΌλ‘œ 길을 μ•ˆλ‚΄ν•˜λŠ” μ‹œλ‚˜λ¦¬μ˜€, 에어비앀비 ν˜ΈμŠ€νŠΈκ°€ μˆ™μ†Œ 근처 μ£Όμš” μž₯μ†Œλ₯Ό ν‘œμ‹œν•˜λŠ” μ‹œλ‚˜λ¦¬μ˜€ λ“± λ‹€μ–‘ν•œ μƒν™©μ—μ„œμ˜ μ‚¬μš©μž κ²½ν—˜μ„ κ΅¬μ²΄ν™”ν–ˆμŠ΅λ‹ˆλ‹€.
    • κ·Έλ£Ήν™” κΈ°λŠ₯: νŠΉμ • λ§ˆμ»€μ™€ 경둜λ₯Ό 그룹으둜 묢을 수 μžˆλ„λ‘ ν•˜λŠ” κΈ°λŠ₯을 κ΅¬μƒν•˜μ—¬, 마트, 은행, 카페 λ“± μ£Όμ œμ— 따라 κ²½λ‘œμ™€ 마컀λ₯Ό μ‹œκ°μ μœΌλ‘œ ꡬ뢄할 수 μžˆλ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ£Όμš” κΈ°λŠ₯ 및 μΈν„°λž™μ…˜ 방식 정리:
    • 마컀 및 경둜 μ„€μ •: μ‚¬μš©μžλŠ” μΆœλ°œμ§€μ™€ 도착지λ₯Ό 마컀둜 ν‘œμ‹œν•˜λ©°, μ£Όμš” κ²½λ‘œλŠ” 직관적인 μ„ μœΌλ‘œ κ·Έλ €μ§‘λ‹ˆλ‹€. μ‹€μ‹œκ°„ μœ„μΉ˜λŠ” 지도λ₯Ό 톡해 ν™•μΈλ˜λ©°, ν™•λŒ€ 및 μΆ•μ†Œ μ‹œ κ²½λ‘œκ°€ ν•¨κ»˜ μ‘°μ •λ©λ‹ˆλ‹€.
    • 이미지 μ‚½μž…: λ³΅μž‘ν•œ 골λͺ©μ΄λ‚˜ νŠΉμ • 건물 μ•žμ—μ„œ 경둜λ₯Ό μ΄ν•΄ν•˜κΈ° 쉽도둝 지도 μœ„μ— 이미지λ₯Ό μ‚½μž…ν•˜λŠ” κΈ°λŠ₯도 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
    • μ‹€μ‹œκ°„ μœ„μΉ˜ 곡유: 각 μ‚¬μš©μžμ˜ μ‹€μ‹œκ°„ μœ„μΉ˜λ₯Ό μ†μ‰½κ²Œ νŒŒμ•…ν•  수 μžˆλ„λ‘ WebSocket을 ν†΅ν•œ μ‹€μ‹œκ°„ μœ„μΉ˜ 갱신을 λ…Όμ˜ν–ˆμŠ΅λ‹ˆλ‹€.

3. 10μ›” 31일 저녁 - 기술적 도전 과제 정리 및 ν™•μž₯ κ°€λŠ₯μ„± λ…Όμ˜

μ €λ…μ—λŠ” μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€ κΈ°νšμ— 이어, 이 κΈ°λŠ₯듀을 κ΅¬ν˜„ν•˜λ©΄μ„œ λ°œμƒν•  수 μžˆλŠ” 기술적 도전 과제λ₯Ό λΆ„μ„ν•˜κ³  ν™•μž₯ κ°€λŠ₯성을 κ²€ν† ν–ˆμŠ΅λ‹ˆλ‹€.

  • 지도와 μΊ”λ²„μŠ€ 동기화 μ΅œμ ν™”:
    • 문제 뢄석: 지도 이동 및 ν™•λŒ€/μΆ•μ†Œ μ‹œ μΊ”λ²„μŠ€ λ ˆμ΄μ–΄μ˜ 동기화가 μ„±λŠ₯에 큰 영ν–₯을 쀄 수 μžˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.
    • ν•΄κ²° λ°©μ•ˆ κ²€ν† : requestAnimationFrame, Offscreen Canvas, WebGL λ“±μ˜ μ„±λŠ₯ μ΅œμ ν™” 방법을 λ„μž…ν•˜μ—¬ λΆ€λ“œλŸ¬μš΄ μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•  λ°©μ•ˆμ„ λͺ¨μƒ‰ν–ˆμŠ΅λ‹ˆλ‹€.
  • 데이터 μ €μž₯ 및 동기화 λ°©μ•ˆ:
    • 데이터 직렬화: κ²½λ‘œμ™€ 마컀의 데이터λ₯Ό μ§λ ¬ν™”ν•˜κ³ , SVGλ₯Ό ν†΅ν•œ 데이터 μ €μž₯ 방식 및 이미지 μ••μΆ• 기법을 κ²€ν† ν–ˆμŠ΅λ‹ˆλ‹€. μ‹€μ‹œκ°„ λ°μ΄ν„°μ˜ 크기λ₯Ό 쀄이기 μœ„ν•΄ μ΅œμ ν™”λœ 데이터 ꡬ쑰λ₯Ό ꡬ성할 κ³„νšμ„ μ„Έμ› μŠ΅λ‹ˆλ‹€.
  • μ‹€μ‹œκ°„ ν˜‘μ—… κΈ°λŠ₯ ν™•μž₯:
    • WebSocket 기반 동기화: 닀쀑 μ‚¬μš©μžκ°€ λ™μ‹œμ— 지도 μœ„μ—μ„œ 그림을 그릴 λ•Œ λ°œμƒν•  수 μžˆλŠ” 좩돌 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, WebSocketκ³Ό WebRTCλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹€μ‹œκ°„ 톡신을 κ΅¬ν˜„ν•˜κ³  좩돌 관리 기법도 ν•¨κ»˜ λ„μž…ν•  것을 λ…Όμ˜ν–ˆμŠ΅λ‹ˆλ‹€.

4. 10μ›” 31일 이후 - λ‹€μŒ μ£Ό 과제 및 ν™˜κ²½ μ„€μ •

10μ›” 31일 회의λ₯Ό λ§ˆμ§€λ§‰μœΌλ‘œ ν”„λ‘œμ νŠΈμ— ν•„μš”ν•œ λ‹€μŒ κ³Όμ œμ™€ ν™˜κ²½ 섀정을 λͺ…ν™•νžˆ ν•˜μ—¬ λ‹€μŒ μ£ΌλΆ€ν„° 본격적인 κ°œλ°œμ— λŒμž…ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.

  • 컀밋 μ „λž΅ 및 μ½”λ“œ μ»¨λ²€μ…˜ μ„€μ •:
    • Airbnb μŠ€νƒ€μΌ κ°€μ΄λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ½”λ“œ μŠ€νƒ€μΌμ„ ν†΅μΌν•˜κ³ , ESLint와 Prettierλ₯Ό 톡해 μ½”λ“œ ν’ˆμ§ˆμ„ κ΄€λ¦¬ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.
    • νŒ€μ› κ°„ 효율적인 ν˜‘μ—…μ„ μœ„ν•΄ 컀밋 μ „λž΅κ³Ό 넀이밍 μ»¨λ²€μ…˜μ„ μ •ν•˜κ³ , GitHubμ—μ„œ μ½”λ“œ 리뷰 ν”„λ‘œμ„ΈμŠ€λ₯Ό μˆ˜λ¦½ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ£Όμš” κΈ°λŠ₯의 ν…ŒμŠ€νŠΈ μ „λž΅ 확립:
    • Vitest와 μŠ€ν† λ¦¬λΆμ„ μ‚¬μš©ν•˜μ—¬ 각 κΈ°λŠ₯에 λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό λ¨Όμ € μž‘μ„±ν•˜κ³ , ν…ŒμŠ€νŠΈ 주도 개발(TDD)을 μ μš©ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.
    • μžλ™ν™” 및 CI/CD ꡬ좕: GitHub Actions을 μ΄μš©ν•œ μžλ™ν™” 배포 및 λΉŒλ“œ μ‹œμŠ€ν…œμ„ λ„μž…ν•˜μ—¬, Vercel을 톡해 μžλ™ λ°°ν¬ν•˜λ„λ‘ μ„€μ •ν•  κ³„νšμ„ μ„Έμ› μŠ΅λ‹ˆλ‹€.
  • PWA κ΅¬ν˜„ κ³„νš:
    • μ˜€ν”„λΌμΈ κΈ°λŠ₯: Progressive Web App(PWA)둜의 ν™•μž₯ λ°©μ•ˆμ„ λͺ¨μƒ‰ν•˜μ˜€μœΌλ©°, μ„œλΉ„μŠ€ μ›Œμ»€λ₯Ό ν†΅ν•œ μ˜€ν”„λΌμΈ κΈ°λŠ₯을 μ§€μ›ν•˜κ³  μœ„μΉ˜ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 방법도 μ—°κ΅¬ν–ˆμŠ΅λ‹ˆλ‹€.
  • 기술 ν•™μŠ΅ κ³„νš:
    • Vitest와 μŠ€ν† λ¦¬λΆ ν•™μŠ΅: λͺ¨λ“  νŒ€μ›μ΄ 각자 Vitest와 μŠ€ν† λ¦¬λΆμ„ ν•™μŠ΅ν•˜μ—¬ λ‹€μŒ μ£ΌλΆ€ν„° λ°”λ‘œ κΈ°λŠ₯별 ν…ŒμŠ€νŠΈμ™€ μŠ€ν† λ¦¬ μž‘μ„±μ— λŒμž…ν•  수 μžˆλ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.
    • λ°±μ—”λ“œ ν•™μŠ΅κ³Ό Swagger λ„μž…: λ°±μ—”λ“œ κ²½ν—˜μ΄ λΆ€μ‘±ν•œ νŒ€μ›μ„ μœ„ν•΄ REST API 섀계 및 Swagger λ¬Έμ„œν™”λ„ ν•™μŠ΅ν•  κ³„νšμ„ μ„Έμ› μŠ΅λ‹ˆλ‹€.

μš”μ•½

이번 주의 ν™œλ™μ„ 톡해 νŒ€ ν”„λ‘œμ νŠΈμ˜ μ£Όμ œμ™€ κΈ°λŠ₯을 κ΅¬μ²΄ν™”ν•˜κ³ , 기술적 도전 κ³Όμ œμ™€ ν™•μž₯ κ°€λŠ₯성을 λ©΄λ°€νžˆ κ²€ν† ν–ˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ μ£Όμ—λŠ” Vite ν™˜κ²½ μ„€μ •, Vitest와 μŠ€ν† λ¦¬λΆ ν•™μŠ΅, CI/CD ꡬ좕, κΈ°λŠ₯ 개발 및 ν…ŒμŠ€νŠΈ μž‘μ„±μ— 집쀑할 μ˜ˆμ •μž…λ‹ˆλ‹€.

πŸ“Β κΈ°νšμ•ˆ 정리

1. ν”„λ‘œμ νŠΈ κ°œμš” 및 λ°°κ²½

"선따라 길따라(DDara)" ν”„λ‘œμ νŠΈλŠ” 쀑μž₯λ…„μΈ΅ μ‚¬μš©μžλ₯Ό μ£Όμš” λŒ€μƒμœΌλ‘œ ν•˜λŠ” κΈΈ μ•ˆλ‚΄ λͺ¨λ°”일 μ›Ή μ„œλΉ„μŠ€λ‘œ, μ‚¬μš©μžκ°€ νŠΉμ • 경둜λ₯Ό κ·Έλ¦¬κ±°λ‚˜ κΈ°λ‘ν•˜κ³  μ‹€μ‹œκ°„μœΌλ‘œ μžμ‹ μ˜ μœ„μΉ˜λ₯Ό μΆ”μ ν•˜λ©΄μ„œ μ‰½κ²Œ κΈΈ μ•ˆλ‚΄λ₯Ό 받을 수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 ν”„λ‘œμ νŠΈλŠ” 특히 쀑μž₯λ…„μΈ΅μ˜ μ‚¬μš©μž νŽΈμ˜μ„±μ„ λͺ©ν‘œλ‘œ ν•˜λ©°, 직관적인 μΈν„°νŽ˜μ΄μŠ€μ™€ μ €μž‘ 도ꡬ, μ‹€μ‹œκ°„ μœ„μΉ˜ 좔적 κΈ°λŠ₯을 κ°–μΆ˜ λͺ¨λ°”일 지도λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ 주제

  • λͺ©ν‘œ: 쀑μž₯λ…„μΈ΅ μ‚¬μš©μžκ°€ 직관적이고 μ‰½κ²Œ 길을 μ•ˆλ‚΄λ°›μ„ 수 μžˆλ„λ‘ 지도 상에 경둜λ₯Ό μ„€μ •ν•˜κ³ , 마컀 및 선을 톡해 μ‹œκ°μ μœΌλ‘œ 이해λ₯Ό λ•λŠ” λͺ¨λ°”일 μ›Ή μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” 것.
  • μ‚¬μš©μž μ •μ˜: 기본적으둜 쀑μž₯년측을 λŒ€μƒμœΌλ‘œ ν•˜λ‚˜, μ‚¬μš©μžκ°€ 개인적으둜 μ‚¬μš©ν•  μˆ˜λ„ 있으며, λ‹€μˆ˜μ˜ μ‚¬μš©μžμ—κ²Œ μ‹€μ‹œκ°„ 경둜λ₯Ό μ•ˆλ‚΄ν•  수 μžˆλ„λ‘ 경둜 μ»€μŠ€ν…€ κΈ°λŠ₯을 제곡.

ν”„λ‘œμ νŠΈμ˜ μ£Όμš” 컨셉과 νŠΉμ„±

  • 지도 μœ„ μ‹€μ‹œκ°„ μœ„μΉ˜ 좔적: WebSocket을 톡해 μ‹€μ‹œκ°„μœΌλ‘œ μ‚¬μš©μžμ˜ μœ„μΉ˜λ₯Ό μΆ”μ ν•˜κ³ , νŠΉμ • μœ„μΉ˜μ—μ„œ 경둜 μ•ˆλ‚΄λ₯Ό μ§€μ†μ μœΌλ‘œ μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ €μž‘ 도ꡬ: μ„  그리기, 마컀 μΆ”κ°€ λ“± 지도 μœ„μ—μ„œ 직접 경둜λ₯Ό ν‘œμ‹œν•˜κ³ , 각 지점에 μ„€λͺ…을 μΆ”κ°€ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
  • λΉ„νšŒμ› μ‚¬μš©: μ‚¬μš©μžλŠ” 둜그인 없이도 지도 및 경둜λ₯Ό λ³Ό 수 있으며, λ‘œκ·ΈμΈν•˜λ©΄ 경둜 μ €μž₯ 및 μˆ˜μ •μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • λ‹€μ–‘ν•œ 경둜 및 ν…Œλ§ˆ 지원: μˆ™μ†Œ 근처 λ§ˆνŠΈλ‚˜ 곡원, 카페 λ“± μ£Όλ³€μ˜ λ‹€μ–‘ν•œ 정보λ₯Ό ν¬ν•¨ν•˜μ—¬ κ°œλ³„ μ‚¬μš©μžμ˜ λͺ©μ μ— λ§žλŠ” 경둜λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. 기획 회의 정리 및 μ£Όμš” λ…Όμ˜ 사항

이번 μ£Ό 기획 νšŒμ˜μ—μ„œλŠ” ν”„λ‘œμ νŠΈμ˜ κ΅¬ν˜„ λ°©ν–₯κ³Ό 각 κΈ°λŠ₯에 λŒ€ν•œ ꡬ체적인 μ‹œλ‚˜λ¦¬μ˜€κ°€ λ‹€λ€„μ‘ŒμŠ΅λ‹ˆλ‹€.

회의 μ£Όμš” μ•ˆκ±΄

  1. ν…ŒμŠ€νŠΈ 진행 ν˜„ν™©: Vite, Tailwind, 넀이버 맡 API 섀정을 ν†΅ν•œ ν™˜κ²½ ꡬ좕 및 기본적인 폴리라인 λ§ˆν‚Ή ν…ŒμŠ€νŠΈκ°€ μ§„ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  2. 넀이버 지도 API: @types/navermap의 νƒ€μž…μ„ μ •λ¦¬ν•˜μ—¬ μ‚¬μš©ν•˜κΈ° μ‰½κ²Œ μ€€λΉ„ν–ˆμœΌλ©°, 기본적인 지도 ν‘œμ‹œμ™€ 경둜 그리기λ₯Ό κ²€ν† ν–ˆμŠ΅λ‹ˆλ‹€.
  3. μ£Όμš” κΈ°λŠ₯ 및 μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€: μ‹œλ‚˜λ¦¬μ˜€λ³„λ‘œ μ‚¬μš©μž κ²½ν—˜μ„ μ •μ˜ν•˜κ³ , 경둜 μ„€μ •κ³Ό μ‹€μ‹œκ°„ μœ„μΉ˜ μΆ”μ μ˜ 기술적 도전 과제λ₯Ό λΆ„μ„ν–ˆμŠ΅λ‹ˆλ‹€.

κΈ°λŠ₯별 기획 및 기술적 도전

  • 경둜 μ„€μ •κ³Ό 마컀 κΈ°λŠ₯: μ‚¬μš©μžκ°€ 지도에 마컀λ₯Ό μΆ”κ°€ν•˜μ—¬ 경둜λ₯Ό μ„€μ •ν•˜λŠ” 방식과, 이λ₯Ό μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆν•˜μ—¬ μ‹œκ°μ  ꡬ뢄을 λ‘λŠ” κΈ°λŠ₯이 λ…Όμ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 각 κ²½λ‘œμ™€ λ§ˆμ»€λŠ” μ‚¬μš©μž λ§žμΆ€ν˜•μœΌλ‘œ μ„€μ •ν•  수 있으며, μ‚¬μš©μžμ˜ ν˜„μž¬ μœ„μΉ˜μ™€ λͺ©μ μ§€κΉŒμ§€μ˜ μ•ˆλ‚΄κ°€ ν¬ν•¨λ©λ‹ˆλ‹€.
  • 지도 기반 μ €μž‘ 도ꡬ: 직선 그리기, μ„ μ˜ κ΅΅κΈ° 및 색상 λ³€κ²½, ν…μŠ€νŠΈμ™€ 이미지 μΆ”κ°€ κΈ°λŠ₯이 ν¬ν•¨λ˜λ©°, μ‹€μ‹œκ°„μœΌλ‘œ μ €μž₯ν•˜κ³  κ³΅μœ ν•  수 μžˆλŠ” κΈ°λŠ₯이 ν•„μˆ˜λ‘œ ν¬ν•¨λ©λ‹ˆλ‹€.
  • 폴리라인 κΈ°λŠ₯ 및 ν™•λŒ€/μΆ•μ†Œ 관리: 경둜의 λ§€λ„λŸ¬μš΄ μ—°κ²°κ³Ό μ„ μ˜ 이어짐을 μœ μ§€ν•˜λ©° ν™•λŒ€/μΆ•μ†Œμ— λŒ€μ‘ν•˜λŠ” κΈ°λŠ₯이 μ£Όμš” μŸμ μ΄μ—ˆμœΌλ©°, 이λ₯Ό 반투λͺ… μ„ μœΌλ‘œ ν‘œμ‹œν•˜κ³  직선 연결을 μœ μ§€ν•˜λŠ” 방식이 μ œμ•ˆλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • 둜그인 μ‹œμŠ€ν…œκ³Ό λΉ„νšŒμ› μ ‘κ·Ό: λΉ„νšŒμ› μ‚¬μš©μžλ„ 지도 및 경둜 확인이 κ°€λŠ₯ν•˜μ§€λ§Œ, μ»€μŠ€ν…€ 경둜 생성 및 μ €μž₯은 νšŒμ›μ—κ²Œλ§Œ ν—ˆμš©λ©λ‹ˆλ‹€.
  • μΊ”λ²„μŠ€μ˜ ν™•μž₯ κ°€λŠ₯μ„±: ν”„λ‘œμ νŠΈ ν™•μž₯ λ°©μ•ˆμœΌλ‘œ μΊ”λ²„μŠ€λ₯Ό 톡해 좔가적인 μ €μž‘ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κ³ , κ°œμΈν™”λœ 경둜 곡유λ₯Ό μ§€μ›ν•˜μ—¬ μ—¬λŸ¬ μ‚¬μš©μžμ™€μ˜ 경둜 κ³΅μœ κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯ 및 μ„€μ • κ³„νš

  1. 경둜 μ„€μ • 및 마컀: 각 μ‚¬μš©μžμ˜ μΆœλ°œμ§€μ™€ 도착지 μ„€μ •, μœ„μΉ˜λ³„ κ²½λ‘œμ™€ 마컀 섀정을 톡해 μ§κ΄€μ μœΌλ‘œ 경둜λ₯Ό μ‹œκ°ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. μ €μž‘ 도ꡬ UI: 지도 μœ„μ˜ 그리기 도ꡬ νŒ¨λ„κ³Ό μ‹€μ‹œκ°„ 미리보기 κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ μ‚¬μš©μžκ°€ μ›ν•˜λŠ” κ²½λ‘œμ™€ 마컀λ₯Ό μ‰½κ²Œ μ„€μ •ν•˜λ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€.
  3. 닀쀑 μ‚¬μš©μž 지원: μ΅œλŒ€ 5λͺ…μ˜ μ‚¬μš©μžκ°€ μ„œλ‘œ λ‹€λ₯Έ 경둜λ₯Ό 확인할 수 있으며, μ‹€μ‹œκ°„ μœ„μΉ˜λ₯Ό ν‘œμ‹œν•˜μ—¬ μœ„μΉ˜ κ°„ μΆ©λŒμ„ μ΅œμ†Œν™”ν•  κ³„νšμž…λ‹ˆλ‹€.

3. μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€

μ‚¬μš©μž μœ ν˜• 및 μ‹œλ‚˜λ¦¬μ˜€

각 μ‚¬μš©μž μœ ν˜•μ— 맞좘 상세 μ‹œλ‚˜λ¦¬μ˜€μ™€ μ˜ˆμƒ ν™œλ™μ΄ κΈ°νšλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

  1. 일반 μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€
    • λ‘œκ·ΈμΈν•˜μ—¬ 경둜λ₯Ό μƒμ„±ν•˜κ³ , μ €μž‘ 도ꡬλ₯Ό μ‚¬μš©ν•΄ 경둜λ₯Ό μ»€μŠ€ν…€ν•˜λŠ” 방식.
    • μ˜ˆμ‹œ: μˆ™μ†Œ 근처 μ£Όμš” μž₯μ†Œ λ§ˆν‚Ή, 경둜 κ·Έλ£Ήν™”λ₯Ό 톡해 λ‹€μ–‘ν•œ κ²½λ‘œμ™€ λͺ©μ μ§€ ν‘œμ‹œ.
  2. λΉ„νšŒμ› μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€
    • 둜그인 없이 지도와 경둜 확인이 κ°€λŠ₯ν•˜λ©°, μ‹€μ‹œκ°„ μœ„μΉ˜λŠ” 확인할 수 μžˆμ§€λ§Œ, 경둜 생성 및 μˆ˜μ •μ€ μ œν•œλ©λ‹ˆλ‹€.

μ„œλΉ„μŠ€ ν™•μž₯ λ°©μ•ˆ

ν”„λ‘œμ νŠΈ μ£Όμ œλŠ” 쀑μž₯λ…„μΈ΅ λŒ€μƒμ˜ κΈΈ μ•ˆλ‚΄ μ„œλΉ„μŠ€λ‘œ μ‹œμž‘ν–ˆμ§€λ§Œ, λ‹€μ–‘ν•œ μœ μŠ€μΌ€μ΄μŠ€κ°€ λ…Όμ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μΆ•μ œ 지도λ₯Ό 톡해 λ‹€μˆ˜μ˜ 경둜λ₯Ό ν•œ λ²ˆμ— κ΄€λ¦¬ν•˜κ±°λ‚˜ 에어비앀비와 같은 μ„œλΉ„μŠ€μ— ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.


4. 기술적 도전과 μ΅œμ ν™” λ°©μ•ˆ

ν”„λ‘œμ νŠΈμ˜ 기술적 도전과 κΈ°νšμ—μ„œ μ£Όμš”ν•˜κ²Œ 닀뀄진 λΆ€λΆ„μž…λ‹ˆλ‹€.

지도와 μΊ”λ²„μŠ€ 동기화 μ΅œμ ν™”

지도 ν™•λŒ€/μΆ•μ†Œμ™€ 이동 μ‹œμ— μΊ”λ²„μŠ€ λ ˆμ΄μ–΄κ°€ λ§€λ„λŸ½κ²Œ λ™κΈ°ν™”λ˜μ–΄μ•Ό ν•˜λ©°, 이 κ³Όμ •μ—μ„œ μ„±λŠ₯ μ΅œμ ν™”κ°€ ν•„μš”ν•©λ‹ˆλ‹€. requestAnimationFrame, Offscreen Canvas, WebGL 등을 톡해 μ„±λŠ₯을 κ°œμ„ ν•  κ³„νšμž…λ‹ˆλ‹€.

데이터 μ €μž₯ 및 동기화

μ‚¬μš©μžμ˜ κ²½λ‘œμ™€ λ§ˆμ»€λŠ” 넀이버 맡 API의 폴리라인과 ν•¨κ»˜ μ €μž₯λ©λ‹ˆλ‹€. 데이터가 λ§Žμ•„μ§ˆ κ²½μš°μ—λŠ” μ••μΆ• 및 μ΅œμ ν™” 기법을 μ‚¬μš©ν•˜μ—¬ λΉ λ₯Έ λ‘œλ”©μ„ μœ λ„ν•˜κ³ , SVG 및 Protobuf λ“±μœΌλ‘œ 데이터 직렬화λ₯Ό κ³ λ € μ€‘μž…λ‹ˆλ‹€.

μ‹€μ‹œκ°„ ν˜‘μ—… κΈ°λŠ₯

μ—¬λŸ¬ μ‚¬μš©μžκ°€ ν•œ 지도λ₯Ό λ³΄λ©΄μ„œ 경둜λ₯Ό μ„€μ •ν•  수 μžˆλ„λ‘ WebSocket을 ν™œμš©ν•  κ³„νšμž…λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ 좩돌 관리 기법이 적용될 것이며, 특히 μ‹€μ‹œκ°„ μœ„μΉ˜μ™€ 경둜λ₯Ό λ™μ‹œμ— ν‘œμ‹œν•  수 μžˆλ„λ‘ WebRTC λ“± 좔가적인 μ‹€μ‹œκ°„ 톡신 κΈ°λŠ₯도 κ³ λ €ν•©λ‹ˆλ‹€.


5. 마무리

이번 μ£Ό ν™œλ™μ„ 톡해 "선따라 길따라(DDara)" ν”„λ‘œμ νŠΈμ˜ 전체 기획, μ£Όμš” κΈ°λŠ₯, 기술적 κ³Όμ œκ°€ μ²΄κ³„ν™”λ˜μ—ˆμœΌλ©°, 각 κΈ°λŠ₯λ³„λ‘œ ꡬ체적인 μ‚¬μš©μž κ²½ν—˜μ΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€μŒ μ£Όμ—λŠ” κΈ°λŠ₯ 개발과 ν™˜κ²½ 섀정에 λ“€μ–΄κ°€λ©°, 특히 Vitest와 μŠ€ν† λ¦¬λΆ 등을 ν™œμš©ν•œ ν…ŒμŠ€νŒ… 및 κ°œλ°œμ„ μ˜ˆμ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

Clone this wiki locally