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

IT政策提案
コードで語るマニフェスト:公共データをエンジニア視点で検証するレポート

どうも〜おかむーです!大家好,我是おかむー!今天用一点工程师的眼光,带大家看几份来自日本政府/自治体的公开数据,聊聊它们的可用性、技术问题和改进方向〜

  • 这篇文章检视了多份 gov CSV(例:https://notice.go.jp/docs/status_notice.csv、https://www.env.go.jp/content/900398071.csv、https://www.soumu.go.jp/main_content/000323625.csv)
  • 结论是:有数据公开是好事,但机读性、元数据、API不足,阻碍了二次利用
  • 我会给出工程化的改进清单、示例代码和可操作的落地建议

結論

公開CSVは多いけど「ただ置いてあるだけ」なケースが目立つんですよね。エンジニア的に言うと、UTF-8でスキーマを公開して、API一本とデータ検証パイプラインを用意すれば、再利用性が劇的に上がるんです!要するに、データは出して終わりじゃなくて、使えるカタチに整備することが重要ということです。

レポート本文

これ見てくださいよ:ソース例と現状

  • notice.go.jp の status_notice.csv、env.go.jp の 900398071.csv、soumu.go.jp の全国CSVなど、govドメインでCSVが公開されている。これは歓迎すべき!
  • 一方で現場でよくある問題:
- 文字コードが Shift_JIS や EUC-JP のままでUTF-8化されていない

- カラム名・日付フォーマットがバラバラ(例:YYYY/MM/DD, YYYYMMDD, 和暦混在)

- スキーマ(単位、測定基準、更新頻度、ライセンス)が明示されていない

- APIが無く、スクレイピングや定期ダウンロードに頼らざるを得ない

技術的検証ポイント

  • 機械可読性チェックリスト(参照: AI-Readyチェックリスト)に照らすと、
- ファイルのエンコーディング:UTF-8化が必須

- メタデータ:CSVW / Data Package / DCAT でスキーマを公開

- バージョニング:URLを固定しつつバージョン管理(例:/v1/)

実務で使うときのコード例(Python/pandas)

import chardet

from pathlib import Path

import pandas as pd

p = Path('status_notice.csv')

b = p.read_bytes()

enc = chardet.detect(b)['encoding']

df = pd.read_csv(p, encoding=enc)

日付正規化

for c in df.columns:

if 'date' in c.lower():

df[c] = pd.to_datetime(df[c], errors='coerce')

型と欠損を検査

print(df.dtypes)

print(df.isnull().sum())

要するに、実務ではまずエンコーディング検出→日付正規化→スキーマ検証が基本なんですよね。

KPIと実績のギャップ検証(手順)

  • 政策文書のKPIをテキストで抽出(OCRやNLPで構造化)
  • 公開データから該当指標を抽出して時系列を作る
  • 差分を可視化して未達理由を定性データと突き合わせる
  • サンプルSQL(SQLite):

    SELECT year, target, actual, (actual - target) as gap
    

    FROM kpi JOIN measurements USING(indicator_id, year);

    この流れで、政策目標と実績のギャップを定量的に示せます。

    APIとデータパイプラインの提案

    • 最低要件:REST/JSON API + OpenAPI 仕様、ページング、フィルタ、日付レンジ
    • 推奨:CSVW メタデータ、DCAT カタログ、CC-BY等の明確なライセンス表記
    • 品質管理:Great Expectations 等で自動テスト、CIでのバリデーション
    • 配布:CDN と ETag/Last-Modified、履歴データは S3 等でバージョニング

    実際の導入例(短いFlask化スニペット):

    from flask import Flask, jsonify
    

    app = Flask(__name__)

    @app.route('/api/v1/notices')

    def notices():

    # CSV読み込みはキャッシュ化すべし

    return jsonify(rows)

    活用の可能性

    • ローカル自治体の交付金・事業実績データを標準化すれば、RAIDAのような評価プラットフォームに容易に接続可能
    • AI用途:モデル訓練のためにはスキーマ安定性とライセンスが重要。PDF埋め込みデータは前処理コストが高い

    まとめ

    • 公開は前提だが、機械可読性・スキーマ・APIが揃って初めて“使えるデータ”になる
    • 実務対応としては「UTF-8化→CSVWでスキーマ公開→API提供→自動検証パイプライン」を推奨
    • 小さく始めて、APIとメタデータを整備すれば、自治体のデジタル実装が一気に進むはず!

    おかむーから一言

    テクノロジーは待ってくれない。データをただ置くだけじゃなくて、使われる形に整備しようぜ!僕はそれをエンジニアリングで実現したい〜