Иностранные жители Японии
Краулер e-Stat и наборы данных, которые он собирает: иностранные жители по префектурам и муниципалитетам, сведённые к единому виду между периодами.
Министерство юстиции Японии публикует 在留外国人統計 — иностранных жителей по гражданству, статусу пребывания, префектурам и, с недавних пор, муниципалитетам. Каждые полгода это одни и те же данные и каждые полгода другая форма. Проект — это краулер и наборы данных; карта нужна, чтобы ими пользоваться.
00 / Что меняется между периодами
Каждый пункт — это одно правило в нормализаторе и одно решение о том, что означает результат:
- Коды и названия стран. Старые названия приводятся к текущим — スワジランド к エスワティニ, マケドニア к 北マケドニア, — чтобы страна оставалась одним рядом, а не двумя.
- Возраст. 80 означает «80 и старше». В периоде 2019-12 возраст публиковался без верхней границы, и он обрезан под остальные. В двух ранних периодах есть корзина 不詳 — в сумме три человека.
- Пол. Третий код появляется с 2022-12 и до него не существует.
- Статусы пребывания. 特定技能 появляется с 2019-12, 特定技能2号 — с 2022-06. Статус, которого не было, и статус, в котором никого нет, — разные вещи.
- Муниципалитеты. Публикуются только с 2023-12, и в первых двух выпусках в них нет ни пола, ни возраста.
01 / Что министерство скрывает и что это делает с итогами
Муниципалитеты, где иностранных жителей десять или меньше, по отдельности не публикуются: они сведены в одну общенациональную строку その他. С 2024-12 пол и возраст скрываются там, где жителей меньше пяти тысяч, а гражданство и статус — там, где их десять и меньше.
Поэтому итог по префектуре, собранный из муниципальных строк, немного меньше, чем цифра в самой префектурной таблице. Сайт всегда считает итоги по стране и по префектуре из полной префектурной таблицы, а муниципальные данные использует только для муниципального вида. Два экрана, которые расходятся, учат читателя не доверять ни одному, и лечится это тем, что один раз решают, какая таблица отвечает за какой вопрос. Скрытые ячейки рисуются штриховкой 非公表, а не нулём.
02 / Файл, который не таблица
С 2024-12 книги перестают хранить данные на листе и хранят их в модели Power Pivot. Чтобы их
прочитать, нужен pbixray и небольшой патч: без него таблицы, чьи имена начинаются на R или H,
а это большинство, пропускаются, и библиотека возвращает не ошибку, а пустую таблицу.
Вот этот режим отказа и стоит назвать вслух. Парсер, который падает, — это баг-репорт. Парсер, который возвращает пустоту, — это набор данных, тихо потерявший период, и единственная защита здесь — каждый раз сверять итоги с опубликованной цифрой.
03 / Как это доезжает до браузера
Каждый период — колоночный двоичный файл: количества 32-битными целыми, коды 8 и 16 битами, в gzip от 0,3 до 0,8 МБ. Фильтрация и агрегация — один проход по типизированным массивам в самой странице, поэтому нет ни бэкенда, ни языка запросов, а фильтр отвечает ровно так быстро, как успевает перерисоваться.
Палитра в традиционных японских цветах: 紅 для величины, 藍 для выделения и для снижения в шкале изменений, 墨 для текста. Семь квантильных классов с примерно равным числом регионов, монотонных по светлоте через OKLCH, чтобы «больше» читалось как ступень в обеих темах, и контраст текста не ниже 5:1.