← 制作記一覧へ

全ホテルが赤道近くに引っ越した日

公開: 2026-07-16 · #90 / 最終更新: 2026-08-10 個人開発失敗談データ管理地図

📌 記事の取り扱いについて(公開当時の内容を含みます — タップで詳細)

本記事は公開当時の体験・気づきをまとめたものです。現在のツール数・プラン数・対象年齢・記事数・仕様とは異なる場合があります。最新の内容は各ツールページをご確認ください。ツールや外部サービスの仕様・料金は変更されることがあるため、利用前には各公式情報も併せてご確認ください。記載に誤りを見つけられた場合はお問い合わせフォームよりご連絡いただけると助かります。

私が作っているホテル検索ツールには、ホテルの場所を地図に表示する機能があります。今年の春、その地図がとんでもないことになりました。日本全国にあるはずのホテルが、あるべき場所に見当たらない。全ホテルが赤道の近くに集まっていた のです。

日本のホテルが、まとめて南の海へ引っ越していました。もちろん、引っ越したのはホテルではなく、私のデータの方です。

そもそも何をしようとしていたのか

発端は「地図のピンが微妙にズレているホテルがある」という問題でした。ホテルの座標データは予約サイト経由で受け取ったものを使っているのですが、中には実際の場所からずれた地点を指しているものが混ざっていることが分かってきたのです。

そこで、地図サービス(Google)の力を借りて、住所から座標を取り直すことにしました。取り直した座標をデータベースに書き込めば、ピンのズレが直るはず。作業自体はAIに手伝ってもらいながら進めて、処理も順調に終わったように見えました。

地図を開いたら誰もいなかった

書き込みを終えて、確認のためにツールの地図を開くと、いつもならホテルのピンでにぎやかなはずの日本列島に、ピンが見当たりません。データが消えたわけではなく、ピンの居場所が全部、日本のはるか南——赤道のすぐ近く——へ移ってしまっていたのです。

数万軒のホテルがまとめて南の海の上へ移動している状態は、笑っていいのか青ざめるべきなのか、正直よく分からないものでした。

犯人は「単位」の思い込みだった

調べてみると、原因はデータの「単位」にありました。

座標というと、私は「緯度35度、経度139度」のような「度」の数字を思い浮かべます。ところが手元のデータベースは、元になった予約サイトのデータ形式の名残で、座標を度ではなく、度を3,600倍した「秒」という単位 で保存していたのです。1度は3,600秒。だから東京あたりの緯度なら、35ではなく12万いくつという大きな数字が入っています。

一方、地図サービスから取り直した座標は、ごく普通の「度」でした。それを、3,600倍されている前提の場所へそのまま書き込んだので、ツール側から見ると値が3,600分の1に縮んだのと同じことになります。緯度35度のつもりが、0.01度くらいとして扱われる。緯度0度は赤道ですから、全ホテルが赤道付近に集まったのは、むしろ理屈どおりの結果だったわけです。

種明かしをされれば単純な話です。しかも白状すると、この「うちのデータベースは秒単位」という事実は、初めて知ったことですらありませんでした。数日前に別の住所修正の作業をしたとき、「楽天のデータは秒単位なので変換が要る」と、わざわざ記録に書き残してさえいたのです。それなのに、新しいスクリプトを書くときには、すっかり頭から抜けていました。知っていることと、次の作業でも思い出せることは、別物なのだと思い知りました。

バックアップがあって本当に助かった

幸い、書き込みの前にデータベースのバックアップを取ってありました。まずそこから元の状態に復元して、ホテルたちには日本へ帰ってきてもらいました。

その上で、今度は取り直した座標を3,600倍してから書き込む変換を挟んで、再度適用しました。取り直した座標も鵜呑みにはせず、信頼度が低いものや元の位置から離れすぎている結果は適用から外しています。これでピンのズレ修正という当初の目的も果たせました。もっとも、座標の正しさは一つの情報源だけでは決めきれないので、その後は別の公的な地図情報とも突き合わせて確かめる運用にしています。

もしバックアップがなかったらと考えると、今でも少し怖くなります。あとから冷静に見れば、取得結果のファイルに元の座標も残っていたので、完全に詰みではなかったはずです。それでも、事故の直後にその冷静さがあったかは怪しい。「書き換える前に控えを取る」という地味な習慣のおかげで、頭を使わずに元へ戻せたことが、何よりありがたかったのです。

数字は合っていても、単位が違えば別物

この一件から学んだのは、データの「単位」を思い込みで扱うと大事故になる ということです。

数字そのものはどちらも正しい座標でした。度で見ても秒で見ても、指している場所は同じです。それでも、単位の前提が食い違ったまま混ぜた瞬間に、データはまとめて壊れます。エラーも警告も出ません。数字としてはどちらも「あり得る値」なので、機械は何も疑わずに受け入れてしまうのです。

以来、外から持ってきたデータを既存のデータベースに書き込むときは、「この数字の単位は何か」「今あるデータと同じ形式か」を先に見比べるようになりました。あわせて、書き込む前のバックアップも欠かさないようにしています。

非エンジニアの私にとって、こういう教訓は本で読むより、一度盛大にやらかす方が体に染みます。赤道に並んだピンの群れは、その授業料としては安かったのかもしれません。二度と見たくはないですけれど。


← 他の制作記を見るトップお問い合わせ