用代码说话的清单:日本政府开放数据与API的现状与改进提案

IT政策提案
用代码说话的清单:日本政府开放数据与API的现状与改进提案

大家好,我是おかむー!今天用工程师的视角,来聊聊日本政府/自治体的数据和系统——也就是“代码で語るマニフェスト”那种感觉,直接看数据、看接口、看格式,说能改在哪儿,怎么改!

  • 这篇文章基于公开目录与CSV样本(e-Gov API、都道府県オープンデータ、notice CSV 等)做技术审视
  • 发现普遍问题:格式不統一(PDF多、CSV虽有但缺模式、缺版本管理)、API覆盖不足、機械可読性参差
  • 提出工程级改进:开放规范(OpenAPI/JSON Schema)、数据质量CI、统一认证与使用指标(SLA/KPI)

結論

政府与自治体在推进开放数据上已经有基础设施(例:e-Gov API 目录、東京都のオープンデータAPI),但从工程实施角度看,仍缺少统一的模式管理、API优先策略与可复现的数据质量保障。要把“公開してる”变成“实用且可持续的データインフラ”,需要从格式、接口规范、验证与运维四方面发力。

レポート本文

現状スナップショット — 参照ソース

  • e-Gov 行政APIカタログ(https://www.e-gov.go.jp/digital-government/api): 提供 API 目录与说明,是很好的入口,但目录项的细粒度、示例与 SDK 支援各自治体落差大。要するに:目录存在,但可用性与统一性不足。
  • 東京都オープンデータAPI(https://portal.data.metro.tokyo.lg.jp/opendata-api/): 有 REST 風の PublicFacility 等端点,这是 API-first 的好例,但并非所有自治体都有等同能力。
  • NOTICE CSV(https://notice.go.jp/docs/status_notice.csv)等直接 CSV 链接:便利但缺少 schema、更新时间说明与版本控制。

これ見てくださいよ:CSV 放在公开 URL 很好,但没有明确的列定义(data dictionary)、主键、时区字段、更新频度等,开发者拿到后得先做试探性解析,常遇到日期解析错误或字段拼写不一致的坑。

技术问题点(工程视角)

  • フォーマットの多様性:PDF→機械可読性ゼロ、CSV→有但模式不定、JSON/REST→部分实现
  • メタデータ欠如:缺 schema、license、更新日、データオーナ情報
  • APIの成熟度不足:缺 OpenAPI / Swagger、无版本管理、无速率限制说明或 SLA
  • 品質担保の無さ:缺 CI 校验、没有变更ログ或检验哈希
  • 横断検索性の欠如:中央カタログ虽有,但检索按字段/语义的能力弱

具体なコード例(実務で使える)

下面给个实际能跑的 Python 示例:把 notice CSV 拉下来并用 pandas 快速检测 schema 问题。

import requests

import pandas as pd

url = 'https://notice.go.jp/docs/status_notice.csv'

r = requests.get(url)

r.encoding = 'utf-8'

from io import StringIO

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

print(df.head())

简单的质量检查

print('columns:', df.columns.tolist())

print('nulls per column:\n', df.isnull().sum())

工程师的建议:写一个 data-ci pipeline 在每次 CSV 更新后跑上面的检查,确保列集合未变、主键唯一、时间列可解析、并把结果写回到中央 catalog 的审计日志。

API 设计 & 運用提案

  • 统一接口规范:要求自治体对外 API 提供 OpenAPI v3 规范文件 + JSON Schema,便于自动生成 SDK 与测试用例。要するに:API 是契約而不是文档。
  • 数据模式注册:为每个开放 CSV/JSON 建立 machine-readable data dictionary(列名、类型、nullable、说明、单位、主键、更新频度、license)。
  • 版本控制与不可变数据:对历史快照提供时间戳和哈希(例:S3 + object versioning 或 Git-LFS for datasets)。
  • 数据质量 CI:在数据发布前必须通过格式校验(列名、类型)、内容校验(范围检查、外键完整性)、差异检测(突增/突降预警)。
  • 中央化认证与配额:采用 OAuth2 + APIキー/ID for telemetry,便于监测与滥用防护,同时收集使用量以评估价值。
  • 提供示例代码与 SDK:官方提供 Python/JS SDK、并在 catalog 展示“最小实现示例”降低再使用门槛。
  • 政策指標の可観測化(KPI 提案)

    政策落差を技術的に追うには数値化が必要。例えば:

    • 機械可読データ率 = (提供 CSV/JSON データ集数) / (公開データ总数)
    • APIカバレッジ率 = (有 OpenAPI 的 API 数) / (应公开的接口总数)
    • データ鮮度 = 平均更新时间间隔(日)
    • データ品質スコア = 由 CI 校验通过率综合得出

    これで政策目标(比如“3年で开放数据覆盖率 90%”みたいな宣言)と実绩をコードで突き合わせられますよね。要するに、公開声明だけで終わらせない仕組みが必要。

    活用シナリオ(短期〜中期)

    • 短期:为常用数据集(公共施設、福祉設備、災害情報)提供 JSON/CSV + OpenAPI,并做样例 SDK。
    • 中期:各自治体加入中央データカタログ并上报使用统计(下载数、API calls)。
    • 長期:建立データ市場(データプロダクトの標準化)与SLA体系,支持民間アプリ与研究。

    まとめ

    • 现在有很多好的基础(e-Gov API 目录、東京都オープンデータAPI、直接 CSV 链接),但从工程实现角度仍有明显差距。
    • 关键改进点:统一 schema/OpenAPI、数据质量 CI、版本管理、认证与使用度量。
    • 落地路径:先把高价值数据(公共设施、避難所、通知)做成 API-first 并配 OpenAPI,再把 CI/CD 数据校验和 catalog 化纳入日常运维。

    おかむーから一言

    作为创业过两次的工程师兼创始人,我相信「技术能把行政服务变得更好」:先把数据当产品来运营,再把接口当契约来维护,社会的数位化才会跑得更快、更稳!