소개
도시빅데이터를 연구하면서 서울시 생활인구 데이터를 자주 분석합니다. 기존 방식은 이랬습니다:
서울 열린데이터광장에서 CSV 수동 다운로드
Excel에서 피벗 테이블로 시간대별/요일별 정리
차트 만들어서 한글 문서에 복사-붙여넣기
날씨 영향을 보려면 기상청 사이트를 별도로 열어서 수동 비교
자치구 하나당 매번 2~3시간, 동 단위 분석은 엄두도 못 냄
대시보드
과정
Claude Code에게 "서울시 생활인구 시뮬레이션 HTML 만들어줘" 한마디로 시작했습니다. 한 세션 안에서 4단계로 진화했습니다.
1단계: 가짜 데이터로 시작
처음 나온 건 JavaScript 랜덤값으로 만든 가상 시뮬레이션이었습니다. 히트맵, 바차트, 도넛차트까지 있는 꽤 그럴듯한 화면. 그런데 로그에 "API 연결 중... openapi.seoul.go.kr"이 뜨길래 물었습니다.
"API 연결 진짜 한거야?"
Claude: "아닙니다. 가짜입니다." — 솔직한 답변. 연출용 텍스트였습니다.
2단계: 진짜 서울시 API 연동
"해줘" 한마디에 서울 열린데이터광장 API 키 발급 과정까지 안내받았습니다. 키를 알려주자 바로:
SPOP_LOCAL_RESD_JACHIAPI로 25개 자치구 실시간 호출7일치 데이터 자동 수집 + 연령대별 남녀 비율 분석
API 키는 secret.md에 안전하게 저장 + .gitignore 등록
3단계: 실제 기상 데이터 연동
"실제 기상예보 데이터를 감안하여 만들어줘" 라고 요청하자, Claude가 Open-Meteo API(무료, 키 불필요)를 스스로 찾아서 연동:
7일 기상 카드 (날씨 아이콘 + 기온 + 강수량 + 인구 영향도%)
기상 조건별 자동 보정 로직:
폭우 50mm+ → 인구 -40%
한파 -10°C → 인구 -22%
쾌청 20°C → 인구 +8%
기온 vs 인구 상관관계 산점도
5개 가상 시나리오(폭우/폭염/한파/폭설/쾌청) 시뮬레이션
4단계: "동별로도 가능해?" → 진짜 됐습니다
가볍게 물었더니 Claude가 SPOP_LOCAL_RESD_DONG API를 자동으로 찾아냈습니다.
서울시 전체 424개 동 지원
구 선택 시 해당 동 목록 자동 로드
동별 인구 랭킹 (바 차트)
개별 동 시간대별 상세 분석
강남구만 해도 역 삼1동, 청담동, 압구정동 등 22개 동이 한눈에 비교됩니다.
결과
항목
Before (수동)
After (대시보드)
소요 시간
2~3시간
클릭 한 번, 30초
분석 범위
자치구 1개씩
25개 구 + 424개 동 전체
기상 연계
기상청 수동 비교
자동 영향도 계산
시각화
Excel 차트
히트맵, 산점도, 랭킹 등 6종
반복 비용
매번 처음부터
0분 (새로고침만)
코딩 필요
—
한 줄도 안 씀
최종 대시보드 구성:
실제 API 모드 + 기상 시뮬레이션 모드 전환
7일 기상 카드 (날씨별 인구 영향도)
시간대별 라인차트 + 요일별 바차트(강수량 이중축)
시간대×요일 히트맵
기온 vs 인구 산점도
동별 랭킹 + 드릴다운
배운 점
"진짜야?" 한마디가 품질을 바꿉니다. AI가 만든 결과가 그럴듯해도 실제인지 확인하세요. 첫 버전의 "API 연결 중..." 로그는 100% 연출이었습니다.
한 번에 다 시키지 마세요. "가짜로 만들어줘 → 진짜로 바꿔줘 → 기상도 넣어줘 → 동별로도 해줘" — 한 단계씩 올리니까 매번 정확하게 진화했습니다.
무료 API가 놀라울 정도로 많습니다. 서울 열린데이터광장(무료 키 발급 1분) + Open-Meteo(키 불필요) 조합이면 충분한 실시간 분석이 됩니다.
코딩 못해도 됩니다. 이 대시보드를 만드는 데 코드를 한 줄도 직접 쓰지 않았습니다. "해줘", "동별로도 가능해?" 같은 일상어로만 대화했습니다.
HTML 하나면 끝입니다. 서버 설치 없이, 패키지 설치 없이, 파일 하나를 브라우저에서 열면 바로 동작합니다. 연구실 동료에게 파일 하나 보내면 끝