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