代码で語るマニフェスト:从机器可读到可用的政府数据工程实践

どうも〜おかむーです!今天来谈一件看似行政但超级工程的问题:政府数据到底能不能被代码友好地用起来〜
- 这篇文章用工程师视角检视日本政府/自治体在“机器可读性”上的实践与差距
- 我会引用官方规则(Digital庁、総務省等)、举出典型问题,并给出可执行的技术改进建议
- 最后给出示例代码片段,说明如何把 PDF/非结构化表格转成 CSV/API 可用格式
結論
现在多数地方政府的数据在“对人可读、对机器不友好”的状态,原因主要是报表以 PDF/画像或复杂 Excel 发布、缺乏统一 API/模式和版本管理。要把政策愿景变成真正可评估的「可执行承诺」,需要三件事:强制机器可读优先(CSV/JSON/API)、统一元数据与 schema、并建立持续的パイプライン(ETL + CI)。エンジニア的に言うと、API 一本化と schema validation が全ての土台なんです!
レポート本文
背景と现状(官方文件的依据)
これ見てくださいよ:Digital庁が公開している「行政データにおける機械可読性に関するルール(案)」では、ファイル形式をレベル分けしていて、CSV/Excel はレベル1として推奨されています(参考: https://www.digital.go.jp/...)。総務省も統計表の機械判読可能化ルールをまとめており、統一ルールの重要性を説いています(参考: https://www.soumu.go.jp/...)。それでも現場ではPDF公開が根強いんですよね。
- 公式ガイドライン:推奨は CSV / 構造化 Excel / API
- 現実:報告書や統計が PDF に埋め込まれるケースが多い
要するに、政策目標を数値で追う前提が整っていないということです。
問題点の技術的分析
- PDFやスキャン画像で公開 → 機械判読不可
- 複雑なExcel(マージセル・改ページ) → 自動処理が困難
- 結果:データパイプラインが組みづらい
- リソースにスキーマ、更新日時、ライセンスが明示されていない
- データ統合や自動検証の障害になる
- APIがある自治体もあるが、OpenAPI/Swagger 等の仕様やバージョン管理がない
- 認証・レート制御・安定性が散発的
- 目標値(例:オープンデータ公開率や更新頻度)が掲げられても、機械的に追跡できないため評価不能
技術的改善提案(実行プラン)
1) まずは公開ルールを「機械可読優先」に変更
- 政府/自治体は PDF を補助資料に限定し、一次データは CSV/JSON/API で公開
- Digital庁のレベル分けを法的運用に落とし込む(レベル1 を必須化)
2) 共通スキーマとメタデータ
- 各ドメイン(財政、福祉、都市計画など)で JSON Schema/CSV Schema を定義
- メタデータ(更新日、ライセンス、解説、単位、原点)を Data Catalog に登録
3) API と開発者ポータル
- OpenAPI 仕様を採用し、サンドボックスを用意する
- API のバージョニング、Rate Limit、サンプルコードを提供
4) データパイプラインと品質ゲート
- ETL(抽出→変換→検証→公開)を CI 化して、schema validation と自動テストを導入
- 例:GitHub Actions / GitLab CI で CSV Schema を検査し、失敗で公開ストップ
5) レガシーデータ(PDF等)の戦略
- OCR + テーブル抽出(例: Camelot/Tabula)で一時的に機械化
- 抽出結果は手作業レビューを必須にして、最終版は構造化フォーマットへ変換
コード例:PDF表→CSV(示例)
以下はエンジニア的なヒント(サンプル)です。実行環境に合わせて調整してください。
# requirements: requests, tabula-py, pandas
import requests
import tabula
import pandas as pd
1) PDF をダウンロード
pdf_url = 'https://example.localgov.jp/report.pdf'
r = requests.get(pdf_url)
open('report.pdf', 'wb').write(r.content)
2) Tabula でテーブル抽出
tabula.read_pdf は複数テーブルを返すことが多い
tables = tabula.read_pdf('report.pdf', pages='all', multiple_tables=True)
3) 簡易マージと整形
df = pd.concat(tables, ignore_index=True)
列名正規化の例
df.columns = [c.strip().lower().replace('\n','_') for c in df.columns]
4) スキーマ検証 (簡易)
required_columns = {'year','budget_amount'}
if not required_columns.issubset(set(df.columns)):
raise SystemExit('必要カラムが欠けています')
5) CSV 出力
df.to_csv('report_clean.csv', index=False)
要するに、PDF→CSV はワークアラウンドであって、最終解は「一次データを最初から構造化して公開すること」です。
指標で見る改善効果(例)
- 現状:自治体公開データのうち機械可読(CSV/JSON/API)は仮に 30% とする
- 目標:1年で 70% に引き上げ、2年で 90%に
- KPI:公開件数中のCSV/JSON比率、APIレスポンス成功率、schema validation 通過率
これらは定量的に測ってこそ政策の実効性がわかるんですよね。
まとめ
- 公式ガイドラインはあるが、現場運用はPDF中心で機械可読性が低い
- エンジニア視点では「スキーマ」「API」「CIパイプライン」の3点セットがキー
- PDF抽出は短期対応、長期的には一次データの構造化公開が最優先
おかむーから一言
テクノロジーで行政をアップデートするって言うと大げさに聞こえるかもしれないけど、データの“出し方”を変えるだけで政策評価も市民サービスもガラッと変わります!僕はエンジニアとしてそこを一緒に作りたいんですよ〜
信息来源
- https://zhidao.baidu.com/question/1778712607594096420.html
- https://www.intec.co.jp/column/smartcity-08.html
- https://stackoverflow.com/questions/73567541/argos-workflow-how-do-i-build-my-workflow-which-runs-a-python-script-present-in
- https://www.digital.go.jp/resources/data_case_study_private
- https://zhidao.baidu.com/question/759194239533719812.html
- https://www.zhihu.com/question/290714454
- https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/256dcba6-b936-4031-b88d-3abb27e27f9b/f7af0ca4/20260331_meeting_executive_outline_06.pdf
- https://www.zhihu.com/question/6430289390
- https://www.soumu.go.jp/menu_news/s-news/01toukatsu01_02000186.html
- https://www.zhihu.com/question/38923279
- https://www.zhihu.com/question/40553450
- https://www.govtechtokyo.or.jp/services/data-utilization/
- https://www.zhihu.com/tardis/zm/art/1924492115896960699
- https://note.govtechtokyo.jp/n/n77785a8254d6
- https://www.zhihu.com/question/372341437
相关报告

代码で語るマニフェスト:以香川县公共设施预约系统为例的技术与数据审视
以香川县公共设施预约系统为例,从API、数据格式与标准化角度检视自治体系统,给出可执行的技术改进方案与代码示例。

用代码说话的宣言:从机器可读性到API化,解读日本数字化政策的数据工程路径
从Digital庁到e-Stat,评估日本数位政策的数据交付形态,提出API化与工程化改进路线,附代码与验证示例。

コードで語るマニフェスト:日本政府データをエンジニア視点で検証する
政府のマニフェストをデータとコードで検証。PDF多用やAPI断片化を指摘し、e-StatやJapan Dashboardを例に具体的な改善案とコード例を提示します。