위험 지도를 그리다
5부를 시작하며
27편까지 방법을 이야기했다. 5부에서는 그것이 실제로 어떤 모습인지, 그리고 이 프로젝트가 어디로 가는지 정리한다.
이 편의 주제는 보여주기다. 모인 정보를 어떻게 화면에 올릴 것인가. 그리고 이건 기술 문제가 아니라 대체로 판단의 문제다.
27편에서 정한 원칙 때문이다. 우리는 “위험”이라고 말하지 않는다. 그러면 지도에 무엇을 표시하는가.
표시하지 않기로 한 것들
먼저 뺀 것부터 정리한다. 각각 뺀 이유가 있다.
① 위험 등급. 빨강/노랑/초록 신호등. 가장 직관적이고 가장 하고 싶은 표현이다.
뺀 이유 — 우리는 판정할 수 없다. 빨강은 근거 없는 단정이고, 초록은 26편에서 말한 대로 보증할 수 없는 정보다.
② 안전 표시. 이상 없음이 확인된 구간을 초록으로.
뺀 이유 — 26편의 ④ 칸. “조용함”은 “안전”이 아니라 “모름”이다. 초록으로 표시하면 사람들이 그 구간을 안심하고 지나갈 것이고, 그건 우리가 만들어낸 잘못된 확신이다.
③ 예측. “이 구간은 3개월 내 함몰 가능성 있음” 같은 표현.
뺀 이유 — 근거가 없다. 이런 예측을 하려면 실제 붕괴 사례로 학습해야 하고, 22편에서 봤듯 그 데이터는 없다.
④ 개별 신고자 정보. 누가 표시했는지.
뺀 이유 — 13편의 개인정보 원칙. 그리고 이웃 간 갈등을 만들 수 있다.
표시하기로 한 것들
그럼 무엇을 보여주나. 네 층이다.
층 1: 사실 그대로
신고 위치와 수. “이 구간에 표시 12건.” 판정이 아니라 사실이다.
시간 분포. 언제 표시되었는지. 최근 몇 주에 몰려 있는지, 오래 전부터 꾸준한지. 10편의 두 번째 축을 사용자가 직접 볼 수 있게 한다.
통과 기록 수. “최근 한 달간 이 구간 통과 40회.” 이게 커버리지 표시다.
이 층의 특징은 해석이 없다는 것이다. 숫자만 있다. 사용자가 스스로 읽는다.
층 2: 맥락
숫자만 있으면 읽기 어렵다. 그래서 비교 기준을 준다.
주변 대비. “이 구간의 표시 밀도는 인근 평균보다 높습니다.”
자기 과거 대비. “이 구간의 표시가 최근 3주간 늘었습니다.”
두 비교 모두 절대 판정을 피하면서 이례성을 알려준다. 그리고 이건 3부에서 신호를 다룰 때 쓴 방식과 같다. 절대값이 아니라 상대 변화.
층 3: 근거
어떤 구간이 목록에 올랐다면, 왜 올랐는지 보여준다.
- 몇 명의 서로 다른 사람이 표시했는지
- 그 표시가 며칠에 걸쳐 있는지
- 신호에도 대응하는 변화가 있는지 (26편의 ① 칸인지 ② 칸인지)
- 알려진 구조물과 겹치는지
근거를 보여주면 판단을 사용자에게 넘길 수 있다. 27편에서 정한 방식이다. 위키가 결론이 아니라 출처를 주는 것과 같다.
층 4: 무엇을 모르는지
이 층이 특이하고, 우리가 중요하게 보는 부분이다.
데이터가 부족한 구간을 표시한다. 회색으로. “이 구간은 통과 기록이 적어 판단할 수 없습니다.”
18편에서 정리한 구조적 한계 — 정체 구간, 교차로, 이면도로가 배제된다는 것 — 를 감추지 않고 지도에 표시한다.
왜 이걸 보여주나. 두 가지 이유다.
첫째, 없는 것을 없다고 말하지 않기 위해서다. 표시가 없는 구간과 데이터가 없는 구간은 완전히 다르다. 구분하지 않으면 사용자가 후자를 전자로 오해한다.
둘째, 참여를 유도한다. “이 구간은 데이터가 부족합니다”는 그 길을 지나는 사람에게 기여할 자리를 알려준다.
지도의 실제 모습
이걸 조합하면 지도가 이런 모습이 된다.
- 표시가 쌓인 구간 — 색이 아니라 점의 밀도로. 판정이 아니라 사실의 축적으로 보이게
- 최근 늘어난 구간 — 별도 강조. 시간 변화가 우리 핵심 지표이므로
- 알려진 구조물 — 별도 아이콘. 과속방지턱임을 명시해서 오해를 줄임
- 데이터 부족 구간 — 회색 처리
- 각 구간 탭하면 — 층 3의 근거가 펼쳐짐
색으로 등급을 매기지 않는 것이 핵심 결정이다. 색은 판정으로 읽힌다. 밀도와 강조는 사실로 읽힌다.
이 설계의 대가
정직하게 말하면 이 설계는 덜 인상적이다.
빨강/초록 지도는 한눈에 이해된다. 우리 지도는 읽어야 한다. 사용자가 스스로 판단해야 하고, 그건 불편하다.
그리고 사업적으로도 불리하다. “위험 구간 12곳 발견”이 “표시가 쌓인 구간 12곳”보다 훨씬 잘 팔린다.
그럼에도 이 선택을 유지하려 한다. 이유는 27편에서 정리한 오경보의 비용이다. 특히 신뢰 상실. 한 번 근거 없는 경고로 신뢰를 잃으면, 나중에 진짜 필요한 경고도 무시된다.
우리 데이터의 강도가 아직 단정할 만하지 않다. 그렇다면 표현도 그에 맞아야 한다. 데이터가 강해지면 표현도 강해질 수 있다. 순서를 뒤집으면 안 된다.
지도 밖의 출력
마지막으로, 지도가 유일한 출력이 아니다.
민원용 요약. 어떤 구간의 기록을 문서로 정리해서 내려받을 수 있게 한다. 주민이 관리 기관에 제출할 수 있는 형태. 7편에서 “1단계가 그 자체로 쓸모 있어야 한다”고 한 것의 구체적인 모습이다.
관리 기관용 목록. 27편에서 말한 전달 경로. 확인 우선순위 목록을 조회할 수 있는 창구. 아직 만들지 못했고, 협력이 필요하다.
내 기여 기록. 사용자가 자기가 표시한 것들과 그것이 어떻게 되었는지 볼 수 있게. 12편의 이력 원칙이 사용자 쪽에서도 적용된다.
다음 편에서 앱과 데이터 구조를 정리한다.
다음 편 예고 — NumTerra 해부 — 앱과 데이터 파이프라인. 실제로 무엇이 만들어져 있고 무엇이 계획인지 구분해서 정리한다.
「우리 동네가 먼저 안다」는 5부 30편으로 이어집니다. 지금 읽은 글은 5부 도시로의 1번째(전체 제28회)입니다.
연재 전체 목차 펼쳐보기
왜 못 잡았나
1~6회사람이 먼저
1단계7~13회신호 읽기
14~21회physical AI
2단계22~27회도시로
28~30회- 28위험 지도를 그리다지금 읽는 중
- 29NumTerra 해부 — 앱과 데이터 파이프라인읽는 데 9분
- 30스스로 감지하는 도시읽는 데 9분