重複退治の網が、本物のスポットまで捕まえていた話
📌 記事の取り扱いについて(公開当時の内容を含みます — タップで詳細)
本記事は公開当時の体験・気づきをまとめたものです。現在のツール数・プラン数・対象年齢・記事数・仕様とは異なる場合があります。最新の内容は各ツールページをご確認ください。ツールや外部サービスの仕様・料金は変更されることがあるため、利用前には各公式情報も併せてご確認ください。記載に誤りを見つけられた場合はお問い合わせフォームよりご連絡いただけると助かります。
子連れおでかけ地図のデータを整えていて、ちょっと信じがたいことに気づきました。二重登録を防ぐために入れていた仕組みが、まったくの別施設まで「同じもの」と判定して、片方を登録させないようにしていたのです。
重複を消すための網が広すぎて、無実の施設まで捕まえていました。今回はその顛末を書いておきたいと思います。
そもそも、なぜ同じ施設が二重に登録されるのか
この地図のスポットデータは、複数の情報源から集めて統合しています。すると同じ施設が「○○公園」と「○○公園(△△市)」のように、微妙に違う名前で複数回入ってくることがあります。表記が揺れているだけで、実体は一つです。
これをそのまま載せると、地図上に同じ公園のピンが二本立ちます。利用者からすれば紛らわしいだけなので、統合の段階で「これは既に登録済みの施設と同じでは?」と照合して、同じなら弾く仕組みを入れていました。
判定の仕組みは「名前の先頭+場所の近さ」
その照合のやり方が、いま思えば大ざっぱでした。「片方の名前の先頭の数文字が、もう片方の名前のどこかに含まれていて、場所も近い」なら同一施設とみなす、というものです。
「○○公園」と「○○公園(△△市)」なら、片方の先頭がもう片方に含まれますし、場所もほぼ同じです。これで表記揺れの重複はきれいに消えていました。この判定は4月の末に入れたもので、しばらくは素直に働いてくれていました。
まさかの誤逮捕が起きていました
ところが、この判定には抜け穴がありました。
たとえば「イオンモール○○」と「マクドナルド イオンモール○○店」。言うまでもなく別の施設です。片方はショッピングモールで、片方はその中のハンバーガー屋です。ところが、モールの中にある店の名前には、モールの名前がまるごと入っています。場所も当然近い。すると「片方の先頭がもう片方に含まれていて、場所も近い」という条件に、ぴったりはまってしまうのです。
結果、「これは登録済みの施設と同じだな」と判定されて、片方が地図に載れないまま弾かれ続けていました。重複でもなんでもない、ちゃんと実在する別のスポットなのに、です。
人間が見れば一瞬で「いや、別物でしょう」と分かります。でも仕組みは名前の文字と距離しか見ていないので、堂々と誤逮捕していました。
「カテゴリが違えば別物」を教えたら260件以上が帰ってきました
直し方は、聞いてみれば当たり前の話でした。飲食店とショッピングモールが同一施設であるはずがありません。だから、この手動追加リストの取り込み判定に「カテゴリが違えば別物として扱う」という条件を足しました。名前が似ていて場所が近くても、片方が飲食店で片方が商業施設なら、それは重複ではなく「モールの中にある店」です。
この修正を入れて手動追加リストを取り込み直したら、地図に入るスポットが1件から262件へ増えました。修正までの間にリスト自体も増えていたので、増えたぶんの全部が「弾かれていた分」というわけではありませんが、記録を見返すと、過去に弾かれていたものだけでも200件を超えています。
想像よりずっと多かったです。それだけの数のスポットが、重複防止という名目で地図に載れないままだったわけです。せっかく集めたデータを、自分で仕込んだ仕組みが取り込み口で止めていたのですから、なんとも皮肉な話です。
消す仕組みは「消しすぎていないか」も点検する
今回の学びはこれに尽きます。何かを自動で消す仕組みを作ったら、「ちゃんと消えているか」だけでなく「消しすぎていないか」も点検しないといけません。
消し漏れはすぐ気づきます。同じピンが二本立っていれば、見た目でおかしいと分かるからです。でも消しすぎは気づきにくいです。載っていないものは、そもそも目に入りません。今回の260件も、弾かれた側のデータを掘り返してみるまで、存在しないのと同じ扱いでした。
フィルタやチェックの類は「厳しくしておけば安心」と思いがちですけれど、厳しすぎる網は本物まで捕まえます。疑わしきは罰せず、とまでは言いませんが、せめて「カテゴリが違う容疑者は釈放する」くらいの分別は、仕組みの側にも持たせておくべきでした。
地図には260件以上のスポットが静かに戻ってきました。誤逮捕されていたみなさん、大変失礼しました。
← 他の制作記を見る | トップ | お問い合わせ