越境注文の住所シナリオでは、一つの取引の中に複数の国が同時に現れます。どれか一つの国を基準に決め打ちすると、組み合わせが変わった瞬間に破綻します。この記事では、関わる国を数え上げ、それぞれの欄が何に従うかを決める手順を整理します。
一つの注文に国はいくつ現れるのか?
まず、関わる可能性のある国を数えます。少なくとも次の五つです。
- 請求の宛先の国。
- 商品の届け先の国。
- 事業者の登録地の国。
- 本人確認に使う国。
- 決済手段を発行した主体の国。
通常は同じ値が並びますが、越境では一つずつずれます。ずれたときにどの欄がどの国に従うのかを、あらかじめ決めておく必要があります。
五つのうち、どれが欠けても越境の注文は成立しません。逆に、五つがすべて同じである必要もありません。数え上げたうえで、ずれてよい組と、ずれてはいけない組を分けておきます。
請求先と届け先が違うとき何を基準にするのか?
欄ごとに基準を決めます。住所としての形式はその住所が属する国に従い、必須かどうかは取引の条件に従い、表示する文言は利用者が選んだ言語に従います。この三つを一つの基準でまとめると、どこかで必ず矛盾します。
基準は、業務と制度の要件から決めます。書きやすいかどうかで決めてはいけません。決めた基準は、実装の中に暗黙で埋めず、明示的な入力として持ちます。欄ごとに基準が違うことを、設定を見ただけで分かる状態にしてください。
決めた基準は、注文の記録にも残します。あとから同じ注文を見たときに、当時どの基準で欄を決めたのかが分かれば、表示や帳票の形が変わっても記録の意味を読み直せます。
電話と通貨と時間帯はなぜ別に見るのか?
住所の国と一致すると思い込まれやすい項目ほど、越境で外れます。
- 電話の国符号は、端末や契約の都合で住所の国と違うことがあります。
- 通貨は、決済の経路や契約の単位で住所の国と違うことがあります。
- 時間帯は、利用者が移動しているために住所の国と違うことがあります。
いずれも、住所の国から自動で埋めると誤ります。既定値として入れるのは構いませんが、書き換えられることと、書き換えた状態が保存されることを確かめてください。
既定値を入れた欄は、利用者が触れなかったのか、意図して同じ値を選んだのかを区別できません。区別が必要な場面では、既定のままかどうかを別に記録します。
長い国名と長い住所はどこを壊すのか?
越境の場面では、長さの条件が重なります。国名が長く、住所の行も多く、宛名も長くなる組み合わせが同時に来ます。壊れるのは主に次の場所です。
- 帳票の定型の枠。決まった位置に印字する欄から文字がはみ出します。
- 送り状のラベル。折り返しのない一行の欄で切れます。
- 一覧の列。省略の記号が付いて、国名の区別ができなくなります。
これらは通常の注文では表面化しません。長い値の組み合わせを一件用意し、実際に出力して確かめます。
確かめるのは、文字が切れていないかだけでなく、切れた結果として別の国名と読めてしまわないかでもあります。途中で切れた名称が、別の実在する呼び名に一致する場合があるためです。
届けられない国と形式の誤りは分けて出すべき?
分ける必要があります。前者は業務の能力の話で、後者はデータの形式の話です。同じ一文で伝えると、利用者は住所を直せば通ると思って修正を繰り返し、実際には何度直しても通りません。
表示では、理由の種別を別にし、次に取るべき行動が伝わる文言にします。記録にも種別を残します。同じ「失敗」として集計すると、業務の制限と入力の誤りが混ざり、どちらを先に直すべきか判断できなくなります。
種別ごとに、問い合わせの窓口も分けておきます。形式の誤りは利用者の側で直せますが、届けられない場合は事業者の判断が変わるまで直りません。
開発者向け: どの国に従うかを明示の入力にする
基準を暗黙にしないことが要点です。欄ごとに、必須かどうか、形式をどの国に従わせるか、表示にどの言語を使うかを、それぞれ別の入力として持ちます。関数の引数にもその三つを並べ、呼び出し側が省略できないようにします。
次に、食い違う組み合わせを検証の対象にします。請求の宛先と届け先を別の国にし、電話の国符号をさらに別にし、通貨を住所と無関係に選ぶ、という組み合わせを一件用意します。この一件で、既定値への依存がほぼ洗い出せます。
最後に、越境のときだけ現れる欄の扱いを決めます。国内の取引では表示せず、越境では欠けると先へ進めない、という関係を明示します。任意の欄として扱うと、越境の審査で止まる原因が見えにくくなります。
この記事に書いた国の組み合わせ、注文の例、欄の値は、いずれも流れを説明するために組み立てた合成の事例です。実際の取引、配送、決済の記録を含むものではなく、特定の事業者の運用を写したものでもありません。試験の設計と帳票の見本としてのみ使用してください。
次のステップ
まず、いまの設計で住所の国から自動的に埋めている項目を全部書き出します。次に、その中から一つ選び、住所の国と違う値を入れて保存できるかを試します。文言と書式をどの軸に任せるかは国と言語は別物、区分の設計は地域グルーピングと市場ティアで扱っています。国ごとの欄の有無は国の一覧から確認できます。