データにバージョンを与えるという政治:自治体オープンデータのライフサイクル設計をコードで考える

IT政策の提案
データにバージョンを与えるという政治:自治体オープンデータのライフサイクル設計をコードで考える

どうもおかむーです!今日はちょっとエンジニア寄りに、自治体オープンデータの「バージョン管理」について話しますよ〜

  • データはコードと同じで変更履歴が必要。コントロールされてないと依存先が壊れるよ!
  • 東京都カタログやe-Statを見ると、更新頻度やフォーマットの変化で実運用がつまずく場面が多いんです
  • 要するに「データのセマンティックバージョン+通知+差分」があれば現場も外部連携もめっちゃ楽になります!

結論

自治体オープンデータにはソフトウェアと同じライフサイクル管理を導入すべきです。具体的にはデータセットにセマンティックバージョン(例: 1.2.0)、機械判読できるchange log、差分API/Webhook、CIによるスキーマ互換チェックを組み合わせる。これで政策KPIやダッシュボードの「更新で値が急に変わる」問題を工学的に抑えられます。

レポート本文

現状観察

これ見てくださいよ:東京都オープンデータカタログ(portal.data.metro.tokyo.lg.jp / catalog.data.metro.tokyo.lg.jp)やe-Statのダッシュボード(dashboard.e-stat.go.jp)はデータが豊富で助かるんですけど、注意書きに「更新頻度が変わりました」「CSVは丸めで合計が一致しないことがある」といった注釈があるんです。要するに、データの内容や表現が変わることを前提で作られてるんですよね。

更新頻度の変化(年→月)や小数点処理の違いは、ダッシュボードや市民アプリにとっては破壊的変更になり得ます。PDFに埋め込まれた表やCSVのフォーマット差異も機械処理の障害です。

なぜバージョン管理が必要か(エンジニア的に言うと)

  • 依存関係管理:自治体AのCSVを参照する外部アプリは、フィールド変更で壊れる
  • 再現可能性:KPIや政策評価は「いつのバージョンのデータで出したか」を残す必要がある
  • 自動化運用:CIで回せば変更での破壊を事前に検出できる

要するに、データもコードと同じライフサイクル管理をするってことです。

技術的な実装案(具体例とコード)

1) メタデータにセマンティックバージョンを付与

  • dataset.json に "version": "1.0.0" を置く(Data Package / DCAT 互換)

2) 変更ログと互換性ラベル

  • patch (互換)、minor (後方互換な追加)、major (非互換)

3) 差分API / Webhook

  • 公開カタログが更新時にWebhookで通知。下流は自動でテストを走らせる

Webhook の例(curl):

curl -X POST https://example.com/webhook -H 'Content-Type: application/json' -d '{"dataset_id":"tokyo-evac", "old_version":"1.1.0", "new_version":"1.2.0", "changes":[{"field":"capacity","type":"added"}]}'

4) スキーマ差分検出(Python + pandas の簡易例)

import pandas as pd

old = pd.read_csv('old.csv', nrows=0).columns.tolist()

new = pd.read_csv('new.csv', nrows=0).columns.tolist()

added = [c for c in new if c not in old]

removed = [c for c in old if c not in new]

print('added', added, 'removed', removed)

5) CIでの互換テスト

  • スキーマチェック、サンプル行のバリデーション、数値丸め方の確認(東京都カタログの注記を踏まえて)

運用設計のポイント

  • ライセンス(東京都はCC BY 4.0)情報とバージョンを紐づける
  • ダッシュボードや政策KPIは常に「使っているデータのバージョン」を明示
  • 過去バージョンをアーカイブして再現性を担保
  • 小さな自治体向けには「マネージド・カタログ(SaaS)」でバージョン管理機能を提供

政策評価への効用

  • KPIと実績のギャップを解析するとき、どのデータバージョンで計算したかが不明だと誤った評価になる。バージョン付与で原因追跡が一発です。

まとめ

  • オープンデータは公開で終わりじゃなく、運用が重要!
  • セマンティックバージョン、change log、差分API、CIテストの組合せで運用リスクが劇的に下がる
  • 東京都カタログやe-Statのような既存プラットフォームは、メタデータ強化と通知機能で短期的に改善可能

おかむーから一言

テクノロジーは政策の“安定運用”を支える道具です。データにバージョンを付けておけば、政策の再現性と信頼性がすぐに変わるんですよ。現場も市民もハッピーにしましょう!

シェアする