コードで語るマニフェスト:日本政府データの機械可読化とAPI化を検証する

どうも〜おかむーです!大家好,我是おかむー!今日はちょっとエンジニアっぽい話をしますよ〜
- 行政データ、見た目は公開されてても中身はPDFだらけで使いにくいことが多い
- APIやCSVでの公開は進んでいるが、フォーマット・メタデータ・品質に課題あり
- 技術的に即実装できる改善案(標準化・自動化・監視)を提示するよ〜
結論
政府・自治体は「公開した」だけで満足しがちだけど、エンジニア的に言うと本当に使えるデータはまだ少ないんですよね。要するに、機械可読性(CSV/JSON/API)と標準スキーマ、運用の自動化があれば、政策の検証や新サービス創出は格段に進むということです。
レポート本文
現状の観察(データソース把握)
これ見てくださいよ:総務省のオープンデータ推進ページやe-GovのAPIポータルは存在していて、APIカタログも公開されています(参考: https://www.soumu.go.jp、https://www.e-gov.go.jp/digital-government/api、https://api-catalog.e-gov.go.jp)。ただし「公開形式」を見るとばらつきがあるんです。
- 機械可読ルールの策定(digital.go.jpの案)や統計表の機械判読ガイドラインは更新されてる(参考: digital.go.jp の機械可読性に関するルール案、総務省の統計表ルール)。
- それでも多くのレポートや行政資料はPDFや画像埋め込みで公開されているケースが依然多数。
要するに見た目は公開済みでも、データとして使えるかは別問題なんですよね。
技術的問題点(具体的に)
- CSV/Excel/JSON/PDFが混在。列名や日付フォーマットが自治体・省毎に違う。
- スキーマ説明や単位、更新頻度が書かれていない。APIでもOpenAPIやDCATのメタデータ未整備が多い。
- 見た目は良いが機械処理が難しい。OCR/テーブル抽出が必要でエラーが出やすい。
- APIの安定性や過去バージョンの参照が不十分。データ契約(SLA)も曖昧。
エンジニア的検証:API vs PDFの扱い
エンジニア的に言うと、API一本でやりとりできれば効率は劇的に上がるんですよ。試しにAPIカタログからJSONを取ってきてpandasで処理するコードはこんな感じ。
# example: fetch e-Gov API catalog (擬似コード)
import requests
import pandas as pd
r = requests.get('https://api-catalog.e-gov.go.jp/info/ja/apicatalog/list')
catalog = r.json()
カタログをDataFrameで簡単に可視化
df = pd.json_normalize(catalog['items'])
print(df[['title', 'endpoint', 'format']].head())
一方でPDFを処理する場合、tabula-pyやcamelotでテーブル抽出を自動化するけど、表組みが崩れたり数値の誤認識が起きる。コード例:
# tabulaを使ったPDF表の抽出(Java環境必要)
import tabula
dfs = tabula.read_pdf('report.pdf', pages='all', multiple_tables=True)
後処理で列名・型を正規化する必要あり
要するに、PDFは『最後の手段』として扱うべきで、最初からCSV/JSONを提供してほしいんです。
政策目標と実績のギャップをどう見るか
政策文書に「達成率○○%」と書いてあっても、その算出根拠が機械可読で公開されていないと検証できないです。政策KPIは時系列データとして公開し、原データ(計算式、サンプルデータ、欠損扱い)を合わせて公開することが必要。
例えば:
- 目標: ある事業で「利用者数を年間20%増」→ 実績の時系列をCSVで公開
- 公開項目: 集計SQL/ETLスクリプト(またはOpenAPIの集計エンドポイント)
こうすれば外部のエコシステムが検証・再現・価値創出できるんですよね。
改善提案(実装レベル)
- レベル1: CSV/Excel/JSONでの公開
- レベル2: OpenAPI/GraphQLでのAPI公開+メタデータ(DCAT、schema.org)
- レベル3: スキーマの標準化(共通語彙)、SLAとバージョンを保証
- e-GovのカタログをAPIゲートウェイ化して認証・レート制御・ログを提供
- データ公開をGitで管理、PRで差分検査、CIでスキーマチェックとサニティテストを実行
- 例: GitHub ActionsでCSV schema validation(csvkit/agate/schema)を回す
- PDF→CSVの抽出ルールを自治体向けにテンプレ化(Tabulaテンプレ、Camelot設定)
- Python/JSの公式サンプルとSDKを公開してエコシステム作る
実装上の注意点(短く)
- 日付/タイムゾーンの取り扱いを統一
- IDは永続的で不変のキーを使う(削除ではなくvalid_toで扱う)
- データライセンス(オープンライセンス)を明示
まとめ
- 日本のオープンデータ基盤は基礎が整いつつあるが、使いやすさでまだ課題あり
- PDF依存を減らし、API/CSV/JSON+標準スキーマとメタデータで公開するのが最優先
- 技術的には中央ゲートウェイ、CI for Data、SDK提供で短期間に効果を上げられる
おかむーから一言
テクノロジーで行政をアップデートするのはめちゃくちゃ面白いフィールドです!実務とコードの橋渡しをちゃんとやれば、政策の透明性と市民サービスはもっと良くなるって本気で思ってます〜
信息来源
- https://www.zhihu.com/question/290714454
- https://metidx-gov.note.jp/n/n9468573c213b
- https://www.zhihu.com/question/6430289390
- https://zenn.dev/govtechtokyo/articles/b65dc687e50918
- https://www.zhihu.com/question/38923279
- https://www.e-gov.go.jp/digital-government/api
- https://www.soumu.go.jp/menu_seisaku/ictseisaku/ictriyou/opendata/opendata03.html
- https://japan-opendata.github.io/awesome-japan-opendata/
- https://www.jichi.ac.jp/
- https://api-catalog.e-gov.go.jp/info/ja/apicatalog/list
- 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.soumu.go.jp/menu_news/s-news/01toukatsu01_02000186.html
相关报告

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

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

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