Code-Talking Manifesto: Making Government Data Actually Useful

どうも〜おかむーです!今日はちょっとエンジニアっぽい話をしますよ〜
- Government PDFs are everywhere; CSV/JSON are rare — that's a problem for reuse
- Policy KPIs exist, but results are often buried in PDF annual reports — machine-readability gap
- Practical fixes: publish CSV/JSON, provide APIs + OpenAPI spec, add dataset metadata (DCAT) and example code
結論
政府・自治体が掲げる“データ利活用”の方針自体は正しい。でも、現場ではPDFや紙出力がデフォルトになっていて、エンジニア的に言うと誰も使えない形式で公開されていることが多い。要するに「AI-ready」とか言う前に、まずCSV/JSONで出してAPI一本にまとめてください、ということです。
レポート本文
背景と観察
これ見てくださいよ:Digital Agency や内閣官房の資料では「機械可読性を確保する」ルールが明記されている(参考: digital.go.jp の機械可読性ルール案、cas.go.jpの資料)。要するに、PDFやWordではなくExcelやCSVを推奨してるんですね。でも地方自治体や事業報告はまだPDFで配布されることが多い(例:山口県の交付金実績PDF)。
エンジニア的に言うと、データがPDFに埋もれているとパース作業で時間を食うし、品質チェックがしづらい。コード書く人ならわかると思うんですけど、API一本で時系列データを叩ければ分析も可視化も自動化もサクッと行けます。
問題点を技術的に整理
- フォーマットの不一致:PDF/画像 → 機械可読でない
- メタデータ欠落:データセット説明、スキーマ、更新頻度が不明
- API未整備:REST/GraphQLでのアクセスがないケースが多い
- 品質保証不足:バリデーションルールや例外ハンドリングがない
要するに、政策のKPIと実績は出ているけど、それをプログラム的に扱えるかと言うと微妙、ということです。
具体例:KPIと実績のギャップ(山口県の交付金PDFを参照)
地方の交付金事業では、KPI設定と実績報告がされているものの、公開方法がPDFに集中しているため“データとしての再利用”が進まない。これ、行政の透明性向上や第三者による評価の自動化という観点でかなり損していると思います!
技術的な検証アプローチ(実務でやること)
コード例(Python):
# example: read CSV if available, fallback to PDF parsing
import requests
import pandas as pd
from io import BytesIO
r = requests.get('https://example.go.jp/data/report.csv')
if r.headers.get('content-type','').startswith('text/csv'):
df = pd.read_csv(BytesIO(r.content))
else:
# fallback to PDF table extraction (requires camelot)
import camelot
tables = camelot.read_pdf('report.pdf', pages='1-end')
df = tables[0].df
schema check
print(df.dtypes)
要するに、短期的にはこういうパイプラインでPDFから取り出して分析できるけど、手間がかかるのが問題なんですよね。
改善提案(実務レベル)
- すべての定期レポートはCSV/JSONを優先して公開するルールを徹底する(digital.go.jp のガイドライン準拠)
- APIを用意し、OpenAPI(Swagger)で仕様公開。例:/api/v1/kpi?year=2025&pref=Yamaguchi
- データセットにDCAT/JSON-LDのメタデータを付与して検索性向上
- CIでデータ品質チェックを導入:スキーマバリデーション、欠損率閾値、更新差分の自動検知
- 既存PDFは段階的に構造化変換してアーカイブ(tabula/camelot + 人手のレビュー)
API設計の勧め(簡単なスキーマ例)
- エンドポイント: GET /api/v1/grants
- パラメータ: year, prefecture, project_type
- レスポンス(JSON): { "year": 2025, "prefecture": "Yamaguchi", "project_id": 123, "kpi": {"target": 1000, "actual": 875}, "last_updated": "2025-03-31" }
これ見てくださいよ、APIがあればダッシュボードや自動レポートは秒で作れます!
活用シナリオ
- ジャーナリストが政策の実績ギャップを可視化するダッシュボードを作れる
- 地方自治体同士でベンチマーク可能にして、良い施策を横展開
- 民間スタートアップが行政データを基にサービスを構築(例えば補助金マッチング)
まとめ
- 方針はある(機械可読性ルールやAI-ready の宣言)が、現実の公開フォーマットは追いついていない
- PDF中心の配布をやめ、CSV/JSON + API + メタデータの組合せに移行するだけで再利用性が劇的に向上する
- 技術的には既存ツール(camelot/tabula, pandas, OpenAPI)で移行可能。重要なのは運用ルールとCIによる品質担保
おかむーから一言
テクノロジーで社会をアップデートするって、派手なAIよりまずデータをちゃんと出すことから始まるんですよね!エンジニアとして、そして起業家として、使えるデータのインフラ作りを一緒にやりたいです!
Sources
- 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://zhidao.baidu.com/question/444492165.html
- https://www.cas.go.jp/jp/seisaku/digital_gyozaikaikaku/data8/data8_siryou1.pdf
- https://www.zhihu.com/question/38923279
- https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB
- https://www.chisou.go.jp/sousei/pdf/r5_guideline-checkaction.pdf
- https://www.digital.go.jp/
- https://www.pref.yamaguchi.lg.jp/uploaded/attachment/160746.pdf
- https://e-words.jp/w/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB.html
- https://metidx-gov.note.jp/n/n9468573c213b
- https://zenn.dev/govtechtokyo/articles/b65dc687e50918
Share
Related Reports

Code-driven Manifesto: Auditing Local Gov Data and Systems (Kagawa case study)
Local gov systems run but hide data behind UIs; expose CSV/JSON, APIs, and common schemas to unlock value.

Code-driven Check: Japan’s Open Data and the Machine-Readable Gap
Digital Japan has dashboards and rules, but PDFs and messy formats still block automated policy verification; mandate CSV/JSON, APIs, and dataset linting.

Code Speaks: Testing Japan's Gov Data and Dashboards
Japan has great dashboards but inconsistent machine-readability. This report inspects e-Stat, Japan Dashboard, Kantei PDFs, and proposes API-first fixes and practical code examples.