コードで語るマニフェスト:自治体オープンデータと実装の現場から

안녕하세요~ 오카무입니다! 오늘은 "코드로 말하는 매니페스토"라는 콘셉트로, 일본의 지방자치단체 오픈데이터와 디지털 사업을 기술적으로 파헤쳐볼게요~ 엔지니어 관점에서 읽어보면 재밌을 거예요!
- 이 글의 3줄 요약
- API 부족, PDF 혼재, 식별자 부재가 문제. 엔지니어적으론 API와 표준 스키마가 답입니다.
- 개선책: CSVW/JSON‑LD, OpenAPI, CI로 데이터 파이프라인 검증, KPI의 기계판독 공개!
結論
지금의 오픈데이터는 양은 늘었지만 "코드가 바로 읽어 쓸 수 있는 데이터"가 아니에요. 디지털청(digital.go.jp)이나 도쿄 카탈로그(catalog.data.metro.tokyo.lg.jp)처럼 호스팅 자체는 좋지만, 기계 판독성(메타데이터+스키마)과 API 설계가 최소요건이에요. 엔지니어라면 API 한 줄로 해결할 수 있어야 합니다!
レポート本文
데이터 소스와 현실
참고한 공개 소스:
- 東京都オープンデータカタログ: https://catalog.data.metro.tokyo.lg.jp/dataset
- 埼玉県オープンデータポータル: https://opendata.pref.saitama.lg.jp/
- 新潟市 CSV 매뉴얼: https://www.city.niigata.lg.jp/.../csv_manual_v1.1.pdf
- NOTICE 경보 CSV: https://notice.go.jp/docs/status_notice.csv
- デジタル田園都市構想 관련 교부금: https://www.chisou.go.jp/sousei/about/kouhukin/index.html
- 須賀川市 실적평가(예): https://www.city.sukagawa.fukushima.jp/.../4045.html
이거 보세요: 일부 지자체는 CSV로 공개도 하지만, 같은 의미의 컬럼명이 제멋대로이고 날짜 포맷이 섞여 있고, 아예 PDF로만 제공되는 중요한 리포트도 있어요(新潟市의 CSV 가이드가 있긴 하지만 전 시군에 강제되는 건 아니죠). 要するに, 머신리더블하다고 해도 실무에서 바로 쓰기 어렵다는 말입니다.
API·포맷 품질 평가
- API 유무: 많은 카탈로그가 파일 다운로드 중심. RESTful API나 표준 엔드포인트는 부족.
- 포맷: CSV가 주류지만 인코딩, 구분자, 헤더 명칭, 결측 표기 통일성 부족.
- 메타데이터: ライセンス·更新일·スキーマ 정보가 누락된 경우가 많음.
엔지니어적 조언: OpenAPI로 검색/조회 엔드포인트 제공하고, CSV는 CSVW(또는 JSON‑LD)로 스키마를 붙이세요. 그래야 파이프라인에서 자동으로 스키마 기반 검증이 가능해집니다!
코드 예시: 공개 CSV를 빨리 검사하는 방법
# 엔지니어라면 이거 한 번씩 돌려보세요
import requests, io
import pandas as pd
url = 'https://notice.go.jp/docs/status_notice.csv'
r = requests.get(url)
df = pd.read_csv(io.StringIO(r.content.decode('utf-8')))
print(df.info())
print(df.head())
이 코드는 가져와서 컬럼·결측·샘플을 빠르게 확인합니다. 현실에서는 여기서 컬럼명 표준화, 날짜 파싱, 식별자 정규화 등을 추가로 자동화해야 해요.
정책 목표 vs 실적: 숫자로 검증하자
デジタル田園都市構想 같은 교부금 사업은 "성과 지표(KPI)"가 중요합니다. 하지만 KPI가 PDF 리포트 속에 텍스트로만 있거나, 실적은 웹페이지 데이터 테이블로만 공개되면 기계적 비교가 불가능해요. 要するに, 목표값과 실적을 같은 형식(예: 시계열 CSV/JSON)으로 공개해야 예산대비 성과를 자동으로 검증할 수 있습니다.
간단한 갭 분석 예시(판다스):
# targets.csv, results.csv가 같은 식별자를 가진다고 가정
targets = pd.read_csv('targets.csv').set_index('project_id')
results = pd.read_csv('results.csv').set_index('project_id')
gap = results[['kpi_value']] - targets[['kpi_target']]
print(gap.sort_values('kpi_value').head())
개선 제안(구체적)
- 표준 스키마 제공: 各都道府県共通のCSVヘッダテンプレートを公開
- メタデータ必須化: ライセンス、更新頻度、スキーマを機械判読可能に
- API 제공: 검색·ページ네이션·필터·메타데이터 엔드포인트를 OpenAPI로 문서화
- バリデーションCI: GitHub Actions로 데이터 업로드 시 스키마 검사·샘플값 검사
- バージョニングと署名: S3+CDN으로 배포, 해시·署名로 변경 추적
- KPI의 시계열 공개: 예산·목표·실적을 동일フォーマットで公開
技術スタックの例:
- CSVW/JSON‑LD 스키마 + OpenAPI 3.0
- 데이터 파이프라인: Airflow 또는 GitHub Actions + pandas
- 스토レージ: S3 (静的ホスティング) + CloudFront
期待される効果
- 연구자·시ビックテック 개발자가 즉시 실증 가능
- 정책 검증 자동화로 행정의説明責任(アカウンタビリティ)向上
- 교부금 등 예산 집행의 투명성 제고
まとめ
- 양적 공개는 진전됐지만 질적 표준화가 부족해요.
- 엔지ニア的にはAPI 한 줄과 스키마 하나면 해결되는 문제들이 많습니다!
- 제안한 스택과 워크플로우를 도입하면 정책의 수치검증·재현성이 대폭 향상됩니다。
おかむーから一言
창업가로서, 그리고 엔지니어로서 말하자면 기술은 변명거리가 될 수 없어요. 데이터가 열려있고 기계가 읽을 수 있어야 시민과 개발자가 정책을 함께 검증할 수 있습니다! 같이 바꿔봅시다~
정보 출처
- https://catalog.data.metro.tokyo.lg.jp/dataset
- https://opendata.pref.saitama.lg.jp/
- https://opendata.pref.saitama.lg.jp/datasets
- https://www.city.niigata.lg.jp/shisei/seisaku/it/open-data/index.files/csv_manual_v1.1.pdf
- https://www.city.niigata.lg.jp/shisei/seisaku/it/open-data/index.html
- https://www.digital.go.jp/
- https://www.chisou.go.jp/sousei/about/kouhukin/index.html
- https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB
- https://www.city.sukagawa.fukushima.jp/shisei/gyoseiunei/keikaku/chiho_sosei/1015604/4045.html
- https://column.nippoukun.bpsinc.jp/what-is-digitization/
- https://notice.go.jp/docs/status_notice.csv
- https://www.jinji.go.jp/content/900024615.csv
- https://www.env.go.jp/content/900398071.csv
- https://www.inpit.go.jp/content/100869372.csv
- https://www.mhlw.go.jp/content/001429362.csv
공유하기
관련 리포트

コードで語るマニフェスト:自治体データとシステムをエンジニア視点で検証する
自治体データはPDFやUIに閉じがち。API-firstとJSON Schemaで再利用性を高め、ガバメントクラウドへ移行する実務ロードマップを提示します。

コードで語るマニフェスト:日本政府データの現場から見る技術検証
政府データは可視化が進むも機械可読性不足が課題。CSV/JSON/API、スキーマ、ID統一で政策検証を自動化しよう。

코드로 읽는 마니페스토: 일본 정부 데이터와 시스템을 엔지니어 관점에서 후벼파기
일본 정부 데이터의 PDF·API·메타데이터 문제를 엔지니어 관점에서 분석하고, 실무 가능한 개선안을 코드 예시와 함께 제시합니다。