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

どうも〜おかむーです!今日はちょっとエンジニアっぽい話をしますよ〜
- これ見てくださいよ:国・自治体の公開データは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一本・スキーマ一つで世界が変わること、マジで多いんですよ!
信息来源
- https://notice.go.jp/docs/status_notice.csv
- https://www.env.go.jp/content/900398071.csv
- https://www.inpit.go.jp/content/100869372.csv
- https://www.mhlw.go.jp/content/001682075.csv
- https://www.soumu.go.jp/main_content/000323625.csv
- https://www.zhihu.com/question/290714454
- https://www.cas.go.jp/jp/seisaku/digital_gyozaikaikaku/kakusyoDX4/kakusyoDX4.html
- https://www.zhihu.com/question/6430289390
- https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/256dcba6-b936-4031-b88d-3abb27e27f9b/7c809f2f/20260331_meeting_executive_outline_05.pdf
- https://www.zhihu.com/question/38923279
- https://catalog.data.metro.tokyo.lg.jp/dataset
- https://opendata.pref.saitama.lg.jp/datasets
- https://portal.data.metro.tokyo.lg.jp/
- https://opendata.pref.saitama.lg.jp/
- https://www.city.niigata.lg.jp/shisei/seisaku/it/open-data/
相关报告

代码で語るマニフェスト:以香川县公共设施预约系统为例的技术与数据审视
以香川县公共设施预约系统为例,从API、数据格式与标准化角度检视自治体系统,给出可执行的技术改进方案与代码示例。

用代码说话的宣言:从机器可读性到API化,解读日本数字化政策的数据工程路径
从Digital庁到e-Stat,评估日本数位政策的数据交付形态,提出API化与工程化改进路线,附代码与验证示例。

コードで語るマニフェスト:日本政府データをエンジニア視点で検証する
政府のマニフェストをデータとコードで検証。PDF多用やAPI断片化を指摘し、e-StatやJapan Dashboardを例に具体的な改善案とコード例を提示します。