メニュー

ナショナル ID 番号生成ツールの使い方と各国の形式

ナショナル ID 番号生成ツールが扱う各国の番号形式と、検査用の数字がなぜ必要なのかを整理します。桁数を国ごとに変える理由と、本人確認の流れを検証するときの境界も確認できます。

公開日

  • 身元情報
  • テストデータ

ナショナル ID 番号生成ツールは、国ごとに異なる公的な識別番号の形式に合わせて、検査用の数字までそろった値を組み立てる仕組みです。世界共通の形式は存在せず、桁数も文字種も計算の方法も国によって変わります。したがって、桁数を一箇所に書き込んだ実装は、遅かれ早かれどこかの国で破綻します。ここでは、国ごとの番号の違い、検査用の数字が果たす役割、桁数を国ごとの設定として持つべき理由、そして本人確認の流れを検証するときの境界を順に確認します。読み終えると、自分の対象国に必要な形式の一覧と、検証で用意すべき値の考え方が分かります。

国によって番号の形式はどう違うのか

アメリカの社会保障番号は、三つの部分をハイフンで区切った九桁の数字です。発行の範囲には使われない組み合わせが定められており、形式が合っていても予約された範囲の値は無効として扱われます。桁数だけを見る検証は、この予約の範囲を見落とします。

中国の住民身分証の番号は十八桁で、先頭の六桁が地域、続く八桁が生年月日、そのあとの三桁が順序、最後の一桁が検査用の数字または記号です。生年月日が番号のなかに入るため、番号と生年月日が食い違う値は、単体では正しく見えても記録として矛盾します。

ブラジルの個人番号は十一桁で、最後の二桁が前の九桁から計算されます。スペインの本人確認番号は八桁の数字と一文字の組み合わせで、文字は数字から計算されます。トルコの識別番号は十一桁で、こちらも計算で確かめられる構造を持ちます。インドネシアの番号は十六桁で、先頭に地域と生年月日の情報を含みます。ロシアの納税者番号は十桁または十二桁で、用途によって長さが変わります。

この並びを見ると、番号は単なる数字の並びではなく、地域、生年月日、順序、検査という複数の意味を一つの文字列に詰め込んだ構造だと分かります。構造を知らずに値を組み立てると、見た目だけの番号になります。国ごとの長さの一覧は国別の身元番号の桁数で扱っています。

検査用の数字は何のためにあるのか?

番号の末尾や一部の桁は、それ以外の桁から計算されます。計算の方法は国ごとに異なりますが、目的は共通しています。入力の途中で桁を打ち間違えたり、隣り合う数字を入れ替えたりしたときに、その誤りを高い確率で見つけることです。

この仕組みがあるため、適当に桁を並べた値は検証で落ちます。すべての桁を同じ数字で埋めた値や、順に並べただけの値は、計算に合わないためです。テストの値として使うなら、計算の方法を実装し、それに合う最後の一桁を決める必要があります。

ここでも、計算を通過することが有効性の証明ではない点は変わりません。計算に合う値は無数にあり、その大半は発行の台帳に存在しません。実装では、計算の通過を形式の確認として扱い、存在の確認とは切り離してください。計算の考え方は検査用の数字の概要にまとめています。

桁数を国ごとに持つべき理由はどこにあるのか

第一の理由は、桁数が国ごとに違うことです。九桁、十桁、十一桁、十二桁、十六桁、十八桁と幅があり、一つの上限を決めて長さだけを見る検証は、どこかの国を誤って弾きます。短い国に合わせれば長い国が弾かれ、長い国に合わせれば短い国が通ります。

第二の理由は、同じ国でも用途によって長さが変わる場合があることです。ロシアの納税者番号のように、法人と個人で桁数が分かれる国があります。桁数が固定的でない前提で書かれた実装は、こうした分岐を後から追加しやすくなります。

第三の理由は、桁数のほかにも国ごとの規則があることです。予約された範囲、使えない先頭の数字、検査用の文字の扱いなど、確認すべき点は桁数だけではありません。これらを一つの表にまとめ、国を鍵として引く形にすると、実装の見通しがよくなります。桁数を固定で書いた実装が壊れる過程は国別の身元番号の検証規則で扱っています。

本人確認の流れを検証するときの境界はどこか

本人確認の流れには、番号の形式の確認、氏名や生年月日との突き合わせ、書類の読み取り、外部の照会といった段階があります。このうち自分のシステムの検証で扱えるのは、形式の確認と項目どうしの突き合わせまでです。外部の照会は、自分の管理下にない仕組みであり、結果を任意に変えられません。

したがって、テストの目的は、形式の確認が正しく動くか、項目の突き合わせが矛盾を見つけるか、失敗したときに利用者へ何を伝えるかに絞られます。実際の照会を通すことを狙うのではなく、照会に進む手前までの挙動を確かめます。

番号と生年月日の突き合わせは、国によって意味が変わります。生年月日が番号に含まれる国では、二つの値の不一致がそのまま誤りになります。含まれない国では、不一致は誤りとは限りません。同じ検証の規則をすべての国に当てると、片方の国で誤った失敗が生まれます。

記録としての整合はどう保つのか?

番号だけを単独で作ると、記録としての整合を保てません。まず国を決め、その国の形式に従って番号を作り、番号に含まれる情報と他の項目を突き合わせる順序が必要です。生年月日を含む国では、番号から読み取れる生年月日と、記録の生年月日を一致させます。

氏名についても、文字の範囲と並びの規則が国ごとに異なります。ある国の名前として自然な文字列が、別の国では不自然になります。番号と氏名を別々に作ると、この不自然さが残ります。国を先に決める順序は、この問題を避けるためでもあります。項目の整合の考え方は身元データの項目の整合で扱っています。

年齢に関わる検証がある場合は、生年月日の境界も意識します。ちょうど境界の日に生まれた値、その前日の値、翌日の値の三つを用意すると、年齢の計算が正しいかを確かめられます。境界の値の考え方は生年月日の境界の値にまとめています。

生成した番号はどこまで使えるのか

生成される番号は、形式と検査用の数字が現実に沿った合成の記録です。実在の人物に対応するものではなく、どの発行の台帳にも載っていません。照会すれば存在しない値であり、本人確認の場面で提示して通ることを狙う種類のものではありません。

用途は、自分のシステムの検証に限られます。フォームが国ごとの形式を受け取れるか、項目どうしの矛盾を見つけられるか、失敗の表示が適切かどうかを確かめるための材料です。口座の開設や契約の成立を目的とした使い方は想定していません。

扱いの面では、実在の番号と同じように慎重に管理してください。形式が同じである以上、見た目では区別がつきません。記録には合成であることを示す印を付け、本番のデータと同じ場所に置かない運用を決めておくと、後から取り違えが起きません。取り扱いの原則はテストデータとプライバシーで整理しています。

書類の読み取りを試すときは何に注意するのか

番号を書類から読み取る流れでは、読み取りの精度そのものが検証の対象になります。画像の傾き、影、印字の掠れ、手書きの記入があるかどうかで結果が変わります。人工的に作った読み取り用の画像は、こうした条件を意図的に含めると、後段の処理の弱い箇所が現れます。

読み取った番号をそのまま記録に使う実装は、別の問題を抱えます。読み取りの誤りがそのまま保存され、後から形式の確認で落ちるためです。読み取りの結果と、利用者が入力した値の二つを保持し、食い違いを見せる形にしておくと、確認の流れが止まりにくくなります。

番号のなかでも、見間違えやすい文字が問題になります。数字の一と文字の I、数字の零と文字の O のように、字形が近い組は読み取りの誤りを生みます。こうした組を含む値を意図的に用意して、読み取りの結果がどう変わるかを確かめておくと、後から起きる問い合わせの多くを先に潰せます。

検証の実装ではどの順序で確かめるのか

番号の検証は、文字種、桁数、構造、検査用の数字という順に重ねます。文字種は最も安く判定でき、検査用の数字の計算は桁数に比例して高くつきます。安い判定を先に置けば、明らかに誤った値で重い処理を呼ばずに済みます。

ただし、判定の順序と、利用者に見せる文面の順序は別に考えてください。利用者にとって役に立つのは、どの段階で落ちたかではなく、どこを直せばよいかです。文字種の誤りには使える文字を伝え、桁数の誤りには期待する桁数を国ごとに伝える、といった具合に分けます。

国ごとの規則は、実装のなかに散らさず一箇所に集めます。国を鍵として引ける一つの表にまとめておけば、新しい国を追加するときに触る場所が明確になります。規則が散らばった実装は、追加のたびに漏れが生まれます。国ごとの検証の規則は国別の身元番号の検証規則で扱っています。

対象国を広げるときはどう進めるのか

対象国を増やすときは、まず形式の一覧を確認し、桁数と文字種と検査の有無を書き出します。次に、その国の値を一件作り、自分の検証を通します。通らない場合は、実装の不足か、一覧の誤りのどちらかです。この二つを切り分けてから次へ進むと、後戻りが減ります。

国の数が増えるほど、一件ずつの確認は難しくなります。定期的に全件を流し、形式に合わない値が混ざっていないかを機械的に確かめる仕組みを用意しておくと安心です。とくに、外部の情報に基づいて一覧を更新したあとは、全件の確認を行ってください。

生成の件数を増やすときも、同じ考え方が当てはまります。ある国だけが大量に含まれる一覧は、他の国の分岐を隠します。国ごとの件数を数え、偏りがないかを最初に確かめる習慣をつけておくと、検証の抜けが早く見つかります。

導入の前に決めておきたいこと

まず、対象国ごとに桁数と文字種と検査の有無を一枚の表にまとめます。次に、その表を鍵として引く形で検証を書き、規則を実装のあちこちに散らさないようにします。最後に、生成した値には合成であることを示す印を付け、本番のデータと分けて保管します。ここまで整えてから、身元生成ツールで国を選び、境界の値を確認しながら本人確認の流れの検証を進めてください。

続けて読む

人気のツールと使い方の記事