コードで語るマニフェスト:自治体データの“機械可読化”をエンジニア視点で検証する

IT政策提案
コードで語るマニフェスト:自治体データの“機械可読化”をエンジニア視点で検証する

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

  • これ見てくださいよ:自治体はデータを出してるけどPDFとバラバラで機械が読みづらい!
  • 要点:標準化とAPI化が進めば、政策は検証可能で市民サービスは改善する!
  • 提案:JSON Schema + OpenAPI + CIでデータ品質を機械で担保しよう〜

結論

地方公共団体のデータ公開は「量」は増えているが「機械可読性」と「API化」が遅れている。総務省・デジタル庁の施策(例:自治体情報システムの標準化・共通化、Data for AI サブユニット)は方向性として正しいが、現場のPDF散在、メタデータ欠落、スキーマ不統一がボトルネック。エンジニア的に言うと、これはAPI一本と標準スキーマで解決する話なんですよね。

レポート本文

現状観察(データソースの実例)

これ見てくださいよ:総務省やデジタル庁はオープンデータ推進や標準化の枠組みを公開している(参照:総務省オープンデータ推進、デジタル庁の事例集)。ただし自治体の公開ページを掘ると、以下が散見される:

  • 報告書や統計がPDFで公開され、表が画像やスキャンで埋め込まれている
  • CSVはあるがカラム名・型・単位が統一されていない
  • APIが無い、もしくはあっても認証や仕様がバラバラ
  • メタデータ(更新日、ライセンス、スキーマ)が欠如

要するに、データは公開されているけど「機械が学べる形」にはなっていないということです。

技術的な問題点を掘る(エンジニア目線)

  • PDF vs CSV
  • - PDFに埋まった統計表はスクレイピングかPDFパース(tabula/camelot)でしか取れない。OCRや手作業が介入すると再現性が落ちる。

    - 要するに、"データの信頼できる一次ソース"がPDFだと自動化が壊れる。

  • スキーマ不統一
  • - 同じ「人口」でも年齢区分・単位・地域コードの扱いが自治体で違う。結合・比較ができない。

  • API・認証・レート制限の欠如
  • - APIがない場合、二次利用者は定期バッチでスクレイピングを走らせるしかない。レイテンシ・信頼性・法的リスクが増える。

  • メタデータと機械可読性
  • - Data for AIの議論(参照:内閣官房資料)でも、機械可読性は重要だとされているのに、実務はまだ追いついていない。

    政策目標と実績ギャップの例示

    総務省・デジタル庁は標準化PMOや事例集でガイドを出しているが、現場レベルでの達成度は自治体ごとにムラが大きい。例えば「標準準拠システムへの移行率」というKPIを作っても、次のようなギャップが生まれやすい:

    • 目標:全市区町村で公開APIを整備(X年まで)
    • 実績:APIを“提供”したが仕様が独自で互換性ゼロ

    数値目標は良いんだけど、評価指標が「公開したか否か」だけだと実際の相互運用性までは担保できないのです。

    具体的な改善提案(技術スタックと運用)

    エンジニア的に言うと、以下をセットで導入すれば劇的に改善できる:

    • 共通スキーマ定義
    - JSON Schema / CSV Schemaで必須カラム、型、単位、地域コード(JIS X 0401相当)を明文化
    • OpenAPIでAPI仕様を標準化
    - 認証はOAuth2またはAPIキー。バージョン管理と後方互換性ルールを明記
    • データカタログとメタデータ
    - DCAT-APやData Catalogを使って更新日・ライセンス・品質指標を公開
    • CI/CD for Data
    - 取り込みパイプラインにデータバリデーション(Great Expectations等)を組み込む
    • 機械学習向け加工済みデータ
    - Data for AIの考え方に沿って、CSV/Parquetでスナップショットを公開

    コード例(Python): PDF表を自動でCSVに落としてAPIにアップロードするワークフローの一部

    # 例: tabula-pyでPDF表を抽出し、requestsで自治体のCSV APIに送る
    

    import tabula

    import requests

    tables = tabula.read_pdf('report.pdf', pages='all', multiple_tables=True)

    for i, df in enumerate(tables):

    csv = df.to_csv(index=False)

    r = requests.post('https://example.gov/api/datasets/population',

    headers={'Authorization':'Bearer TOKEN'},

    files={'file':('t{}.csv'.format(i), csv)})

    print(r.status_code, r.text)

    要するに、自動化はできるけど"最初から機械可読で出してくれ"って話なんです!

    コストとガバナンスの観点

    導入コストは確かにかかるが、効果は明確:市民サービスの改善、民間事業者のイノベーション促進、政策検証が容易になる。運用上は次の体制を推奨:

    • 中央(デジタル庁/総務省)によるスキーマPMO
    • 地方側に "データ担当リード" を置き、CI環境・QAルールを共有
    • 定期的な相互運用テストとハッカソンで民間利用を刺激

    まとめ

    • PDFばかりでものは増えているが、機械可読性が低く利活用が進まない
    • 解は「スキーマ」「OpenAPI」「データカタログ」「CIによる品質保証」の組合せ
    • 中央のガイドラインはある。あとは現場の実装支援と互換性チェックを徹底するだけ!

    おかむーから一言

    起業して二回失敗して学んだのは、プロダクトもデータも「仕様通りに出すこと」がすべてだってことです。テクノロジーで行政も市民サービスもアップデートしましょう〜!