코드로 검증하는 공공데이터: 일본 지방자치의 CSV·API 실전 점검

안녕하세요~ 오카무입니다! 오늘은 공공데이터와 행정시스템을 엔지니어 관점에서 쭉 뜯어볼게요~
- 이 글은 일본 지방자치(도도부현·시)의 오픈데이터 실태를 기술적으로 점검합니다
- PDF에 잠긴 수치, 흩어진 CSV, 없는 API — 문제 지점과 실무 개선안을 제안합니다
- 예시 소스와 간단한 코드로 "정책 수치가 코드로 재현되는지" 확인하는 방법을 보여드립니다
結論
데이터 공개 자체는 늘고 있지만, 기계가 읽을 수 있는 시간시계열 데이터와 안정적 API가 부족해 정책 검증이 어렵습니다. 엔지니어적 해결책은 명확합니다: CSV 표준화(스키마·エンコーディング), 버전 관리, 메타데이터(DCAT/Data Package) 공개, 그리고 최소한의 RESTful API 제공. 이걸 하면 정책의 재현성(reproducibility)과 시민 참여가 확실히 올라갑니다.
레포트 본문
1) 현황 스냅샷 — 어디가 잘 돼 있고 어디가 약한가
これ見てくださいよ、東京都オープンデータカタログや埼玉県・新潟市のポータルを見ればわかります(参照: catalog.data.metro.tokyo.lg.jp、opendata.pref.saitama.lg.jp、新潟市CSVマニュアル). 공개된 데이터셋은 많아졌지만 품질의 편차가 큽니다:
- 좋은 점
- 일부 데이터는 CSV·XLSX로 제공되어 재사용 가능
- 문제점
- CSV라 해도 스키마가 통일되어 있지 않아 파싱 자동화가 어렵다
- API가 제공되어도 인증·레ート리밋·ID 체계가 제각각
要するに、表面上は「公開」してるけど「使える」状態にはなってないということです。
2) PDF vs CSV: 기계판독성 문제
PDF에 수치가 들어가 있으면 엔지니어는 고통받습니다. Tabula/Camelot로도 깨지는 표가 있고, OCR이 들어가면 신뢰도 떨어지죠. 예를 들면, 정책 성과가 연도별로 나와 있는 보고서가 PDF 표로만 제공되면 시계열 분석을 못합니다.
추천 실무:
- 가능한 모든 표는 원본 CSV로 함께 공개
- CSV는 UTF-8, 明確なヘッダ、データ型(날짜 ISO8601)を指定
- PDF에 포함된 표는 provenance(データ元) 링크를 달아 재현 가능하게
3) API의 유무와 품질 평가
엔지니ア的に言うと、API一本이면 해결되는 경우가 많습니다. e-Stat처럼 정부 통계용 API가 좋은 예인데(※e-Stat은 일본 중앙통계 API), 지방자치 수준에서도 다음이 필요합니다:
- RESTful 엔드포인트로 시계열/フィルタ링 지원
- OpenAPI 명세 제공
- 認証はAPIキーで簡潔に、公開データは無認証でも良い
간단한 예시: CSV가 아닌 API로 바로 시계열을 가져오는 Python 코드
import requests
import pandas as pd
URL = 'https://example.pref.jp/api/v1/indicator' # 예시
params = {'indicator_id': 'population_total', 'from': '2010', 'to': '2024'}
res = requests.get(URL, params=params)
res.raise_for_status()
df = pd.DataFrame(res.json()['data'])
print(df.head())
이 정도면 대시보드·분석 파이프라인에 바로 연결할 수 있습니다.
4) 데이터 품질·스키마 설계: 구체적 체크리스트
- 필수 컬럼 명시: id, year(ISO), value, unit, geography_code
- NA·欠損値の扱いを統一(nullか"NA"かでバラバラにしない)
- メタデータ: 作成日、更新日、ライセンス、カラム説明
- スキーマバリデーション: JSON Schema / GoodTablesでCIに組み込む
간단한 JSON Schema 예시(포함할 건덕지만 구현은 쉽습니다):
{
"type": "object",
"properties": {
"id": {"type": "string"},
"year": {"type": "string", "pattern": "^\\d{4}$"},
"value": {"type": ["number", "null"]}
},
"required": ["id","year","value"]
}
5) 정책 목표 vs 実績ギャップの検証方法
政策文書に「2025年までに○○を×%削減」とあるとします。コードで検証하려면:
이 과정을 자동화하면 정책 발표→시민 검증의 루프가 만들어집니다. 예를 들면 연도별 퍼센트 변화율을 계산해 의회 보고서와 비교하는 스크립트를 배포하는 것!
6) 오픈데이터 활용 제안 (実践案)
- データパイプライン: カタログ→CI(スキーマ検証)→API公開を自動化
- メタデータ標準: DCAT+DataPackageを採用して検索性を高める
- サンプルパッケージ: 政策別にAPIエンドポイントとダウンロード可能なCSVを同梱
- 市民向けSDK: Python/Rパッケージで簡単にデータ取得できるようにする
技術スタック参考:
- CKAN/DKANでカタログ、バックエンドはPostgreSQL + PostGIS
- API層はFastAPIでOpenAPI 自動生成
- CIでGoodTables/Fractalバリデーション
まとめ
- 공개량은 늘었지만, 데이터가 기계적으로 재현 가능한 형태로 제공되지 않으면 의미가 반감됩니다
- 엔지니어적 해법은 표준화(스키마·エンコーディング)·메타데이터·API의 조합입니다
- 로컬정부가 이걸 도입하면 정책 검증·시민참여·서비스 개선 속도가 확 올라갑니다
おかむーから一言
테크로 사회 문제 풀어보자고요! 데이터 공개는 시작일 뿐, 엔지니어가 쓸 수 있게 하면 진짜 변화가 옵니다. 같이 만들어봅시다~
정보 출처
- https://www.zhihu.com/question/40553450
- https://www.govtechtokyo.or.jp/services/data-utilization/
- https://www.zhihu.com/tardis/zm/art/1924492115896960699
- https://note.govtechtokyo.jp/n/n77785a8254d6
- https://www.zhihu.com/question/372341437
- https://www.zhihu.com/question/290714454
- https://metidx-gov.note.jp/n/n9468573c213b
- https://www.zhihu.com/question/6430289390
- https://zenn.dev/govtechtokyo/articles/b65dc687e50918
- https://www.zhihu.com/question/38923279
- https://catalog.data.metro.tokyo.lg.jp/dataset
- https://opendata.pref.saitama.lg.jp/
- https://www.city.niigata.lg.jp/shisei/seisaku/it/open-data/index.files/csv_manual_v1.1.pdf
- https://opendata.pref.saitama.lg.jp/datasets
- https://www.city.chuo.lg.jp/kusei/gaiyou/toukeidate/opendata.html
공유하기
관련 리포트

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

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

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