この道、誰がケガしてる?
場所をひとつ決めると、その周りで2019〜2024年に実際に起きた人身事故を地図に出し、誰が巻き込まれたかを件数で答える。警察庁は全国の人身事故を1件残らず緯度経度つきで公開しているのに、1年ぶんが56〜70MBのShift_JIS、座標は度分秒を潰した整数という形なので、普通の人には開けない。手元で数えられる形にした。件数は交通量で割っていないので、危険度の判定はしない
制作メモ
- AIに任せた
- 着手前の実測。6年ぶん375MBのCSVを全件解析し、190万件すべての座標が読めること、列の数が年で違うこと(2019〜2021年は58列、2022〜2024年は68列)を先に確かめた/要件を実データで削った。年齢は6年とも階級値で、いちばん若い区分が0〜24歳だったため、目玉にするつもりだった「子どもで絞る」を落とした/データ変換の設計と実装。1件6バイトに詰め、地域メッシュで371ファイルに割って、1回の通信を索引5KB+12〜160KBに収めた/実装、ユニット50とE2E 10、UI採点ループ、デモとプロモ動画
- 自分でやった
- 4案からの選択/実機での確認とX投稿
- 失敗と修正
- ファイル名の年を、事故が起きた年だと思い込んで変換していた。警察庁のファイルは事故が確定した「統計年」で分かれていて、honhyo_2024.csv には2023年の事故が8,477件、2018年以前のものまで入っている → テスト用に切り出した2行の発生年が2023年だったことで気づいた。発生年の列から取るように直し、2019年より前に起きた10,460件は端数なので落とした。重複していないことは、全190万件を都道府県・警察署・本票番号・日時・座標で突き合わせて確かめた(重複0件)
その修正で、行を飛ばすつもりの continue を return と書いた。読み込み中のファイルごと打ち切られ、190万件あるはずが51万件になった → 変換スクリプトが最後に件数を検算していたので、その場で分かった。年別の内訳を出力に足して、2019年のファイルが0件になっていることも見えるようにした
変換スクリプトが読み込まれただけで走り出す書き方になっていて、中の関数をテストから呼べなかった。実装を任せた側から指摘された → 直接呼ばれたときだけ動くようにし、度分秒の変換と列の読み取りにテストを足した。テストが門番になっているかは、年をファイル名から取る変異と交差点コードを1つ落とす変異を入れて、どちらも落ちることで確かめた
公開前チェックが、同梱した371本のバイナリを文字として読んでいた。目視が要る扱いにもなっていなかった → 拡張子を目視対象に足し、同じフォルダに10本を超えるときはフォルダ単位でまとめて出すようにした。検査自体は緩めていない
プロモ動画の字幕に書こうとした高知駅の数字(129件・自転車63件)が、画面に出る値と違っていた。自分が座標を小数4桁に丸めて数えた結果で、アプリが住所検索で掴む座標とは別の点だった → プロモを作らせた側が突き合わせの関門で気づいて止めた。画面の値(132件・自転車61件・歩行者12件)に直し、X投稿文の同じ数字も直した。Day 040 でも同じ種類の食い違いを同じ関門が止めている







































