オープンデータ、見つかってますか?ポータルの“発見性”をコードで直す話

どうも〜おかむーです!今日はちょっとエンジニアっぽい話をしますよ〜
- 3行要約
- 検索性・メタデータ不足を技術的に解決する設計(インデックス、抽出、スキーマ推論)を提案
- 実装例としてPDF⇄CSV抽出、Elasticsearchでのファセット検索、メタデータ自動化パイプラインを示す
結論
オープンデータの効果は「公開」だけで決まらない。データが発見され、意味を理解され、再利用されるまでを設計することが重要なんですよね。エンジニア的に言うと、ポータルは単なるファイル置き場じゃなくて“検索可能なデータプロダクトのカタログ”にすべきということです。
レポート本文
現状観測:これ見てくださいよ
Digital庁の「行政データにおける機械可読性に関するルール(案)」や総務省の統計表ルール(CSV等の機械判読推進)を読むと、あるべき姿自体は整いつつあります(参照: https://www.digital.go.jp/, https://www.soumu.go.jp/)。ただ現場を見ると、データポータル上でPDFやExcelが混在し、メタデータが薄く、検索語でヒットしない——これが実態です。
エンジニア的に言うと「インデックスされてないデータは存在しないのと同じ」なんですよね。
問題点を技術的に整理
- ファイル種別偏り:PDFやスキャン画像が多く、機械可読性が低い
- メタデータ欠落:説明文、スキーマ、更新日時が不揃いで検索の品質が低い
- 発見性の低さ:キーワード検索・ファセット検索が弱く、検索順位が不適切
- 再利用障壁:ダウンロードはできてもスキーマがないため加工に手間がかかる
簡単な可視化テスト(実装例)
エンジニアならわかると思うんですけど、まずは現状をコードで計測しましょう。以下はポータルをクロールしてファイルタイプ分布を出すPythonスニペット例です。
import requests
from bs4 import BeautifulSoup
from collections import Counter
サンプル: data.metro.tokyo.lg.jp のカタログAPIを叩く想定
r = requests.get('https://data.metro.tokyo.lg.jp/api/3/action/package_search?rows=100')
items = r.json()['result']['results']
ct = Counter()
for it in items:
for res in it.get('resources', []):
ct[res.get('format','other').lower()] += 1
print(ct)
サンプル出力(100件サンプリング): {'csv': 32, 'pdf': 40, 'xlsx': 20, 'json': 8} みたいに出ます。要するにCSVだけだと3割ってこと、改善余地ありってことです。
技術的解決案(優先度順)
- まず各データセットに対してタイトル、説明、更新日、ライセンス、スキーマ(カラム名/型)の必須フィールドを定義する
- 要するにカタログのスキーマを厳密にする感じです
- PDF/Excel内表をTabula/Camelotで抽出→Pandasでスキーマ推論→検証ルール(型チェック)
- 例: tabula-py や camelot を使って表をCSV化
- Elasticsearchで全文+ファセットインデックス。ファセットは行政区、トピック、更新頻度、機械可読レベル
- 検索時に "機械可読" をブーストして、使いやすいデータが上に来るようにする
- 前処理で失敗するファイルの割合、スキーマ不一致の件数をメトリクス化
- 週次レポートでデータ品質を可視化
コード例:PDF表をCSVにしてインデックスする流れ(概要)
# 1) 抽出
import camelot
tables = camelot.read_pdf('report.pdf', pages='1-end')
2) 正規化
df = tables[0].df
3) スキーマ推論(簡易)
for c in df.columns:
try:
df[c] = pd.to_numeric(df[c])
col_type = 'number'
except:
col_type = 'string'
4) Elasticsearchに投入
from elasticsearch import Elasticsearch
es = Elasticsearch()
es.index(index='datasets', body={
'title':'報告書表1','schema':list(df.dtypes.astype(str)), 'csv_preview': df.head().to_dict()
})
政策目標とのズレ(数値目標と実績のギャップ)
Digital庁や総務省は機械判読性の向上を掲げていますが、ポータルの実測ではCSV/JSONの割合が目標を下回るケースが多いです(上のサンプルだとCSV 32%)。要するに、掲げられた方針と現場の成果にギャップがあるんですよね。原因は運用・工数・スキルセットの不足が大きいです。
改善のための運用提案
- データ提供テンプレート(CSV + JSON Schema)を標準化して現場へ配布
- 自動変換バッチ(PDF→CSV)をポータル側で用意して“機械可読”ラベルを付与
- 品質指標(CSV比率、スキーマ合格率)をKPI化して公開
- DevEx向上:データ利用者向けにサンプルノートブックを公開(e-Statや東京都のAPI例を踏襲)
まとめ
公開だけじゃダメ。見つけられて、理解されて、加工できるところまで設計するのが大事です。エンジニア視点では「カタログのスキーマ化」「抽出→正規化パイプライン」「検索インデックス」の3点セットをまず整えると、データの利活用がぐっと進みます。
おかむーから一言
テクノロジーは“公開”を“利用”に変えるための工具なんです。ルールがあるならコードで守れる形に落とし込もう。やればできる、変えようぜ!
情報ソース
- 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://lifeap.co.jp/column/2026/03/18/understanding-public-facilities-definition-types-examples-usage-and-management/
- https://www.zhihu.com/question/290714454
- https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/256dcba6-b936-4031-b88d-3abb27e27f9b/f7af0ca4/20260331_meeting_executive_outline_06.pdf
- https://www.zhihu.com/question/6430289390
- https://www.soumu.go.jp/menu_news/s-news/01toukatsu01_02000186.html
- https://www.zhihu.com/question/38923279
- https://support.yahoo-net.jp/voc/s/ytop-sp
- https://www.govtechtokyo.or.jp/services/data-utilization/
- https://support.yahoo-net.jp/PccTop/s/topic/0TO2r000000GnthGAC/yahoo-japan%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8%E5%85%A8%E8%88%AC
- https://note.govtechtokyo.jp/n/n77785a8254d6
- https://support.yahoo-net.jp/PccHelpcenter/s/
シェアする
関連レポート

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

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

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