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

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

どうも〜おかむーです!今日はちょっとエンジニアっぽい話をしますよ〜。政府・自治体のデータ公開と基幹システム標準化の現状を、コードで見て・触って・改善案まで提示するレポートです。

  • 各自治体の基幹系は標準化・共通化が進められているが、実装のばらつきがある
  • 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・標準スキーマのリファレンス実装をOSSで提供する(Dockerイメージ付き)
  • CSV公開はTable Schema(CSVW/JSON-LD)でメタデータを添付させる
  • CI/CDパイプラインでデータ検証(スキーマチェック、差分テスト)を義務化
  • データカタログ(OpenMetadata等)の導入支援を行い、検索性と再利用性を高める
  • 移行フェーズ用にETLテンプレート(Airflow/DAG)とサンプルコードを提供
  • これで毎回「この自治体はこうだから無理」と言われるコストを減らせますよ!

    まとめ

    政策としての標準化は正しい方向なんだけど、現場で使いやすい形(API+スキーマ+メタデータ)で落とし込むのが肝心です。CSV直リンクはありがたいけど、Schemaやメタ情報がないと実務コストで負けちゃう。要するに、技術的には「小さくても動くリファレンス実装」と「自動テストを回す運用」をセットで出すのがベストです。

    おかむーから一言

    テクノロジーで社会をアップデートするのはロマンある仕事!まずはAPI一本、スキーマ一個から始めてみましょう。ぼくも手伝いますよ〜!

    공유하기