자유로운 개발일지/APP

[APP] 우당탕탕 앱 만들기

그낙이 2025. 5. 5. 18:45
반응형

Kotlin으로 만드는 우당탕탕 버스 도착 알림 앱 [1편]

모든 발전은 불편함에시 시작된다고 생각합니다. 매일매일 반복되는 출근길 속에서 버스나 지하철이 언제 도착하는지 확인하려면 카카오맵에 들어가서 확인을 해야했습니다. 물론 익숙한 일이지만, 매번 앱을 여는 것조차 번거로웠습니다. 저는 그 시간에 핸드폰으로 다른거 하고 싶은데 말이죠. 

 

이 앱은 그런 단순한 불편함에서 시작되었습니다. 원하는 버스 정류장과 노선의 정보를 실시간으로 표시해주는 앱, 그리고 정해진 시간대(평일 오전 7~9시)에만 알람이 울리는 기능을 추가하기로 했습니다. 작고 사소하지만, 저에게는 꽤 실용적인 저만의 출근 도우미가 되어줄 거라 생각합니다.

 

솔직히 얼마나 걸릴지는 저도 잘 모르겠습니다. 중간에 길을 헤맬 수도 있고, 삽질도 잔뜩 하겠죠. 앱을 한 번도 만들어본 적 없고, 앱 개발자가 되겠다는 생각도 없었으니까요. 어쩌면 제 커리어에 전혀 도움이 안될 수도 있습니다.


그래도 괜찮습니다. 언젠가 내가 만든 앱으로 “버스 도착 3분 전!”이라는 알림을 상단바에서 보게 된다면,
그것만으로도 이 기록은 충분히 가치 있을 테니까요.

 

어떤 앱인가요?

 

기능은 뭐가 있어요?

기능은 엄청 단순합니다. 하지만 제가 원하는 기능을 다 가지고 있는 앱을 찾을 수 없었습니다. 위젯을 통해서 정보를 제공해주기는 하지만, 저는 플립을 사용하기 때문에 접어놓은 상태에서 쉽게 상단바로 알고 싶었거든요.

  1. 내가 지정한 버스 + 정류장
  2. 평일 7~9시 같은 설정한 시간대에만 작동
  3. 상단바에 실시간 알람 표시 
  4. 도착 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

 

작은 첫걸음이지만, 드디어 진짜 앱 개발의 첫 발을 내딛는 순간이죠.

 

반응형