[APP] 우당탕탕 앱 만들기
Kotlin으로 만드는 우당탕탕 버스 도착 알림 앱 [1편]
모든 발전은 불편함에시 시작된다고 생각합니다. 매일매일 반복되는 출근길 속에서 버스나 지하철이 언제 도착하는지 확인하려면 카카오맵에 들어가서 확인을 해야했습니다. 물론 익숙한 일이지만, 매번 앱을 여는 것조차 번거로웠습니다. 저는 그 시간에 핸드폰으로 다른거 하고 싶은데 말이죠.
이 앱은 그런 단순한 불편함에서 시작되었습니다. 원하는 버스 정류장과 노선의 정보를 실시간으로 표시해주는 앱, 그리고 정해진 시간대(평일 오전 7~9시)에만 알람이 울리는 기능을 추가하기로 했습니다. 작고 사소하지만, 저에게는 꽤 실용적인 저만의 출근 도우미가 되어줄 거라 생각합니다.
솔직히 얼마나 걸릴지는 저도 잘 모르겠습니다. 중간에 길을 헤맬 수도 있고, 삽질도 잔뜩 하겠죠. 앱을 한 번도 만들어본 적 없고, 앱 개발자가 되겠다는 생각도 없었으니까요. 어쩌면 제 커리어에 전혀 도움이 안될 수도 있습니다.
그래도 괜찮습니다. 언젠가 내가 만든 앱으로 “버스 도착 3분 전!”이라는 알림을 상단바에서 보게 된다면,
그것만으로도 이 기록은 충분히 가치 있을 테니까요.
어떤 앱인가요?
기능은 뭐가 있어요?
기능은 엄청 단순합니다. 하지만 제가 원하는 기능을 다 가지고 있는 앱을 찾을 수 없었습니다. 위젯을 통해서 정보를 제공해주기는 하지만, 저는 플립을 사용하기 때문에 접어놓은 상태에서 쉽게 상단바로 알고 싶었거든요.
- 내가 지정한 버스 + 정류장
- 평일 7~9시 같은 설정한 시간대에만 작동
- 상단바에 실시간 알람 표시
- 도착 1분 전, 3분 전, 5분 전과 같은 시간에 알람 발송
기술 스택은요?
앱을 안정적으로 만들기 위해 Kotlin 기반 Android Native 앱을 개발할겁니다. 저는 처음 프로그래밍은 Python으로 시작했고, 이후에는 JavaScript와 TypeScript 중심으로 웹 개발을 해왔습니다. 그래서 처음에는 당연히 React Native를 고려했죠. 익숙한 언어로 빠르게 앱을 만들 수 있으니까요.
하지만 결정적으로 제가 만들고자 하는 상단바 알림은 Android ForegroundService 기능을 사용해야만 구현이 가능했습니다. RN에서 이 기능을 구현하려면 eject를 하고 뭐뭐...라고 해서 처음부터 Native 개발로 방향을 정했습니다.
그리고 앱 구조를 구상하는 과정에서, 버스 도착 정보를 제공하는 공공데이터 API가 호출 횟수 제한이 있고, API 키가 앱 내에 노출될 수 있다는 점이 문제가 되었습니다. 그래서 중간에 FastAPI 기반 경량 서버를 두어 API 키를 보호하고, 동일 요청은 캐싱하여 호출량을 줄이고, 향후 기능 확장(소요 시간 예측, 사용자 설정 저장 등)을 고려할 수 있도록 설계했습니다.
결국 이 앱은 저에게 있어 단순한 사이드 프로젝트가 아니라, 필요한 기능을 만들기 위해 기술을 선택하고, 문제를 직접 해결해가는 실험의 과정입니다.
영역 | 기술 | 설명 |
개발 언어 | Kotlin | 간결하고 현대적인 문법의 Android 공식 언어 |
앱 구조 | Android SDK | Activity, Service, Notification 등 기본 컴포넌트 사용 |
알림 시스템 | ForegroundService + NotificationManager | 실시간 상단바 고정 알림 구현 |
시간 조건 제어 | AlarmManager / WorkManager | 지정 시간대에만 작동하도록 제어 |
API 연동 | Fast API(프록시 서버) + Retrofit2(앱) | 버스 도착 정보 공공데이터 API 사용 예정 |
로컬 데이터 | Room (SQLite ORM) | 설정한 정류장, 노선, 알림 시간 등을 저장 |
[사용자 앱]
├─ Room (로컬 설정 저장)
└─ Retrofit2
│
▼
[FastAPI 프록시 서버]
│
│ API 키 보호 / 캐싱 / 호출 제어
▼
[공공데이터 버스 API]
** 더 나은 방식이 있을 수 있습니다. 하지만 배우면서 기록을 남기고, 문제를 해결해나가는 과정도 의미가 있겠죠 ㅎㅎ
다음 글 안내
이제 구조를 다 짰으니, 다음 글에서는 Android Studio 설치부터 Kotlin으로 프로젝트 생성하는 과정을 시작해보려 합니다. Android Studio는 어떻게 설치하는지, Kotlin 프로젝트는 어떻게 만드는지, 그리고 첫 화면에서 "정류장을 선택해주세요"라는 문장을 띄워보기까지.
[APP] 우당탕탕 앱 만들기
Kotlin으로 만드는 우당탕탕 버스 도착 알림 앱 [2편]이 글은 Android Native 앱을 처음 만들어보는 사용자가, Android Studio를 설치하고 Kotlin 기반 프로젝트를 생성해첫 화면을 띄워보는 과정을 정리한
gnaaak.tistory.com
작은 첫걸음이지만, 드디어 진짜 앱 개발의 첫 발을 내딛는 순간이죠.