NumTerra
제28회 / 30편 5부 도시로
우리 동네가 먼저 안다/5부 도시로/제28회

위험 지도를 그리다

2026-08-20 · 읽는 데 9분

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부

왜 못 잡았나

1~6회
  1. 01그 도로는 어제도 멀쩡했다읽는 데 8분
  2. 02도로를 재는 기술은 이미 오래됐다, 그런데 왜읽는 데 9분
  3. 03포트홀과 싱크홀은 다른 문제다읽는 데 8분
  4. 04표면이 아니라 아래에서 일어나는 일읽는 데 8분
  5. 05공동은 어떻게 자라는가읽는 데 9분
  6. 06비용·주기·깊이 — 기존 방식의 삼중 한계읽는 데 8분
2부

사람이 먼저

1단계7~13회
  1. 07매일 그 길을 지나는 사람읽는 데 8분
  2. 08\"쿵\" 하는 그 순간, 무슨 일이 일어났나읽는 데 9분
  3. 09느낌을 데이터로 바꾸기 — 신고 버튼의 설계읽는 데 9분
  4. 10동네에 깃발을 꽂다읽는 데 8분
  5. 11한 사람의 착각, 백 사람의 확신읽는 데 9분
  6. 12위키는 어떻게 틀린 정보를 걸러내는가읽는 데 9분
  7. 13누구의 신고를 믿을 것인가 — 신뢰 점수읽는 데 9분
3부

신호 읽기

14~21회
  1. 14진동은 무엇을 말하는가읽는 데 9분
  2. 15주머니 속 가속도계라는 센서읽는 데 9분
  3. 16시간을 주파수로 — 푸리에 변환읽는 데 10분
  4. 17라플라스 변환과 시스템의 응답읽는 데 9분
  5. 18가다서다 — 도심 주행이라는 소음읽는 데 9분
  6. 19차량마다 다른 조건, 정규화의 문제읽는 데 9분
  7. 20같은 지점을 수백 번 지나간다는 것읽는 데 9분
  8. 21미약한 신호를 건져 올리는 법읽는 데 9분
4부

physical AI

2단계22~27회
  1. 22드문 재난을 어떻게 학습하는가읽는 데 9분
  2. 23시뮬레이션으로 데이터를 만든다읽는 데 9분
  3. 24physical AI란 무엇인가읽는 데 9분
  4. 25사람의 '물컹함'을 기계에 가르치기읽는 데 10분
  5. 26사람의 신고와 기계의 신호가 만나면읽는 데 9분
  6. 27오경보와 놓침 사이 — 임계값의 윤리읽는 데 9분
5부

도시로

28~30회
  1. 28위험 지도를 그리다지금 읽는 중
  2. 29NumTerra 해부 — 앱과 데이터 파이프라인읽는 데 9분
  3. 30스스로 감지하는 도시읽는 데 9분