
AIにテストデータを作らせる|個人情報と偏りに気をつける型
「テストデータ、それっぽいのを100件用意しておいて」。 そう言われて、AIに頼む。数秒後には、氏名も住所もメールアドレスも整った一覧が返ってくる。手で1件ずつ作っていた頃を思うと、本当にありがたいですよね。
でも、その一覧をコピーして貼り付ける前に、ほんの少しだけ立ち止まりたい瞬間があります。 その「田中一郎」さん、本当に架空ですか。100件のうち、エラーになる異常系はいくつ入っていますか。年齢も地域も、きれいに平均的すぎませんか。
AIにテストデータを作らせるのは、うまく使えばとても効率的です。ただ、便利さの裏に、個人情報の混入とデータの偏りという2つの落とし穴があります。この記事は、その2つを避けながら、AIにテストデータ・ダミーデータを安全に作らせる型をまとめたものです。
長く見えますが、全部は要りません。まず「本物が混じっていないか」の確認だけ持ち帰れば、今日から効きます。
結論:AIにテストデータを作らせるときは、①本物の個人情報を渡さない・作らせない(実在しそうな値・実データを避ける)、②正常系だけでなく異常系・境界値を意図的に頼む、③偏りをこちらから指定する(年齢・地域・パターンを散らす)、④使う前に人がざっと目を通す。この4つを型にしておけば、「便利だけど不安」が「便利で安心」に変わります。
テストデータづくりは地味な作業です。でも、そこが雑だと、テストが通っても本番で転ぶ。だからこそ、少しだけ丁寧に見ておく価値があります。
なぜ「AIのテストデータ」は確認したいのか

型に入る前に、なぜ確認が要るのかを一度だけ見ておきます。理由が分かると、どこを見ればいいかが見えてきます。
- 本物の個人情報が混じることがある:「実在しそうな名前で」と頼むと、AIは実在の人物名・企業名・実際に使われているメールアドレスに近い値を出すことがあります。テストデータのつもりが、誰かの本物の情報になっている、という事故につながる
- こちらが渡した実データが漏れる:本番のデータを「これを参考にダミーを作って」と貼ると、その入力自体が外部に渡ります。無料ツールでは入力が学習に使われる場合もある(→無料AIツールを業務で使う前の確認)
- 正常系に偏る:AIは「それっぽい正しいデータ」を作るのが得意な反面、放っておくときれいな正常系ばかりを返します。空文字、最大長、絵文字、全角スペース、境界値——テストで一番効く異常系が抜けやすい
- 分布が平均的すぎる:年齢は30代前後、地域は都市部ばかり、といった具合に、無難な中央に寄りがち。実際のユーザーの散らばりを再現できていないと、テストは通っても本番の端で転ぶ
裏を返すと——本物を渡さない・作らせない、異常系を意図して頼む、偏りをこちらで指定する。この3つを型にすれば、落とし穴はほぼ避けられます。順に見ていきます。
手順1:本物の個人情報を「渡さない・作らせない」
いちばん大事で、いちばん忘れやすいのがこれです。テストデータは「架空である」ことがすべての前提になります。
渡さない:本番のユーザーデータや顧客リストを、そのままAIに貼らない。「この形式でダミーを作って」と伝えたいときは、実データではなく項目名と型だけ(例:氏名=日本語の姓名、メール=example.com ドメイン、年齢=0〜120の整数)を渡します。線引きの考え方は機密・個人情報をAIに入力する前のリスク確認にまとめています。
作らせない:メールアドレスやドメインは、テスト用に予約された安全な値を指定します。
- メール:
@example.com/@example.jp(テスト用に確保されたドメイン。実在の他人に届かない) - 電話番号:各国のテスト用・案内用番号帯を使う(実在の番号にかけない形)
- 氏名・企業名:「架空の」「実在しないことを確認した」と明示して頼む。特定の実在人物・実企業を想起させる固有名は避ける
プロンプトの一言で変わります。「実在の人物・企業・実際のメールアドレスは使わず、明らかに架空とわかる値で。メールは example.com ドメインで」と添えるだけで、事故の芽をひとつ摘めます。
手順2:正常系だけでなく、異常系・境界値を意図して頼む

テストで本当に効くのは、たいてい端っこのデータです。ところがAIは、放っておくと真ん中の無難な値を並べます。だから、異常系と境界値は、こちらから名指しで頼む。
こんなふうに具体的に指定すると、抜けが減ります。
- 空・未入力:空文字、null、スペースだけ、全角スペースだけ
- 長さの境界:最小1文字、上限ぴったり、上限+1文字、極端に長い文字列
- 特殊な文字:絵文字、機種依存文字、改行を含む値、前後の空白、SQLやHTMLで意味を持つ記号(
'<など) - 数値の境界:0、負の数、上限値、桁あふれしそうな大きな値、小数点の扱い
- 形式の崩れ:
@のないメール、桁の足りない電話番号、ありえない日付(2月30日など)
プロンプト例:「この項目に対して、正常系5件のほかに、空・上限超え・特殊文字・形式不正を含む異常系を各1件以上。何を狙ったデータかを1行のコメントで添えて」。狙いをコメントで書かせておくと、後で読み返したときに「なぜこのデータがあるのか」が分かって助かります。観点の洗い出し自体は境界値・異常系をAIに考えさせて漏れを減らす手順も合わせてどうぞ。
手順3:偏りを、こちらから指定して散らす
「それっぽいデータ100件」とだけ頼むと、似たようなレコードが並びがちです。実際のユーザーは、もっとばらついています。だから、散らしてほしい軸を先に指定します。
- 属性の分布:年齢は10代〜80代までまんべんなく、地域は都市部と地方を混ぜる、といった軸を挙げる
- 状態のパターン:新規/継続/退会、有効/無効、権限あり/なし——業務上ありうる組み合わせを網羅する
- 件数のバランス:「全部ユニーク」ではなく、同姓同名や重複メールなど、現実に起こる衝突もわざと少し混ぜる
例:「年齢は各年代がほぼ均等になるように。都道府県は関東に偏らせず全国から。ステータスは新規・継続・退会を3:5:2くらいで」。
ここで注意したいのは、逆の偏りです。属性を無理に均等にしすぎると、それはそれで現実離れします。狙いは「平均に寄せる」ことでも「完全に均等にする」ことでもなく、テストしたい観点をちゃんとカバーする散らばりにすること。何を確かめたいテストなのかを思い出しながら軸を選ぶと、ちょうどよくなります。
手順4:使う前に、人がざっと目を通す
生成できたら、そのまま流し込む前に、ひと目だけ確認します。全件を精査する必要はありません。ざっと眺めて、次のあたりだけ見ておけば十分です。
- 本物っぽい値が混じっていないか:知っている実在の人名・企業名・実際のドメインが紛れていないか、上から下まで一度スクロールする
- 狙った異常系が本当に入っているか:「異常系も入れて」と頼んでも、結局きれいな値ばかり、ということは起こります。空値や特殊文字が実際にあるか目視する
- 形式がテスト対象と噛み合っているか:文字コード、区切り、日付フォーマットが、読み込む側と合っているか
- 件数と分布が指定どおりか:偏らせない指定が効いているか、ざっくり眺める
AIの出力は「もっともらしいけれど、こちらの指定を微妙に外している」ことがあります。存在しない値や捏造された形式が混じることもあるので、鵜呑みにしない習慣が効きます(→AIのハルシネーションの見抜き方)。データが多くて全部は見きれないときは、先頭・末尾・ランダムに数件だけでも抜き取って確認すると、大きな崩れには気づけます。
ありがちな落とし穴
- 本番データを「参考に」と貼ってしまう:ダミーを作らせるつもりが、実データを外部に渡している
- 「実在しそうな名前で」と頼む:親切心の指定が、かえって本物混入のリスクを上げる
- 正常系だけで満足する:きれいなデータでテストが通り、本番の端で転ぶ
- 均等にしすぎる/偏ったまま:どちらも現実と噛み合わない。観点に沿った散らばりを狙えていない
- メール・電話を実在の値にする:テスト送信が本物の他人に届く事故。予約ドメイン・テスト番号を使っていない
- 生成物を無検証で流し込む:狙った異常系が入っておらず、テストが素通りする
- 秘匿すべきデータを生成物に残す:ダミーのつもりが機微な情報を含み、リポジトリやログに残ってしまう
明日からやること(小さく始める3つ)
- テストデータを頼むプロンプトに、「実在の人物・企業・実メールは使わず、メールは example.com で」の一言を定型で足す
- 「それっぽく100件」ではなく、正常系+異常系(空・上限超え・特殊文字・形式不正)を各1件以上、と観点を名指しで頼む
- 流し込む前に、先頭・末尾・ランダム数件だけ目視して、本物混入と異常系の有無をざっと確認する
この3つだけでも、「便利だけど不安」がかなり減ります。慣れてきたら、分布の指定や、狙いをコメントで書かせる工夫を足していけば十分です。
テストデータ生成チェックリスト
「関係する所だけ見る」が前提です。全部に○は要りません。いま作っているデータに関わる所だけ、さっと確認します。
渡す前
- 本番の実データ・顧客情報をそのまま貼っていないか
- 項目名と型だけで頼めているか(実データを参考に渡していないか)
- メール・電話・氏名を「架空・予約ドメイン・テスト番号」で指定したか
頼み方
- 正常系だけでなく、異常系(空・上限超え・特殊文字・形式不正)を名指しで頼んだか
- 境界値(最小・上限・上限+1・0・負の数)を含めたか
- 散らしたい軸(年齢・地域・状態)を指定したか
- 各データの狙いを1行コメントで書かせたか
使う前
- 実在しそうな人名・企業名・ドメインが混じっていないか目視したか
- 頼んだ異常系が本当に入っているか確認したか
- 形式(文字コード・日付・区切り)がテスト対象と噛み合うか
- 生成物に機微な情報が残っていないか(リポジトリ・ログに注意)
最後に
テストデータづくりは、スポットライトの当たらない作業です。それでも、ここが雑だとテストは嘘をつき、本番で初めて綻びが出る。逆に、少し丁寧にデータをそろえておくだけで、テストはずっと正直になります。
AIは、その面倒な下ごしらえを肩代わりしてくれる頼れる相棒です。ただ、何を作らせないかと何を意図して混ぜるかは、現場を知っているあなたが決める。そこだけ手綱を握っておけば、便利さを安心して受け取れます。

今日ひとつ、「実メールは使わず example.com で」を口ぐせにできたなら、それはもう、便利さと安全を両立させる確かな一歩です。
よければ、こちらも
- 異常系・境界値の洗い出しそのものは境界値・異常系をAIに考えさせて漏れを減らす手順へ。
- AIに何を渡してよいかの線引きは機密・個人情報をAIに入力する前のリスク確認へ。
- 生成された値を鵜呑みにしない見方はAIのハルシネーションの見抜き方へ。