코드로 말하는 마니페스토: 일본 공공 CSV들을 보고 엔지니어 관점에서 검증해봤다

IT 정책 제안
코드로 말하는 마니페스토: 일본 공공 CSV들을 보고 엔지니어 관점에서 검증해봤다
  • 이거 보세요: 정부 도메인(go.jp)에 CSV 파일이 공개되어 있지만 포맷과 메타데이터가 제각각이에요
  • 결론 먼저: 데이터 공개는 되어 있으나 기계가 바로 쓰기엔 준비가 덜 되어 있음 — 인코딩·스키마·API가 관건이에요
  • 제안: UTF-8 표준화, 데이터 카탈로그(DCAT), OpenAPI/JSON Schema 도입, 증분 API로 운영 효율화

結論

どうも~ 오카무입니다! 엔지니어적으론 말하자면, 일본 정부·지방자치단체의 데이터는 '가져올 수는 있지만 즉시 재현하기엔 손이 많이 가는' 상태예요. CSV 자체는 확보되어 있으나 인코딩(Shift_JIS vs UTF-8), 날짜 포맷, 컬럼명 불일치, 메타데이터 부재, API 미비가 반복되는 문제입니다. 要するに: 머신리더블(기계가 바로 읽는) 상태로 만들려면 기술적 정비가 필요해요.

레포트 본문

데이터 소스 체크리스트

  • 제공된 파일들 (검색 결과 기반)
- https://notice.go.jp/docs/status_notice.csv

- https://www.env.go.jp/content/900398071.csv (이바라키 관련)

- https://www.inpit.go.jp/content/100869372.csv

- https://www.mhlw.go.jp/content/001429362.csv

- https://www.soumu.go.jp/main_content/000323625.csv

이거 보세요: URL로 CSV가 직접 공개된 건 칭찬할 부분이에요! 하지만 엔지니어적 관점에서 보면 아래 이슈들이 빈번합니다.

공통 문제점(엔지니어적 진단)

  • 인코딩 불일치: 일본 관공서 CSV는 Shift_JIS나 EUC-JP로 배포되는 경우가 많아요. pandas로 바로 읽으면 깨짐이 발생하죠. 해결하려면 자동 인코딩 감지와 변환 파이프라인이 필요합니다.
  • 스키마 부재/비일관성: 컬럼명이 기관마다 다르거나 뜻이 모호한 경우가 있어요(예: 日付/年月日/Date). 재사용성을 높이려면 표준 컬럼 네이밍 규칙이 필요합니다.
  • 메타데이터 부족: 수집 주기, 最終更新日時, 単位(unit) 같은 필드가 문서화되어 있지 않음. 要するに 데이터 재현성을 보장하지 못함.
  • API 미비: CSV 배포는 좋지만, 변화만 업데이트해서 가져올 수 있는 증분(Delta) API나 검색/필터용 엔드ポイント가 없으면 실시간 활용성 떨어짐.
  • PDF 임베드·비정형 출처: 일부 자료는 PDF로만 공개되거나 CSV가 있지만 비정규 형식(カンマが含まれるカラム 등)이라 후처리 부담이 큼.

기술 검증: 간단한 워크플로(코드 예시)

이런 데이터를 엔지니어 관점으로 다루려면 표준화 파이프라인이 필요해요. 예시 코드(Python+pandas)로 기본 검증 과정을 보여드릴게요:

# requirements: requests chardet pandas

import requests, chardet

import io

import pandas as pd

url = 'https://notice.go.jp/docs/status_notice.csv'

r = requests.get(url, timeout=10)

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

print('detected encoding:', enc)

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

간단한 전처리: BOM 제거, \\r\n 정규화

s = s.replace('\r\n','\n').lstrip('\ufeff')

df = pd.read_csv(io.StringIO(s))

print(df.head())

스키마 검증 예: 필수 컬럼 체크

required = ['id','date','value']

missing = [c for c in required if c not in df.columns]

print('missing columns:', missing)

요 코드로 인코딩·컬럼 유무는 빠르게 확인할 수 있어요. 실제 운영 시스템이라면 이걸 CI로 만들어서 새 퍼블리시가 있을 때마다 자동 검증하도록 하면 좋아요.

정책 목표 vs 실적: 접근 방법

검색 결과 중에는 디ジタル田園都市国家構想交付金 관련 자료·KPI 문서가 보이는데(채널: chisou.go.jp 관련 자료), 공개 CSV와 사업 보고서의 수치가 분리되어 있으면 추적이 힘들어요. 엔지니어적 제안:

  • KPI 메타데이터를 각 사업 CSV 행에 붙여서 사업ID → KPI관계 테이블로 만들기
  • 달성률 계산 쿼리 예: 달성률 = 実績 / 目標
  • 대시보드를 위한 ETL: CSV → 표준 스키마로 정규화 → 데이터베이스(예: PostgreSQL + Timescale) → Grafana/Metabase

간단한 SQL(예):

SELECT project_id, kpi_id, SUM(actual) / SUM(target) AS attainment

FROM project_kpi_fact

GROUP BY project_id, kpi_id;

개선 제안(우선순위)

  • 기본 인프라: 모든 CSV를 UTF-8로 재공개하거나, 컨텐츠-인코딩 헤더 정확히 표기. 자동 변환(Shift_JIS→UTF-8) 배치 운영.
  • 데이터 카탈로그 도입(DCAT/CKAN): 각 파일에 schema, description, update_frequency, contact 을 명시.
  • JSON Schema / datapackage.json: 필드명·타입·단위를 표준화. 예: date: date-iso, amount: number, unit: JPY
  • 증분 API 제공: 변경분만 가져오는 /v1/resource/{id}/delta?since=YYYY-MM-DD
  • OpenAPI로 API 문서화, CORS 허용 및 OAuth/無償キー로 접근 제어
  • 자동 검증 파이프라인: PR마다 데이터 스키마 검사, CI에서 샘플 레코드 검증
  • 기대효과

    • 개발자·연구자들이 데이터 확보에 드는 초기 진입 비용(인코딩·정규화)이 크게 줄어요
    • 실시간 정책 모니터링이 가능해져 KPI 미스매치 초기에 발견 가능
    • 민간 애플리케이션 생태계 활성화: 표준 API가 있으면 SaaS·스타트업이 활용하기 쉬움

    まとめ

    • 공개 자체는 훌륭하지만, '기계가 바로 쓰는' 단계로 가기 위해 기술적 정비가 필요해요
    • 핵심은 인코딩·스키마·메타데이터·API의 표준화입니다
    • 빠른 개선 로드맵: UTF-8 변환(단기) → 데이터 카탈로그·JSON Schema(중기) → 증분 API·OpenAPI(장기)

    おかむーから一言

    테크로 사회를 바꾸려면 데이터가 열려 있어야 해요! 엔지니어적 실전 경험으로 말하면, 작은 표준 하나가 행정의 재현성·신뢰성을 엄청나게 키워줍니다. 같이 만들어봅시다, 액션으로요〜

    공유하기