コードで語るマニフェスト:政府CSVを読み解いて改善案を出す

- 이거 보세요: 정부가 공개한 CSV 파일들이 실제로 기계가 읽기 쉬운 상태인지 확인했어요!
- 결론부터: CSV로 공개한 건 좋지만 메타데이터·인코딩·API 부재로 실사용성이 떨어집니다.
- 제안: 스키마, 버전링, JSON/CSV 변환 API, Data Package로 공개하면 바로 활용 가능해집니다!
結論
공공 데이터가CSV로公開されているのはナイス。ただし、エンジニア的に言うと「ただ置いてあるだけ」の状態が多いです。要するに、エンドツーエンドで使えるデータにするためには、エンコーディングの明示、スキーマ(列説明+型)、安定したID、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
エンジニア的に言うと、これらは「公開はしているが設計されていない」データです。具体的に問題になるポイントを列挙します。
よくある技術的問題
- エンコーディング未指定:日本の政府CSVはShift_JIS(CP932)であることが多く、UTF-8想定のツールで壊れることがある。
- スキーマ欠如:列名はあるけど型や制約、説明が無く、日付フォーマットやNULL扱いが不明。
- 一貫したIDがない:別テーブルとJOINするための固有キーがないケースが多い。
- APIがない:CSV置き場への直リンクだけで、クエリ・フィルタ・ページングができない。
- メタデータ不備:ライセンス、更新頻度、バージョン情報がファイル内にない。
要するに「データがあれば何でも作れる」は幻想なんですよね。データ設計が無いと再利用コストが高すぎるんです。
実践的なテクニカル検証法
エンジニアならコレをまずやるはず、という手順を紹介します。
import chardet
raw = open('status_notice.csv','rb').read()
print(chardet.detect(raw))
要するに、まずencodingをdetectしてから読み込むことです。多くは 'CP932' が返ります。
import pandas as pd
df = pd.read_csv('status_notice.csv', encoding='cp932')
print(df.dtypes)
print(df.isna().sum())
日付列はparse_datesで正規化、数値は小数点やカンマの除去が必要になることが多いです。
df['row_id'] = (df.astype(str)).agg('-'.join, axis=1)
でもこれ、ベストプラクティスではないです。公式にstable IDを出してほしい!
ポリシー検証(数値目標と実績の結びつき)
公開データを政策KPIと結びつけると“約束→実績”の検証ができます。やり方は単純で、以下を揃えるだけです:
- 政策ごとの明確なID(policy_id)
- 目標テーブル(policy_id, year, target_value)
- 実績テーブル(policy_id, year, actual_value)
技術的にはSQLでJOINして差分を出すだけ。
SELECT p.policy_id, p.year, p.target_value, a.actual_value, (a.actual_value - p.target_value) AS gap
FROM policy_targets p
LEFT JOIN policy_actuals a USING (policy_id, year);
これ見てくださいよ、現状は多くの公開CSVが policy_id を持っていないので、結合が難しいんです!
改善提案(実装レベル)
技術的に再利用しやすくするための具体案です。
- datapackage.json を提供して列ごとの型・説明を明示する
- CSVをそのまま置くのではなく、/api/v1/resource.json のようなRESTを用意する
- JSON Schemaでバリデーション、CIで公開前にチェック
- Semantic versioning または日時ベースのバージョンを付与
- ブラウザアプリから直接フェッチできるようにCORSを許可
- Python/R/JS の簡単な読み込み例を同梱
運用面の提案
- ファイル名に日付を入れない(常に最新は固定URL、過去はアーカイブ)
- ライセンスはSPDXタグで明記(例: CC-BY-4.0)
- メタデータページに更新履歴と責任部署を明示
期待できる効果
- データを直接使う市民・企業が増える。アプリや可視化が増えると行政の説明責任が向上します!
- API化で二次利用が加速、スマートシティや災害対応のリアルタイム性が改善される
実際の導入コスト感(ざっくり)
- 短期: datapackage.json + encoding fix + README = 数人日
- 中期: REST API + バリデーション = 数週間〜数ヶ月
- 長期: 組織横断のID設計・カタログ化 = 組織改修レベルの投資
具体的コード例(CSV→APIで使いやすいJSONへ)
# 간단한 변환 스크립트
import pandas as pd
from flask import Flask, jsonify
app = Flask(__name__)
df = pd.read_csv('status_notice.csv', encoding='cp932')
列名正規化
df.columns = [c.strip().lower().replace(' ', '_') for c in df.columns]
日付パース
for col in df.columns:
if 'date' in col:
df[col] = pd.to_datetime(df[col], errors='coerce')
@app.route('/api/status_notice.json')
def api():
return jsonify(df.to_dict(orient='records'))
これをコンテナ化してAPI化すればフロント側の作業が激減します。
まとめ
まとめ
- CSVで公開してくれてるのはグッド。ただしそのままだと「人間が読むための公開」であり「機械が使う公開」ではない。
- エンコーディング明示、スキーマ、stable ID、API化、メタデータが最低ライン。
- 技術的対処は短期〜中期で可能。組織文化の改善(ID設計や運用ルール)は時間がかかるけど成果は大きいです!
おかむーから一言
어, 오카무ー입니다! テクノロジーで行政をアップデートするのはマジで近道ですよ。データ作りをプロダクト化して、市民が使える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://ja.wikipedia.org/wiki/%E5%85%AC%E5%85%B1
- https://www.intec.co.jp/column/smartcity-08.html
- https://kotobank.jp/word/%E5%85%AC%E5%85%B1-494676
- https://www.digital.go.jp/resources/data_case_study_private
- https://www.manawin.jp/languagegap/general/koukyou-kouteki/
- https://www.zhihu.com/question/290714454
- https://metidx-gov.note.jp/n/n9468573c213b
- https://www.zhihu.com/question/6430289390
- https://ai-government-portal.com/%E5%85%AC%E5%8B%99%E5%93%A1%E3%81%AE%E6%96%B0%E3%81%97%E3%81%84%E6%8C%91%E6%88%A6%E3%80%8C%E8%A1%8C%E6%94%BFux%E6%94%B9%E5%96%84%E6%A5%AD%E5%8B%99%E5%A7%94%E8%A8%97%E3%80%8D%E5%AE%8C%E5%85%A8%E3%82%AC/
- https://www.zhihu.com/question/38923279
공유하기
관련 리포트

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

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

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