湯けむり日本地図
日本地図の県庁所在地に都道府県ごとの柱を立て、源泉の数・温泉地の数・湧き出る量・銭湯の数を比べる。県を押すと、OpenStreetMapに登録された温泉・銭湯の点が出て、Googleマップで開ける。行ったお風呂には印を付けられ、記録は端末に残る。
所要時間3時間55分
制作メモ
- AIに任せた
- 着手前に国の統計3つとOpenStreetMapを測った。源泉の数は大分県5,094か所が全国の約18%で飛び抜けること、銭湯は東京都429軒・青森県261軒・山形県0軒で、全国では4年で501軒減ったことを確かめてから設計に入った/環境省の都道府県別の表(PDF)と、厚生労働省の衛生行政報告例の第9表(CSV)・概況(PDF)から県ごとの数を読み取る変換ツールを作った。県の和が原本の計・全国と合わなければ止まる。銭湯は一般公衆浴場だけを数え、個室付浴場などを含む総数は使わない/OpenStreetMapの公衆浴場を47都道府県ごとに取り、重複・私用・閉業を除いたうえで、同じ県・同じ名前で100m以内の二重登録(点と建物の輪郭)をまとめた5,208件を、地図データの記載→名前→判断できずの順で5つの種類に分けた。名前が「〇〇湯」なだけでは銭湯と決めない/ユーザーストーリー8本とUX5階層。ここで実装が7件変わった(既定を源泉の数に・見出しに1位の県と数を文で出す・種類の登録なしを独立の色に・銭湯は一般公衆浴場だけ・地図が出ない端末では順位の表を主画面に・営業時間は地図データの記載と断る・0軒の県は柱を立てない)/MapLibreの柱(fill-extrusion)をfeature-stateで地面から伸ばし、傾けた地図に全国や県のお風呂が収まるカメラを、点を実際に画面へ投影して決めるようにした。全国の構図は、3つの画面幅で向きと傾きの組み合わせを投影して比べ、主な4島がいちばん大きく入り、北海道と九州が切れないものを選んだ/UI採点を2周。別の担当がスクショだけを見て採点し、12/20から18/20で合格した。県を押せる合図・県の画面の見出し・順位の棒の縮尺・点の配色(Okabe-Ito)などを直した/実装、ユニットテスト81件とE2E 42件
- 自分でやった
- 温泉と銭湯のマップ・可視化・全国という方向の指定
- 失敗と修正
- 全国の地図が引きすぎて(390px幅でズーム2.95)、柱が細い針のようにしか見えなかった。MapLibreの範囲合わせ(cameraForBounds)は地図の傾きを考えないので、奥が縮み手前が膨らむ分を見込めていなかった → 傾けた状態で県庁所在地と列島の端を画面へ投影し、枠に収まるいちばん大きいズームを二分探索で決めるようにした(390px幅で3.42)。県に寄るときも同じ方法でお風呂の点を収める
設計メモの「5,697件(重複6・私用10・閉業2を除いて5,685件)」は引き算が合わなかった(5,697−18=5,679) → 取得した応答から数え直し、47県の応答の計は5,703件で、5,697件は重複6件を除いたあとの数だと確かめた。出典の文書にはこの順で書いた
「日本の外」を四角1つで判定していたので、ソウル・釜山・ウラジオストクも日本の中と判定されていた → 列島を7つの四角の和で持つ形にし、近くの都市が外、離島(対馬・八丈島・与那国島・南鳥島など)が中になることをテストで固定した
スマホの見出しで題名が「湯けむり日…」と切れ、PCの幅400pxのパネルでも「湯けむり…」と切れていた → 狭い画面ではDAY番号を省き、PCでは題名の上の小さな行に回した
傾けた全国の地図で、スマホの細い柱(約5px)のまわりを押すと、押した所より下で止まっている手前の青森県の柱が選ばれた。柱の根元より上なら横のずれだけで比べていて、柱の頭の高さを見ていなかった → 柱の画面上の形(根元から頭までの帯と、柱の太さ)を当たり判定で求め、押した位置から形までの距離がいちばん近い柱を選ぶようにした
日本の範囲を表す四角のあいだに隙間があり、九州の南端の佐多岬(北緯30.99度)が「日本の外」と判定されていた。主な4島の外形の点を足したテストで見つかった → 九州の四角の南端を南西諸島の四角とつなげ、佐多岬をテストの「日本の中」に加えた
傾きを弱めると、画面の端の柱がかえって大きく斜めに倒れて見えた。柱の倒れは透視(視野角36.87°)で起き、傾きが小さいほど強まる → 傾きは40°に抑えたうえで地図の視野角を15°に狭めた。端の柱の倒れ角は、390px幅で11.2°から7.4°、PC 1440×900 で31.4°から10.7°になった
左下に置いた「沖縄県 ↙」の案内が、鹿児島県の柱の根元の文字に重なった。地図の中の帰属表示の(i)も24pxで、押せる大きさ44pxに届いていなかった → 全国の構図の下に60pxの余白を取り、案内と根元の文字の分を空けた。(i)は44pxにして、押せる大きさのテストに加えた
同じお風呂が点と建物の輪郭で二重に登録され、一覧に同じ名前が2行並んでいた → 同じ県・同じ名前で100m以内を1件にまとめた(477件)
開いた直後、地図のタイルが届く前に柱が伸びきっていて、日本の形が出る前に動きが終わっていた。デモの1コマ目を切り出していて気づいた。最初に待った idle は全国の構図へ移る前のもので、データが届き始めた合図で確かめると、新しい範囲のタイルをまだ頼んでいない瞬間に「未着なし」と判定された → 全国の構図へ移ったあとの idle で、映している範囲のタイルが全部届いたことを確かめてから伸ばす。遅いときは2.5秒で待つのをやめる


















































