스크린 리더 사용자를 위한 길 찾기 앱 '길동무'가 2.0으로 업데이트되었습니다

길동무 2.0을 앱 스토어에 배포했습니다. 이번 업데이트의 가장 큰 변화는 대중교통과 자동차 실시간 안내가 추가되었다는 점입니다. 7월 말에 길동무 앱을 출시한 후, 8월 중순에 도보 실시간 안내를 추가했는데요. 이번에 대중교통 안내와 자동차 안내를 추가함으로써 이제 길동무는 명실공히 주요 이동 수단을 모두 커버하는 온전한 길 찾기 앱으로 거듭났습니다.


직접 다니며 다듬은 대중교통 안내

특히 대중교통 안내를 그동안 실험판으로 사용하면서 하루빨리 이 기능을 선보이고 싶었습니다. 업데이트가 늦어진 건 대중교통을 자주 타지 않는 탓도 있지만, 기본적으로 대중교통 수단이 포함됐을 때 경로 측면에서 도보보다 훨씬 변수가 많아지더라고요. 예를 들어, 대중교통이라고 해도 그 사이사이에는 도보 이동 경로가 포함될 수밖에 없는데 각각의 구간을 끊김 없이 매끄럽게 연결하는 것, GPS가 터지지 않는 지하철 구간에서 최대한 사용자의 경로를 잃지 않는 것, 지하철 역사 내 각종 편의 시설과 역사 전화번호를 안내하는 것 등. 제가 실제 상황에서 쓰면서 불편한 걸 다 고치다 보니 테스트하고 구현할 게 정말 한두 가지가 아니었습니다.

멀리 외출할 때마다 써 보면서 밖에서는 카카오톡에 메모하고 스크린숏을 찍고, 집에 와서는 로그 기록을 회수해서 분석하고 고쳤는데요. 제아무리 Fable이 분석과 구현을 다 해 준다 하더라도 실제 앱 편의성은 실사용하면서 점검할 수밖에 없기 때문에 발품을 팔지 않으면 안 되는 부분이 많았습니다.

하지만 제가 원했던 것, 때로는 그 이상의 결과물이 나왔을 때 그 희열은 말로 다 설명할 수 없었습니다. 저는 길동무 앱 덕분에 처음으로 한 번도 안 가 본 곳까지 혼자서 버스를 타고 이동할 수 있었습니다. 더 이상 누군가에게 지하철역 출구까지 마중 나오라고 하지 않아도 되고, 더 이상 택시를 타고 가면서 기사님에게 여기가 어디인지, 도착지까지 얼마나 남았는지 묻지 않아도 됩니다. 무엇보다도 이젠 장애인 콜택시가 잡히지 않을 때도 자신 있게 길을 나설 수 있게 되었습니다.

이제 화면이 잠겨도 음성 안내를 들으실 수 있습니다

이에 더해 사용자님들의 피드백 중 화면이 잠겼을 때도 음성으로 안내가 나왔으면 좋겠다는 것이 있었는데요. 길동무 2.0에서 '백그라운드 음성'이라는 이름으로 구현했습니다. 저는 이게 굳이 필요할까 생각했었는데, 막상 써 보니 정말 편하더라고요. 백그라운드 음성은 설정에서 토글로 끌 수 있습니다.

이 외에 도보 경로 결과에서 큰길 경로가 최단 거리 경로보다 상위에 표시되던 문제, 가끔 대중교통 경로가 조회 결과에서 빠지던 문제 등은 이미 지난 버전에서 수정되었습니다. 혹시나 이 문제로 앱을 안 쓰셨던 분들이 계신다면 길동무 2.0부터 다시 다운로드해 사용해 보시길 권합니다!

유의하실 점은 길 찾기가 GPS 기반으로 작동하기 때문에 인터넷이 잘 터지지 않는 곳에서 부정확할 수 있고, 원 데이터의 한계로 일부 지역에서는 기대하는 대로 작동하지 않을 수 있다는 것입니다. 늘 그렇듯 익숙한 경로에서 먼저 사용해 보시기를 추천드립니다.

요즘 개발하고 있는 기능

요즘 제가 테스트해 보고 있는 기능은 '나들이 모드'입니다. 시각장애인의 보행에 있어 가장 큰 제약은 목적지까지 가기 어렵다는 것이 아닙니다. 목적지가 없는 보행을 하기가 어렵다는 것이죠.

가끔은 혼자 산책을 하고 싶을 때도 있고, 가끔은 큰 목적지만 정해 놓고 세부 경로는 다니면서 정하고 싶을 때가 있지요. 이럴 때 시각장애인은 지나가는 사람에게 길을 묻거나 동행자가 가자는 곳으로 따라가는 수동적 보행자로 남게 마련인데요. 정확한 목적지나 경로 없이 걷다가도 현재 위치를 빠르게 파악하고 주변 정보를 파악할 수 있다면 독립 보행이 훨씬 편해질 것입니다.

나들이 모드는 그런 의도로 개발하고 테스트해 보고 있습니다. 안정화되는 대로 정식판에 추가하겠습니다.

꾸준히 업데이트하겠습니다

길동무는 기존의 지도, 지하철, 버스, 보행자용 내비게이션 앱들이 나누어서 제공하던 서비스를 하나로 통합한 앱입니다. 그러면서도 크기는 5MB 정도밖에 안 되는 매우 가벼운 앱이죠. 광고도 요금도 없습니다. 발생하고 있는 API 비용은 모두 제가 부담하고 있습니다. 그래도 많은 분들이 이 앱을 통해 보행의 자유도가 올라간다면 그것으로 충분히 보람을 느낄 것 같습니다.

제가 혼자서 감당할 수 있는 선에서 꾸준히 업데이트해 보겠습니다. 사용해 보시면서 후기와 업데이트 피드백 부탁드립니다.

사용자가 전해 준 길동무 사용 팁

마지막으로, 한 지인이 공유해 주신 길동무 사용 팁입니다. 길을 가기 전에 먼저 채팅으로 갈 곳에 관해 자세히 확인하고, 그다음 실시간 안내 기능을 켜 놓고 가면서, 필요한 경우에 행인들에게 질문을 한다고 합니다. 이미 어느 정도 정보를 가지고 있는 상태여서 도움을 요청할 때도 더 편하다고 하네요. 팁 공유 감사드립니다!

길동무 이용 방법과 소스 코드

터미널에서 사용할 수 있는 명령줄 도구(CLI)도 있습니다. Node.js와 npm이 설치된 환경에서 아래 명령을 실행하면 됩니다.

npm install -g gildongmu

설치 후에는 gil 또는 gildongmu 명령으로 사용할 수 있습니다. 자세한 사용법은 CLI 안내 문서를 참고해 주세요.

길동무로 오픈AI의 WebMCP 챌린지에 참가했습니다

길동무의 주력 제품은 iOS 앱이지만, 웹앱도 있습니다. 저는 출장을 가기 전 경로와 소요 시간을 확인하거나 모임 장소를 찾아볼 때 종종 사용하는데 꽤나 유용합니다. 일단 화면 구성이 iOS 앱보다도 단순하고 원하는 정보를 빠르게 확인할 수가 있지요~

아직 아이폰에 길동무를 다운로드하지 않았거나 아이폰을 사용하지 않는 경우에도 이 웹앱으로 길동무를 이용할 수 있습니다. 특히 해외에서 국내 여행을 계획할 때 유용할 거라고 생각하는데요. 상세한 장소 및 길찾기 정보와 더불어 지하철 역사 편의시설, 횡단보도 음향신호기 같은 장애인 접근성 정보를 1급 정보로 제공하는 건 길동무만의 가장 큰 강점이라고 생각합니다.

웹을 에이전트에게 맡길 때

한편 이제는 많은 사람들이 웹 브라우징 작업을 에이전트에 맡기고 있는데요. 웹 탐색에 어려움을 겪는 스크린 리더 사용자뿐 아니라, 업무 자동화에 진심인 AI 에이전트 사용자들에겐 에이전트를 시켜서 웹에서 할 일을 대신하게 하는 일이 점점 흔해지고 있습니다.

단, 웹에서의 작업을 에이전트에게 위임할 때의 단점은 시간과 토큰이 많이 소모된다는 점인데요. 에이전트가 웹 구성 요소를 일일이 탐색하고 클릭하고, 시행착오가 있을 때는 스크린샷을 찍고, 그걸 다시 보고 작업을 이어가는 등의 과정이 사람이 웹 작업을 직접 처리할 때보다 느리기 때문에 답답함을 느낄 때가 많습니다. 이건 웹 자체가 인간이 보고 사용하도록 설계되어 있기 때문에 어쩔 수 없는 구조적 한계죠.

그런데 사실 AI 에이전트 입장에서는 굳이 그렇게 작업할 필요가 없습니다. 특정 웹 사이트가 제공하는 기능이 그 사이트에 접속하자마자 설명과 함께 도구로 제시된다면 에이전트는 굳이 사람이 보기 위해 만들어진 다양한 컴포넌트들을 일일이 훑을 필요가 없을 것입니다. 바로 이 발상에서 나온 것이 WebMCP입니다.

WebMCP란

WebMCP는 구글과 마이크로소프트의 엔지니어들이 2025년 8월부터 함께 발전시켜 오고 있는 기술인데요. 기존 방식에서 에이전트는 웹 사이트를 탐색할 때 브라우저가 그려주는 DOM이나 접근성 트리를 하나하나 읽으며 탐색합니다. 참고로 용어를 설명하자면, DOM은 웹 문서의 구조를, 접근성 트리는 버튼의 이름과 역할처럼 스크린 리더 등에 필요한 정보를 담고 있는 웹의 내부 구조라고 보시면 됩니다.

그런데 WebMCP를 쓰면 특정 기능을 에이전트가 직접 실행할 수 있는 도구로 명시적으로 등록할 수 있습니다. 이때 그 기능이 무슨 일을 하는지, 실행하려면 어떤 값을 입력해야 하는지도 함께 알려 줄 수 있고요. 그러면 에이전트는 WebMCP를 지원하는 브라우저에서 잡다한 구조를 탐색하지 않고도 그 설명을 읽고 기능을 바로 실행할 수 있습니다. 아직 완성된 웹 표준은 아니고, 웹을 에이전트가 사용하기 쉬운 방향으로 만들기 위한 과정에서 개발과 실험이 진행 중인 기술이라고 이해하시면 될 것 같습니다.

길동무 웹앱에 WebMCP를 붙이다

지난 8월 말 구글 앱에서 AI 관련 기사를 읽던 중 마침 오픈AI에서 이 WebMCP 챌린지를 연다는 소식을 보았습니다. 저는 마침 따끈따끈한 프로젝트인 길동무 웹앱에 WebMCP를 구현하여 응모하기로 했죠. 길동무 앱을 iOS에 출시한 후에는 웹앱을 조금 방치하고 있었는데 이 챌린지 덕분에 웹앱도 많이 다듬고, 무엇보다도 영어 지원을 더욱 촘촘하게 다듬었습니다. (오픈AI 심사자가 사용해 볼 수 있어야 하니까요 ㅎ) 그 덕에 길동무 웹앱은 이제 WebMCP를 지원하게 되었습니다.

챗GPT의 내장 브라우저처럼 WebMCP를 지원하는 환경에서 “길동무 사이트에 가서 강동구에서 저녁때 놀 수 있는 곳들을 찾아보고 동선을 짜 줘.” 같은 프롬프트를 주면 에이전트는 브라우저에서 길동무를 열고 효율적으로 지시한 작업을 수행합니다. 이때 에이전트는 길동무 사이트를 탐색하는 대신 제가 WebMCP로 노출한 도구를 확인해서 바로 작업할 수 있습니다. 물론 그 도구들은 화면에 별도의 버튼으로 보이지는 않습니다. 이젠 길동무는 사람뿐 아니라 에이전트도 손쉽게 사용할 수 있는 친에이전트형 대한민국 길찾기 서비스입니다!

금요일 오후 5시 마감

이 챌린지에 참가하면서 재미있는 에피소드가 하나 있었는데요. 챌린지 응모 데드라인이 9월 4일 금요일이었습니다. 저는 당연히 미국 시간이라고 생각하고 퇴근 후 도도 재우고 금요일 밤 코딩 나이트를 불태우면 마무리되겠거니 생각하고 있었는데요, 확인해 보니 한국 시각 오후 5시더라고요. 아니, 무슨 금요일 5시에 데드라인을 ㅋㅋㅋ 설마 이 챌린지를 기획한 오픈AI 직원들이 한국 근무 시간을 고려해서 타임테이블을 짠 건 아니었겠죠! ;;;

그 바람에 수업 사이사이 공강에 영상 찍고, 집에 있는 맥 미니에 다다다다 영상 편집 지시 내리고, 다시 구글 드라이브로 받아서 영상 확인하고, 유튜브에 영상 업로드하고, 챌린지를 운영하는 Devpost에 게시물 업로드하고... 이 많은 일을 Fable 시켜서 동시다발적으로 엄청난 속도로 처리하고 마감 30분쯤 전인 4시 33분에 제출을 완료했더랍니다. 제 인생에서 아마 가장 짜릿한 금요일 퇴근 중 하나가 아니었나 싶습니다. ㅎ

결과는 다음 주에

한편 챌린지 결과는 다음 주에 나옵니다. 어제 Devpost 갤러리가 열렸는데 2천 건 넘게 접수됐더라고요. 수상 기대는 솔직히 말하면 아주 쬐금 하고 있긴 한데... 떨어지더라도 이미 저한텐 좋은 경험이 되었습니다! 난생처음 참여해 본 온라인 해커톤이었는데 과정 자체도 스릴 있었고 웹앱의 완성도도 높였으니까요.

아직도 길동무 업그레이드 아이디어가 많습니다! 진짜 원하는 기능 구현을 위해선 지자체들도 도와줘야 하고요. ㅎ 정책 관련 얘기는 나중에 따로 한번 해 보겠습니다. 아무튼 이 프로젝트가 계속 발전할 수 있도록 많은 앱 다운로드와 관심 부탁드립니다!

시연 영상

링크

길동무를 오픈소스로 공개했습니다

길찾기 앱 '길동무'를 출시하면서 소스 코드도 공개하겠다고 말씀드렸었는데요. 지난 17일에 저장소를 public으로 전환하고 MIT 라이선스로 공개했습니다.

저장소에서 확인할 수 있는 것은 이런 것들입니다.

  • 웹앱, iOS 앱, CLI, MCP, 테스트 코드 (약 11만 줄)
  • 실시간 도보 안내 판정 로직
  • 서울시 음향신호기, 서울 지하철역 음성유도기, 전국 도시철도역 등 공공데이터와 오픈스트리트맵에서 뽑은 전국 횡단보도·점자블록 (각각 라이선스가 다름)
  • 개발 과정에서 Claude가 작성한 설계, 조사 등 각종 문서 200여 개

길동무를 개발하면서 공공데이터와 오픈소스의 힘을 엄청나게 많이 느끼고 있는 중입니다.

공공데이터와 공공 API

먼저, 공공 API인데요. 길동무 앱에서는 버튼 하나만 눌러도 현재 도착하고 있는 마을버스 정보까지 정확히 확인할 수 있는데요. 마을버스와 시내버스 도착 정보는 물론이고 지하철 열차 위치, 따릉이 잔여 대수, 역 엘리베이터와 장애인 화장실, 여행지 무장애 편의시설, 날씨와 미세먼지 같은 정보들은 모두 공공데이터포털, 서울열린데이터광장 등에 공개되어 있는 API를 통해 실시간으로 가져 옵니다.

그리고 음향신호기, 음성유도기, 도시철도역 목록은 각각 서울시, 서울교통공사, 국가철도공단이 공개한 공공데이터에서, 횡단보도와 점자블록 데이터는 영국의 비영리 재단이 운영하는 오픈스트리트맵에서 가져왔습니다.

오픈소스 코드

코드야 말할 것도 없습니다. 특히 웹 쪽이 그런데요. 웹앱은 Vercel의 Next.js와 메타의 React로 만들고, 코드는 마이크로소프트의 TypeScript로 쓰고, 자동 테스트는 개발자 커뮤니티가 만든 Vitest로 돌리는데요. 모두 오픈소스로 공개된 것이라 비용도 승인 요청도 필요하지 않았습니다.

그동안 수많은 사람들이 이 많은 API, 데이터, 코드베이스를 구축하기 위해 한땀 한땀 정보를 모으고 코드를 짰을 텐데요. 그 결과를 모두 무료로 공개해 준 덕분에 저는 이것들을 길동무 앱이라는 하나의 그릇에 모으고 접근성 기반 앱이라는 정체성을 만들 수 있었던 것입니다.

민간 기업의 몫

물론 민간 기업의 몫도 큽니다. 핵심 기능에 해당하는 장소 검색과 길찾기는 카카오, 네이버, 티맵, ODsay의 API를 쓰고 있고, iOS 앱은 애플이 만든 프레임워크로 개발했습니다. 채팅은 구글의 Gemini, 웹 검색은 Perplexity, 웹앱의 음성 받아쓰기는 Deepgram 기반이고요. 이 API들은 비록 상용이긴 하지만 특히 지도 쪽은 무료 한도가 넉넉하고, AI 쪽도 비용이 저렴한 편이어서 앱을 무료로 배포할 수 있었습니다. (제가 부담하는 비용이 0이란 것은 아닙니다 :) ㅎ)

AI와 공공재

한편, 여기서 다시 발견하게 되는 사실은 AI가 이 모든 걸 다 혼자 만들어 주는 게 아니라, 이 데이터와 도구들을 발견하는 것을 도와주고, 그것들을 조립하고 검증해 주는 역할을 한다는 점인데요. 사실 그 AI란 것도 기존에 웹에 공개되어 있던 수많은 공공재가 가장 기초적인 학습 데이터였을 테니 본질적으로 공공이 공공을 낳고 있는 셈이긴 합니다.

공공의 것은 공공에게

바이브코딩으로 길동무 앱을 만들면서 이렇게 공공의 가치를 또 배웠습니다.

앞으로

앞으로 이 앱에 붙이고 싶은 기능들이 많은데요. 혼자의 힘으로 어디까지 갈 수 있을지는 모르겠지만 더 많은 분들이 이런 프로젝트를 열어 주신다면 서로 건설적인 피드백을 주고받으며 개발할 수 있지 않을까 싶습니다. 그리고 이 앱은 스크린리더 사용자에 초점을 맞추었지만, 휠체어장애인, 청각장애인, 지적장애인 등에 대한 맞춤형 앱들이 더 많이 나와주었으면 하는 바람이고요. 아무쪼록 접근성 내비게이션이라는 분야가 길동무 하나가 아니라 생태계로 커지는 데 이 코드가 밑거름이 되면 좋겠습니다.

링크

길동무에 실시간 도보 안내 기능을 추가했습니다

스크린 리더 사용자를 위한 전용 길찾기 앱, '길동무'를 앱 스토어에 출시한 지 보름여가 지났네요. 앱 스토어 통계를 보면 지금까지 130명 이상이 다운로드해 주셨고, 대부분 한국이지만 미국에서도 여섯 번 다운로드가 있었습니다. 제가 아직 분석 툴을 제대로 갖추고 있는 것은 아니어서 정확한 확인은 어렵지만, 웹앱, CLI, MCP 사용자는 그만큼 많은 것 같지는 않고요. 아무튼 앱을 출시한다는 것과 그것이 많은 사용자에게 쓰인다는 것은 전혀 다른 문제라는 것을 알기에 이 정도 숫자는 많지도, 적지도 않은 딱 적당한 숫자인 것 같습니다! ㅎ

그동안 주변에서 몇몇 분들이 피드백을 주셨는데요. 가장 많이 들었던 이야기가 실시간으로 길 안내를 해주는 기능은 없냐는 것이었습니다. 저도 이 앱을 만들기 시작한 초기 단계부터 실시간 길 안내 기능을 여러모로 연구해 왔고, 공개되어 있는 데이터와 API를 어떻게 조합하면 정확하면서도 쓰기 편한 앱이 될지 고심을 많이 했는데요. 수많은 테스트 끝에 드디어 iOS 앱 1.7 버전에서 도보 안내 기능을 공식 업데이트로 배포했습니다. 이미 앱을 사용 중이신 분들은 길찾기 탭을 열어 보시면 공지를 만나실 수 있습니다. 만약 아직 공지가 뜨지 않는다면 앱을 업데이트하신 후에 확인해 보실 수 있고요. 제가 공지에도 적었듯 GPS와 API, 데이터의 한계가 있으므로 익숙한 곳에서 먼저 사용해 보시길 권합니다!

실시간 도보 안내 기능은 저도 종종 사용하는 '보행자용 지도, 내비게이션' 앱과 한때 사용해 보았던 '블라인드스퀘어' 앱에서 아이디어를 많이 얻었고요, 아마 그런 앱들을 사용해 보신 분들이라면 간편하게 사용하실 수 있을 것입니다. 실제로 저도 거의 매일매일 사용하고 있고요, 이 기능을 통해서 평소에 출퇴근하던 길도 조금 더 빠르게, 조금 더 편하게 걷고 있습니다.

참고로 이 앱에서 공을 많이 들이고 있는 것 중 하나가 어떻게 하면 화면을 탭하는 횟수를 최소화할 수 있을까 하는 점인데요. 장소를 검색하고, 경로를 조회하고, 도보 안내를 켜는 과정, 그리고 길을 걸어가면서 확인하는 과정 모두에서 화면을 너무 자주 만지지 않아도 되게끔 자동 초점 이동이 자연스럽게 일어나도록 설계했고, 자주 가는 경로는 최근 목록에서 고정할 수 있게 했습니다. 이동하는 동안 안내 화면을 보이스오버로 일일이 탐색하지 않아도 남은 거리와 다음에 할 일을 주기적으로 사운드 효과와 음성으로 알려주도록 만들었고요, 그리고 안내를 받는 동안에는 앱이 백그라운드에서도 동작하게 했습니다. 이동하는 동안 화면을 잠그고 주머니에 넣으셔도 사운드 효과는 들으실 수 있습니다.

아직 부족한 부분이 많겠지만 그래도 많이들 사용해 보시면서 피드백을 주시면 꾸준히 개선하도록 하겠습니다.

앱 다운로드 방법

아이폰에서 App Store를 열고 '길동무'로 검색하시면 '길동무: 텍스트 기반 접근성 길찾기 앱'이 나옵니다. App Store에서 길동무 내려받기 링크로 바로 들어가셔도 됩니다.

아이폰을 쓰지 않으시더라도 웹 브라우저에서 길동무 사용하기로 이용하실 수 있습니다.

터미널에서 쓰시는 분들을 위한 명령줄 도구와, AI 도구에 연결해 쓰는 MCP 서버도 함께 공개해 두었습니다. npm install -g gildongmu로 명령줄 도구를, npm install -g gildongmu-mcp로 MCP 서버를 설치하실 수 있습니다.

길찾기 앱, '길동무'를 소개합니다

스크린 리더 사용자를 1차 사용자로 설계한 대한민국 길찾기 앱

'길동무'는 시각장애인으로서 늘 느꼈던 '주소와 전화번호를 빨리 찾고 싶다'는 페인 포인트를 해소하기 위해서 만들기 시작한 앱입니다. 시각장애인 입장에선 어딘가로 이동하기 위해서 주소가 필요하고, 그곳의 컨디션을 확인하기 위해서 전화 통화를 하는 것이 가장 빠르죠. 그 두 가지를 최대한 단순한 UI로 구현하고 싶었습니다. 이 기본 기능들은 카카오맵, 네이버지도, 주소 API를 연결하니 해결됐습니다.

이미지: 길동무 앱의 장소 상세 화면. 제목은 경복궁이고 분류는 '여행 > 관광,명소 > 문화유적 > 고궁,궁'이다. 도로명 주소 '서울 종로구 사직로 161'과 지번 주소 '서울 종로구 세종로 1-1'이 각각 복사 버튼과 함께 놓여 있고, 그 아래 '전화 걸기, 02-3700-3900'과 '이 장소에 관해 물어보기' 버튼이 있다. 길찾기 섹션에는 여기까지 길찾기, 네이버 지도 길찾기, 카카오맵 길찾기, 자동차 경로 미리 듣기, 대중교통 경로 미리 듣기가 차례로 이어진다.

▲ 장소 상세 화면. 주소 복사와 전화 걸기가 한 화면에 있습니다.

그런데 만들다 보니 욕심이 더 생겼습니다. 아이랑 밖을 다니다 보면 급하게 근처 상황을 파악해야 할 때가 많은데요. 아이 놀 곳을 찾는다든지, 때론 근처 소아과를 찾는다든지요. 그래서 카카오맵 API에 서울시, 심평원 같은 공공데이터를 얹어서 내 주변을 빠르게 탐색하고 확인할 수 있는 UI를 추가했습니다. 주변 지하철 도착 정보, 버스 도착 정보, 따릉이 대여소, 소아 야간·휴일 진료, 무장애 관광지, 아이 놀 곳 등을 바로 확인하실 수 있습니다.

이미지: 길동무 앱의 지하철 도착 화면. 맨 위에 '둔촌동, 5호선, 414m'가 있고 그 아래 '5호선, 방화행 - 강동방면, 10분 후 (거여)', '5호선, 마천행 - 올림픽공원(한국체대)방면, 5분 후 (광나루(장신대))'처럼 노선과 방면, 도착 시간이 한 줄에 하나씩 나열된다. 이어서 '중앙보훈병원, 수도권 도시철도 9호선, 760m'와 '길동, 5호선, 892m'가 거리순으로 이어진다.

▲ 내 주변 지하철 실시간 도착.

그런데 이렇게 만들고 나니 뭐가 빠진 느낌이 들었습니다. 바로 이 앱의 정체성인 길찾기 기능이죠. 구현이 까다로울 것 같아서 미루기도 했지만 결국은 구현했습니다. 중요한 건 목적지까지의 경로를 텍스트로 안내받는 것이었습니다. 시중의 지도 앱들은 그래픽 UI를 기본으로 하는데요. 시각장애인에겐 불필요한 정보일 뿐 아니라 화면 탐색에 오히려 방해가 되죠. 다행히도 카카오, Tmap, ODsay가 길찾기 API를 제공하더라고요. 그래서 당장 연결했습니다. 특히 카카오는 최근 출시한 도보 경로 API에서 계단을 피해 가는 경로까지 따로 요청할 수 있게 해 놓았더라고요. 예를 들어, 경복궁역부터 서울맹학교까지 입력하면 도보 경로를 이런 식으로 안내합니다.

총 1.4km, 약 24분

  1. 경복궁역 2번 출구까지 역사 내 이동
  2. 경복궁역 2번 출구 진출 후 356m 이동(자하문로)
  3. 새마을금고 앞에서 횡단보도 이용, 음향신호기 있음
  4. 오토포토 서촌 앞에서 신한은행까지 214m 이동
  5. 신한은행 앞에서 횡단보도 이용, 음향신호기 있음
  6. 종로 프라자약국 앞에서 신교동교차로까지 253m 이동(자하문로)
  7. 신교동교차로에서 횡단보도 이용, 음향신호기 있음
  8. 종로아이존 앞에서 320m 이동(필운대로)
  9. 오른쪽길로 42m 이동(필운대로13길)

완벽하진 않지만 대강의 경로는 머릿속에 그릴 수 있습니다.

이미지: 길동무 앱의 길찾기 화면. 출발지는 '현재 위치(서울특별시 강동구 풍성로65길 39-6 부근)', 도착지는 '경복궁'이고 '3개 수단의 경로 안내가 준비되었습니다'라는 안내가 뒤따른다. 대중교통은 '약 50분, 요금 1,750원, 환승 1회, 도보 14분'으로 요약된 뒤 도보 6분, 수도권 5호선 둔촌동 승차 종로3가 하차 15개 역 29분, 수도권 3호선 종로3가 승차 경복궁 하차 2개 역 4분, 도보 5분으로 구간이 이어진다. 그 아래 자동차 경로가 '총 17.2km, 약 53분, 택시 요금 약 22,100원'으로 표시된다.

▲ 대중교통, 자동차, 도보를 한 화면에서 비교합니다.

그리고 이에 더해 투박한 문장 대신 조금 더 친절한 안내를 받을 수 있도록 Gemini API를 이용하여 채팅 기능을 붙였습니다. Gemini는 길찾기 기능뿐 아니라 이 앱에서 사용하는 대부분의 기능을 도구 호출로 정보를 가져와 자연스럽게 답변해 줍니다. 채팅을 구현하면서 생각했던 건 서울 다산콜센터였는데요. 120번으로 전화해서 물어보면 뭐든지 빨리 찾아서 대답해 주는 그 편의성을 Gemini가 대신하는 걸 목표로 만들었습니다. 학습한 지식이 아닌 도구 호출을 통해 답변해 주니까 정확도는 높습니다. 쉽게 말해 Gemini가 이 앱을 사용해서 답변해 준다고 보시면 됩니다.

이미지: 길동무 앱의 AI 채팅 화면. '강동역 근처 맛집 알려줘'라는 질문에 강동호치민(베트남음식), 꿀꿀진순대국 강동본점(순대), 소문난사골칼국수(칼국수), 율베이커리(제과/베이커리), 코쿤 성내점(일식), 2.5짜장 성내본점(중국요리) 여섯 곳을 상호와 주소로 답했다. 이어서 강동역 주변 공기질을 통합대기환경지수 좋음 32, 미세먼지 좋음 19, 초미세먼지 좋음 5로 알려 준다. 화면 아래에는 메시지 입력창과 받아쓰기 버튼, 보내기 버튼이 있다.

▲ 도구를 호출해 답하는 AI 채팅.

그리고 또 한 가지 신경을 많이 쓴 UI가 받아쓰기 기능입니다. 웹앱에는 경험상 받아쓰기 정확도가 매우 좋았던 Deepgram API를 붙였고, iOS 앱에는 아이폰이 자체적으로 처리하는 온디바이스 인식을 썼습니다. 그래서 앱에서 받아쓴 음성은 기기 밖으로 나가지 않습니다. 사용법에는 일반적인 탭으로 시작하고 종료하는 토글 방식뿐 아니라 와츠앱에서 사용하는 누른 채 녹음하기(push to talk) 방식도 구현했습니다. 개인적으로는 누른 채 입력하는 방식이 마음에 들어서 사용하고 있습니다. 받아쓰기 방식은 설정에서 선택하실 수 있습니다.

마지막으로 이 모든 걸 iPhone으로 간편하게 처리하고 싶었습니다. 그래서 iOS 앱을 만들었습니다. 이제 앱스토어에서 '길동무'로 검색해 설치하실 수 있습니다. 그리고 터미널에서 AI 에이전트가 호출해서 사용할 수 있게 하고 싶었습니다. 그래서 CLI와 MCP도 만들었고요. 그리고 컴퓨터에서 사용하시는 분을 위해 웹앱도 지속 업데이트하고 있습니다. 웹앱은 최근 트렌드를 따라 옴니박스 형태로 구현하여 iOS보다도 미니멀한 UI로 사용하실 수 있습니다.

'길동무'는 현재 한국어, 영어, 프랑스어, 스페인어, 이탈리아어, 일본어, 6개국어를 지원합니다. 외국에서 한국으로 여행 오시는 시각장애인도 편하게 사용하실 수 있습니다. 로그인은 필요하지 않고, 그 어떤 개인정보도 길동무 서버에 저장하지 않습니다. 단, 채팅은 Gemini 서버로 전송되므로 개인정보 동의 후 사용하실 수 있습니다.

'길동무'는 제가 처음으로 만든 iOS 앱이자, 처음으로 일반 대중에게 공개하는 앱입니다. 처음 커밋부터 앱스토어 배포까지 49일 걸렸고, 코드 규모는 약 4만 9천 줄, 오늘까지 커밋은 861개입니다. 제가 AI 페어 코딩으로 혼자 개발했고, 화면을 전혀 보지 않고 스크린 리더로만 작업했습니다. 카카오부터 기상청, 국립중앙의료원까지 19개 곳에서 30종의 API·데이터 소스를 통합했고, 그중 공공데이터 API는 17개입니다. 비용은 0원, 광고는 없습니다.

부족한 것이 많지만, 많이 사용해 주시면 감사하겠습니다! 추후 발견되는 버그나 문제점은 최대한 빨리 대응하도록 하겠습니다.

설치와 이용

iOS 앱

https://apps.apple.com/kr/app/id6792234349

앱 스토어에서 '길동무'로 검색하셔도 됩니다. iOS 26 이상에서 설치되고 크기는 2.8MB이며, 175개국에서 내려받으실 수 있습니다.

웹앱

https://gildongmu.dodoplanet.space

설치 없이 브라우저에서 바로 쓰실 수 있습니다.

터미널에서 쓰는 CLI

npm install -g gildongmu

설치하면 gildongmu, 짧게는 gil 명령을 쓸 수 있습니다. gil search "맥도날드", gil route walk "길동역" "강남역", gil nearby subway --near "강동역" 같은 식입니다.

AI 에이전트가 쓰는 MCP 서버

Claude Code라면 아래 한 줄로 등록됩니다.

claude mcp add gildongmu -- npx -y gildongmu-mcp

Cursor나 Cline 등은 mcpServers 설정에 command를 npx로, args를 ["-y", "gildongmu-mcp"]로 넣으시면 됩니다. 길동무의 도구 24종을 그대로 부를 수 있습니다.

CLI와 MCP 서버는 길동무의 공개 API를 그대로 부르는 얇은 클라이언트라, 계정이나 API 키 없이 바로 쓰실 수 있습니다.

주석

아래 수치는 2026년 7월 31일 길동무 리포지토리에서 스크립트로 실측했거나 App Store 공개 정보에서 조회한 값이다.

  • 개발 기간 49일: 첫 커밋 2026년 6월 12일, App Store 승인 7월 30일. 첫날을 1일로 세어 49일째다.
  • 코드 약 4만 9천 줄: 웹 34,352줄, iOS 11,026줄, CLI·MCP 3,992줄을 합한 49,370줄. 그중 웹 코드는 45%가 테스트다. 자동 테스트는 1,522개이고, 매 커밋 전부 통과해야 병합한다.
  • API 30종·19곳: 카카오와 카카오모빌리티, 네이버와 네이버클라우드를 각각 한 곳으로 묶어 센 값이다. 법인 단위로 세면 21곳이 된다. 공공데이터포털(data.go.kr) 키로 호출하는 API가 12종, 서울 열린데이터광장이 5종으로, 통합한 소스의 절반 이상이 공공데이터다.
  • 도보 경로 예시: 2026년 7월 31일 경복궁역에서 국립서울맹학교 종로캠퍼스까지 실제로 조회한 응답이다. 총 1,380m, 약 24분으로 안내됐다.
  • "음향신호기 있음": 서울시가 공개한 음향신호기 16,822개 좌표를 앱에 내장해 두고, 경로의 횡단보도 좌표와 40m 안에서 만나면 붙인다. 여러 횡단보도가 한 문장으로 묶인 단계는 어느 곳인지 특정할 수 없으므로 아무 말도 하지 않는다.
  • 계단을 피하는 경로: 웹에서 먼저 쓸 수 있고, iOS 앱에는 출시 직후 이식해 다음 버전부터 들어간다.
  • 스토어 제품 페이지의 "손쉬운 사용" 항목에 VoiceOver 지원을 등록해 두었다. 설치 전에 확인할 수 있다.