コードで語るマニフェスト:政府データはここまで読み解ける(엔지니어視点)

IT 정책 제안
コードで語るマニフェスト:政府データはここまで読み解ける(엔지니어視点)
  • 오늘은 공공데이터를 '코드'로 까발려보는 글입니다! 오카무 스타일로 가볍게 읽으세요~
  • 실제 소스(Go.jp, Digital.go.jp, env.go.jp 등)를 직접 들여다봤습니다. CSV의 품질·인코딩·메타데이터 문제를 지적합니다.
  • 문제만 말하지 않고, API 설계·CSV 표준·メタ데이터 추가 같은 현실적 개선안을 제안합니다!

結論

정부·지방자치단체가 공개한 데이터는 '원재료'로서 가치는 크지만, 표준성·機械可読性·API 접근성에서 아직 갈 길이 멉니다. 엔지ニア적으로 해결 가능한 이슈가 대부분이라, 작은 규칙(UTF-8, CSVW/JSON-LD 메タ데이터, REST API 시그니처)만 지키면 재활용성이 폭발적으로 올라갑니다.

レポート本文

무엇을 봤나(데이터 소스 요약)

  • notice.go.jp의 CSV: https://notice.go.jp/docs/status_notice.csv — 공지/상태 데이터 CSV
  • 내각부/デジタル庁의 CSV(신차 판매 등): https://www5.cao.go.jp/j-j/wp/wp-je24/csv/d1-1-4.csv — 통계 시계열
  • Digital.go.jp 자산들(병원 CSV 등): https://www.digital.go.jp/.../xxxxxx_hospital.csv — 의료기관 데이터(위도/경도 포함)
  • 환경성 CSV: https://www.env.go.jp/content/900398071.csv
  • Japan Dashboard: https://www.digital.go.jp/resources/japandashboard, e-Stat 대시보드: https://dashboard.e-stat.go.jp/

엔지니어적으론 이걸로 무슨 서비스를 만들지 바로 떠오르죠. 근데 현실은 파일이 깨져있거나(인코딩), 스키마가 제각각이라 바로 합치기 어렵습니다.

기술적 관찰: CSV vs PDF, 인코딩, 메타데이터

これ見てくださいよ。検索結果 중 일부 CSV 파일(특히 현장 설문 CSV)은 깨진 문자(� 같은)나 혼합 인코딩 흔적이 있어요(예: UTF-8/BOM vs Shift_JIS). 엔지니어적으로 말하면, 파일 인코딩이 불명확하면 파싱부터 실패합니다.

문제 요약:

  • 문자 인코딩 불일치(Shift_JIS, EUC-JP, UTF-8-sig 혼재)
  • BOM 혹은 숨은 제어문자 존재
  • 컬럼명이 일관되지 않음(일부는 일본어, 일부는 영문, 일부는 코드값)
  • 메타데이터 부재(更新日, 権利情報, 単位, 欠損値ルール 등)
  • API 부재: 파일 배포 위주라 실시간 접근·페이징 불가

要するに、데이터는 공개돼 있지만 '機械が扱いやすい' 형태로 제공되지 않으면 실사용에서 사장됩니다.

실전: 데이터 파싱 팁과 코드 예시

엔지ニアならわかると思うんですけど, 파일을 받아서 바로 pd.read_csv하면 깨질 때가 많죠. 이런 방식으로 처리해보세요:

# Python + pandas로 불러오기 예시

import requests

import io

import chardet

url = 'https://www.digital.go.jp/assets/.../xxxxxx_hospital.csv'

r = requests.get(url)

인코딩 추정

enc = chardet.detect(r.content)['encoding']

s = r.content.decode(enc or 'utf-8', errors='replace')

import pandas as pd

from io import StringIO

df = pd.read_csv(StringIO(s))

print(df.head())

또는 서버에서 UTF-8로 재배포가 가능하면 가장 좋습니다. CSV 표준화는 다음 규칙을 권장합니다:

  • UTF-8 (BOM 없음) 고정
  • 컬럼명은 영어 스ネークケース 병기 + 원언어 라벨
  • Schema: CSVW 또는 JSON Schema 제공
  • 메타데이터 파일(dataset.json)로 更新日・ライセンス・列説明 제공

정책 수치와 데이터의 연결

예를 들어 신차 판매 대시보드(d1-1-4.csv)를 보면 월별·차종별 시계열이 들어있습니다. 정책 목표(예: 전기차 비중 2030년 N%)와 실제 판매 추세를 교차하면 성과 측정이 가능하죠. 그런데 문제는 데이터 업데이트 주기가 불명확하고, 결측 처리 규칙이 없다는 점입니다. 이러면 KPI 계산이 흔들립니다.

권장 방식:

  • KPI 정의서(예: EV 보급률 계산식)를 데이터셋과 함께 배포
  • 산출 근거(원자료 링크, 전처리 스크립트)를 깃허브에 공개
  • 대시보드의 수치에 대해서는 '데이터 린치핀'(데이터 버전 태그)을 붙이기

API 설계 제안(짧고 현실적으로)

  • 엔드포인트: /v1/datasets/{id}/csv (CSV 직접, HEAD로 메타정보 제공)
  • 메타: /v1/datasets/{id}/meta -> JSON-LD
  • 쿼리: ?start=2023-01-01&end=2024-01-01&format=json
  • 페이징, 파티셔닝(기간별) 지원

이렇게 하면 JavaScript 앱, R, Python 등에서 동일한 방식으로 접근할 수 있어 재현성이 높아집니다.

재사용 사례 제안

  • 병원 CSV(위도/경도 포함): 근처 병원 검색 API로 활용(긴급상황 매핑)
  • 환경성 센서 데이터: 시계열 DB(InfluxDB/Timescale)로 옮겨 실시간 모니터링
  • 신차 판매 데이터: 정책 성과 대시보드(정책 목표 대비 실적) 자동 리포트

비용·운영 현실성

완전한 API 플랫폼을 한 번에 만드는 건 부담입니다. 대신 단계적으로:

1) 모든 CSV를 UTF-8로 재배포(스クリプト로 일괄 변환)

2) dataset.json(메タ)를 추가

3) 인기 데이터부터 간단한 REST endpoint 제공

이렇게 하면 적은 비용으로 큰 개선 효과를 얻을 수 있어요!

まとめ

  • 공개 데이터 자체는 가치가 크지만, 포맷·메タ데이터·API 수준이 재사용의 걸림돌
  • 엔지ニア적 해결책(인코딩 표준화, CSVW/JSON-LD, 간단한 REST API)으로 상당 부분 해결 가능
  • 정책 성과 측정에 필요한 '재현 가능한 데이터 파イプライン'을 우선 구축하자

おかむーから一言

기술은 소극적 보조가 아니라 정책의 언어가 될 수 있어요. 작은 표준 하나가 시민의 삶을 바꿀 겁니다—오카무는 그걸 직접 만들고 싶습니다!

공유하기