CSVの文字化けはバグじゃない、運用の設計ミスだよ!——政府CSVのローカル依存をエンジニア視点で直す

どうも〜おかむーです!今日はちょっとエンジニアっぽい話をしますよ〜
- 3行要約
- エンジニア的には「検出→正規化→宣言(メタデータ)」の3工程でほぼ解決する
- 小さなツールチェーン(chardet/iconv/csvkit + pandas)で現場運用に組み込める改善案を提示するよ!
結論
公開CSVの失敗の原因は「ローカル慣習がそのままデータになっている」ことが大半。エンジニア的に言うと、まず“誰でも再現できる読み方”をファイルに書いておくこと(encoding, delimiter, header, date format, null token)でデータ利用の障壁が激減する。要するに、データと一緒にマシンが読める説明(datapackage.json や CSVW など)を付けるべき、ということです。
レポート本文
これ見てくださいよ:NOTICEのCSV(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でも、実際に自動処理にかけると次のような罠があるんです。
主なトラップ一覧
- 文字コード(Shift_JIS / UTF-8 / EUC-JP / BOM)
- 区切り文字(
,と;とタブの混在) - 日付表記(YYYY/MM/DD, YYYY年M月D日, 令和表記)
- 数値表記(千区切りカンマ、全角数字)
- ヘッダの日本語バリエーション(空白・改行・重複カラム名)
エンジニア的に言うと、これらは“スキーマのドリフト”ではなく“読み取りの曖昧さ”が原因です。要するにデータが自己記述してない、ということ。
実務で使えるワークフロー(検出→正規化→宣言)
1) エンコーディングと区切りの自動検出
import requests
from chardet import detect
r = requests.get('https://notice.go.jp/docs/status_notice.csv')
raw = r.content
print(detect(raw))
2) 正規化(例: Shift_JIS → UTF-8、全角→半角、千区切り除去)
# iconvで変換、csvkitで検査
curl -sS https://.../file.csv -o file.raw.csv
ENC=$(python -c "import chardet,sys; print(chardet.detect(open('file.raw.csv','rb').read())['encoding'])")
iconv -f "$ENC" -t UTF-8 file.raw.csv > file.utf8.csv
csvclean file.utf8.csv # csvkitのツールで壊れ行チェック
3) スキーマ化と宣言(datapackage.json / CSVW)
- カラム名、データ型、日付フォーマット、nullトークンを明記
- CIでCSVが変わったらスキーマバリデーションを実行
例: pandasでの読み込みテンプレート
import pandas as pd
parse_dates = ['reported_at']
df = pd.read_csv('file.utf8.csv', delimiter=',', encoding='utf-8', na_values=['', 'NA', '−'])
df['reported_at'] = pd.to_datetime(df['reported_at'], errors='coerce', format='%Y-%m-%d')
数値の前処理
df['count'] = df['count'].astype(str).str.replace(',', '').astype(float)
運用提案(現場に導入しやすいレイヤ)
- データ公開ページに“機械読み取りガイド”を必須表示(encoding, delimiter, date format)
- CIパイプラインでCSVのヘルスチェックを実行(csvkit + jsonschema)
- 既存データはバッチで正規化して「UTF-8 + 明示スキーマ」のミラーを作る
具体的な効果の想像
- データ利活用のハードルが下がり、自治体側の問い合わせが減る
- 自動集計・ダッシュボードの信頼性が上がるため、政策評価が高速化
まとめ
政府CSVの最悪の敵は「見た目がCSVならOK」思考です。エンコーダーや区切りに関して現場で暗黙ルールがあると、データ利活用は停滞します。エンジニア的には、まずは「検出→正規化→宣言」のワークフローを導入して、データ公開と同時に機械が読める説明を書いておくのが最もコスパ良い改善策です。
おかむーから一言
技術で行政が変わる瞬間って、派手さはないけど地味に強烈なんですよね。小さなルールづくりと自動化で、社会の意思決定をもっと速く、もっと正確にしていきましょう!
情報ソース
- 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/001429362.csv
- https://www.soumu.go.jp/main_content/000323625.csv
- https://www.zhihu.com/question/290714454
- https://okamu.ro/insight/ai-ready-administrative-data-checklist
- https://www.zhihu.com/question/6430289390
- https://www.cas.go.jp/jp/seisaku/digital_gyozaikaikaku/data8/data8_siryou1.pdf
- https://www.zhihu.com/question/38923279
- https://www.chisou.go.jp/sousei/about/kouhukin/index.html
- https://www.digital.go.jp/
- https://raida.go.jp/
- https://www.chisou.go.jp/sousei/pdf/r5_guideline-checkaction.pdf
- https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB
シェアする
関連レポート

公共予約システムの“ログインからAPI化”ロードマップ:パスワードレスで運用コストを下げる技術提案
公共施設予約の認証とデータを段階的にAPI化して運用コストを下げる技術ロードマップを紹介します。

政府データを“つなげる”発想:省庁バラバラを超えるフェデレーション戦略
フェデレーション層で省庁データをつなぎ、PDF混在を克服する実践的な技術案を示す。

政策ダッシュボードは“作るだけ”じゃダメ!KPIを自動で監査するパイプライン設計
政策ダッシュボードの数値を自動監査するパイプライン設計案。API・スキーマ・差分管理でKPIの信頼性を上げる技術手法を紹介します。