記事に統計のグラフを載せたいとき、e-Statからダウンロードして表計算ソフトでグラフを作ってスクショを撮る——この手作業を全部自動化しました。使ったのはAPIキー不要の「統計ダッシュボードAPI」と、サーバー上のヘッドレスChromeです。データ取得からグラフPNGの完成まで人手ゼロで通るようになったので、実装の手順と、実際にハマったAPIの落とし穴をまとめます。
統計ダッシュボードAPI — e-Stat APIの「キー不要の弟分」
政府統計のAPIといえばe-Stat APIが本命ですが、利用にはappId(APIキー)の登録が必要です。実はもう一つ、総務省統計局の「統計ダッシュボード」が提供するAPIがあり、こちらは登録不要でそのまま叩けます。全統計は網羅していませんが、国勢調査・労働力調査など主要指標の都道府県別データは揃っていて、「まず試す」にはこちらで十分でした。
エンドポイントは実質2つです。指標を探すgetIndicatorInfoと、データ本体を取るgetData。
# 指標コードをキーワードで探す
curl "https://dashboard.e-stat.go.jp/api/1.0/Json/getIndicatorInfo?Lang=JP&SearchIndicatorWord=第2次産業"
# 見つけたコードで47都道府県分のデータを取る
curl "https://dashboard.e-stat.go.jp/api/1.0/Json/getData?Lang=JP&IndicatorCode=0301108000010220000&RegionalRank=3"
これで1975年から2020年までの「第2次産業就業者比率」が、47都道府県×10時点=470件、JSONで返ってきます。
ハマった点1: RegionalRankは「03」ではなく「3」
仕様書のパラメータ表には地域階級が「01=国、02=全国、03=都道府県」とゼロ埋め2桁で書かれています。そのとおりRegionalRank=03を送ると、エラーではなくこう返ってきます。
{"RESULT": {"status": "1", "errorMsg": "正常に終了しましたが、該当データはありませんでした。"}}
「正常だがデータなし」なので、指標コードを疑って遠回りしました。正解は仕様書内のサンプルURLの方に書いてあるRegionalRank=3(ゼロ埋めなし)。パラメータ表とサンプルの表記が食い違っているときは、サンプルを信じるのが正解でした。
ハマった点2: 国勢調査系はCycle(周期)を指定しない
データ周期のパラメータCycle(01=月次、03=年次…)も罠でした。国勢調査は5年ごとの調査なので年次だろうとCycle=03を付けると、これも「該当データなし」。周期が自明な統計はCycleを省略するのが正解です。なお返ってくる時点の表記は2020FY00のような独自形式なので、年の抽出は先頭4桁を切り出します。
グラフはHTML+CSSで組んで、ヘッドレスChromeで撮る
取れたデータをどう画像にするか。グラフ描画ライブラリを入れる方法もありますが、うちではグラフをただのHTML+CSSで組んで、それをヘッドレスChromeで撮影してPNGにする方式にしました。棒グラフなら、値に比例したwidthを持つdivを並べるだけです。
<div class="row">
<span class="label">富山県</span>
<div class="track">
<div class="bar" style="width:100%"><span class="val">32.5%</span></div>
</div>
</div>
<!-- 値→widthの換算はデータ取得側のスクリプトが埋め込む -->
# 組み上がったHTMLを1200x760で撮影(deviceScaleFactor:2で高解像度)
node capture.js '{"url":"https://…/chart.html","out":"/tmp/chart.png",
"viewport":{"width":1200,"height":760}}'
この方式の利点は3つあります。①数字が絶対に狂わない(画像生成AIと違い、描画しているのはブラウザ)②日本語フォントもCSSも普段のWeb制作と同じ感覚で使える ③読者のブラウザにJSライブラリを配らなくていい(届くのはただのPNG)。ヘッドレスChrome側の環境構築は別記事にまとめてあります。
実際にこのパイプラインで作ったグラフがこれです。データ取得からこの画像の完成まで、手作業はありません。

運用ルール — 出典と「なぜこの年のデータか」を必ず書く
統計の図版を出すときは、描画の自動化より大事なことが2つあります。まず出典の明記。図の中に「総務省『国勢調査』/統計ダッシュボードより作成」を焼き込んでおくと、画像が単体でシェアされても出所が消えません。
もう一つはデータの鮮度の説明です。たとえば国勢調査の産業別集計は5年ごとで、公表済みの最新は2020年。2025年調査の産業別結果は2026年9月以降に順次公表されます。これを書かずに2020年の数字だけ載せると「古いデータを使っている」ように見えますが、「これが現時点の最新で、新しい公表が出たら更新する」と書けば、むしろ信頼になります。データが自動で取れる仕組みにしておくと、この「公表され次第更新」が実際に数分で実行できるのも、パイプライン化の隠れた利点です。