位置データは正常系だけでなくエッジケースでもテストする
よく地図化された市の中心部の住所からは、システムが農村部のルート、係争中の国境、極地付近のクエリをどう扱うかについてほとんど何もわかりません。難しいケースを意図的にテストしてください。
すべてのIPアドレスが同じレベルのジオロケーション精度に対応しているわけではありません。かなりの数のアドレス範囲では、どのプロバイダーが検索しても、正直に主張できるのは本当に国レベルの解像度が限界です。これが、より良いデータがあれば単純に埋まるギャップを反映していると決めつけるのではなく、なぜ起こるのかを理解することで、自分のアプリケーションでこうした結果を扱う際の適切な期待値を設定しやすくなります。
一部のアドレスブロックは、国全体で広く事業を行い、社内でのトラフィックのルーティングや割り当てに明確で一貫した地域区分を持たない組織に割り当てられています。つまり、特定のデータセットにたまたま欠けているシグナルがあるというのではなく、原理的にさえ報告できる信頼性の高い細かいシグナルが存在しないのです。一部の衛星サービスや一部の大規模な集中型プロバイダーを含む特定の種類のネットワークは、別の記事で取り上げたように、非常に広い地理的範囲をカバーする比較的少数の出口を経由してトラフィックをルーティングしています。そのため、他のあらゆる種類のネットワークについて基礎となる収集データがどれほど優れていても、そのトラフィックのジオロケーションが正直に主張できる精度には上限があります。
新たに割り当てられたアドレスブロックや最近再割り当てされたアドレスブロックも、国レベルを超える信頼度を裏付けるだけの実世界の利用データが不足していることがあります。IPアドレスの都市レベルのジオロケーションは、一般に実際の利用シグナルを時間をかけて蓄積し関連づけることに依存しており、現在の割り当てのもとで十分な期間にわたって活発かつ安定して使われていないブロックは、基礎となる手法がほかの点でどれほど優れていても、まだそのシグナルを生み出していないからです。
これらのどのケースでも、正しい答えは、フィールドを埋めるためだけにもっともらしく見えるが裏付けのない都市の推測をでっち上げるのではなく、国レベルの精度を正直に報告することです。自信たっぷりに間違った都市は、正直に粗い国レベルの結果よりも、アプリケーションにとってかなり悪いものです。間違っていてももっともらしく見える都市は、それが信頼できると想定したロジックを黙って通り抜け、原因までたどるのが難しい下流のエラーを引き起こす可能性があります。一方、国レベルの結果は少なくとも自らの限界をはっきりと示し、適切に慎重な処理へとあなたを導きます。
アプリケーションのロジックのかなりの部分が都市レベルの精度に依存しているなら、返された結果に具体的な都市のフィールドが実際に入っているのか、それとも国と地域だけにフォールバックしているのかを明示的に確認し、存在しない都市の値を前提とするのではなく、後者の場合に備えた適切なデフォルトの動作を用意しておく価値があります。私たちのIPv4とIPv6の検索は、信頼度の低い推測を確実には裏付けられないフィールドに詰め込むのではなく、そのアドレスについて基礎となるデータが正直に裏付けられるものを、それがどの粒度であれ、そのまま返します。