맥락 기반의 버스 승차 알림

2016. 10. 31. 23:39Re-design!
無異

아이를 어린이집에 바래주고 출근하면서부터 지하철 대신 버스를 탑니다. 지하철에 비해 버스를 타면서는 신경 쓸 일이 많아졌습니다. 버스를 타면서 경험했던 불편과 문제 해결을 위한 디자인 과정을 공유합니다.


버스 기다리는 것도 일이다

버스는 정류장에서 버스 기다리는 것 자체가 힘든 ‘일’ 입니다. 지하철은 플랫폼에 열차가 들어 오면 아무 생각 없이 타면 됐거든요. 하지만 버스는 정류장에 정차하는 버스가 내가 탈 버스인지 아닌지 매번 번호를 확인하고 판단해야 합니다. 한적한 정류장에서는 별 일 아니지요. 그런데 제가 타는 정류장은 26개의 노선 버스가 정차하는 중앙차로 정류장입니다. 정말 끊임 없이 버스가 들어오고 나갑니다. 버스가 몰려 버스들이 꼬리를 물고 늘어서면 쏟아져 내린 인파로 금새 혼잡해집니다. 뒷편에 정차한 버스의 번호같은건 보이지 않습니다. 





그런데 뒷편에서 한번 정차해서 승객을 내리고 태운 버스는 운행시간에 좇겨 정류장 앞에서는 정차하지 않고 가버리는 경우가 많습니다. 잠깐 딴 생각하는 사이, 한참을 기다리던 버스가 눈 앞을 그냥 지나쳐가는 경험을 하게 되면 정신이 황폐해집니다. 저 꼬리 뒤에 내가 탈 버스가 온게 아닌지 한시도 주의와 긴장을 놓을 수 없게 됩니다.


버스를 기다리는 건 아무것도 안하고 가만히 있는 것 같지만 뇌를 계속 경계 상태로 두어야 합니다. 인지 비용이 크진 않지만 빈도가 높다 보니 피곤합니다.



주인님, 버스가 지금 도착했습니다

버스앱으로 도착 시간을 미리 알면 긴장을 풀고 뇌를 좀 쉬게 할 수 있습니다. 하지만 시간을 안다고 버스를 놓치지 않는 건 아닙니다. 뇌에 타이머가 달린 것도 아니고 여유가 있으니 딴짓 좀 하게되고, 그러면 버스가 눈앞을 스쳐지납니다. 그래서 버스가 많이 몰리는 중앙차로 같은 곳에는 언제쯤 버스가 오는지보다 버스가 바로 지금 도착했다고 알려주는 알림이 절실합니다. 이런 필요를 만족시켜주는 앱이 없어 직접 만들기로 했습니다.


우선 간단히 도착시간에 맞춰 타이머로 알려주는 방법을 생각할 수 있습니다. 하지만 예상 도착 시간이 교통상황에 따라 빠르거나 느려질 수 있습니다. 버스 떠나고 알려주면 망한겁니다. 그렇다고 너무 일찍 알려주면 또 딴짓합니다.


무식하지만 실시간으로 도착시간을 재확인할 수 밖에 없습니다. 수 초 간격으로 새로 고침하는 건 좀 너무하니 예상 도착 시간의 절반정도가 지났을때 현 위치와 도착 시간을 재확인합니다. 예상 도착 시간을 계속 새로 고침하여 버스가 5초 안에 도착하거나 10m 안에 와 있으면 알려줍니다.


하지만 버스 위치 정보가 실시간으로 업데이트 되지 않아서 제자리에 멈춰있는 것처럼 보일때가 있습니다. 버스는 이미 정류장에 도착했는데 오지 않는 알림은 쓸모가 없습니다. 실시간 위치의 동기가 되지 않을때에도 알림의 신뢰도를 높이는 방법이 필요합니다. 버스 위치가 이전과 같으면 정보가 업데이트 되지 않은 것으로 간주하여 기존 타이머를 유지하고 다를 경우만 타이머를 새로 세팅하도록 하는 방법으로 해결이 가능합니다.


폰에서 이런 반복 작업을 하는건 적합하지 않으니 폰에서 시작 요청을 하면 서버에서 버스 도착을 주기적으로 확인하게 합니다. 서버에서 폰으로 다시 알려주려면 push 서비스가 필요한데, 무료로 push 알림 API를 제공하는 pushbullet 앱을 사용했습니다.


주인님 버스타요.


간단히 다시 설명하면, 도착 시간을 계속 새로 고침하면서 버스가 바로 앞에 왔을때 알려주는 비서인 셈입니다. 작년부터 일년정도 실 사용 중인데 매우 유용합니다. 이전의 비문명화된 삶으로 돌아갈 수가 없어요.


카카오 버스에 이전 정류장에 도착하면 알림을 주는 기능이 생겼습니다. 알림을 보고 지금쯤 집에서 나가면 되겠구나 하고 많이들 유용하게 사용하고 있다고 합니다. 저같은 사람들을 위해 바로 승차 알림도 제공되면 좋겠습니다.



위치-시간 맥락을 이용한 버스 도착 시간 자동 확인


퇴근하는 길에 버스를 한번 갈아탑니다. 지선 버스를 타거나 마을버스를 타는 두가지 선택이 있는데요. 그냥 먼저 오는 버스를 타면 좋겠지만 정류장이 다릅니다. 횡단보도를 건너고 좌우로 서로 300m정도 떨어져 있어서 신호가 바뀌기 전에 미리 뭘 탈지 결정해야 합니다. 고민없이 조금이나마 가까운 정류장으로 가는게 몸도 마음도 편합니다. 하지만 다른 버스는 바로 탈 수 있었는데 정체로 10분, 15분 기다리게 되면 후회됩니다. 그래서 매번 두개의 버스 도착 시간을 확인합니다.


버스앱의 즐겨찾기나 위젯을 이용하면 도착시간을 그나마 수월하게 확인 할 수 있습니다. 하지만 이것도 매번 전화를 꺼내 화면을 켜고 앱을 실행시켜(또는 위젯을) 확인하는 과정이 번거럽고 귀찮습니다. 


꼭 버튼을 누르거나 하는 명시적인 입력이 아니라도 사용자가 특정 시간에 특정 장소로 이동했다는 행위자체가 트리거가 될 수 있습니다. 기기의 센서가 맥락을 확인하고 사용자의 명령을 대신합니다. 스마트폰의 위치 정보로 geofence를 활용할 수 있는데요. 안드로이드에서는 tasker, 아이폰에서는 locative 앱이 이런 기능을 제공합니다. 지도상에 존을 지정하고 그 영역 안에 들어가거나 나오면 특정 명령을 수행하도록 webhook을 걸 수 있습니다. 정류장 근처에 도착하면 내가 탈 버스들의 도착시간을 확인해서 알려주도록 했습니다.


locative를 이용한 geofence



서버에서 두 버스의 도착 시간을 확인하고 push로 폰에 알려줍니다. 정류장에 내리면 갈아탈 버스들이 언제 도착하는지 알림이 옵니다. 폰에 알림이 오면 스마트워치에도 같이 표시됩니다. 전 pebble워치를 쓰는데, 휴대폰을 꺼낼 필요 없이 손목을 들어 어느 버스가 먼저 도착하는지 확인하고 어느 정류장에서 탈지 결정합니다. 두 버스의 도착 시간을 비교하는 것도 인지 비용이 생기니 먼저 도착하는 버스를 앞에 보여줍니다. 아무것도 안하지만 더 격렬하게 아무것도 안하고 싶거든요. 물론 앞의 승차 알림도 함께 실행되어 버스가 정류장에 도착하면 다시 알려줍니다. 


geofence를 이용한 버스도착시간 자동 알림



1. 기다리는 것은 아무 것도 안하는 것 같지만 우리의 주의라는 인지 비용을 소비하는 활동입니다. 기다리는 시간 자체를 바꾸기는 어렵지만 인지 비용을 줄여주는 것으로 기다림의 불편함을 많이 해소해 줄 수 있습니다.


2. 똘똘한 비서는 주인의 명시적인 명령이 아니라 맥락을 살펴 능동적으로 일을 처리하는 비서입니다. 요즘 유행하는 IoT도 결국 센서와 AI가 맥락을 이해하여 implicit interaction을 수행하는 방향으로 발전하고 있습니다.


다음에는 이런 no UI의 근간이 되는 지도 기반의 버스 앱을 소개해 드리겠습니다.



[참고##리디자인##]