길록 개발로그 · 1화
길록 베타를 내 아이폰에 깔았다: 달린 길을 자동으로 남기고 작은 행성 위에서 다시 달린다
차를 타면 달린 길을 자동으로 남기고, 그날을 위성 사진을 감은 작은 행성 위에서 다시 재생하는 아이폰 앱 길록을 만들었다. 아직 실제 차에서 시험하지 않은 1단계 베타다. 기록이 화면보다 먼저이고, 모르는 구간은 모른다고 적는다는 원칙으로 만들었다.
길록은 차를 타고 달린 길을 자동으로 남기고, 그날을 다시 재생하는 아이폰 앱이다. 10월 7일 새벽 세 시쯤 시작해 일곱 시 반쯤까지 만들었고, 지금은 내 아이폰에 개발 빌드로 깔려 있다. 무료 개발자 계정으로 설치해서 일주일마다 다시 깔아야 하는 베타다.
베타라서 아직 실제 차에서 재 보지 못한 것이 더 많다
시뮬레이터에서는 확인할 수 있는 건 다 확인했다. 화면이 꺼진 채로 기록하는지, 시스템이 앱을 종료했다가 다시 켜도 이어서 기록하는지, 다시 실행해도 주행이 남는지, 재생과 기록 없는 구간 표시가 맞는지다. 핵심 계산은 화면과 떼어 낸 패키지로 만들어 테스트 43개로 확인했다.
정작 중요한 건 실제 차에서만 잴 수 있다. 화면을 잠그고 한 시간을 달려도 기록 간격이 촘촘한지, 터널에서 정차로 잘못 나오지 않는지, 신호 대기에 한 번의 주행이 둘로 쪼개지지 않는지, 내비와 음악을 같이 켜도 저장이 실패하지 않는지, 배터리는 얼마나 쓰는지다. 그래서 시험 항목 11개를 먼저 적어 두고 CarPlay 연결에 맞춰 기록이 시작되고 끝나는 단축어 자동화를 붙였다. 다음 일은 차를 몰고 나가 이 표를 채우는 것이다.
개발 철학은 기록이 화면보다 먼저이고 모르는 건 모른다고 적는 것이다
길록은 받아 둔 제안서에서 시작했다. 코드를 쓰기 전에 제안서의 외부 사실부터 확인했다. 아이폰 위치 기능이 앱을 다시 깨워 주는 조건, 지도 서비스의 약관과 호출 한도, 국내 위치정보법의 쟁점을 1차 출처와 대조했고, 틀린 전제를 고친 다음에 만들었다. 그 과정에서 네 가지 원칙이 남았다.
- 기록이 화면보다 먼저다. 기록기는 지도 화면이 없어도 돌고, 저장은 네트워크보다 먼저 끝난다.
- 원본은 덮어쓰지 않는다. 관측한 점, 다듬은 선, 기록이 없는 구간을 따로 둔다.
- 모르는 것은 모른다고 표시한다. 터널에서 끊긴 구간은 실선으로 잇지 않고 “기록 없음”으로 남긴다.
- 문서의 숫자에는 출처를 달고, 아직 재 보지 않은 숫자에는 계획값이라고 적는다.
같은 생각이 다른 데서도 나왔다. 같은 길을 여러 번 달린 기록을 비교할 때 왜 느렸는지는 지어내지 않고 구간과 숫자만 보여 준다. 행성 위의 차는 실제 차종 대신 직접 만든 마스코트를 태웠다. 실제 차 모양을 쓰려면 제조사 라이선스가 필요해서다. 한 달 추억 영상도 가상 데이터로 만든 시안이라는 걸 영상 마지막에 적었다.
출퇴근길 비교와 여행의 추억 영상이 지금 생각하는 쓰임이다
매일 같은 길을 달리는 사람에게는 같은 길 비교가 쓸모 있다. 오늘이 다른 날보다 어느 구간에서 느렸는지, 언제 다른 길로 빠졌는지가 구간별 속도 그래프로 나온다. 가끔 멀리 가는 사람에게는 추억 영상이 있다. 한 달 동안 달린 길을 행성 위에 하나씩 켜고, 그날 찍은 사진을 붙여 한 편으로 묶는다. 포트폴리오의 홍보 영상이 한 달이 지났다고 가정하고 만든 그 시안이다.
배운 것
하룻밤에 재생 화면은 네 가지 모습을 거쳤다. 지도 위 화살표가 너무 흔하다는 말에 빛의 궤적과 먹선 일기를 만들었고, 실제로 움직이는 느낌이 없다는 말에 위성 사진을 감은 행성을 만들었다. 차가 어설프다는 말에 마스코트를 그렸다. 그동안 기록하는 부분은 그대로 두고 화면만 바꿨다. 화면을 쉽게 갈아엎을 수 있었던 건 기록과 화면을 처음부터 떼어 놓았기 때문이다.