지도에서 지역을 고르면 검증된 코스를 랜덤으로 뽑아 경로까지 그려 주는 국내 여행 앱. 광고는 넣지 않는다.
애매한 결정이 나오면 여기로 돌아온다. 이 문장이 앱의 모든 규칙을 낳았다.
레퍼런스로 본 지도형 앱들은 모두 이 세 단계를 거친다. 단계마다 하는 일이 다르므로 화면도 달라야 한다. 훑을 때 정보를 다 펴면 눈이 지치고, 결정할 때 정보가 없으면 못 고른다.
부동산 앱이 그 자리에 가격을 쓰듯 우리는 시간을 쓴다. 메뉴 가격도 숙소 요금도 받아올 경로가 없어서 예산(가성비·럭셔리) 축은 폐기했다. 모르는 것을 그럴듯하게 적는 게 제일 나쁘다. 가격을 실제로 받게 되면 넣는다.
우리는 랜덤 추천만 한다. 그 다음은 사용자 것이다. 추천을 그대로 쓰는 사람보다 고쳐 쓰는 사람이 많을 것이고, 그게 정상이다.
코스를 만들 때 쓰는 규칙을 제안 형태로 내놓는다. 고치지는 않는다. 경고가 아니라 알림이다 — 무엇이 좋은 여행인지는 사용자가 정한다.
사용자가 짠 루트를 올리고, 다른 사람이 담아 쓰고, 다녀와서 별점을 남긴다. 그중 좋은 것은 우리 추천 코스로 승격시킨다. 다만 인기 하나로 올리면 우리 원칙이 무너진다 — 사용자 루트는 인증 음식점도, 60분 규칙도, 실측 경로도 지키지 않는다.
실제로 재봤다. 사람이 아무렇게나 이어붙인 루트 300개를 우리 검증기에 넣으면 6%만 통과한다.
사용자 루트로 계속 남는다. 인기가 있다는 건 그 자체로 값진 정보다. 다만 ✓ 검증됨 딱지를 못 붙일 뿐이다.
떨어진 이유는 작성자에게 알려 준다 — “점심 식당이 인증된 곳이 아니에요”. 고쳐서 다시 올릴 수 있다.
광고가 없으니 수익도 없다. 서버가 무료 티어를 넘으면 그때부터 손해다. 그래서 코스 추천·경로·지점은 전부 앱 안에서 처리하고, 서버는 루트 공유·리뷰·신고만 받는다.
앱을 만들기 전에 데이터를 먼저 완성했다. 코스·순서·이동시간이 전부 검증을 통과한 것만 들어 있고, 앱은 그것을 읽어 보여주기만 한다.
고용량 게임이 하는 방식이다. 스토어 용량 제한을 피하려는 게 아니라 앱 업데이트 없이 코스를 갱신할 수 있다는 게 더 크다 — 지금 실측이 27%인데 채워질 때마다 이동시간이 정확해진다. 스토어 심사 없이 내보낼 수 있고, 커뮤니티 승격 루트도 같은 길로 들어온다.
사진 2,404개를 낱개로 주면 요청 수에서 막힌다. 시도별 16묶음으로 준다 — 경기 29.4MB · 서울 27.8 · 전남광주 16.4 · 강원 14.9 …
TourAPI 주소를 그대로 쓰면 앱이 켜질 때마다 남의 서버를 부른다. 느리고, 주소가 바뀌면 사진이 통째로 사라지고, 오프라인에서 안 뜬다. 받아서 줄여 앱에 넣는다 — 런타임 호출 0 이라는 원칙과 같다.
음식·숙박 사진은 갖지 않는다. 저작권이 확실히 걸리고, 사용자도 우리 사진보다 실제 리뷰 사진을 본다. 네이버 플레이스로 넘긴다.
처음엔 ‘위키 문서가 있는가’로 매겼다. 있기만 하면 되니까 아무도 안 가는 곳이 코스에 들어왔다. 그래서 실제 관심도를 쟀다.
둘 중 하나만 좋아도 인정한다. 조회수 하나로 잘랐으면 송지호해수욕장을 버리고 인천공항을 넣을 뻔했다.
동행은 코스를 나누는 축이 아니라 거르는 태그다. 동행마다 따로 만들어 봤더니 거의 같은 코스가 세 벌 나왔다. 코스는 한 번만 만들고, 누구에게 맞는지만 표시한다.
4번이 5·6번보다 앞인 이유: 지점 상세나 리뷰가 없어도 루트를 짤 수 있지만, 그 반대는 아니다.