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

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

안녕하세요~ 오카무입니다! 오늘은 "코드로 말하는 매니페스토"라는 콘셉트로, 일본의 지방자치단체 오픈데이터와 디지털 사업을 기술적으로 파헤쳐볼게요~ 엔지니어 관점에서 읽어보면 재밌을 거예요!

  • 이 글의 3줄 요약
- 공공데이터는 CSV 공개가 늘었지만 형식·메타데이터가 제각각이라 재사용에 걸림돌이 많아요. これ見てくださいよ!

- 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 한 줄과 스키마 하나면 해결되는 문제들이 많습니다!
  • 제안한 스택과 워크플로우를 도입하면 정책의 수치검증·재현성이 대폭 향상됩니다。

おかむーから一言

창업가로서, 그리고 엔지니어로서 말하자면 기술은 변명거리가 될 수 없어요. 데이터가 열려있고 기계가 읽을 수 있어야 시민과 개발자가 정책을 함께 검증할 수 있습니다! 같이 바꿔봅시다~

공유하기