コードで語るマニフェスト:日本の政府データを技術的に検証する

IT政策提案
コードで語るマニフェスト:日本の政府データを技術的に検証する

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

  • 政府はデータを出しているけど、フォーマットやメタデータがバラバラで実利用に課題あり
  • CSVやAPIがある良い例と、PDFに閉じた報告が混在。要するに機械可読性が足りない
  • 技術的改善案(UTF-8統一、CSVW/JSON-LD、API設計、データカタログ化)を具体的に示すよ!

結論

日本の官公庁は重要なオープンデータを公開しているが、形式・メタデータ・API整備の観点で改善余地が大きい。エンジニア的に言うと「API一本で解決する話」が多く、UTF-8/スキーマ化/時系列CSVの公開で利活用が劇的に上がる。

レポート本文

現状サマリ(参照サイト)

これ見てくださいよ:e-Stat(https://www.e-stat.go.jp/)やJapan Dashboard(https://www.digital.go.jp/resources/japandashboard)、国税庁の法人番号全件ダウンロード(https://www.houjin-bangou.nta.go.jp/download/zenken/index.html)、厚労省の介護オープンデータ(https://www.mhlw.go.jp/stf/kaigo-kouhyou_opendata.html)は、いずれもデータを出していて頼もしいんです。いいところは「データを公開してる」点!

でも、ここからが問題。公開形式やメタデータが統一されてないんですね。

  • CSVにShift_JISとUTF-8が混在(国税庁はShift-JIS/Unicodeの両方を提供している)
  • KPIや実績がPDFに閉じているケース(例:地方交付金の実績PDF)→ 機械で追いにくい
  • APIの有無がデータごとに異なる(e-StatはAPIあり、しかしAPIドキュメントやサンプルが分散)

要するに、データはあるけど“すぐ使える形”になっていないということです。

技術的問題点の詳細

  • 文字エンコーディングの不統一
  • - Shift_JIS/CP932 と UTF-8 が混在。エンジニアならわかると思うんですけど、読み込み時に毎回エンコ対策を書くのが地味に辛い!

    - 対策:公開はUTF-8で一本化。過去データは変換済みのアーカイブを置く。

  • メタデータ不足(スキーマがない)
  • - 列名が自治体ごとに違う、単位や更新時刻が明記されないケースあり。

    - 対策:CSVW / JSON-LD を使ってスキーマ(型、単位、IDフィールド、欠損値ルール)を公開する。

  • PDFに閉じた報告書
  • - KPIがPDF表のまま。数値目標と時系列実績を突き合わせられない。

    - 対策:KPIの機械可読化(CSV/JSONで時系列)、ダッシュボードはデータの原典にリンクすること。

  • API設計とドキュメント
  • - e-StatのAPIはあるけど、統一的なエンドポイント設計や認証・レート制御の説明が分散している。

    - 対策:RESTfulで一貫したレスポンス(JSON)、OpenAPI定義、SDK例を公開。

    具体的なコード例(実務でよく使うパターン)

    これ見てくださいよ:国税庁の全件CSVはShift_JISで来ることがあるので、Pythonでの読み方例を示します。

    import requests
    

    import io

    import pandas as pd

    url = 'https://www.houjin-bangou.nta.go.jp/download/zenken/zenken.csv' # 例

    r = requests.get(url)

    r.encoding = 'cp932' # Shift_JIS系の場合

    df = pd.read_csv(io.StringIO(r.text))

    print(df.head())

    e-StatのAPI呼び出しイメージ(アプリIDが必要):

    import requests
    

    API = 'https://api.e-stat.go.jp/rest/3.0/app/getStatsData'

    params = {'appId': 'YOUR_APP_ID', 'statsDataId': '0003xxxxxx'}

    r = requests.get(API, params=params)

    XMLで来る場合が多いので、パースしてJSON化する処理が必要

    要するに、ちょっとした変換コードを書くだけで使えるんですけど、公式でサンプルとUTF-8 JSONを出してくれたら最高なんですよね!

    KPIと実績のギャップ分析(例:デジタル田園都市交付金)

    山口県の交付金実績PDF(検索結果)を見ると、KPIは記載されているけど年度ごとのタイムラインがCSVで出てない。これだと「目標:X、実績:Y」が人手でしか比較できない。

    提案:

    • KPIごとに機械可読の時系列データを公開(year, region, KPI_id, target, actual)
    • データベースを公開して集計クエリが直接叩けるようにする(SQLエンドポイントやBigQuery公開でも良い)

    改善提案(優先度付け)

  • 全省庁で公開フォーマットをUTF-8 CSV/JSONで標準化(High)
  • CSVにはCSVW準拠のメタデータを添付(High)
  • KPI・補助金・支出は時系列CSVで公開、ダッシュボードは原データへリンク(High)
  • OpenAPI (Swagger) とサンプルSDKを用意、APIキー・レート制御は透明化(Medium)
  • データポータルにバージョン管理とチェックサムを表示(Low)
  • 技術的にやるべき実装例:

    • S3/CloudFrontで静的CSVホスティング + manifest.json(CSVW)
    • OpenAPI で /datasets/{id}/download, /datasets/{id}/query を定義
    • JSON-LDでライセンス(CC-BY等)と更新日時を埋め込む
    • CIで毎回スキーマ検証(panderaやgreat_expectations を利用)

    まとめ

    政府のオープンデータ供給は十分に始まっているが、エンジニア的な“すぐ使える形”にはまだ届いていない。UTF-8一本化、スキーマ付きCSV、API整備、KPIの時系列公開をやれば、データの価値は一気に跳ね上がる。正直、ここは改善の余地ありまくりだと思ってます!

    おかむーから一言

    テクノロジーで社会をアップデートするには、まずデータを“ちゃんと使える形”で公開すること。エンジニアとして、そして起業家として、実装と政策の橋渡しを続けます!