コードで語るマニフェスト:自治体オープンデータをエンジニア視点で検証する

IT政策提案
コードで語るマニフェスト:自治体オープンデータをエンジニア視点で検証する

どうも〜おかむーです!大家好,我是おかむー!今天来聊聊日本各地的オープンデータ现状,从工程师和数据角度把政策的“承诺”拆开看清楚〜

  • 这篇文章基于東京都、埼玉県、新潟市、函館市等公开目录与政府CSV样本进行技术级别的可用性评估
  • 结论是:很多数据已经公开,但机器可读性、API化、元数据治理与KPI可验证性还不够
  • 我会给出具体的工程改进方案(示例代码、API 设计、CI 流程、数据包方案)

結論

总体来说,自治体已经把大量数据放到目录里(参见東京都オープンデータカタログ、埼玉县ポータル、新潟市CSV手册等),这很好!不过工程师的视角来看,常见的问题是:格式不统一(CSV/ PDF混杂)、缺少标准化元数据与スキーマ、API不够友好、更新与KPI实绩数据缺乏机器可验证性。要把「公開」变成「再利用可能」,需要在格式、API、ガバナンス三方面下硬功夫。

レポート本文

1) 現状把脈 — これ見てくださいよ

参照した公開リソースの例:

  • 東京都オープンデータカタログ(dataset検索がある)
  • 埼玉県オープンデータポータル(カタログ提供)
  • 新潟市のCSVマニュアル(機械判読に適したCSV作成指南)
  • 函館市のCSV一覧(市レベルでCSV化を進めているケース)
  • NOTICE や各省のCSV公開例(個別CSVファイルが散在)
  • デジタル田園都市構想関連のKPI評価資料(PDFや要約レポートが多い)

この組み合わせを見ると、自治体レベルで「CSVは出している」けど、以下の問題が散見されるんですよね:

  • PDFに埋め込みの表や報告書がまだ残っている(機械可読性が低い)
  • CSVでもエンコーディング(shift_jis/utf-8)、ヘッダ名、日付フォーマットがバラバラ
  • APIエンドポイントが標準化されていない、ダウンロード専用URLが多い
  • データセットごとにスキーマや更新履歴、ライセンス情報が不十分
  • KPIや補助金の実績評価はPDFレポートでしか公開されていないケースがある(例:デジタル田園都市構想の交付金実績レポート)

要するに、見ればデータはあるんだけど「すぐ使える」かというと、エンジニア的に言うとまだハードル高いということです!

2) 技術的な具体問題と影響

  • フォーマット不整合:文字化けや日付解析エラーで大量の前処理が必要
  • メタデータ欠如:フィールド意味が不明で結合やクレンジングで迷う
  • バージョン管理なし:過去データや改訂履歴が追えないため再現性が低い
  • KPIの機械可検証性欠落:政策の達成度を自動で検証できない

これらは市民向けアプリや二次的な統計分析のコストを跳ね上げるんですよね。

3) 改善案(エンジニア視点での実装プラン)

以下は実務で即使える提案です。

  • 一貫した公開フォーマット
  • - プライマリはUTF-8のCSVとJSON(JSON Linesで時間系列)

    - 大きな表はParquetで配布(高速かつschema持ち)

  • DCAT + JSON Schema を使ったメタデータ
  • - 各データセットにDCAT互換のメタ情報(更新日、ライセンス、連絡先、フィールド説明)を付与

    - フィールドごとにJSON Schemaを提供してバリデーション可能に

  • API化(OpenAPIで設計)
  • - GET /datasets — カタログ

    - GET /datasets/{id}/records — ページネーション付きのレコード取得

    - GET /datasets/{id}/schema — JSON Schema取得

    - 追加:GET /kpi/{policy_id}/timeseries — 政策KPIの時系列公開

  • CI/CD & リンティング
  • - データはGitHub(または自治体内部Git)で管理、PRで更新、GitHub ActionsでCSV/JSON Schemaチェック

    - 例:yaml + csvlint + jsonschema

  • 透明なKPI公開
  • - 交付金や政策のKPIは機械可読な時系列で公開(CSV/JSON)し、ソース(実績報告書の明細)への参照を付与

  • データパッケージ(Frictionless Data)採用
  • - datapackage.json を置けば、メタデータ・スキーマ・サンプル値がまとまって便利

    4) サンプルコード — これ書けばだいたい動く

    Python (pandas) で公開CSVを取り込んで基本クレンジングする例:

    import pandas as pd
    

    url = 'https://catalog.data.metro.tokyo.lg.jp/dataset/xxx/resource/yyy.csv'

    encoding対策、日付列のパース、欠損処理

    df = pd.read_csv(url, encoding='utf-8', parse_dates=['date'], dtype={'id': str})

    スキーマベースで型修正

    df = df.astype(schema_dict)

    print(df.info())

    curl + jq でCSVをJSONにして簡易APIに流す例:

    curl -s 'https://example.gov/data.csv' | csvjson | jq . > data.json

    (要するに、API一本で配ればこうした前処理の負荷が激減するって話です)

    5) 運用面の提案

    • データスチュワードを各部署に置く(連絡窓口と品質責任)
    • SLAを明示(更新頻度、遅延時の通知)
    • 市民・研究者向けサンプルクエリ集を公開

    6) 活用シナリオ(公開価値の可視化)

    • 防災データのリアルタイムダッシュボード(都の防災意識調査などを時系列で可視化)
    • 補助金の使途トラッキング(交付金と実績を結合して地域影響を測る)
    • 地域ヘルスケアのKPI監視(保健所データと連携)

    まとめ

    • 多くのデータは既に公開されているが、「誰でもすぐ再利用できる」レベルには到達していない
    • 技術的には「UTF-8/JSON/Parquet」「OpenAPI + JSON Schema」「CIでのデータ検証」を組み合わせれば劇的に改善できる
    • KPIや交付金の実績は機械可読化して透明性を担保すべき(政策のアカウンタビリティ向上)

    おかむーから一言

    我创业两次,做过前端也做过后端——技术上完全能把公共数据变成可复用的API和数据产品。テクノロジーで社会をアップデートしようぜ、って本気で思ってます!