就労継続支援A型は本当に減ったのか——公開データの「増えている」を信じずに数えた
就労継続支援A型・B型の事業所を、住所から探せる道具を作りました。作る途中で、データの読み方をひとつ間違えかけました。その話を書きます。
- できたもの: https://kurage.exbridge.jp/kshuro.php/?ref=vwork-shuro
- 消えた事業所のページ: https://kurage.exbridge.jp/kshuro.php/gone?ref=vwork-shuro
- オンプレミス版: https://kappstore.exbridge.jp/app.php?id=790cee5b922df2e4&ref=vwork-shuro
国は、全事業所を機械が読める形で出している
WAM NET(独立行政法人福祉医療機構)が、障害福祉サービス等情報公表システムのオープンデータを配っています。29のサービス種別ごとにCSVで、半年ごとに更新されます。営利・非営利を問わず二次利用できると明記されています。
就労系の4サービスだけで、2026年3月末時点の収録はこうです。
| サービス | 事業所 |
|---|---|
| 就労継続支援B型 | 20,783 |
| 就労継続支援A型 | 4,650 |
| 就労移行支援 | 3,396 |
| 就労定着支援 | 2,038 |
住所・電話・営業時間・定員に加えて、緯度経度が全件入っています。これは大きくて、事業所側のジオコーディングが一切要りません。入力された住所だけ国土地理院で座標にすれば、あとは距離を計るだけです。
最初に間違えかけたこと
ダウンロードのリンクは sfkopendata_202603_46.zip のような名前で並んでいます。最新の時点を数えたら29本しかなく、しかも _23(愛知県のコード)がありません。「29都道府県ぶんしか公表されていない」と早合点しかけました。
中を開いたら違いました。_46 は三重県ではなく、サービス種別の46=就労継続支援B型でした。47都道府県が全部入った全国ファイルが、種別ごとに分かれていただけです。_60(就労移行支援)や _70(障害児相談支援)まであるのだから、都道府県コードでないことは並びを見れば分かったはずでした。
ファイル名の数字を、確かめずに意味づけしない。 中の1行を見れば5秒で分かることを、リンクの一覧だけ見て判断しかけました。
もうひとつ。CSVはUTF-8のBOM付きでした。cp932 でも decode 自体は例外を出さずに通ってしまい、列名が化けたまま動きます。化けた列名は KeyError で気づけますが、気づかない列があれば静かに空になります。BOMを見て決めるようにしました。
公表件数は「増えている」
さて本題です。就労継続支援B型の公表件数を並べると、こうなります。
- 2021年11月末 … 13,245
- 2026年3月末 … 20,783
4年半で +57%。A型も 3,682 → 4,650 で +26% です。
この数字だけ見れば「就労支援の事業所は増え続けている」と書けます。書けますが、実態ではありません。B型の事業所が4年半で1.5倍になった事実はなく、増えているのは自治体が公表システムに登録した件数です。この制度は登録が進行中で、母数そのものが動いています。
公開データの時系列は、しばしばこうなっています。増えたのは現象か、それとも観測か。 ここを分けないと、グラフは簡単に嘘をつきます。
だから作った画面では、全国の推移を「公表された件数」と書き、事業所数とは呼ばないことにしました。
では、何なら言えるのか
登録率の影響を受けにくい数え方があります。一度公表された事業所番号が、次の時点から載らなくなった数です。登録が進むほど母数は増えますが、「いったん載ったものが消える」のは別の出来事です。
数えました。
| 最後に公表された時点 | 消えたA型 | その定員の合計 |
|---|---|---|
| 2024年3月末より後 | 889件 | 13,450人分 |
| それ以前(2021年11月〜2023年9月の2年半) | 342件 | 4,180人分 |
障害福祉サービスの報酬改定は2024年4月でした。その前後で、消える事業所が2.6倍になっています。合計事業所数が増え続けているのは、新しく開設した事業所が相殺しているからで、出ていった側だけを数えると動きが見えます。
都道府県別では、大阪府115件、北海道66件、愛知県62件。増え方が激しいのは岐阜県(改定前3件→改定後40件)と沖縄県(5件→42件)です。市区町村では大阪市72件、札幌市38件、名古屋市31件でした。
それでも「廃止した」とは書かない
ここが設計の分かれ目でした。
消えた理由は公表されていません。 廃止したのか、指定を取り消されたのか、法人が変わって番号が付け替わったのか、単に登録が更新されなかったのか、このデータからは区別できません。
だから画面には「公表データから消えた」としか書いていません。「廃止」と書けば読みやすい見出しになりますが、それは分かっていないことを分かったように書くことです。定員も同じで、「13,450人分」とは書きますが「13,450人が職を失った」とは書きません。定員は最後に公表された枠であって、そこで働いていた人数ではありません。
空き状況も出していません。公表データに入っていないからです。「定員」と「空き」を同じ画面に並べると、読む人は定員を空きとして読みます。だから定員の下に「いま空いている人数ではありません」と毎回書いています。
この書き分けは、防災の道具で使ってきたものと同じです。「該当なし」「未収録」「取得できない」を混ぜない。分からない場所を、分かっている場所のように見せない。
設計でひとつ捨てたもの
最初は、全10時点の全レコードをそのままSQLiteに入れました。63MBになりました。共有サーバーに置いて、商品として配るには重すぎます。
中身を見ると、履歴テーブルとそのインデックスで46MBでした。そこで、過去の生レコードを持つのをやめました。画面が必要としているのは2つだけです。
- 時点 × 種別 × 市区町村の件数(推移のグラフ用)
- 消えた事業所番号と、最後に載った時点(差分の一覧用)
この2つに絞ったら22.8MBになりました。生データは手元の /mnt/data に置いたままで、製品には入れません。
「データを作る道具」と「データを見せる道具」を分ける、という前にも書いた話の続きです。見せる側は、見せるために必要な形だけを持つ。履歴をそのまま持ち歩くのは、たいてい設計をしていないだけです。
中身
PHP 1ファイルとSQLite(22.8MB)。データベースサーバーも常駐プロセスもポートも要りません。
- 住所から距離順(種別・範囲で絞り込み)
- 都道府県47・市区町村1,505・区・事業所30,867のページ
- 市区町村ごとの推移と、消えた事業所の一覧(事業所名と最後の定員つき)
- CSV、JSON API、sitemap、llms.txt
議員事務所や自治体の方が「自分の市で何が起きたか」を事業所名まで示して説明できる形にしてあります。CSVはそのまま委員会の資料に使えます。
この仕組みは、事務所・自治体・会社の名前で公開できるオンプレミス版としてソースコード同梱で出しています。データは国の公開データだけ、判定は置いた場所で完結し、外部のAPIには何も送っていません。