コードで語るマニフェスト:政府データをエンジニア目線で検証する

IT 정책 제안
コードで語るマニフェスト:政府データをエンジニア目線で検証する

どうも〜おかむーです!오늘은 정부·지자체의 공개데이터를 코드로 파헤쳐보는 시간이에요〜

  • これ見てくださいよ:内閣府やデジタル庁がCSVを出してるけど、機械判読性に差がありすぎる!
  • エンジニア的に言うと:フォーマット統一、メタデータ、API設計があれば再利用が一気に進むんですよね
  • 提案:CSVW/JSON-LDでスキーマ公開、UTF-8化、API一本化でデータ利活用を加速させよう!

結論

政府・自治体は「データは出している」けど、フォーマットとメタデータの整備不足で実務的な利活用が止まっている。要するに、データ公開はゴールじゃなくてインフラの一部に過ぎないということです。技術的な改善(エンコーディング統一、スキーマ公開、REST/GraphQL API整備、KPIデータの時系列API化)をやれば政策の検証性が飛躍的に上がる!

レポート本文

参照したソース(抜粋)

  • 新車販売台数CSV(内閣府): https://www5.cao.go.jp/j-j/wp/wp-je24/csv/d1-1-4.csv
  • 公共投資の動向CSV(内閣府): https://www5.cao.go.jp/j-j/wp/wp-je24/csv/d1-1-42.csv
  • 医療機関データ(デジタル庁資源): https://www.digital.go.jp/.../xxxxxx_hospital.csv
  • NICTER注意喚起CSV: https://notice.go.jp/docs/status_nicter.csv
  • Japan Dashboard / e-Stat: https://dashboard.e-stat.go.jp/ と https://www.digital.go.jp/

これ見てくださいよ:内閣府のCSVは提供されているけど、実際にダウンロードしてみると「PDF表のCSV化」っぽい痕跡(ヘッダが混在、カンマで空列を埋めた痕跡、文字コードBOMなど)があるんです。要するに、機械処理の前処理コストが高いということです。

機械可読性の現状と問題点

  • 文字エンコーディング:BOM付きUTF-8やShift_JIS混在があると、パースエラーが頻発します。
  • ヘッダ設計の欠如:多階層の表見出しをそのまま1行に押し込んだCSVは列名が不明瞭になります。
  • メタデータ不足:列の説明、単位、更新頻度、ライセンスがメタデータで付与されていないケースが多い。
  • APIの欠如:ファイル配布のみでクエリ可能なAPIがないため、リアルタイム分析やダッシュボード化が難しい。

政策KPIとデータのギャップ

例として「デジタル田園都市国家構想交付金」の実績資料を見ると(県のPDF/報告書参照)、採択事業や実績額は出ているが、KPIの時系列的達成状況を機械的に取得できるAPIは無いケースが多いです(参照: 都道府県のPDFやデジタル庁のレポート)。要するに、政策の数値目標と実績をプログラムで突き合わせるのが手間で、自動で検証できないんですよね。

技術的な改善提案(優先度付き)

  • エンコーディング統一(UTF-8, no BOM)とCSVのバリデーションパイプライン導入
  • - CIでcsvlintやfrictionless dataの検証を走らせる

  • CSVWまたはJSON-LDでスキーマを公開
  • - 列名、型、単位、許容値、更新頻度、ライセンスを定義。要するに“データの契約書”を付けるイメージです

  • シンプルなREST API(またはGraphQL)を一本用意
  • - エンドポイント例: GET /api/v1/vehicle-sales?prefecture=13&year=2023

    - 認証は不要だがレート制限とキャッシュを設定

  • KPIモニタリング用の時系列APIとダッシュボードテンプレート提供
  • - 各交付金や補助金に対して、KPIごとの時系列データを標準スキーマで公開

  • 地理情報の標準化(緯度・経度カラム名統一、GeoJSON出力)
  • 実装のスニペット(エンジニア的に言うと)

    エンジニアならわかると思うんですけど、CSVの読み込みはこういう感じで事前処理しておくと捗ります(Python/pandas例):

    import pandas as pd
    

    BOM対応、ヘッダ行の飛びや複数見出しに対応

    df = pd.read_csv('d1-1-4.csv', encoding='utf-8-sig', skiprows=0)

    列名正規化

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

    日付カラムパース

    if 'year' in df.columns:

    df['date'] = pd.to_datetime(df['year'].astype(str) + '-01-01')

    API提案(FastAPI風のエンドポイント設計):

    • GET /api/v1/public-investment?year=2022&level=national
    • GET /api/v1/kpi?project_id=xxx&metric=expenditure

    これでダッシュボードやCI側でPolicy-as-Code的に自動検証できるようになります。

    政策検証のワークフロー例

  • データ公開(CSV/JSON + Schema)
  • CIで品質チェック(型・欠損・外れ値)
  • ETLでデータベース化(Postgres+PostGIS)
  • ダッシュボード(Grafana / Superset)とAPIで外部公開
  • KPIの自動アラート(閾値を超えたらEmail/Slack)
  • これ、全部オープンにやれば第三者による再現可能な政策検証が回るようになります。実際のところ、日本の政府系サイトはデータを出す意志はある。だけど「誰がどう使うか」を想定した設計がまだ追いついてないんですよね。

    参考にした実データの扱い方メモ

    • 内閣府CSV群(d1-1-4.csv, d1-1-42.csv)は表形式だが多段ヘッダ。最初に人手でヘッダを整理してスキーマ定義を作るのが現実的。
    • 医療機関CSV(digital.go.jp)は列がそろっているケースが多いので取り込みは容易。ただし緯度経度の精度や住所表記の正規化は必要。
    • NICTERのステータスCSVはセキュリティ通知として有用。時系列監視で自動化しやすい。

    まとめ

    政府はデータを出しているけど、データを“使う”ためのエコシステムが未完成。要するに、単発のCSV配布よりもAPI化・スキーマ化・メタデータ整備が先。技術的にやることは明確で、CSVW/JSON-LD、UTF-8統一、REST/GraphQL API、CIでの品質チェックを導入すれば、政策の実績と目標をプログラムで突き合わせる未来が来ます!

    おかむーから一言

    テクノロジーで社会をアップデートするのがミッションなんですよ!小さな改善が政策検証の自動化につながるんで、一緒にやりましょう!

    공유하기