代码看宣言:用工程视角检验政府CSV与开放数据实践

IT政策提案
代码看宣言:用工程视角检验政府CSV与开放数据实践

どうも〜おかむーです!今天来聊点偏技术又偏政策的东西——把政府的公开数据当做代码来读,看看它们到底能不能上生产环境用!

  • 这篇文章基于多个实际gov.go.jp、env.go.jp、mhlw.go.jp等公开CSV与政策文档,做工程化的可用性检查
  • 结论是:CSV公开是好事,但格式不统一、元数据不足、API缺失,限制了再利用和自动化分析的可能
  • 改善建议包含:统一 schema 与 codebook、提供REST/GraphQL API、发布机器可读元数据(JSON-LD/DCAT)与示例代码

結論

政府・自治体现在越来越多把资料以CSV公开,这对数据再利用极为友好!ただし、機械可読性・スキーマ安定性・API提供の観点で見ると、現場の運用負荷や二次利用の障壁が散見される。要するに、データを「置くだけ公開」から「プロダクトとして運用」するフェーズに移す必要があるということです。

レポート本文

1) 今回参照したデータの状況(これ見てくださいよ)

  • notice.go.jp の status_notice.csv(運用通知のCSV): 生データCSVで直接ダウンロードできる、ありがたい!
  • inpit.go.jp の国内移行データ一覧表2012.csv: 履歴データがCSVで公開されている
  • env.go.jp の茨城県関連CSV(約463KB): 県別データがCSVでまとまっている
  • mhlw.go.jp の小規模CSV(13KB): 厚労省系の断片データサンプル
  • soumu.go.jp の分類項目名CSV: コードブック的な役割で非常に重要

これだけ見ると「PDFじゃなくCSVで出してくれてる!最高!」って思うんですけど、エンジニア的に言うと課題も多いんです。

2) よくある技術的な問題点(エンジニア的に言うと)

  • スキーマ非標準化: 同じ意味の列が省庁ごとに名前や型が違う(例: date, Date, 実施日、YYYY/MM/DD vs YYYY-MM-DD)
  • メタデータ欠如: CSVにカラム説明(日本語/英語)、値域、単位、更新周期が添えられていないことが多い
  • コードブック管理の不徹底: soumu の分類CSVはありがたいが、更新履歴やバージョンが明示されていない
  • API未整備: 手動でCSVをダウンロードして変換するワークフローに依存しがち
  • PDF混在: 政策文書や評価報告はPDFが残っていて、機械読み取りに追加工数がいる

要するに「機械で読み込んで繋げる」という前提がまだ完全に満たされていないんですよね。

3) データ品質とKPIギャップの見え方

デジタル田園都市国家構想や交付金関連の評価レポート(chiso.go.jp系)を見ると、政策側はKPIを定めている。一方で、KPIを自動集計するためのデータパイプラインが整備されていないケースがある。

具体例イメージ:

  • 政策KPI: 地域のデジタルサービス導入率50%(年度末)
  • 実績データ: CSVで各自治体が報告するが、カラム名や欠損扱いがバラバラで自動集計できない

これだと毎回手作業で正規化する作業が発生して、評価の再現性・透明性が落ちるんです。

4) 実務的な改善提案(技術者向け・現場導入しやすい順)

  • 公式のスキーマ定義を公開する(JSON Schema / OpenAPI / Data Package)
  • - 要するに「列名・型・サンプル・単位・欠損コード」を機械可読で提供するってことです

  • CSVに加えてJSON/NDJSONも同梱する
  • - APIでの取り込みが楽になり、差分処理もしやすい

  • REST API or GraphQLエンドポイントを用意する
  • - ページ単位でCSV落とす代わりに、フィルタ・ページネーション・メタデータが取れる

  • DCAT/JSON-LD形式でカタログ化し、更新通知(schema registry / webhook)を実装する
  • コードブック(分類表)はバージョン管理(Git)してCHANGELOGを公開
  • データ品質CIを導入(毎日スキーマチェック、NULL率アラート)
  • 5) コード/処理例(エンジニア的イメージ)

    次のPythonスニペットは、CSVを落として日付をパースし、簡単なバリデーションをするイメージです。実行環境や実データでの検証は各自でお願いしますね。

    import pandas as pd
    

    from datetime import datetime

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

    pandasで直接読み込み、日付列をパースする一例

    df = pd.read_csv(url)

    例: カラム名の正規化

    df = df.rename(columns={c: c.strip().lower() for c in df.columns})

    date列の統一処理

    for col in ['date', '実施日', 'updated_at']:

    if col in df.columns:

    df['date'] = pd.to_datetime(df[col], errors='coerce')

    break

    simple schema check

    required = ['id', 'date']

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

    if missing:

    print('missing required columns:', missing)

    要するに、少しの前処理でAPI化の余地が見えるってことです

    6) 実装コストとガバナンスの話

    • 小さな自治体だと技術スタッフが不足しているので、国側で「データ公開プラットフォーム」をSaaS的に提供するのが効率的
    • セキュリティや個人情報は必須で配慮。公開前の自動検査(PII検出)をCIに組み込むべき
    • データ契約(ライセンス)を明示しておけば、企業やNPOの二次利用が活発になる

    まとめ

    • CSVでの公開は前進だが、機械可読性・スキーマ安定性・API整備でまだ改善余地あり
    • 技術的にはJSON Schema、API、DCATメタデータ、CIでの品質チェックを導入すると劇的に再利用が増える
    • 政策KPIと実データの接続を自動化できれば、評価の透明性とPDCAが回りやすくなる

    おかむーから一言

    技術で行政をアップデートするのは地味な仕事だけど、成果は大きいです!小さなスキーマ整備から始めて、データをプロダクト化していきましょう!