코드로 말하는 매니페스토: 지방정부 데이터 UX·API 분석 리포트

IT 정책 제안
코드로 말하는 매니페스토: 지방정부 데이터 UX·API 분석 리포트

안녕하세요~ 오카무입니다! 오늘은 정부·지방자치단체가 공개하는 데이터와 시스템을 엔지니어링 관점에서 후루룩 훑어보는 시간입니다~

  • 이거 보세요: 공공데이터는 여전히 PDF에 묶여 있는 경우가 많다
  • 엔지니어적으로 말하면: API 한 줄로 해결 가능한 문제들이 산재해 있다
  • 개선 제안: 기계판독성·오픈API·스키마·CSV/JSON 기본 제공으로 재사용성 높이자

結論

지방정부의 디지털 전환은 '웹 디자인'을 넘어 '데이터 파이프라인'을 설계하는 문제다. PDF→CSV 변환 같은 임시방편에 머물지 말고, e-Gov API(https://www.e-gov.go.jp)와 도쿄 오픈데이터(https://portal.data.metro.tokyo.lg.jp) 같은 공적 카탈로그를 기준으로, 기계가 바로 읽을 수 있는 JSON/CSV+OpenAPI 스펙을 표준으로 삼아야 한다. 엔지니어적 제안은 명확하다: 기계판독성 우선, 스키마·버전 관리, 심플한 인증·레ート리밋, 훌륭한 예제 코드.

レポート本文

현황 관찰: PDF vs CSV vs API

이거 보세요, 실제로 정부 문서들은 여전히 PDF에 중요한 표를 담아 배포하는 경우가 많습니다(참고: 総務省의 통계 표 기계판독성 가이드라인 https://www.soumu.go.jp). PDF에 묶여 있으면 자동화가 막힙니다. 엔지니어적으로 말하면, 이는 ETL 파이프라인 앞에서 매번 수작업 전처리를 요구하는 악몽이에요.

한편, e-Gov 포털의 "行政API" 카탈로그(https://www.e-gov.go.jp/digital-government/api)나 도쿄의 오픈데이터 API(https://portal.data.metro.tokyo.lg.jp/opendata-api/)는 훌륭한 출발점입니다. 하지만 현실은 API가 있더라도:

  • 응답 포맷이 일관되지 않거나
  • 메타데이터(스키마,更新日時,ライセンス)가 부족하거나
  • CORS·레ート리밋 정책이 명확하지 않거나
  • 예제나 SDK가 없는 경우가 많습니다

요약하면 "데이터는 공개되어 있지만, 재활용하기엔 준비가 덜 되어 있다"는 상황이에요.

기술적 문제: 기계판독성과 메타데이터

최근 디ジタル庁의 기계可読性ルール案(参考: https://www.digital.go.jp)도 나오고 있는데, 핵심은 파일 포맷(Excel/CSV/JSON)과 스키마 표준화입니다. 실제로 적용할 때 신경 써야 할 포인트:

  • CSV/JSON에 UTF-8로 인코딩(인코딩 혼선 차단)
  • 필드명은 영어 스네이크ケース 혹은 카멜케이스로 통일
  • NULL 처리(빈 문자열 vs null vs "N/A") 규약
  • 日付はISO8601で統一
  • OpenAPI/JSON Schema로 스펙화

요컨대, 데이터가 "기계가 바로 읽을 수 있게" 배포되어야 한다는 뜻입니다. 要するに: 사람이 PDF 보고 표를 손으로 긁는 시대는 끝나야 해요.

코드로 보는 실전 예시

간단한 예를 하나 보여드릴게요. 도쿄 오픈데이터의 시설 목록 API를 받아서 판다스로 읽는 파이썬 예시입니다(가상의 엔드포인트 사용).

import requests

import pandas as pd

url = 'https://portal.data.metro.tokyo.lg.jp/api/PublicFacility?format=csv'

resp = requests.get(url)

resp.encoding = 'utf-8'

with open('facilities.csv', 'w', encoding='utf-8') as f:

f.write(resp.text)

df = pd.read_csv('facilities.csv')

print(df.head())

엔지니어 포인트: 응답에 CSV/JSON 선택 파라미터가 있으면 훨씬 재사용성이 좋습니다. 또한 OpenAPI 스펙을 제공하면 다른 서비스에서 자동으로 클라이언트 코드 생성 가능!

PDF에 묻힌 표를 자동화하려면 tabula-py나 camelot 같은 툴을 쓰지만, 이런 방법은 brittle합니다. 예:

# tabula를 이용한 PDF->CSV 변환 (사전조건: Java 설치)

pip install tabula-py

python -m tabula --pages all -o out.csv input.pdf

이건 임시방편일 뿐이라서 근본 해결책은 아닙니다.

정책 목표 vs 실적: 숫자로 보는 갭

정책 문서(예: 오픈데이터 정책, 디지털庁 가이드)는 "오픈데이터 플랫폼 구축"을 목표로 삼습니다. 문제는 목표치(데이터 공개수·API 제공률 등)를 어떻게 측정하느냐인데, 측정 자체가 PDF 보고서에 의존하면 투명성이 낮아집니다. 따라서 실적 공개도 기계판독가능하게 해야 추적·검증이 가능합니다.

예시 측정지표 제안:

  • 공개 데이터 세트 수(CSV/JSON/적어도 하나의 기계판독 포맷)
  • OpenAPI 스펙 보유 비율
  • 신규 데이터의 평균 공개 지연(정책상 목표 대비)
  • API 가용성(%), 응답시간(평균)

개선 제안(구체적)

  • 데이터 퍼블리싱 파이프라인 표준화
  • - Git-backed 데이터 레포지토리(예: data.gouv-style) 사용

    - CSV/JSON + JSON Schema + OpenAPI 동시 제공

  • 개발자 경험(DevEx) 개선
  • - 예제 코드, SDK, Postman 컬렉션 제공

    - CORS 허용·간단한 API키 기반 인증

  • 기계판독성 검증 자동화
  • - CI로 스키마 검증 및 CSV 포맷 체크

    - 스케줄된 모니터링으로 데이터 신선도 측정

  • 주민 중심 UX와 데이터 설계 병행
  • - UX 개선(参照: Zenn의 自治体ウェブサイト UX 트렌드)과 데이터 가용성 동시 추진

    まとめ

    • PDF 중심의 공개는 여전히 문제다. 要するに: CSV/JSON과 스키마를 기본으로 제공하자
    • API·메타데이터·스펙을 갖추면 재사용성은 폭발적으로 올라간다
    • 자동화 가능한 배포 파이프라인(Git, CI, OpenAPI)이 핵심

    おかむーから一言

    테크로 사회를 바꿔가자, 라는 말은 점점 현실이 되고 있어요。프래그먼트화된 데이터와 레ガシー 시스템을 연결해서 주민에게 실질적 가치를 제공하는 게 우리의 목표입니다!

    공유하기