用代码读清政策:从CSV、API到可复现的KPI验证

IT政策提案
用代码读清政策:从CSV、API到可复现的KPI验证
  • 这篇文章用工程师视角把政府发布的数据当作代码来读,检验可用性和可验证性。
  • 我们对比了政府公开的CSV、PDF和平台(例:notice.go.jp、digital.go.jp、raida.go.jp 等),指出典型问题并提出工程化改进路径。
  • 给出具体的抓取/验真/转化代码样例,和能马上执行的开放数据治理建议。

結論

政府的开放数据已经有了良好基底(部分CSV、デジタル庁资源、RAIDA等可查),ただし実務上は「機械可読性」「安定API」「メタデータ管理」が足りない!要するに、政策のKPIをコードで検証できる仕組みを作ること、CSVだけでなくAPI・schema・CIを整備することが最優先です。

レポート本文

どうも〜大家好,我是おかむー!今日はちょっとエンジニアっぽい話をしますよ〜。コードで語るマニフェスト、つまりデータとシステムで政策を検証する目線で、実際の公開ソースを見ながら話します。これ見てくださいよ:

  • 直接可用なCSV例:https://notice.go.jp/docs/status_notice.csv (可直接抓取)
  • 行政が提供するCSVサンプル:digital.go.jp の病院一覧CSV(例:https://www.digital.go.jp/assets/.../xxxxxx_hospital.csv)
  • 事例集・支援プラットフォーム:RAIDA(https://raida.go.jp/)
  • 政策KPI指標の管理ガイドライン:内閣府の交付金ガイドライン(https://www.chisou.go.jp/.../r5_guideline-checkaction.pdf)

上記をエンジニア視点で評価すると、主に以下の課題が見えます。

問題点(技術視点)

  • フォーマットの不統一:CSVがある一方でPDFに重要な表が埋め込まれていることが多い(要するに解析しにくいということ)。
  • メタデータ不足:列の意味、更新日時、版管理が明示されていないケースあり。APIがない or 安定していない省庁もある。
  • スキーマの欠如:型やユニットが不明瞭で、結合や時系列集計の信頼性を担保できない。
  • 更新/公開のCIがない:変更検出や差分公開がされておらず、再現可能な解析が難しい。

いいところ

  • 一部はCSVで直接落とせる(notice.go.jpなど)。これ、エンジニア的に言うとすごくありがたいんですよ!APIが無くてもCSVで自動処理できるのは大きい。
  • RAIDAのように事例や地図で可視化する試みがある。要するに、データカタログ作りの土台はあるということです。

具体的検証例(コード)

これ、まずCSVをとってスキーマ検査してParquetに変換するワンライナー的な流れが有効です。例:Python + pandas + pyarrow

import pandas as pd

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

df = pd.read_csv(url)

print(df.dtypes)

簡易スキーマチェック

required_cols = ['id','title','status','updated_at']

for c in required_cols:

if c not in df.columns:

print('missing', c)

Parquetに落とす

df.to_parquet('status_notice.parquet', index=False)

curlで取得して差分確認する簡易例:

curl -sS https://notice.go.jp/docs/status_notice.csv -o /tmp/status_notice.csv

sha1sum /tmp/status_notice.csv

定期的にCIでハッシュ比較すれば更新検知ができます

要するに、API一本で解決する話なんですよね:安定エンドポイント + スキーマ定義(OpenAPI / JSON Schema) + バージョニング。これがあれば、政策のKPI(例えばデジタル実装交付金の達成率)を自動で算出できるようになります。

KPIと実績ギャップの検証方法

  • 指標収集:交付金報告のPDFから数値を抜くのは最後の手段。まずは対応するCSV/APIを探す(chisou.go.jp の交付金ページや RAIDA を参照)。
  • 正規化:年度・自治体ID(JISコード)・事業コードで正規化する。
  • 集計と差分:目標値と実績を合算して不足分を可視化(例:年度ごとの達成率、自治体別ランキング)。

例(擬似SQL):

SELECT prefecture_code, SUM(actual_amount) / SUM(target_amount) AS ach_rate

FROM grants

GROUP BY prefecture_code

ORDER BY ach_rate ASC;

改善提案(実装ロードマップ)

  • カタログ化:govデータはまずDCAT互換のデータカタログ(CKANやDataHub)で索引づけする。
  • スキーマの標準化:各交付金/統計に対してJSON Schemaを定義、サンプルCSVと検証スクリプトを提供する。
  • API化:CSVの定期置き場だけでなく、GET /v1/grants?year=... みたいなRESTを用意。
  • CIとDiff公開:ファイルのハッシュをCIで監視し、変更は差分CSV/Parquetで公開。
  • 地理系データはGeoJSON/TopoJSONで公開し、GIS連携を前提にする。
  • サンプルノートブックを公開:解析テンプレをJupyterで用意し、政策担当者も再現可能にする。
  • 技術スタックの提案(最小構成)

    • データストレージ:S3 + Parquet
    • カタログ:CKAN / DataHub
    • API:FastAPI(OpenAPI自動生成)
    • CI:GitHub Actionsでスキーマ検証と差分検出
    • メタデータ:DCAT + JSON Schema

    まとめ

    政府データは一部でCSVやプラットフォームが整備されており、エンジニア的には「繋げられる」状態です。ただし、PDF混在・スキーマ不明・API不足という実務上の障壁が残る。要はコードで再現できる「仕様」をもう一段階揃えることが重要で、そのための短期施策(カタログ化・スキーマ化・CI)と中長期施策(API整備・メタデータ運用)が必要です!

    おかむーから一言

    テクノロジーで社会をアップデートするのは口で言うほど簡単じゃないんですよ。でもデータの「機械可読化」って、地味だけど爆発的に効く投資です。やりましょう、今すぐ小さく動かして検証を始めてください!