いずみちゃんです。
今回は、ちょっとしたひらめきから始まったツール開発の記録をお届けします。「この場所って、駅まで遠いのかな?」という素朴な疑問が、気づいたら3本のツールに育っていました。
きっかけは一本の問いかけでした
はじまりはシンプルでした。「住所を入れたら交通の便がわかるツール、作れないかな?」と Claude API に相談してみたんです。返ってきたアイデアが「Nominatim と Overpass API を使えばサーバーなしの HTML 1ファイルで作れますよ」というもの。
試してみると、住所を入れるだけで最寄り駅・バス停の距離とスコアがぱっと出てきて、思いのほか面白い!
「じゃあ、スーパーや病院も含めた生活利便性も出せたら?」「不動産の価格データと組み合わせたら、便利なのに安いエリアが探せるのでは?」と、どんどん欲が出てきました。うまくいったこと、うまくいかなかったこと、全部ひっくるめてまとめます。
使ったのは無料 API だけです
| API | 役割 |
|---|---|
| Nominatim | 住所・郵便番号 → 緯度経度 |
| Overpass API | 周辺の施設を地図データから検索 |
| zipcloud | 郵便番号 → 住所文字列に変換 |
登録不要、無料、ブラウザから直接叩けるものだけです。なのでツールはすべて HTML ファイル1枚で動きます。ダブルクリックで開くだけ。
まず作ったのが「交通利便性チェッカー」
仕組みはこうです。
- 入力された住所を Nominatim に投げて緯度経度に変換
- Overpass API で半径 2km 圏内の駅・バス停を一気に取得
- Haversine 公式で直線距離を計算
- 距離をスコア(100点満点)に変換し、鉄道 60%・バス 40% で合算
郵便番号にも対応しました。7桁の数字を入力したら zipcloud で住所に変換してから Nominatim に渡す、という2段階の流れです。
続いて「生活利便性チェッカー」
同じ仕組みで、対象施設を広げました。
| カテゴリ | 対象 | 重み |
|---|---|---|
| 食料品 | スーパー・コンビニ | 30% |
| 医療 | 病院・診療所・薬局 | 25% |
| 金融 | 銀行・ATM | 15% |
| 公園 | 公園・緑地 | 15% |
| 教育 | 学校・幼稚園 | 15% |
各カテゴリの最寄り施設までの距離をスコアに変換して、重みつきで足し合わせます。
不動産価格チェッカー……は断念しました
「便利で安いエリア」を探すには価格データが必要ですよね。国土交通省が不動産取引価格を公開しているので、そのAPIを活用しようとしたのですが、ここで壁にぶつかりました。
まずデータの構造について。 このデータ、番地レベルの情報は持っていないんです。「どの番地がいくらで売れたか」はプライバシー保護のため公開されておらず、最小粒度は丁目程度の「地区名」。市区町村レベルの価格傾向を把握するものとして使うのが正解のようです。
次に CORS 問題。 HTML ファイルをブラウザで直接開くと Origin が null になってしまい、国交省の API に弾かれます。各種 CORS プロキシも試しましたが、有料化していたり接続できなかったり。さらにそもそもそのネットワーク環境から land.mlit.go.jp ドメイン自体に到達できないことが判明し、いったん断念しました。
国交省には新しい API(不動産情報ライブラリ)もあって、無料のAPIキーで使えます。こちらは引き続きチャレンジしていきたいと思っています。
最終形は「エリア総合チェッカー」
交通と生活、2つのスコアを1画面にまとめました。
Overpass へのリクエストをひとつに統合したので、以前より速く結果が出ます。
総合スコア = 交通スコア × 50% + 生活スコア × 50%
左パネルに交通、右パネルに生活カテゴリ別のスコアが並び、駅・施設の一覧もまとめて確認できます。
使ってみてわかったこと
ジオコーディングのズレについて。 たとえば「広島県福山市新市町新市」を入力すると、Nominatim がこの地区の重心付近を基準点として返します。その結果、実際にはJR福塩線が通っている地域なのに、新市駅から離れた地点が起点となり「駅が遠い」という評価になってしまいました。Nominatim が町・大字レベルの地名に対して面の重心を返す仕様によるものです。番地まで入力すると精度が上がります。ツールの結果はあくまで参考値としてお使いください。
OpenStreetMap のデータ品質について。 施設情報はボランティアが登録・更新しているため、地域によって網羅率が異なります。都市部は充実していますが、地方では未登録の施設もあります。
CORS は最初に確認する。 外部 API を使ったブラウザツールを作るなら、そのAPIがCORSをサポートしているか最初に調べるべきでした。今回は国交省 API で詰まって初めて気づきました。次回への反省点です。
できあがったもの
| ツール | リンク |
|---|---|
| 交通利便性チェッカー | transit_checker.html |
| 生活利便性チェッカー | livability_checker.html |
| エリア総合チェッカー | area_checker.html |
どれもサーバー不要、HTML ファイルをブラウザで開くだけです。「引越し先の候補を比較したい」「穴場エリアを探したい」という場面でぜひ使ってみてください。
不動産価格との統合は次のステップとして残っています。それが実現すれば、利便性と価格をセットで比較できる、もう少し本格的なエリア探しツールになる予定です。