公共APIの“稼働のスコアカード”をつくる――データ信頼性をコードで保証する話

IT政策の提案
公共APIの“稼働のスコアカード”をつくる――データ信頼性をコードで保証する話

どうも〜おかむーです!今日はちょっとエンジニアっぽい話をしますよ〜。政府や自治体が公開しているAPI、データカタログ、そして時にPDFでぽつんと置かれている実績資料を技術的に見て「本当に使えるか?」を検証します。

  • 3行要約
- 政府・自治体APIは数が増えているが、稼働/品質の機械可視化が不足している

- APIレベルのSLA・稼働メトリクスを公開する標準スキーマを提案する

- 実装はヘルスエンドポイント+Prometheus互換メトリクス+日次可用性CSVで簡単に始められる

結論

APIの「存在」じゃなくて「使えるか」を定量化して公開するべきです。エンジニア的に言うと、OpenAPIやデータカタログ(例: e-Gov APIカタログ https://api-catalog.e-gov.go.jp )だけじゃ足りない。/health や Prometheus メトリクス、日次の可用性CSV/JSONを標準化して、データ利用者と監査が同じ指標を見られるようにするのが近道です。

レポート本文

現状観察:APIは増えているが“稼働の解像度”が低い

これ見てくださいよ。e-Govの行政APIや東京都のオープンデータAPI(https://portal.data.metro.tokyo.lg.jp/opendata-api/)は便利だけど、各APIの稼働履歴やレイテンシ分布、バージョン互換性の情報がカタログにまとまっていないんです。結果、開発者は「今日つながるか」を実運用でしか確認できない。

要するに、データが公開されていても「信頼できるか」は別問題ということです。

問題点を技術的に分解する

  • メタデータ不足:APIの稼働履歴・メンテナンス予定・SLAがカタログにない
  • 機械可読性:稼働情報がPDFや告知ページに埋められている(例:交付金実績PDFなど)→ データとして拾えない
  • 監視の不統一:各サービスでヘルスチェックの実装がまちまち

技術提案:稼働スコアカード設計(実装ガイド)

1) ステータスエンドポイント(/status or /health)をAPI仕様に必須化

- JSONで {"status":"ok","uptime_seconds":...,"version":"v1.2.3"} を返す

2) Prometheus互換のメトリクスを公開

- http_requests_total, http_request_duration_seconds_bucket, service_up (0/1)

- これで既存の監視スタックに合流できる

3) 日次可用性CSV/JSONをカタログで公開

- カラム例: date, api_id, availability_percent, avg_latency_ms, error_rate

- これをDATA.GO.JPや各都道府県カタログに置く

4) OpenAPIに "x-availability" 拡張を追加してメタデータを機械化

エンジニア的に言うと、API一本ごとにPrometheusのservice_upをスコア化して日次に集約すれば、SLAの実測ができます!

具体的なコード例

bashで簡単な可用性チェックを叩く例(curl + jq):

API_URL="https://api.example.gov/endpoint"

if curl -sS -m 5 "$API_URL" | jq -e . >/dev/null; then

echo "up"

else

echo "down"

fi

Pythonで日次可用性を集計する簡易スクリプト(疑似コード):

# requestsで1分おきにチェックした結果(log.csv)を日毎に集計

import pandas as pd

df = pd.read_csv('checks.csv')

checks.csv: timestamp,api_id,status,latency_ms

daily = df.groupby(['api_id', pd.to_datetime(df.timestamp).dt.date]).agg(

availability=('status', lambda s: (s=='up').mean()*100),

avg_latency=('latency_ms','mean')

).reset_index()

daily.to_csv('daily_availability.csv', index=False)

KPIと公開データのギャップの分析例

政府の施策資料や交付金報告ではKPI達成率や実績がPDFで公表されることが多い(例: 交付金実績PDF)。要するに、数値自体は出ているけどAPIの稼働という観点で一本化されていない。これが意味するのは「施策は見えるが運用は見えない」問題です。

活用可能性とメリット

  • 開発者は事前に信頼度を判断できる(リトライ戦略やキャッシュ戦略が決めやすい)
  • 監査側は数値で運用改善を要求できる(SLA違反を根拠に)
  • 市民はサービス停止の影響を可視化して優先度を議論できる

改善ロードマップ(ステップで示す)

  • APIカタログに "availability" フィールドを追加(短期、簡単)
  • 主要APIで /health と Prometheus メトリクスを義務化(中期)
  • 日次可用性CSVをDATA.GO.JPで公開し、KPIのダッシュボードと連携(中長期)
  • 法的な運用ガバナンス(SLA基準)と自動アラートの仕組みを整備(長期)
  • まとめ

    APIの数は増えているけど、信頼性を証明する情報が足りてないんです。要するに、公開データの“可用性メタデータ”を機械可読で出すだけで、利活用の土壌が劇的に変わります!Prometheus互換のメトリクス+日次可用性CSV+OpenAPI拡張でまずやってみましょう。

    おかむーから一言

    テクノロジーで社会をアップデートするには、まずデータが"使える"ことを証明する必要があります。小さなヘルスエンドポイント一つで、大きな信頼が生まれるんですよ〜!

    シェアする