코드로 읽는 공공데이터 매니페스토 — CSV로 열린 정부, 하지만 진짜는 API다

IT 정책 제안
코드로 읽는 공공데이터 매니페스토 — CSV로 열린 정부, 하지만 진짜는 API다

안녕하세요, 오카무~입니다! 오늘은 정부·지자체가 공개한 CSV들을 코드 관점에서 뜯어보는 재밌는 시간이에요〜

  • 이 글 3줄 요약
- 공개된 CSV(https://notice.go.jp/... 등)는 기계 가공이 가능한 좋은 출발점이에요. 하지만 메타데이터·스키마가 제각각이라 재사용성이 떨어져요

- 엔지니어 관점에서는 API·스키마·버전관리가 핵심! CSV만으로는 지속 가능한 플랫폼이 안 됩니다

- 제안: OpenAPI 기반 데이터 API, CSVW/JSON-LD 메타데이터, 자동화된 검증 파이프라인 도입하면 금방 개선 가능

結論

공공데이터가 CSV로 공개되어 있는 건 환영할 일입니다. 이거 보세요, CSV가 직접 링크로 뜨는 게 많아요(総務省、環境省、厚労省 別々) — 기계가 읽을 수 있다는 점에서 큰 진전이에요. 다만 엔지니어적으로 볼 때 CSV만으로 끝내면 확장성이 떨어지고 운영·책임의 문제가 남아요. 요약하면 "まずは良いけど、次はAPIとメタ데ータを整備しよう" 입니다!

レポート本文

何を見たか(データソース)

これ見てくださいよ、検索結果に挙がっている実際の公開データ:

  • NOTICE注意喚起: https://notice.go.jp/docs/status_notice.csv
  • 環境省(茨城県関連): https://www.env.go.jp/content/900398071.csv
  • 住民移行等の一覧(2011): https://www.inpit.go.jp/content/100869372.csv
  • 厚労省の救護施設: https://www.mhlw.go.jp/content/001682075.csv
  • 総務省 全国データ: https://www.soumu.go.jp/main_content/000323625.csv

CSVで直リンクになっている点は嬉しい!エンジニア的に言うと、ファイル単位で公開されていると最初の取得は楽なんですよね。ただし次の課題が山積みです。

問題点を技術的に分解する

  • スキーマ不統一
- 行政ごとにカラム名・意味が違う。例えば「住所」「所在地」「prefecture_name」が混在するケースが多い。

- 要するに、結合・横断分析に前処理コストがかかるということです。

  • メタデータ欠如
- ライセンス、更新頻度、カラムの型や単位がCSVに埋め込まれていない。これだと自動処理パイプラインが作りにくい。
  • エンコーディング問題
- 日本の公開データではShift_JIS/UTF-8が混在することがあり、読み込み時に例外が発生しやすい。
  • APIの不在
- CSVは静的スナップショット。フィルタ・ページング・差分取得が欲しい場面でAPIがないとユーザー側で負担が増える。
  • バージョン管理と更新履歴の欠如
- いつ何が変わったかが分からないと監査や再現性が壊れる。

コードでできる簡単チェック(例)

エンジニアならわかると思うんですけど、こうやって最初に自動で検査するのが大事です。Python(pandas)で複数CSVを取得→エンコーディング自動判定→スキーマ検証の一例:

import requests, chardet, pandas as pd

from io import BytesIO

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

raw = requests.get(url).content

enc = chardet.detect(raw)['encoding']

df = pd.read_csv(BytesIO(raw), encoding=enc)

print(df.columns.tolist())

スキーマ例: 必須カラムが存在するか確認

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

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

print('missing', miss)

要するに、最初に自動で型と必須カラムチェックを入れておくと後がだいぶ楽になるんですよね。

政策目標と実績のギャップをどう見るか

政策が「オープンデータ化を推進」しているケースでも、形だけCSVを置くだけで実効性がないパターンがあります。例えば「全国データを公開して利活用促進」という目標なら、評価指標として

  • API利用回数
  • データ更新ラグ(公開から更新までの平均時間)
  • メタデータ整備率
を追うべきです。現状の公開状況を見る限り、これらはまだトラッキングされていないことが多いです。

改善提案(具体的)

  • カタログ+スキーマ管理
  • - DCAT-AP相当のカタログでメタデータを統一。各データセットにJSON-LD/CSVWのスキーマを添付する

  • APIゲートウェイ
  • - OpenAPIでGET/POST/フィルタ/ページングを提供。差分取得(endpoints like /datasets/{id}/changes)を用意

  • CIによる品質保証
  • - CSVをコミットするたびに自動的にスキーマ検証・型チェック・サンプル数チェックを走らせる

  • 変換レイヤー
  • - CSV→JSON APIを自動生成するミドルウェア(例: csv2apiや消費者向けGraphQLラッパー)

  • エンコーディング/ロケール標準化
  • - UTF-8 + 明示的timezone/dateフォーマット(ISO8601)で統一

    投資対効果の話

    API化とメタデータ整備は初期コストがかかるけど、自治体間で共通のライブラリを作れば2回目以降は劇的に楽になります。データを使ったサービスが増えれば住民サービスの向上や民間活力の創出につながりますよね!

    まとめ

    • CSVでの公開は歓迎。ただしそれだけだと再利用性や運用性で限界がある
    • エンジニア観点ではAPI+スキーマ+自動検証が勝負の分かれ目
    • 具体策としてOpenAPI、CSVW/JSON-LD、CIパイプライン、差分APIを提案。要するに「データプラットフォーム化」するのが正攻法です

    おかむーから一言

    테크로 사회를 업그레이드하자! CSV는 시작일 뿐, API와 스키마로 시민에게 쓸모 있는 데이터 파이프라인을 함께 만들자구요〜

    공유하기