애플리케이션 개발
기획이 끝나고 저희 세 팀원은 서로 해보고 싶거나 해봤던 부분에 대해 이야기하였고, 프로젝트를 ‘센서부’, ‘출력부(디스플레이)’, ‘스마트폰 애플리케이션(이하 앱)’ 세 부분으로 나눠 개발하기로 하였습니다.
저는 프론트엔드 개발이 익숙하여 애플리케이션을 담당하게 되었습니다. (센서 부분도 해보고 싶어 아이트래킹 파트도 맡았지만, 나중 포스팅에서..)
하지만, 웹 개발은 익숙했지만, 앱 개발은 처음이었기 때문에 사전조사를 시작했습니다.
처음에는 ReactNative 등을 사용해 크로스플랫폼 지원을 할 생각도 했었지만, 찾아보니 js를 변환하는 과정이 한 번 더 있기 때문에 실시간 통신과 연산이 많이 있을 저희 앱에 적절하지 않다고 생각했습니다. (그 당시 앱에 대한 기반 지식없이 블로그 글들만 읽고 판단했었기 때문에 정확하지 않지만, 그래도 최선의 선택을 하려고 했습니다.)
그리하여 네이티브 앱을 개발하기로 결정했고, 대형차 운전자의 연령층과 성별을 고려하여 안드로이드 앱을 개발하기로 했습니다.
애플리케이션 기능
앱은 다음의 기능이 필요했습니다.
- 내비게이션(화물차 경로)
- 알림(전화, 문자, 카카오톡) 획득
- HUD(Head-Up Display) 디바이스와 블루투스 통신
- 표시 옵션 설정(HUD에 표시할 항목을 선택하는 기능)
실시간 내비게이션과 스마트폰 알림 정보(Data)를 HUD 디바이스로 전송하고, HUD에서 어떤 항목을 켜고 끌 지 선택할 수 있어야 했습니다.
즉, 사용자(운전자)와 HUD의 징검다리의 역할이라고 할 수 있습니다.
내비게이션
이 앱에서 가장 중요한 부분은 내비게이션이라고 생각했습니다. 본 프로젝트에서 실질적으로 사용자에게 전달되는 부분은 위험 알림과 내비게이션이라고 생각하기 때문입니다. 그래서 개발에 가장 큰 공을 들인 부분이기도 합니다.
그렇다면, 내비게이션은 어떻게 만들었을까요?
경로 얻기
내비게이션의 기반은 경로, 즉 현재 위치에서 도착지까지의 최적의 경로가 있어야 합니다. 개인이 경로를 생성할 수 있을 정도의 상세한 지도 데이터를 얻는 것은 거의 불가능합니다. 운 좋게 지도를 얻었다해도 경로 알고리즘은 또 다른 이야기죠. 그래서 경로는 기존 회사의 API에 의존해야만 했습니다.
또한, 대형차는 높이와 무게 때문에 통행이 금지된 도로, 다리, 터널 등이 있어 대형차 전용 경로가 꼭 필요했습니다.
마침! 국내 지도 회사 API 중, Tmap이 화물차 경로 API를 제공하고 있었습니다. (무야호~)
그렇게 이 API가 제공하는 경로를 기반으로 길 안내 기능을 구현하기로 하였습니다.
빨간 경로가 대형차(화물차) 경로입니다. 못 지나가는 도로를 우회하게 됩니다.
API로 빠르게..?
처음에는 기존의 업체가 제공하는 길 안내 API을 앱에 탑재해 빠르게 개발하고 싶었습니다.
처음 생각했던 곳은 Tmap이었습니다. 하지만, 문의 결과 API가 내부적으로 개발 중이었고, 따로 계약을 진행해야 하는 부분이 있었습니다. (길 안내는 Tmap의 핵심 기술이기 때문에 당연한 결과라고 생각합니다.)
그래서 해외 API로 눈을 돌렸습니다. 찾던 도중 Mapbox라는 업체를 발견했고, 꽤 다양한 곳에서 사용되는 내비게이션/지도 API를 제작하는 회사였습니다.
API 문서를 읽어보고 테스트 앱을 만들어보는 등 Mapbox API를 활용하기 위해 노력을 했지만, Tmap의 화물차 경로를 Mapbox 길 안내 API에 적용하는 것이 몇 일을 시도해도 제대로 되지 않았습니다.
Mapbox GitHub 이슈도 남겼지만 아무런 답변이 없었다..ㅠ
이 때가 소마하면서 기억에 남는 힘든 순간이었는데요. 일정에 표시해둔 시간은 가까워 오는데, 될 것이라고 생각했던 것이 안되면서 마음이 급해졌습니다.
몇 일을 고생하다 길 안내 부분을 아예 자체 개발하기로 마음을 정해버렸습니다. 지금 생각하면 ‘무식하면 용감해진다’였던 것 같기도 합니다. 내비게이션이 어떻게 작동하는지 모르지만, 급하니까 질러버린거죠. (물론 결과적으로는 좋았지만)
길 안내 자체 개발 시작
길 안내 자체 개발은 또 다른 어려움들이 도사리고 있었습니다. 하지만, 조금씩 만들어져가는 게 보여서 힘을 내면서 개발할 수 있었습니다. 우선, 이번 포스팅은 여기까지하고, 다음 포스팅에서 본격적인 길 안내 개발 이야기를 풀어보겠습니다.
2년 반만에 다시 학교로 돌아와 설렘을 즐기다 포스팅이 조금 늦어질 수 있는 점 양해 부탁드립니다. (물론 아직 아무도 안 보겠지만..ㅎㅎ)