データの“いつ変わったか”をコードで語る:自治体オープンデータのバージョニング設計

IT政策の提案
データの“いつ変わったか”をコードで語る:自治体オープンデータのバージョニング設計

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

  • これ見てくださいよ:公開データに「更新履歴」がないと政策の因果が追えないんです
  • エンジニア的に言うと、データはソースコードと同じくバージョン管理が必要なんですよね
  • 小さな自治体でも取り入れられる軽量な実装パターンを提案します!

結論

公開データには「タイムスタンプ」「バージョンID」「チェックサム」「差分API」が必須。これを標準化すれば、政策の実績と目標のギャップがコードで再現可能になって説明責任が高まる。やるべきはメタデータ強化+軽量なバージョニング運用だ!

レポート本文

背景/なぜ今か

e-GovのAPIカタログや東京都オープンデータAPIを見ても、データ本体は出ているけど“いつ”“どう変わったか”が分かりにくいケースが多いです。CSVをぽんと置く運用だと、過去値の追跡が困難で政策評価の再現性が落ちるんですよね。

要するに、データの更新履歴がないと「その数値はいつのもの?」という問いに答えられないということです。

問題点(技術観点)

  • メタデータが貧弱:更新日時のみ、バージョン無し
  • フォーマットの無統一:CSV/JSON混在でスキーマ変化を検出しにくい
  • 履歴保存の欠如:上書き更新で旧データが消える

具体的な設計提案

  • メタデータ必須項目
  • - dataset_id(恒久的ID)

    - version(セマンティックでなくてもOK、連番で可)

    - issued_at / updated_at(ISO8601)

    - checksum(SHA256)

    - change_log(短い要約)

  • 配信パターン
  • - latestエンドポイント + /history/{version}で古いバージョンへアクセス可能に

    - 差分(delta)エンドポイントを用意すると、帯域と解析コストが減る

  • 軽量実装例(小自治体向け)
  • - ファイルストレージ(S3互換)にcontent-addressedで保存

    - メタデータはJSONで同ディレクトリに置く

    - CIでスキーマ検査(例:JSON Schema / CSVLint)

    実践コード例

    # Python: 新旧CSVの差分を簡易チェックする例
    

    import hashlib, requests, csv

    r = requests.get('https://example.gov/dataset.csv')

    h = hashlib.sha256(r.content).hexdigest()

    print('sha256=', h)

    さらにpandasで行差分をとるなど

    要するに、このチェックサムをメタデータに入れとけば、データ改変が検知できます。

    運用フロー(短期〜中期)

    • 短期:公開中のCSV/JSONにmetadata.jsonを追加(issued_at, checksum)
    • 中期:ポータルにhistory APIを追加、差分配信を試す
    • 長期:DCAT/JSON-LDでカタログ連携、e-Govや都道府県ポータルとメタデータ同期

    政策評価への応用例

    過去の交付金、公共施設利用データ(都のオープンデータ等)をバージョン管理すれば、「いつ」「どのデータで判断したか」を再現可能。これで数値目標と実績のギャップ分析が強くなるんです!

    まとめ

    • データの“何”より“いつ・どのバージョン”が重要
    • メタデータ強化+履歴公開で政策の説明責任がコードで担保できる
    • 小規模自治体でも導入可能な軽量設計をまずはmetadata.jsonとチェックサムから始めよう

    おかむーから一言

    技術で行政をアップデートするのは可能です!まずは「いつ変わったか」を記録する文化を作るところから始めましょう。小さな改善が政策の信頼を変えるんですよ!

    シェアする