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

IT 정책 제안
코드로 검증하는 공공데이터: 일본 지방자치의 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로 제공되어 재사용 가능

  • 문제점
- 정책과 연관된 핵심 지표가 PDF 리포트에 묻혀 있음

- 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年までに○○を×%削減」とあるとします。コードで検証하려면:

  • 목표 지표의 공식 정의(스키마)를 확보
  • 연도별 시계열 데이터 수집(API/CSV)
  • 결측·조작 여부 확인(데이터 품질 체크)
  • 목표와 현재 추세를 같은 단위로 맞춰 비교
  • 이 과정을 자동화하면 정책 발표→시민 검증의 루프가 만들어집니다. 예를 들면 연도별 퍼센트 변화율을 계산해 의회 보고서와 비교하는 스크립트를 배포하는 것!

    6) 오픈데이터 활용 제안 (実践案)

    • データパイプライン: カタログ→CI(スキーマ検証)→API公開を自動化
    • メタデータ標準: DCAT+DataPackageを採用して検索性を高める
    • サンプルパッケージ: 政策別にAPIエンドポイントとダウンロード可能なCSVを同梱
    • 市民向けSDK: Python/Rパッケージで簡単にデータ取得できるようにする

    技術スタック参考:

    • CKAN/DKANでカタログ、バックエンドはPostgreSQL + PostGIS
    • API層はFastAPIでOpenAPI 自動生成
    • CIでGoodTables/Fractalバリデーション

    まとめ

    • 공개량은 늘었지만, 데이터가 기계적으로 재현 가능한 형태로 제공되지 않으면 의미가 반감됩니다
    • 엔지니어적 해법은 표준화(스키마·エンコーディング)·메타데이터·API의 조합입니다
    • 로컬정부가 이걸 도입하면 정책 검증·시민참여·서비스 개선 속도가 확 올라갑니다

    おかむーから一言

    테크로 사회 문제 풀어보자고요! 데이터 공개는 시작일 뿐, 엔지니어가 쓸 수 있게 하면 진짜 변화가 옵니다. 같이 만들어봅시다~

    공유하기