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

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

안녕하세요~ 오카무입니다! 오늘은 정부·지자체가 공개하는 데이터와 시스템을 엔지니어링 관점에서 쪼개 보는 글입니다. 코드로 말하면 정책이랑 데이터가 제대로 연결돼 있는지 검증하는 느낌으로 읽어주세요!

  • 이 글의 3줄 요약
- 공개데이터는 CSV로 제공되는 경우도 많지만 PDF에 봉인되어 있거나 메타데이터가 부족한 경우가多いです

- デジタル田園都市交付金 등政策ではKPIと実績の公開があるけど、機械可読性と比較可能性に課題あり

- API設計・メタデータ整備・CSVW/JSON-stat導入で即改善可能。コード例つきで提案します!

結論

정부·지자체는データを出しているけど「機械がそのまま使える形」で出していないことが多いです。エンジニア的に言うと、CSVとPDFが混在、スキーマ不在、API未整備で再現性と自動検証ができない。要するに「政策の数値目標と実績をコードで追えない」状態です。改善は現実的で、メタデータと簡単なAPIを整備すれば大幅に利活用が進みます!

レポート本文

現状の証拠(データソースを見てくださいよ)

これ見てくださいよ:検索結果にある内閣官房の資料(https://www.cas.go.jp/.../data8_siryou1.pdf)では「機械可読性を確保せよ」と書いてあるけど、現場の公開物はPDFや散在するCSV(https://notice.go.jp/docs/status_notice.csv や https://www.env.go.jp/content/900398071.csv、総務省の全国CSVなど)で、統一スキーマがないんです。

  • デジタル田園都市国家構想交付金関連(https://www.chisou.go.jp/.../kouhukin/index.html)ではKPI定義と実績がPDFで公開されるケースが多く(つくば市の実績評価シート等)、機械的な比較が難しい。

技術的な問題点

  • PDF先行:重要な指標がPDFに埋め込まれている→スクレイピングやOCRが必要でエラーが増える
  • スキーマ不在:CSVはあるが列名・単位・更新日時・ライセンスなどのメタ情報がない
  • APIがない/断片的:一貫したREST/GraphQL APIがないため、統合ダッシュボードや自動検証が作りにくい
  • KPIと実績の時系列突合が難しい:年度基準や集計粒度がドキュメントでバラバラ

要するに、エンジニア的に言うと「API一本で解決する話なんですよね」。

具体的な検証手法(コード例)

エンジニアならわかると思うんですけど、まずはCSVを読み込んでKPIと実績を突合するのが基本。pandasでの簡単な例はこんな感じです:

import pandas as pd

kpi = pd.read_csv('kpi.csv')

actual = pd.read_csv('actuals.csv')

年度・事業IDでマージ

merged = pd.merge(kpi, actual, on=['fiscal_year','project_id'], how='left')

merged['gap'] = merged['actual_value'] - merged['kpi_value']

print(merged.sort_values('gap', ascending=False).head())

PDFしかない場合は、pdfminer / tabula で抽出して手作業でスキーママッピングが必要になり、ここが運用コストの温床になります。

改善提案(実装可能なロードマップ)

  • メタデータを付与する(CSVW、Data Package、JSON Schema)
  • - 列名、単位、年度、更新日時、ライセンスを必須化

  • 機械可読APIを提供する(REST + JSON-LD または JSON-stat)
  • - ページング・フィルタ・検索をサポート

  • PDFは“最終版の人向け資料”に限定、データは必ずCSV/JSONで公開
  • バージョン管理と差分配信(S3 + manifest.json)で変更追跡を容易に
  • サンプル実装:Flaskでの簡易API
  • from flask import Flask, jsonify, request
    

    import pandas as pd

    app = Flask(__name__)

    df = pd.read_csv('full_data.csv')

    @app.route('/api/projects')

    def projects():

    year = request.args.get('year')

    out = df[df['fiscal_year']==int(year)].to_dict(orient='records')

    return jsonify(out)

    これだけで自治体の職員とエンジニアのコミュニケーションコストが劇的に下がりますよ!

    KPIのギャップ分析(事例)

    デジタル田園都市交付金の実績評価資料(つくば市や各県のPDF)を見ていると、KPIが「住民数」「導入拠点数」「費用対効果」など複数で設定されているんですが、年度ごとの粒度や測定方法が統一されていないんです。要するに、A市の「導入拠点数」とB県の「拠点定義」が違うと横並び評価ができない。

    ここは標準スキーマ(project_id, indicator_id, definition, unit, measurement_method)を国が公開して、各自治体はこれに従ってCSVで報告するだけで解決します。

    オープンデータの活用可能性

    • 地域別KPIをAPI化すれば第三者がダッシュボードやアラートを作れる
    • MLモデルのためのData for AI工夫(Digital庁のData for AIサブユニットの方向性参照)で、匿名化ルール・スキーマを整備すれば生成AIでの政策分析も安全に進められる

    まとめ

    • 事実:データは公開されているが機械可読性が低く、エンジニアがすぐ再利用できない状況
    • 解決:CSV/JSONでの公開、メタデータ(CSVW等)、簡易API、そして標準スキーマの導入が即効性あり
    • 効果:KPIと実績がコードで追えるようになり、政策評価の透明性と再現性が高まる

    おかむーから一言

    テクノロジーで社会をアップデートするって言ってる自分としては、まず“データをコードで扱える”ようにするのが入口だと思ってます!やれることはすぐできるんですよ〜

    공유하기