コードで語るマニフェスト:自治体データの機械可読性を検証する

IT政策提案
コードで語るマニフェスト:自治体データの機械可読性を検証する

どうも〜おかむーです!今日はちょっとエンジニアっぽい話をしますよ〜

  • これ見てくださいよ:国・自治体の公開データはCSV化されているけど機械可読性で課題だらけ
  • エンジニア的に言うと、APIとスキーマがあれば解析・再利用が一気に楽になるんですよね
  • 改善提案は具体的に:エンコーディング統一、スキーマ定義、CIでのバリデーションを導入!

結論

現状、gov/自治体がCSVでデータ公開しているのは良いスタート。ただしエンコーディング、ヘッダー不統一、メタデータ欠落、API不在などで実用性が落ちている。要するに「機械がそのまま食べられるデータ」にするための工程(スキーマ、バリデーション、API設計)を入れるべき、ということです。

レポート本文

現状サマリ(参照データ)

  • notice.go.jp: https://notice.go.jp/docs/status_notice.csv — 公告系のCSV、更新頻度やスキーマが不明
  • 環境省(茨城県データ): https://www.env.go.jp/content/900398071.csv — 都道府県毎のデータが個別にCSVで公開されている
  • 総務省全国データ: https://www.soumu.go.jp/main_content/000323625.csv — 全国集計のCSV
  • その他:厚労省救護施設CSV、INPITの移行データ等
  • 政策側の動き:デジタル行財政改革会議の機械可読ルール案(https://www.digital.go.jp/.../20260331_meeting_executive_outline_05.pdf)

これ見てくださいよ、CSVで出してくれるのはありがたいんですけど、データごとにエンコーディング(Shift_JIS/UTF-8)、日付フォーマット(YYYY/MM/DD、YYYY-MM-DD、和暦混在)、ヘッダー名(英語/日本語のばらつき)が違うんですよ。エンジニア的に言うと、これAPI一本で解決する話なんですよね!

技術的な課題点

  • エンコーディング混在:日本の行政CSVはまだShift_JISが多く、UTF-8期待のツールで文字化けする
  • スキーマ不在:列名や型の定義がないので、結合や集計時に型変換ロジックが個別実装に
  • メタデータ欠如:更新日時・ライセンス・カラム説明が付いてないケースが多い
  • API不在/限定的:多くはファイル配布のみ。増分取得やフィルタリングがやりにくい
  • バージョン管理なし:過去データの追跡や再現性が弱い

簡単な技術検証例(コード例)

以下は実務でよく使うパターンのサンプルです。CSVを安全に取り込んで正規化するPythonの断片コード(pandasベース)。

import requests

import chardet

import pandas as pd

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

r = requests.get(url)

enc = chardet.detect(r.content)['encoding']

text = r.content.decode(enc or 'utf-8')

pandasで読み込む

from io import StringIO

df = pd.read_csv(StringIO(text))

カラム名正規化

df.columns = [c.strip().lower().replace(' ', '_') for c in df.columns]

日付正規化(例)

df['date'] = pd.to_datetime(df['date'], errors='coerce')

要するに、現場ではエンコーディング検出→UTF-8正規化→カラム名正規化→日付/数値のサニタイズ、というパイプラインが必須です。

データ品質チェックとCI化の提案

  • スキーマ定義:JSON Schema / CSVW / Datapackage.jsonで各CSVの列名と型、必須・許容値を定義
  • 自動バリデーション:Goodtablesやfrictionless.ioでプルリク時・スケジュールで検証
  • エンコーディング標準:公開はUTF-8、BOMなしを原則に
  • メタデータ整備:DCATやschema.orgメタデータ、更新日時・ライセンス・連絡先を必須化
  • API化:GET/POSTでフィルタ・ページネーション・増分取得を可能にするREST/GraphQLエンドポイント
  • データカタログ:CKANやDataCatalog連携で検索性を確保

政策と実績のギャップ分析(具体例)

デジタル行財政改革会議の『機械可読性に関するルール』(資料4-1)では、政府機関に機械可読の整備を求めるが、現場のCSVは整備状況がばらけている。政策目標:機械可読性担保 → 実績:ファイル提供は増えたがメタデータ・スキーマ整備が遅延。結果、二次利用のコストが高いまま。

実装ロードマップ(短中期)

短期(3-6ヶ月)

  • エンコーディング・日付・ヘッダーの統一ルールを公開
  • 主要CSVに対してJSON Schemaを作成しバリデーション導入

中期(6-18ヶ月)

  • 代表的APIエンドポイントの整備(例: /api/v1/notice、/api/v1/environment/pref/{id})
  • オープンデータカタログのDCAT化

長期(18ヶ月〜)

  • 組織横断のデータプラットフォーム(CKAN等)とCI/CDでデータパイプラインを自動化
  • スキーマレジストリとデータ契約(Data Contracts)の運用

まとめ

  • CSV公開は良いが、機械がそのまま処理できる状態にするのが次の課題
  • 技術的改善は明確:UTF-8標準、スキーマ定義、APIとバリデーションの導入
  • 政策側のルール(デジタル行財政改革会議の資料)を現場に落とし込む運用とツールが必要

おかむーから一言

テクノロジーで社会をアップデートするって、綺麗事じゃなくてこういう地味な工程改善の積み重ねなんです。エンジニア目線で言うと、API一本・スキーマ一つで世界が変わること、マジで多いんですよ!