コードで語るマニフェスト:自治体システムとオープンデータを技術で検証する

どうも〜おかむーです!今日はちょっとエンジニアっぽい話をしますよ〜。政府・自治体のデータ公開と基幹システム標準化の現状を、コードで見て・触って・改善案まで提示するレポートです。
- 各自治体の基幹系は標準化・共通化が進められているが、実装のばらつきがある
- CSVやダッシュボードは公開されているものの、機械可読性やメタデータ不足がある
- API設計、データカタログ、CI/CDを組み合わせれば実装コストも運用負担も減る
結論
データ・API・運用の「三位一体」で考えることが最短ルートです。総務省/デジタル庁の標準化方針(https://www.soumu.go.jp/, https://www.digital.go.jp/)やe-Statダッシュボード(https://dashboard.e-stat.go.jp/)は良い出発点だけど、技術的に言うと「API一本に集約して仕様書(OpenAPI)とスキーマ(JSON Schema/Table Schema)で管理」するのが正解なんですよね。要するに、個別対応を減らして再利用可能な部品で回すということです!
レポート本文
背景と現在地
これ見てくださいよ:デジタル庁は地方公共団体の基幹業務システムの統一・標準化を打ち出していて、各自治体は進捗をPMOツールで報告してます(https://www.digital.go.jp/policies/local_governments)。一方で、国や省庁の公開データはCSVで直接公開されている例(https://notice.go.jp/docs/status_nicter.csv や https://www.env.go.jp/content/900398071.csv など)があって、エンジニアには嬉しいんですけど、現場はまだ混在してます。
ポイント:
- PDFに埋め込まれた表がいまだに多い → 機械判読コストが高い
- 直接CSV公開はあるが、エンコーディングやカラム説明が不足 → 前処理工数がかかる
- APIが整備されているダッシュボード(e-Stat等)はあるが、自治体ごとの差分を吸収できていない
要するに、データはあるけど“使いやすさ”がバラバラなんですよね。
技術的問題点の洗い出し
- スキーマの欠如:列名やデータ型、単位が不統一で結合が面倒
- メタデータ不足:作成日・更新頻度・ライセンスが明記されていないケースあり
- エンコーディング:Shift_JISやUTF-8混在で自動化が止まる
- 認証・認可:行政向けAPIのアクセス制御がまちまち
- 運用フロー:CI/CDやテストが回っておらず、公開後の後方互換性が保証されない
コードで見る“現場での処理”例
エンジニア的に言うと、まずはCSVをちゃんと読むところから始まるんです。例えばPythonでURLからCSVを読み、簡易スキーマ検証するコード例:
# requirements: pandas, requests, jsonschema
import pandas as pd
import requests
from jsonschema import validate
url = 'https://notice.go.jp/docs/status_nicter.csv'
resp = requests.get(url)
resp.encoding = resp.apparent_encoding
open('tmp.csv','w',encoding='utf-8').write(resp.text)
df = pd.read_csv('tmp.csv')
print(df.head())
簡易チェック:必須カラムの有無
required_cols = ['date','status']
miss = [c for c in required_cols if c not in df.columns]
if miss:
print('Missing columns:', miss)
要するに、エンコーディングやカラムチェックだけで結構バグを潰せるんです。
API化と標準スキーマの提案
ベストプラクティス:
- OpenAPIでAPI契約を定義 → クライアント自動生成ができる
- JSON Schema / Table Schemaでデータ検証 → インジェストパイプラインでCIに組み込む
- メタデータカタログ(Data Catalog)で検索性を確保
- 認証はOAuth2 + ロールベースに統一
簡易的なAPIサーブ例(Flask):
from flask import Flask, jsonify, request
import pandas as pd
app = Flask(__name__)
df = pd.read_csv('tmp.csv')
@app.route('/api/v1/data')
def get_data():
# 簡単なページング
page = int(request.args.get('page',1))
per = int(request.args.get('per',100))
s = (page-1)*per
e = s+per
return jsonify(df.iloc[s:e].to_dict(orient='records'))
if __name__ == '__main__':
app.run()
政策目標と実績のギャップ分析(技術視点)
政策として「標準化・共通化」を掲げているのは一貫しているんですが、実装段階でのギャップが残ってます。例えば:
- 方針は中央(デジタル庁・総務省)で整理されているが、各自治体のレガシー資産(オンプレミス、古いDB、独自フォーマット)との接続コストが高い
- データの可視化は進む一方で機械可読なAPIやスキーマの公開は追いついていない
要するに、政策の「宣言」と技術の「運用」が乖離してるんです!
改善提案(優先度順)
これで毎回「この自治体はこうだから無理」と言われるコストを減らせますよ!
まとめ
政策としての標準化は正しい方向なんだけど、現場で使いやすい形(API+スキーマ+メタデータ)で落とし込むのが肝心です。CSV直リンクはありがたいけど、Schemaやメタ情報がないと実務コストで負けちゃう。要するに、技術的には「小さくても動くリファレンス実装」と「自動テストを回す運用」をセットで出すのがベストです。
おかむーから一言
テクノロジーで社会をアップデートするのはロマンある仕事!まずはAPI一本、スキーマ一個から始めてみましょう。ぼくも手伝いますよ〜!
정보 출처
- https://www.keiba.go.jp/
- https://www.digital.go.jp/policies/local_governments
- https://www.keiba.go.jp/KeibaWeb/TodayRaceInfo/TodayRaceInfoTop
- https://www.soumu.go.jp/menu_seisaku/chiho/jichitaijoho_system/index.html
- https://www.keiba.go.jp/live/
- https://notice.go.jp/docs/status_nicter.csv
- https://www.jinji.go.jp/content/900024615.csv
- https://www.env.go.jp/content/900398071.csv
- https://www.inpit.go.jp/content/100869372.csv
- https://www.mhlw.go.jp/content/001429362.csv
- https://www.kantei.go.jp/
- https://www.digital.go.jp/resources/japandashboard
- https://www.kantei.go.jp/jp/kakugikettei/index.html
- https://dashboard.e-stat.go.jp/
- https://www.kantei.go.jp/jp/naikaku/index.html
공유하기
관련 리포트

コードで語るマニフェスト:自治体データとシステムをエンジニア視点で検証する
自治体データはPDFやUIに閉じがち。API-firstとJSON Schemaで再利用性を高め、ガバメントクラウドへ移行する実務ロードマップを提示します。

コードで語るマニフェスト:日本政府データの現場から見る技術検証
政府データは可視化が進むも機械可読性不足が課題。CSV/JSON/API、スキーマ、ID統一で政策検証を自動化しよう。

코드로 읽는 마니페스토: 일본 정부 데이터와 시스템을 엔지니어 관점에서 후벼파기
일본 정부 데이터의 PDF·API·메타데이터 문제를 엔지니어 관점에서 분석하고, 실무 가능한 개선안을 코드 예시와 함께 제시합니다。