코드로 말하는 매니페스토: 지방정부 오픈데이터 실태와 기술적 개선안

IT 정책 제안
코드로 말하는 매니페스토: 지방정부 오픈데이터 실태와 기술적 개선안

안녕하세요~ 오카무입니다! 오늘은 지방정부의 데이터와 시스템을 엔지니어 관점에서 코드로 파헤쳐보려고 해요. 가볍게 읽히는 기술 리포트로 갑니다~

  • 지방자치단체는 오픈데이터 포털을 갖추고 있지만 형식과 접근성이 제각각이다
  • PDF에 박힌 정책근거가 많아 재현성과 검증이 어렵다 — API·CSV·GeoJSON으로 바꿔야 한다
  • CKAN·e-Stat·Japan Dashboard 같은 인프라를 연결하면 정책 검증이 가능한 데이터 파이프라인을 만들 수 있다

結論

지금 일본의 지방정부 데이터는 제공은 되고 있지만, 기계가 읽을 수 있는 표준·API·메타데이터가 부족해서 정책의 재현성·검증 가능성이 낮다. 엔지니어적 해결책은: 표준화(CSV/JSON/GeoJSON + CSVW/Schema), API 제공(CKAN/REST), 자동 검증 파이프라인(GitHub Actions + frictionless)이다.要するに、데이터를 '사람용 PDF'에서 '기계용 API'로 옮기면 정치적 선언도 숫자로 책임질 수 있게 된다!

레포트 본문

현황 스냅샷 — 실제로 뭐가 공개돼 있나

これ見てくださいよ: 중앙의 e-Stat 대시보드(https://dashboard.e-stat.go.jp/)와 도쿄·사이타마·니이가타 등 지방 포털(검색 결과의 catalog.data.metro.tokyo, opendata.pref.saitama, city.niigata 등)은 다양한 데이터셋을 제공한다. Daisen市는 CKAN 기반 레지스트리(https://www.city.daisen.lg.jp/open-data/dataset/)로 API 접근을 지원하는 사례다.

하지만 문제도 명확하다:

  • 많은 정책·목표는 관보·보도자료(PDF/HTML)로만 공개
  • 같은 주제라도 포맷(CSV, XLSX, PDF, JSON)이 제각각
  • 메타데이터(更新日、ライセンス、列説明)가 불완전
  • API가 있더라도 표준화된 스키마가 없어 결합·비교가 어렵다

기술적 문제점 분석

  • PDF vs CSV: PDF에 표로 박혀있으면 자동화가 안 된다. 엔지니어적으론 "PDF→CSV" 변환이 반복 작업이라 유지보수 비용 폭발한다. 要するに、데이터가 PDF라면 '재현 불가'라는 얘기다.
  • API 유무: CKAN 같은 레지스트리는 좋은 시작이지만, 리소스가 CSV가 아니라 엑셀·PDF인 경우가 많다. 또한 CORS나 인증 정책이 없으면 프런트엔드 활용도 낮다.
  • 메타데이터: 스키마가 없으면 시계열 정렬·단위 일치 검사·누락 데이터 보완이 수작업이 된다.

코드로 보여주는 접근법

에지니어라면 이렇게 툴링하면 금방 쓸 수 있다. CKAN 검색 + CSV 로드 예제:

# CKAN API로 데이터셋 검색 후 CSV 로드 (pandas 필요)

import requests

import pandas as pd

base = 'https://catalog.data.metro.tokyo.lg.jp/api/3/action/package_search'

params = {'q': '防災', 'rows': 5}

r = requests.get(base, params=params)

res = r.json()

for pkg in res['result']['results']:

print(pkg['title'])

for resrc in pkg['resources']:

fmt = resrc.get('format','').lower()

if fmt in ('csv', 'json') and 'url' in resrc:

df = pd.read_csv(resrc['url'])

print(df.head())

break

e-Stat API 예시(시각화용 시계열 가져오기):

import requests

app_id = 'YOUR_ESTAT_APPID'

url = 'https://api.e-stat.go.jp/rest/3.0/app/json/getStatsData'

params = {'appId': app_id, 'statsDataId': '0000020201'}

r = requests.get(url, params=params)

data = r.json()

要するに: JSON으로 시계열을 받아 pandas로 정리하면 재현 가능한 수치가 된다

또한 PDF로만 공개된 표는 tabula-py나 Camelot으로 추출하고, 추출 후에는 frictionless 데이터 패키지로 스키마를 고정하면 다음 배포부터 자동 검증이 가능하다.

정책 목표 vs 실적의 갭 분석 방법

  • 목표(매니페스토)는 보통 보도자료/정책문서에 숫자로 적혀있다. 문제는 월별·분기별 실적이 머신리더블하지 않아서 "목표 대비 진척률"을 자동 계산하기 어렵다.
  • 해결: 목표를 데이터셋(예: goals.csv)으로 공개하고, 실적 데이터(achievement_timeseries.csv)를 동일한 스키마로 제공하면 SQL로 바로 비교 가능하다.

간단한 SQL 예:

SELECT g.metric, g.target, a.date, a.value,

a.value / g.target AS progress_ratio

FROM goals g

JOIN achievement a ON g.metric = a.metric

WHERE a.date BETWEEN '2025-01-01' AND '2025-12-31'

개선 제안(실전 로드맵)

  • 메타데이터 표준 채택: "自治体標準オープンデータセット" 또는 frictionless Data Package, CSVW 사용
  • CKAN 또는 관리용 레지스트리 도입: 모든 리소스를 API로 노출
  • PDF→CSV 자동화: tabula/Camelot 파이프라인 + 수동 검수 단계
  • CI/CD: GitHub Actions로 schema 검사(frictionless validate), 린트, 배포 자동화
  • 라이선스·更新日·連絡先를 필수 메타데이터로 의무화
  • Japan Dashboard·e-Stat와 연계: 중앙 API와 라우팅으로 중복 관리 최소화
  • まとめ

    • 지방정부는 이미 많은 데이터를 공개하고 있지만 기계가 읽을 수 있게 표준화하는 게 시급하다
    • PDF는 악의적이진 않지만 실용성에서 패배한다 — CSV/JSON/GeoJSON으로 바꾸자
    • CKAN + frictionless + CI 파이프라인으로 정책의 수치적 책임성을 확보할 수 있다

    おかむーから一言

    테크로 사회를 업그레이드하자! 데이터가 열리면 정치도, 행정도 더 책임져요. 오카무는 개발로 그걸 확인하고 싶습니다!

    공유하기