年齢確認テストとは、ある年齢の条件を満たす人と満たさない人を正しく振り分けられるかを確かめる作業です。条件そのものは単純ですが、境界の一日をどう扱うか、年齢を何から計算するかによって結果が変わります。この記事では、確認の対象と、用意すべき標本を整理します。
年齢のしきい値はどこから来るのか?
しきい値は一つではなく、場面ごとに違う由来を持ちます。子ども向けのサービスでは保護者の同意に関わる年齢が使われ、欧州の情報社会サービスでは同意に関する既定の年齢が使われ、成人の判断に関わる場面では成年の年齢が使われます。酒類などの一部の場面では、より高い年齢が使われる地域もあります。
| しきい値の種類 | 主な場面 |
|---|---|
| 低い方の年齢 | 子どもの保護と保護者の同意 |
| 同意に関する既定の年齢 | 情報社会サービス |
| 成年の年齢 | 契約などの判断 |
| より高い年齢 | 酒類など限られた場面 |
これらを一つの規則にまとめてはいけません。由来が違うため、片方を変えるともう片方の前提が崩れます。しきい値は場面ごとの設定として持ちます。
自己申告と証明書による確認は何が違うのか
自己申告は、利用者が入力した生年月日をそのまま使います。実装が簡単で、摩擦も少ない方法です。ただし、正しさは保証されません。入力された日付が本当かどうかは、この方法では分かりません。
証明書による確認は、写真付きの書類や公的な記録と突き合わせます。確かさは上がりますが、手間と費用がかかり、扱える個人データも増えます。どちらを選ぶかは、確認の目的と、誤って通した場合の影響の大きさで決まります。
テストの観点では、両者は別のものとして扱います。自己申告の確認で試すのは入力の妥当性と計算であり、証明書の確認で試すのは照合の手順と失敗時の扱いです。混ぜて確認すると、何を確かめたのかが分からなくなります。
年齢は何から計算すべきか?
年齢は、保存された数値ではなく、生年月日と判定日から計算します。年齢を数値として保存しておくと、時間の経過とともに実際とずれます。一年前に保存した年齢は、今日の年齢ではありません。
判定日をどこで決めるかも決めておきます。端末の時計を使うのか、受け取った時点の日付を使うのかで、境界日の結果が変わります。時差の大きい地域では、同じ瞬間でも日付が違うためです。どちらに統一するにせよ、前提を記録に残しておくと、後から結果を説明できます。
生年月日の入力の形式も、計算の前にそろえておきます。年、月、日の順で受け取るのか、区切り文字を何にするのかが入力欄ごとに違うと、境界日の値が意図しない日付として解釈されることがあります。受け取った直後に一つの形へ変換し、それ以降は同じ形で扱うのが安全です。
境界日はどう作ればよいのか?
しきい値のすぐ前後を三つ用意するのが基本です。条件の当日、その前日、そして翌日です。この三つで、しきい値の比較が一日ずれていないかを確かめられます。
さらに、次の値を加えると取りこぼしを減らせます。
- 閏日に生まれた人。2月29日の扱いをどう決めているかが現れます。
- 生まれた時刻が一日の終わりに近い人。日付の切り替えの影響が出ます。
- 時差の大きい地域に住む人。判定日の決め方が効いてきます。
- 生年月日が欠けている人。条件を満たさない扱いにするのか、入力を求めるのかを決めます。
閏日の扱いは、制度や運用によって前日とする場合と翌日とする場合があります。自分の仕組みがどちらを採るかを決め、決めたほうだけを確認します。
ツールで境界の標本を用意する
当サイトの身元生成ツールでは、生年月日を含む身元情報を生成できます。生成した値をそのまま確認に使うこともできますが、しきい値の前後を狙う場合は、生成した日付を基準に日付をずらして標本を作るほうが確実です。
生成される身元情報はテスト専用の合成データであり、実在の人物になりすます目的には使えません。境界の値の組み立て方は生年月日バリデーションの境界ケースでも扱っています。
開発者向け: しきい値をどこに置くか?
しきい値は設定として持ち、書き込まないようにします。同じ仕組みを複数の場面で使う場合、場面ごとに違う値が必要になります。書き込むと、片方の変更がもう片方に影響します。
年齢の計算は一箇所にまとめ、すべての判定から同じ計算を使います。計算が二箇所にあると、境界日の結果が食い違います。計算の結果は数値として返し、比較は呼び出し側で行う形にすると、場面ごとの違いを比較の側に閉じ込められます。
確認に用意する標本は、しきい値から逆算して作ります。今日の日付から、しきい値に当たる日を求め、その前後を一日ずつ動かします。この作り方なら、しきい値を変えても標本の意味が保たれます。
閏日の扱いは、決めた内容を確認の中に書き残します。どちらの扱いを採るかは制度によって分かれるため、決めた理由が分からないと、後から見た人が誤って「不具合」と判断します。生年月日を持つ記録の扱いは身元データの整合性の考え方と共通です。
次のステップ
まず、手元のしきい値が一箇所にまとまっているかを確認してください。次に、条件の当日と前日の二つの標本を実際に通し、期待どおりに振り分けられるかを見ます。身元生成ツールで生成した生年月日を使えば、標本の元になる値を用意できます。