Mechu! - Menu Selection App

image

"오늘 뭐 먹지?"라는 일상적 고민을 해결하기 위해 만든 안드로이드 앱 Mechu(메뉴)입니다. 내 위치 주변의 음식점을 검색해서 랜덤으로 골라주는 간단하지만 유용한 도구입니다.

프로젝트 개요

매번 점심시간마다 친구들과 "뭐 먹을래?" → "아무거나" 무한 루프에 빠지는 경험에서 시작된 프로젝트입니다. 선택의 역설을 해결해주는 앱을 만들자는 아이디어로 기획했습니다.

핵심 기능은 극도로 단순합니다:

  1. 내 위치 기반으로 주변 음식점 검색
  2. 버튼 하나로 랜덤 선택
  3. 선택된 음식점 정보 및 지도 표시

복잡한 기능을 추가하기보다는 "뽑기"라는 하나의 즉시성 있는 경험에 집중했습니다.

기술 스택

  • 언어: Java + Kotlin (혼용)
  • IDE: Android Studio
  • API:
  • 카카오맵 API (지도 표시, 위치 정보)
  • 네이버 지역검색 API (음식점 검색)

앱 개발 초기에 Java로 시작했다가, 후반부에 Kotlin을 도입하면서 신규 기능은 Kotlin으로 작성했습니다. Java의 verbosity에서 Kotlin의 간결함으로 넘어가는 좋은 학습 경험이었습니다.

주요 구현 사항

위치 권한 처리

Android 6.0(API 23) 이상에서는 런타임 권한 요청이 필수입니다. 위치 접근 권한을 요청하고, 거부 시 대체 UI(수동 주소 입력)를 제공하도록 처리했습니다.

위치 기반 음식점 검색

FusedLocationProviderClient로 현재 위치를 획득하고, 해당 좌표를 네이버 지역검색 API에 전달해 반경 내 음식점 목록을 받아옵니다. 검색 결과는 JSON으로 파싱해 내부 데이터 모델로 변환합니다.

GET https://openapi.naver.com/v1/search/local.json
  ?query=음식점
  &display=20
  &start=1
  &sort=random

카카오맵 연동

선택된 음식점의 위치를 카카오맵에 마커로 표시하고, 탭하면 카카오맵 앱 또는 웹으로 딥링크가 열리도록 구현했습니다. 사용자가 길찾기까지 자연스럽게 이어지도록 했습니다.

랜덤 선택 애니메이션

단순히 하나를 고르는 것이 아니라 재미 요소를 추가하기 위해, 슬롯머신 스타일의 롤링 애니메이션을 구현했습니다. ViewFlipper와 Handler.postDelayed를 조합해 점점 느려지는 롤링 효과를 만들었습니다.

음식 카테고리 필터

한식/중식/일식/양식/카페 등 카테고리 필터를 추가해 원하는 종류만 후보로 좁힐 수 있도록 했습니다.

배포

Google Play Store에 정식 출시했습니다. 개발자 등록, 앱 서명, 정책 준수, 스크린샷/설명 준비 등 배포 과정 자체가 큰 학습이었습니다.

어플은 구글플레이스토어에서 다운로드할 수 있습니다.

어플 보러가기

코드는 깃허브에서 보실 수 있습니다.

깃허브에서 보기

느낀 점

  • 작은 기능에 집중: 기능을 많이 넣고 싶은 유혹을 참고 "뽑기" 하나에 집중한 것이 결과적으로 좋았습니다. MVP의 중요성을 체감.
  • API 의존성의 리스크: 네이버/카카오 API의 정책 변경이나 요금 정책이 앱 운영에 직접적 영향. 장기적으로는 자체 데이터 구축도 고려해야 함.
  • Android 버전 파편화: 최소 지원 버전을 낮게 잡으면 새 API를 못 쓰고, 높게 잡으면 사용자 이탈. 균형점 찾기가 어려움.
  • 배포 프로세스: 개발보다 배포가 더 복잡할 수 있음. 정책 준수(개인정보, 광고, 콘텐츠 등급)에 시간이 많이 듦.
  • Java → Kotlin 전환: 같은 기능을 Kotlin으로 다시 쓰면 코드가 30~50% 줄어듦. null-safety의 가치도 실감.

대규모 앱은 아니지만, 아이디어 구상부터 개발, 배포, 유지보수까지 전체 사이클을 경험할 수 있는 의미있는 프로젝트였습니다.

Comments (0)

No comments yet. Be the first to comment!