コードで語るマニフェスト:自治体データをAPI化して実績とKPIギャップを埋める方法

IT 정책 제안
コードで語るマニフェスト:自治体データをAPI化して実績とKPIギャップを埋める方法

どうも〜おかむーです! 안녕하세요, 오카무입니다! 오늘은 정부·지자체가 공개한 데이터와 시스템을 엔지니어 관점에서 찢어보고, 실무적으로 고칠 수 있는 제안을 던져볼게요〜

  • 이 글의 핵심은: 공개파일(PDF/CSV)의 기계가독성, API 부재, KPI와 실적의 괴리를 코드 관점에서 검증하고 개선안을 제시한다
  • 실제 레퍼런스로 gov 사이트의 CSV/PDF를 확인(例: env.go.jp CSV, pref.yamaguchi.lg.jp PDF, digital.go.jp 등)
  • 제안은 API 우선, 표준 스키마, CSV→JSON 파이프라인, 자동화된 KPI 대시보드 구축입니다

結論

정부·지자체 데이터는 이미 존재하지만 형식과 배포 방식이 발목을 잡고 있다. PDF에 갇힌 지표나 쪼개진 CSV는 재사용성이 낮다. 엔지니어적 해결책은 단순하다: 머신리더블 포맷(CSV/JSON-LD)을 우선 제공하고, 경량 API(REST/GraphQL)를 통해 실적(KPI)을 실시간으로 확인 가능하게 하라. 그러면 정책의検証が自然にできるようになる!

レポート本文

現状確認 — これ見てくださいよ

実際の公開例を見てみると現場の状況が分かる。

  • 環境省のCSV例: https://www.env.go.jp/content/900398071.csv — CSVで公開はしているがメタデータやスキーマ定義が薄い
  • 山口県の事業実績PDF: https://www.pref.yamaguchi.lg.jp/uploaded/attachment/160746.pdf — PDFにKPIと実績が埋め込まれており、機械処理が困難
  • デジタル庁: https://www.digital.go.jp/ — 政策プラットフォームはあるが、各自治体レベルへの実装はまだムラがある

要するに、データはあるけど“使える形”で出てないということです。

技術的問題点の整理

  • フォーマット混在(PDF × 表形式、CSVだがスキーマ不統一)
- 問題: 自動集計/ダッシュボード化に手作業が必要
  • APIの不在または限定的な提供
- 問題: フロントエンドや外部アナリストがリアルタイムに参照できない
  • メタデータ欠如(カラム説明、単位、時系列の確定)
- 問題: データ統合時に解釈誤りが出る

KPIと実績のギャップ分析例

国のガイドライン(例: デジタル田園都市国家構想交付金のKPI運用ガイド、chisou.go.jpの資料)ではKPI設定を求めているが、自治体の実績報告でPDFに閉じてしまい、年度比較や跨年度分析が難しいケースが多い。

山口県のPDFでは「採択事業:2事業」「実績額:15,289千円」といった値があるけど、これが年度別・カテゴリ別に機械的に集計できる形で公開されていない。要するに“人間が読むレポート”から“システムが読むデータ”へ移行する必要がある。

エンジニア的改善提案

1) APIファーストで公開

- 各種CSVはそのまま置くだけでなく、軽量REST APIで /api/v1/projects, /api/v1/kpi などエンドポイントを作る

2) スキーマとメタデータを定義

- JSON Schema / JSON-LD、Data Catalog(例: CKAN)でカラム説明・単位を明示

3) PDF → CSV/JSON のパイプラインを自動化

- OCR/PDFテーブル抽出 → 正規化 → スキーマ検証

4) KPIダッシュボードの自動化

- ETL → DB → BIツール(例: Metabase)で実績と目標を比較

具体的コード例(サンプル)

以下はCSVを拾って簡易APIに変換するPython例です(実務では認証やエラー処理を追加してください):

# requirements: requests, pandas, flask

import requests

import pandas as pd

from flask import Flask, jsonify

CSV_URL = 'https://www.env.go.jp/content/900398071.csv'

app = Flask(__name__)

@app.route('/api/v1/env_data')

def env_data():

r = requests.get(CSV_URL)

r.encoding = 'utf-8'

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

# 簡易クレンジング

df.columns = [c.strip() for c in df.columns]

return jsonify(df.to_dict(orient='records'))

if __name__ == '__main__':

app.run(port=8000)

要するに、CSVを拾ってJSONで出すAPIはエンジニアならすぐ作れるんですよね。

運用面の提案:自動検証とガバナンス

  • CIでスキーマバリデーションを回す(JSON Schemaを用意して差違を検出)
  • 公開データのバージョン管理をGitで行う(誰がいつ変更したかトラッキング)
  • SLAとして更新頻度を明記(例: KPIは四半期ごと、財務は月次)

オープンデータ活用の可能性

  • 地域課題を解くスタートアップと自治体をマッチングするAPIハブ
  • ダッシュボード+データセット公開で市民参加型の監視(KPIの透明化)
  • ローカルデータを統合して機械学習モデル(需要予測、補助金効果測定)を作成可能

まとめ

  • 現状: データはあるが機械可読性とAPI化が足りない
  • 技術的施策: APIファースト、スキーマ定義、PDF→CSV/JSON自動化、CIによる品質保証
  • 効果: 政策の検証がしやすくなり、KPIと実績のギャップが明確になる。市民や事業者による二次活用も進む

おかむーから一言

テクノロジーで政策を検証できる世の中にしようぜ!エンジニアの視点で手を動かせば、データは力になるんです。僕もやるから、自治体の皆さん、一緒にやりましょう!

공유하기