位置データは正常系だけでなくエッジケースでもテストする
よく地図化された市の中心部の住所からは、システムが農村部のルート、係争中の国境、極地付近のクエリをどう扱うかについてほとんど何もわかりません。難しいケースを意図的にテストしてください。
ISO 3166-1は、承認されているすべての国に標準の2文字コードを割り当てており、位置情報ソフトウェアにとって「どの国か」を示す、普遍的で安定した識別子に最も近いものです。ドイツは DE、日本は JP、ブラジルは BR です。短く、安定していて、標準を知っていれば曖昧さがないからこそ広く使われており、まさにそれが理由で、当社の郵便番号検索では自由記述の国名ではなく、このコードを郵便番号と一緒に指定する必要があります。
ISO 3166-2はこれを1段階下に広げ、国内の地方区分、つまりその国の組織の仕方に応じて州、省、地域などにコードを割り当てます。米国の州、カナダの州、日本の都道府県はすべてこの方法で表され、それぞれ国の接頭辞と地方区分の識別子を組み合わせたコードになります。これは、データソースによって綴りや略し方、翻訳が異なり得る自由記述の名前の照合に頼らない、「国内のどの地域か」を示す安定した識別子が必要なあらゆる場面で役立ちます。
混乱は通常、いくつかの予測可能な場面で生じます。最もわかりやすい不一致を生むのは自由記述の国名です。「United States」「USA」「U.S.」「America」は人にとってはすべて同じ意味ですが、完全な文字列の一致を期待するコードにとっては自動的にそうはなりません。これこそ、2文字コードが取り除くために存在する曖昧さです。地方区分の構造も国によって大きく異なります。少数の州や省にきれいに分かれる国もあれば、いくつもの行政階層を使う国もあり、「州」「省」「郡」のようなユーザー向けのラベルをISO 3166-2コードに対応付ける作業は、すべての国で1対1になるわけではありません。
もう1つのよくある混乱の原因は、国のトップレベルドメインとISOコードを混同することです。.de と DE のように一致することは多いものの、常にそうとは限りません。ドメインの末尾を国コードの確実な代わりとして扱うと、例外のケースでいずれ誤った結果が生じます。
実践的な指針としては、当社を含め、システムが別のシステムとやり取りする場面では常に、自由記述の国名ではなくISO 3166-1コードを保存して受け渡し、表示用のラベルではなく安定した識別子が必要なときは地方区分にISO 3166-2コードを使うことです。人が読める名前はユーザーが実際に画面で目にする部分だけに使い、確実に一致させる必要があるものには、その裏でコードを保持しておきましょう。
当社の郵便番号検索は、郵便番号そのものと一緒にISO 3166-1 alpha-2の国コードを受け取ります。これはまさに、国名がどのように書かれていても、リクエストに曖昧さが生じないようにするためです。