ちかくのWi-Fi
現在地か地名を中心に、同梱した自治体公式・OpenStreetMap登録・チェーン推定の3層から近いWi-Fi候補を距離順で表示。無料区分や推定条件、出典を文字で示し、Googleマップで開ける。検索は端末内で完結し、地名検索時だけ中継へ通信する。
所要時間12時間30分
制作メモ
- AIに任せた
- 自治体公式・OSM登録・チェーン推定の3層を別データのまま読み、端末内で半径抽出・距離順表示・層別集計を行う構成へ変更した/実行時のOverpass中継を廃止し、生成ツールで座標と項目を削減したOSMデータを同梱する方式に変更した/各社公式サイトで確認した提供範囲・条件・確認日を推定表示へ反映し、店舗ごとの利用可否を断定しない文言にした/OSM、OpenFreeMap、Nominatim、自治体11件のライセンスとクレジット要件を画面・README・第三者通知へ反映した/体験評価(別セッションが実操作で採点・12/20)の指摘を反映した。失敗と読み込みの文言を押した場所の近くに出す、地名検索で掴んだ場所の名前と候補を表示する、0件の理由を層・絞り込み・半径で出し分ける、100件と地図ピン60か所の上限を明示する、方角を距離に添える、失敗時に直前の結果を残す/Nominatimが「仙台駅」を岡山県の店に解くことを実測し、中継で「◯◯駅」を「◯◯ 駅」に変えて問い合わせ、国内に絞る対応を入れた/3層フィルター、地名候補、0件理由、上限表示、方角のユニットテスト68件と決定的なE2E 24件を作成した/縦型プロモ動画(36秒・BGM付き)の生成ツールをDay 028方式で流用し、地図タイルの読み込み待ちとピンの出現演出を加えた
- 自分でやった
- 題材の発案と、試作後の公開判断(Day 29として出す決定と、Nominatim利用方針を読んで採用した記録・2026-09-05)/実機での確認
- 失敗と修正
- 最初の実装では、リスト用に100件へ切った配列をそのまま地図にも渡しており、「リストは最大100件、地図はすべて描く」という要件を満たしていなかった → 絞り込み後の全件とリスト表示用の先頭100件を分け、要約と地図には全件、リストにだけ上限を適用した
秋田市の施設名と住所に「西武秋田店セイブアキタテン」のように読みが連結していた。配布XLSXをCSVへ変換したときにふりがな(ルビ)の文字列が値に混ざり、ヘッダも「設置者セッチシャ」になっていた → openpyxlの値のみ読みで再変換し、列名を素の名前に直して同梱データを再生成した。変わった行は秋田市の13件だけで、他の出典と総数5,855点は変わらない
地名検索で「仙台駅」を入れると、Nominatimが岡山県倉敷市の飲食店を返し、アプリは掴んだ場所の名前を表示せずに「前回: 仙台駅」とだけ出していた → 中継で末尾の「駅」の前に空白を挟んで問い合わせ、国内に絞る。アプリ側は掴んだ場所の名前を常に表示し、候補が複数なら選べるようにした
説明文が「現在地は約110mに丸めて中継サーバーへ送る」となっていたが、コードでは現在地はどこにも送っていなかった → 実装どおり「現在地はどこにも送らない。端末に残すのは丸めた前回地点と絞り込みだけ。地名検索で送るのは入力した地名だけ」に直した
公開前チェックの個人NGワードが、沖縄県西原町・浦添市西原・熊本市東区西原・広島市安佐南区西原の施設名と住所(自治体オープンデータの地名)47か所に反応して公開を止めた → 人名の文脈は検出したまま、直前が市・区・郡・町・村、直後が町・村・店・シティ・数字・丁目などの地名の文脈だけ通すパターンに書き換え、ローカルとCIの両方を同じ内容にした



























