政府CSVを“理解するAI”を作るべき理由 — スキーマ推定で政策検証をはやくする

IT政策の提案
政府CSVを“理解するAI”を作るべき理由 — スキーマ推定で政策検証をはやくする

どうも〜おかむーです!今日はちょっとエンジニア寄りの話をしますよ〜

  • 官公庁はCSVを公開してるけど、フォーマットばらばらで使いにくい
  • 機械可読性ルールは進んでいるけど、現場ではメタデータ不足がボトルネック
  • スキーマ自動推定とメタデータ化で政策の検証速度が劇的に上がる

結論

政府・自治体の公開CSV群には「使えるデータ」に変換する自動レイヤーが必要です。エンジニア的に言うと、スキーマ推定・メタデータ付与・バリデーションのパイプラインを標準化すれば、政策KPIと実績の結びつけが一気に現実的になります。

レポート本文

背景と課題整理

これ見てくださいよ:環境省や総務省、内閣官房のページには直接ダウンロードできるCSVが散在しています(例: https://www.env.go.jp/content/900398071.csv、https://www.soumu.go.jp/main_content/000323625.csv、https://www.digital.go.jp/...)。でも毎回エンコーディング確認、ヘッダー解釈、日付形式判定、単位推定が必要で手作業が発生します。

要するに、機械可読=ファイルがCSVであることじゃなくて「意味が読み取れる状態」で公開されていることが重要です。

技術検証:スキーマ自動推定の設計

エンジニア的に言うと、次のパイプラインを用意すれば割と速攻で効果が出ます:

  • 取得層:URLリストを収集(省庁のオープンデータカタログや固定CSV URL)
  • プローブ層:chardetでエンコーディング検出、csv.Snifferで区切り判定、サンプル行で型推定
  • 推定層:列名正規化(全角→半角、カナ→ローマ字変換など)、値サンプリングでデータ型(int/float/date/string/geo)推定
  • メタ化層:候補のunit/measurement推定(正規表現で「%|人|件|km」など抽出)、time-seriesかどうか判定
  • バリデーション層:great_expectationsやpydanticで期待スキーマを作成、CIで差分検知
  • 例えばこういうコードで処理できます:

    import chardet, csv, pandas as pd
    

    from io import BytesIO

    raw = requests.get(csv_url).content

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

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

    ヘッダ正規化

    df.columns = [c.strip().lower().replace('(','(').replace(')',')') for c in df.columns]

    型推定

    for col in df.columns:

    print(col, pd.api.types.infer_dtype(df[col], skipna=True))

    正直ここまでやれば、データの再利用性はかなり上がります。要するに「人手で読み替え」してる工数をコードで置き換えるということです。

    KPIと実績のギャップをどう見るか

    政策の数値目標って省庁横断で定義がバラバラなことが多いです。スキーマ推定を全公開CSVにかけて「同義語マップ(例:'num_cases' == '件数')」を作れば、KPI定義(国会資料や予算書)と現場データを自動照合できます。

    評価指標の例:

    • 一致率:KPIが参照するデータ列が自動推定で見つかる割合
    • 更新ラグ:CSVの最終更新日時とカタログ記載日時の差
    • 型安定度:過去N回のスキーマ変更頻度

    実装上の注意点

    • エンコーディング問題(Shift_JIS混在)には注意です。chardetだけだと誤判定するのでBOMチェックや明示的設定を併用します。
    • 日付の多様性(YYYY/MM/DD、YYYY年M月など)はdateutilのparseで柔軟に処理しますが、業務上の意味(報告日 vs 集計期間)をメタデータで保持すべきです。
    • 地理情報は住所→ジオコーディングで正規化できますが、プライバシーに注意します。

    運用提案(短期〜中期のロードマップ)

    短期(3ヶ月)

    • 省庁横断のCSVレジストリをスクレイピングしてスキーマ推定を実行
    • まずはヘッダー正規化と型推定APIを作る

    中期(6〜12ヶ月)

    • great_expectationsで品質ゲートを作り、公開時に自動テストを実行
    • データカタログ(DCAT/Japanese profile)へ機械可読メタデータを返すAPIを提案

    長期(1年〜)

    • 政策KPIとデータセットを相互参照するダッシュボードを構築し、施策の実績監視を半自動化

    まとめ

    公開CSVをただ置くだけのフェーズは終わりです。エンジニアとしては「スキーマを自動で理解するレイヤー」を政府の標準プラクティスにしてほしいと思います。これで政策の実効性検証が速く、信頼できるものになりますよね!

    おかむーから一言

    テクノロジーで社会をアップデートするのがミッションです。誰でも読めるデータを作れば、政策ももっと早く良くなります。やるなら今ですよ!

    シェアする