モックデータ生成

検証を通るモックデータを生成します。Luhn準拠のカード番号、mod-97のIBAN、本物のUUID。シードで再現可能。JSON・CSV・SQLで出力。

フィールド40 中 8
スキーマ
出力100 行 · 28086 文字
[
  {
    "id": "018cc251-f400-79a7-abdf-9623646f1963",
    "first_name": "Ruby",
    "last_name": "Long",
    "email": "[email protected]",
    "country": "IE",
    "created_at": "2024-04-13T08:13:34Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc251-f7e8-7727-8c38-6095cbcabdb9",
    "first_name": "Ellen",
    "last_name": "Hoffman",
    "email": "[email protected]",
    "country": "US",
    "created_at": "2024-06-28T10:45:21Z",
    "last_seen_at": "2024-10-31T16:44:09Z",
    "is_active": false
  },
  {
    "id": "018cc251-fbd0-7056-ad40-e80a775668cc",
    "first_name": "Keith",
    "last_name": "Hudson",
    "email": "[email protected]",
    "country": "AR",
    "created_at": "2025-08-11T01:04:04Z",
    "last_seen_at": "2025-09-19T15:18:41Z",
    "is_active": true
  },
  {
    "id": "018cc251-ffb8-74a1-b4c8-83cc6bd2ae90",
    "first_name": "Thomas",
    "last_name": "Moore",
    "email": "[email protected]",
    "country": "BE",
    "created_at": "2025-02-21T16:27:55Z",
    "last_seen_at": "2025-04-28T03:30:59Z",
    "is_active": true
  },
  {
    "id": "018cc252-03a0-7309-8795-f9f277a8f8c0",
    "first_name": "Benjamin",
    "last_name": "Austin",
    "email": "[email protected]",
    "country": "MX",
    "created_at": "2024-06-15T11:04:56Z",
    "last_seen_at": "2025-06-30T22:00:26Z",
    "is_active": true
  },
  {
    "id": "018cc252-0788-7658-937d-58b138c92232",
    "first_name": "Barbara",
    "last_name": "Flores",
    "email": "[email protected]",
    "country": "GR",
    "created_at": "2024-04-17T19:41:08Z",
    "last_seen_at": "2025-01-13T23:55:46Z",
    "is_active": true
  },
  {
    "id": "018cc252-0b70-7c3a-96ae-719ee90a05af",
    "first_name": "Allen",
    "last_name": "Vazquez",
    "email": "[email protected]",
    "country": "NG",
    "created_at": "2024-09-18T13:23:49Z",
    "last_seen_at": "2026-05-04T06:32:51Z",
    "is_active": false
  },
  {
    "id": "018cc252-0f58-7dfd-8623-52572f04ce20",
    "first_name": "Harry",
    "last_name": "Nichols",
    "email": "[email protected]",
    "country": "SG",
    "created_at": "2026-06-26T14:48:47Z",
    "last_seen_at": "2026-06-30T12:56:13Z",
    "is_active": false
  },
  {
    "id": "018cc252-1340-738f-b536-279444cb4512",
    "first_name": "Elaine",
    "last_name": "Wagner",
    "email": "[email protected]",
    "country": "UA",
    "created_at": "2025-05-09T14:48:44Z",
    "last_seen_at": "2026-05-19T14:58:47Z",
    "is_active": true
  },
  {
    "id": "018cc252-1728-7d96-8856-b87ee9d904e9",
    "first_name": "Fred",
    "last_name": "Fisher",
    "email": "[email protected]",
    "country": "JP",
    "created_at": "2025-11-25T05:27:13Z",
    "last_seen_at": "2026-04-04T05:36:09Z",
    "is_active": true
  },
  {
    "id": "018cc252-1b10-7baa-a79b-9567cf1366fd",
    "first_name": "Lois",
    "last_name": "Nelson",
    "email": "[email protected]",
    "country": "FR",
    "created_at": "2025-05-08T16:32:25Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-1ef8-7c8c-b859-cea655faef9c",
    "first_name": "Mark",
    "last_name": "Cunningham",
    "email": "[email protected]",
    "country": "FI",
    "created_at": "2026-02-21T11:09:02Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-22e0-77bf-bc1c-40120a5b29c4",
    "first_name": "Anne",
    "last_name": "Flores",
    "email": "[email protected]",
    "country": "KR",
    "created_at": "2025-08-02T22:55:20Z",
    "last_seen_at": "2025-10-27T03:27:52Z",
    "is_active": true
  },
  {
    "id": "018cc252-26c8-7220-9453-1804e8ce88c4",
    "first_name": "Arthur",
    "last_name": "Crawford",
    "email": "[email protected]",
    "country": "PL",
    "created_at": "2025-02-26T04:55:03Z",
    "last_seen_at": "2025-07-25T07:05:17Z",
    "is_active": true
  },
  {
    "id": "018cc252-2ab0-75a8-8a2b-28833306b87c",
    "first_name": "Ronald",
    "last_name": "Hansen",
    "email": "[email protected]",
    "country": "KR",
    "created_at": "2025-03-09T06:31:44Z",
    "last_seen_at": "2026-01-04T03:11:24Z",
    "is_active": true
  },
  {
    "id": "018cc252-2e98-7c38-93e2-9f80d039eb75",
    "first_name": "Donna",
    "last_name": "Porter",
    "email": "[email protected]",
    "country": "IE",
    "created_at": "2026-01-12T06:55:22Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-3280-77a0-8152-8f5a9584a581",
    "first_name": "Carol",
    "last_name": "Wells",
    "email": "[email protected]",
    "country": "PL",
    "created_at": "2025-07-20T23:09:02Z",
    "last_seen_at": "2026-01-24T23:04:38Z",
    "is_active": true
  },
  {
    "id": "018cc252-3668-7208-8bbe-619dada6b7e0",
    "first_name": "Sheila",
    "last_name": "Lee",
    "email": "[email protected]",
    "country": "PT",
    "created_at": "2025-01-05T20:09:52Z",
    "last_seen_at": "2025-04-08T12:02:09Z",
    "is_active": false
  },
  {
    "id": "018cc252-3a50-7b11-9261-0c17e909f6fb",
    "first_name": "Jack",
    "last_name": "Evans",
    "email": "[email protected]",
    "country": "KE",
    "created_at": "2025-12-29T14:31:00Z",
    "last_seen_at": "2026-03-28T14:30:43Z",
    "is_active": true
  },
  {
    "id": "018cc252-3e38-7f22-8cc7-0dd649d26379",
    "first_name": "Randy",
    "last_name": "Harris",
    "email": "[email protected]",
    "country": "GB",
    "created_at": "2026-06-26T19:25:04Z",
    "last_seen_at": "2026-06-30T08:39:51Z",
    "is_active": true
  },
  {
    "id": "018cc252-4220-7e86-8dae-b25b4f837713",
    "first_name": "Josephine",
    "last_name": "Castro",
    "email": "[email protected]",
    "country": "DK",
    "created_at": "2024-02-07T22:33:55Z",
    "last_seen_at": "2026-02-23T13:56:30Z",
    "is_active": true
  },
  {
    "id": "018cc252-4608-7120-abd5-535883ca01b9",
    "first_name": "Edith",
    "last_name": "Graham",
    "email": "[email protected]",
    "country": "CN",
    "created_at": "2024-04-29T08:59:26Z",
    "last_seen_at": "2024-06-17T10:20:45Z",
    "is_active": true
  },
  {
    "id": "018cc252-49f0-77f7-9bf9-17e87b0a09c6",
    "first_name": "Tracy",
    "last_name": "Willis",
    "email": "[email protected]",
    "country": "PT",
    "created_at": "2024-03-21T07:42:06Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-4dd8-75c8-8b04-1e0fb891e435",
    "first_name": "Irene",
    "last_name": "Larson",
    "email": "[email protected]",
    "country": "AT",
    "created_at": "2025-06-04T15:01:38Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-51c0-7be0-a6ca-12bc704a2b3f",
    "first_name": "Betty",
    "last_name": "Morrison",
    "email": "[email protected]",
    "country": "ID",
    "created_at": "2025-11-11T21:56:19Z",
    "last_seen_at": "2026-03-29T03:33:49Z",
    "is_active": true
  },
  {
    "id": "018cc252-55a8-736d-a7b2-8bec744ecf74",
    "first_name": "Kevin",
    "last_name": "Cox",
    "email": "[email protected]",
    "country": "GR",
    "created_at": "2025-10-06T23:28:21Z",
    "last_seen_at": null,
    "is_active": false
  },
  {
    "id": "018cc252-5990-73ca-a2d3-89bf2b8eb5f6",
    "first_name": "Sean",
    "last_name": "Carr",
    "email": "[email protected]",
    "country": "KR",
    "created_at": "2026-02-19T23:27:53Z",
    "last_seen_at": "2026-03-02T22:16:30Z",
    "is_active": true
  },
  {
    "id": "018cc252-5d78-79e2-bd4d-d8b6867867dc",
    "first_name": "Heather",
    "last_name": "Ferguson",
    "email": "[email protected]",
    "country": "IL",
    "created_at": "2024-07-07T01:39:16Z",
    "last_seen_at": "2025-09-21T19:17:00Z",
    "is_active": false
  },
  {
    "id": "018cc252-6160-78f8-a9af-d73b74581b86",
    "first_name": "Rose",
    "last_name": "Chen",
    "email": "[email protected]",
    "country": "DE",
    "created_at": "2024-09-07T16:16:48Z",
    "last_seen_at": "2024-10-02T08:29:39Z",
    "is_active": true
  },
  {
    "id": "018cc252-6548-71f0-ab4f-c824fd842a67",
    "first_name": "Maria",
    "last_name": "Brooks",
    "email": "[email protected]",
    "country": "FR",
    "created_at": "2024-06-29T06:22:30Z",
    "last_seen_at": "2025-12-22T00:38:13Z",
    "is_active": true
  },
  {
    "id": "018cc252-6930-7067-b516-480051493ec0",
    "first_name": "Donna",
    "last_name": "Hamilton",
    "email": "[email protected]",
    "country": "IE",
    "created_at": "2024-09-01T09:09:40Z",
    "last_seen_at": "2025-03-29T23:26:22Z",
    "is_active": false
  },
  {
    "id": "018cc252-6d18-7de1-bae1-21dc471405fa",
    "first_name": "Rachel",
    "last_name": "Wagner",
    "email": "[email protected]",
    "country": "IE",
    "created_at": "2026-05-31T02:06:02Z",
    "last_seen_at": "2026-06-17T16:37:27Z",
    "is_active": false
  },
  {
    "id": "018cc252-7100-752d-bc4e-c4e5bd755743",
    "first_name": "Philip",
    "last_name": "Jones",
    "email": "[email protected]",
    "country": "NO",
    "created_at": "2024-10-21T12:22:35Z",
    "last_seen_at": "2025-02-15T07:00:10Z",
    "is_active": true
  },
  {
    "id": "018cc252-74e8-7b4d-b9cf-4e8e03d1e269",
    "first_name": "Bonnie",
    "last_name": "Carter",
    "email": "[email protected]",
    "country": "PT",
    "created_at": "2026-05-28T06:16:25Z",
    "last_seen_at": "2026-06-26T21:36:12Z",
    "is_active": true
  },
  {
    "id": "018cc252-78d0-708b-a96f-d9f474e95238",
    "first_name": "Douglas",
    "last_name": "Evans",
    "email": "[email protected]",
    "country": "NG",
    "created_at": "2024-02-18T20:36:33Z",
    "last_seen_at": "2024-10-31T01:37:50Z",
    "is_active": true
  },
  {
    "id": "018cc252-7cb8-7865-96fa-e9681611dbed",
    "first_name": "Theresa",
    "last_name": "Larson",
    "email": "[email protected]",
    "country": "NZ",
    "created_at": "2024-11-21T08:57:18Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-80a0-7eca-80cd-7159faf3467f",
    "first_name": "Gladys",
    "last_name": "Reyes",
    "email": "[email protected]",
    "country": "NG",
    "created_at": "2024-04-27T11:34:46Z",
    "last_seen_at": "2026-03-09T18:39:31Z",
    "is_active": true
  },
  {
    "id": "018cc252-8488-76b2-9271-dabf0da27b4f",
    "first_name": "Bonnie",
    "last_name": "Cook",
    "email": "[email protected]",
    "country": "AT",
    "created_at": "2024-01-13T17:42:35Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-8870-70d0-ab33-72cd838e6603",
    "first_name": "Diane",
    "last_name": "Wells",
    "email": "[email protected]",
    "country": "NZ",
    "created_at": "2024-05-02T11:22:23Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-8c58-725c-980d-f206b971497b",
    "first_name": "Gloria",
    "last_name": "Woods",
    "email": "[email protected]",
    "country": "IT",
    "created_at": "2025-06-27T01:56:54Z",
    "last_seen_at": "2025-09-04T17:13:00Z",
    "is_active": true
  },
  {
    "id": "018cc252-9040-786d-90d1-5c9bae512dbf",
    "first_name": "Alan",
    "last_name": "Rodriguez",
    "email": "[email protected]",
    "country": "DK",
    "created_at": "2026-03-29T17:48:08Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-9428-7b58-8dde-508b603b97d8",
    "first_name": "Leonard",
    "last_name": "Jones",
    "email": "[email protected]",
    "country": "MX",
    "created_at": "2026-02-06T22:38:18Z",
    "last_seen_at": "2026-04-27T00:46:32Z",
    "is_active": true
  },
  {
    "id": "018cc252-9810-7c69-8024-23852691d72c",
    "first_name": "Maria",
    "last_name": "Davis",
    "email": "[email protected]",
    "country": "JP",
    "created_at": "2025-03-30T14:01:05Z",
    "last_seen_at": "2025-04-24T10:25:01Z",
    "is_active": true
  },
  {
    "id": "018cc252-9bf8-7e3a-a37a-06b1a661a0dc",
    "first_name": "Carl",
    "last_name": "Duncan",
    "email": "[email protected]",
    "country": "KE",
    "created_at": "2026-03-30T06:02:52Z",
    "last_seen_at": "2026-05-16T00:15:55Z",
    "is_active": false
  },
  {
    "id": "018cc252-9fe0-7a01-8a38-5d3e36f9eca3",
    "first_name": "Phillip",
    "last_name": "Harrison",
    "email": "[email protected]",
    "country": "DK",
    "created_at": "2024-07-12T01:56:26Z",
    "last_seen_at": "2026-05-28T21:32:17Z",
    "is_active": true
  },
  {
    "id": "018cc252-a3c8-7977-a212-1c82b978ccbe",
    "first_name": "Kim",
    "last_name": "Franklin",
    "email": "[email protected]",
    "country": "KE",
    "created_at": "2024-09-23T15:16:03Z",
    "last_seen_at": "2025-08-20T03:29:07Z",
    "is_active": true
  },
  {
    "id": "018cc252-a7b0-78f6-bb2a-d194bc638e71",
    "first_name": "Patrick",
    "last_name": "Coleman",
    "email": "[email protected]",
    "country": "ID",
    "created_at": "2025-01-06T09:04:26Z",
    "last_seen_at": "2025-07-21T22:36:07Z",
    "is_active": true
  },
  {
    "id": "018cc252-ab98-7b5b-8f5c-8b6a21b71208",
    "first_name": "Harry",
    "last_name": "Martin",
    "email": "[email protected]",
    "country": "ES",
    "created_at": "2026-02-21T17:42:10Z",
    "last_seen_at": "2026-05-16T20:52:12Z",
    "is_active": true
  },
  {
    "id": "018cc252-af80-7504-8719-59c6e3efd9c3",
    "first_name": "Carlos",
    "last_name": "Gibson",
    "email": "[email protected]",
    "country": "ZA",
    "created_at": "2024-01-14T06:39:34Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-b368-7525-9a9c-a09c2f8c2c8b",
    "first_name": "Jean",
    "last_name": "Morales",
    "email": "[email protected]",
    "country": "CA",
    "created_at": "2025-06-05T13:13:54Z",
    "last_seen_at": "2025-07-18T07:30:36Z",
    "is_active": true
  },
  {
    "id": "018cc252-b750-76bd-81cc-42435c3231bd",
    "first_name": "Ernest",
    "last_name": "Cooper",
    "email": "[email protected]",
    "country": "FR",
    "created_at": "2026-06-30T05:15:30Z",
    "last_seen_at": "2026-06-30T22:07:31Z",
    "is_active": true
  },
  {
    "id": "018cc252-bb38-7a65-8fdd-29417173ce08",
    "first_name": "John",
    "last_name": "Wallace",
    "email": "[email protected]",
    "country": "GR",
    "created_at": "2024-01-01T11:53:11Z",
    "last_seen_at": "2025-05-13T01:10:51Z",
    "is_active": false
  },
  {
    "id": "018cc252-bf20-7253-a075-e01c6d997ffd",
    "first_name": "Lee",
    "last_name": "Brooks",
    "email": "[email protected]",
    "country": "AU",
    "created_at": "2024-03-20T07:03:24Z",
    "last_seen_at": "2025-04-29T10:30:14Z",
    "is_active": true
  },
  {
    "id": "018cc252-c308-7709-a61e-916f4cb44f86",
    "first_name": "Antonio",
    "last_name": "Evans",
    "email": "[email protected]",
    "country": "JP",
    "created_at": "2025-09-17T01:49:49Z",
    "last_seen_at": "2026-04-27T19:54:08Z",
    "is_active": true
  },
  {
    "id": "018cc252-c6f0-7095-be95-c60913b0062d",
    "first_name": "Jose",
    "last_name": "Porter",
    "email": "[email protected]",
    "country": "ZA",
    "created_at": "2024-06-01T00:33:54Z",
    "last_seen_at": "2024-09-30T08:59:58Z",
    "is_active": false
  },
  {
    "id": "018cc252-cad8-7565-b5d8-117f4a6fb217",
    "first_name": "Eric",
    "last_name": "Ward",
    "email": "[email protected]",
    "country": "TR",
    "created_at": "2024-03-06T08:01:45Z",
    "last_seen_at": "2024-10-07T12:38:03Z",
    "is_active": true
  },
  {
    "id": "018cc252-cec0-79ae-adaa-96058dd4aabe",
    "first_name": "Marjorie",
    "last_name": "Cox",
    "email": "[email protected]",
    "country": "NG",
    "created_at": "2026-06-08T11:01:04Z",
    "last_seen_at": "2026-06-20T16:41:37Z",
    "is_active": true
  },
  {
    "id": "018cc252-d2a8-7d31-bab8-63bfaa7342bd",
    "first_name": "Bryan",
    "last_name": "Pena",
    "email": "[email protected]",
    "country": "IT",
    "created_at": "2024-01-06T14:25:41Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-d690-7e1b-a275-f48a8c1ccbf6",
    "first_name": "Catherine",
    "last_name": "Munoz",
    "email": "[email protected]",
    "country": "AU",
    "created_at": "2026-05-30T07:29:25Z",
    "last_seen_at": "2026-06-23T08:23:39Z",
    "is_active": true
  },
  {
    "id": "018cc252-da78-7c22-9180-f137d46ec702",
    "first_name": "Joyce",
    "last_name": "Jordan",
    "email": "[email protected]",
    "country": "TR",
    "created_at": "2025-01-13T19:52:26Z",
    "last_seen_at": null,
    "is_active": true
  },
  {
    "id": "018cc252-de60-7bc5-907f-8eebca9226bf",
    "first_name": "Jennifer",
    "last_name": "Riley",
    "email": "[email protected]",
    "country": "AT",
    "created_at": "2026-02-21T06:27:48Z",
    "last_seen_at": "2026-04-30T10:23:57Z",
    "is_active": true
  },
  {
    "id": "018cc252-e248-7464-86b7-54ee11fc6051",
    "first_name": "Amanda",
    "last_name": "Daniels",
    "email": "[email protected]",
    "country": "IL",
    "created_at": "2025-04-29T02:18:30Z",
    "last_seen_at": "2026-04-17T18:37:07Z",
    "is_active": false
  },
  {
    "id": "018cc252-e630-7bf3-ab8d-a72175e7c3fb",
    "first_name": "Laura",
    "last_name": "Alvarado",
    "email": "[email protected]",
    "country": "PT",
    "created_at": "2024-08-26T17:26:51Z",
    "last_seen_at": "2025-09-16T12:46:07Z",
    "is_active": true
  },
  {
    "id": "018cc252-ea18-74fb-955a-5d6d42ed1760",
    "first_name": "Andrea",
    "last_name": "Turner",
    "email": "[email protected]",
    "country": "CA",
    "created_at": "2024-07-13T08:04:19Z",
    "last_seen_at": "2025-01-08T17:24:13Z",
    "is_active": true
  },
  {
    "id": "018cc252-ee00-7216-953a-2094b3402b1e",
    "first_name": "Margaret",
    "last_name": "Jackson",
    "email": "[email protected]",
    "country": "NZ",
    "created_at": "2025-07-14T00:05:54Z",
    "last_seen_at": "2026-05-05T09:44:04Z",
    "is_active": true
  },
  {
    "id": "018cc252-f1e8-7262-91aa-5818265220ca",
    "first_name": "Rose",
    "last_name": "Johnson",
    "email": "[email protected]",
    "country": "KR",
    "created_at": "2024-07-18T02:49:21Z",
    "last_seen_at": "2025-04-18T08:52:53Z",
    "is_active": true
  },
  {
    "id": "018cc252-f5d0-72f1-ba49-a52514f881dd",
    "first_name": "Fred",
    "last_name": "George",
    "email": "[email protected]",
    "country": "PL",
    "created_at": "2025-10-26T23:11:53Z",
    "last_seen_at": "2025-11-05T21:15:27Z",
    "is_active": true
  },
  {
    "id": "018cc252-f9b8-7173-b05d-540124a4fc47",
    "first_name": "Sara",
    "last_name": "Greene",
    "email": "[email protected]",
    "country": "PT",
    "created_at": "2026-04-26T10:11:22Z",
    "last_seen_at": "2026-05-07T04:01:08Z",
    "is_active": true
  },
  {
    "id": "018cc252-fda0-7ed5-a24a-3f179c69fc3c",
    "first_name": "Jesse",
    "last_name": "Bennett",
    "email": "[email protected]",
    "country": "SG",
    "created_at": "2025-10-08T16:19:51Z",
    "last_seen_at": "2026-03-04T05:50:50Z",
    "is_active": true
  },
  {
    "id": "018cc253-0188-74dd-a728-ed228fc827ac",
    "first_name": "Louise",
    "last_name": "Santos",
    "email": "[email protected]",
    "country": "FI",
    "created_at": "2026-05-29T18:38:35Z",
    "last_seen_at": "2026-06-01T15:33:29Z",
    "is_active": true
  },
  {
    "id": "018cc253-0570-7408-b582-07fbebeacbbf",
    "first_name": "Scott",
    "last_name": "Grant",
    "email": "[email protected]",
    "country": "NZ",
    "created_at": "2024-02-11T17:35:11Z",
    "last_seen_at": "2025-08-06T23:23:49Z",
    "is_active": true
  },
  {
    "id": "018cc253-0958-7c12-b38e-edc7af958916",
    "first_name": "Judy",
    "last_n

全 28086 文字のうち先頭 20000 文字を表示しています。コピーとダウンロードは全体を対象にします。

メールはexample.com、電話番号は555-0100のブロック、アドレスは文書用ネットワーク、カード番号は公開されたテストBINへ。ここでの既定値はいずれも規格が予約した範囲なので、生成されたものが実在の人物のものになることはありません。

検証を通るデータ

生成したテストデータへの不満は、偽物に見えることではありません。落ちることです。どの決済ライブラリも受け付けないカード番号、銀行のフォームが弾くIBAN、バーコードリーダーが読めないISBN、バージョン部分がたまたま乱数の値になっているUUID。結局フィクスチャを手で直すことになり、その時点で生成器は節約した以上の手間を生んでいます。

公開された規格が検査を定めている値は、ここではすべて正しい検査を備えています。計算量としては小さなものですが、データの用途が変わります。実際の検証処理をそのまま向けられるのです。

  • カード番号はISO/IEC 7812-1のLuhnチェックディジットを、その前の桁から計算して備えており、選んだブランドの公開テストBINの上に乗っています。
  • IBANはISO 7064のmod-97を満たし——並べ替えて英字を展開した数の剰余が1になるようにチェックディジットが選ばれます——さらにその国が登録した桁数ちょうどになっています。桁数の誤りはmod-97だけでは捕まりません。
  • ISBN-13とEAN-13の値は1と3の交互重み付けによるチェックディジットを備え、ISBN制度に割り当てられた二つのGS1接頭辞のいずれかの下にあります。
  • UUIDにはRFC 9562が要求するバージョンのニブルとバリアントの2ビットが立っているので、パーサーは首をかしげずにv4またはv7と報告します。
  • アドレス、タイムスタンプ、セマンティックバージョン、通貨コードは、近似ではなくそれぞれの規格が定める形で書かれています。

これでデータが真実になるわけではありません。整形式になるだけです。そしてそれこそが、フィクスチャが誠実に主張できる唯一の性質です。

シード、そしてそれがすべてである理由

毎回違う行を返す生成器はおもちゃです。データがテストやデモやスクリーンショットに入った瞬間から、それを取り戻せる必要があります。再読み込みのあとでも、同僚の端末でも、一年後のCIでも。

そのためここでの乱数にはシードがあります。シードは自分で決める文字列で、同じシード・同じスキーマ・同じ行数ならどこでもバイト単位で同じ出力になります。生成器はxoshiro128**をsplitmix64で種付けしたもので、どちらも参照実装つきで公開されたアルゴリズムです。このページは自分自身とではなく、その参照実装から書き写した出力と照合してテストされています。

seed  "orders-2026"     same rows, every time, everywhere
seed  "orders-2027"     a completely different set

field stream = hash(seed, field name)
row N of a field depends on nothing but the seed, the name and N

最後の行は二度読む価値があります。この道具を単に再現可能なだけでなく実用的にしているのが、この性質だからです。各フィールドは自分の名前に紐づいた専用の乱数列から値を引きます。列を追加しても既存の列はすべて同じまま出てきます。行数を100から1000に増やしても、最初の100行はすでに手元にあったものです。昨日コミットしたフィクスチャは、今日スキーマを広げたあとでも一致します。

名前に紐づけることの正直な代償は、フィールド名を変えるとそのデータが入れ替わることです。名前がシードの半分だからです。空値の割合だけは意図的にこの規則から外してあります。値を空にするかどうかの判断は値を引いたあとに行われるので、空値を有効にしても一部の行が消えるだけで残りはずれません。

ここから直接ひとつの警告が出てきます。シード付きの生成器は設計上予測可能であり、それが利点です。ここで作られたものをパスワードやトークンや鍵として使ってはいけません。それにはプラットフォームの暗号論的乱数源から引く生成器を使ってください。

実在しえないように予約された範囲

実在のメールドメイン宛てのアドレスを出す生成器は、装填済みの銃を手渡すようなものです。テストはメールを送ります。ステージング環境が本番のSMTPに向いてしまうこともあります。負荷試験はフィクスチャに書かれたIPアドレスを叩きます。その値が誰かのものであれば、事故はその人に届きます。

標準化団体はこれを見越して、決して割り当てられないことが保証された範囲を確保しました。ここでの既定値はいずれもそのひとつから引いています。

  • メールはRFC 2606が恒久的に予約するexample.com、example.net、example.orgに届きます。RFC 6761が加える.test、.example、.invalidのトップレベルドメインも同様です。
  • 電話番号は555-0100から555-0199を使います。北米番号計画が創作向けに予約しているブロックで、映画がこれを使うのもそのためです。
  • IPv4アドレスはRFC 5737の三つの文書用ネットワーク、192.0.2.0/24、198.51.100.0/24、203.0.113.0/24から、IPv6はRFC 3849に従い2001:db8::/32から取ります。
  • MACアドレスはローカル管理ビットを立てます。IEEEが決して割り当てないと保証しているビットです。RFC 7042の文書用ブロックも選べますが、こちらは256個しかありません。
  • カード番号は稼働中の発行レンジではなく、公開された四つのテストBINの上に構築されるので、Luhn的に正しい番号が実在のカードと一致することはありません。

いずれも理由があるときは上書きできます。ステージング環境用の自分のドメイン、自社ネットワークに合わせたCIDRブロックなどです。既定値は安全な答えであり、上書きは意識して行う判断として残されています。

氏名と地名は米国国勢調査局が公開する氏名分布と法人格を持つ市町村の一覧から取っています。英語圏で一般的な名前なので、生成された名前が実在の人物と一致することはあり得ます——どんな名前でもそうであるように。出力はあくまでそれが何であるかとして扱ってください。もっともらしい文字列であって、人ではありません。

互いを参照するフィールド

独立した列は、見た瞬間に崩れる行を作ります。名前と無関係なメールアドレスを持つ「Dana Levy」という利用者はスクリーンショットの中で壊れて見えますし、作成日時より前の更新日時は実際のアサーションを落とします。

組み合わせごとに特別扱いを用意するのではなく、仕組みはひとつです。参照を受け付けると印のついた設定は、二重波括弧で他のフィールド名を書くことができ、同じ行の値が差し込まれます。フィールドは並べた順ではなく依存順に生成され、参照の循環はハングではなくスキーマのエラーとして報告されます。

これはメールにとどまりません。テンプレートフィールドは他の列から任意の文字列を組み立て、必要なら大小文字も変換します。日時フィールドの下限や上限に別の日時フィールドを指定でき、そうやって筋の通った時系列が得られます。そして参照先の値が空のときは、それに依存するフィールドも空になります。スキーマが一度も述べていない既定の期間へ黙って戻ることはありません。

取り出す:JSON、NDJSON、CSV、SQL

JSONは当然の選択肢で、字下げありでも一行でも出せます。NDJSON——一行に一つの圧縮されたオブジェクト——はログのパイプラインやストリーミング取り込みが期待する形式で、レコードを一件ずつ読む道具に貼り付けるならこれです。

CSVはRFC 4180に従います。カンマ、引用符、改行を含むときだけ引用符で囲み、内部の引用符は二重にし、行末はCRLFです。表計算ソフトとデータベースの一括ロード処理が合意している形がこれです。

生成器がたいてい雑になるのがSQLです。正解が方言によって違うからです。識別子の引用は分かれます——PostgreSQLとSQLiteは二重引用符、MySQLはバッククォート、SQL Serverは角括弧——そして名前の中では各々が自分の引用文字を二重にします。文字列リテラルはどこでも単引用符を二重にしますが、MySQLはNO_BACKSLASH_ESCAPESが設定されていない限りバックスラッシュをエスケープとして読むので、末尾がバックスラッシュのWindowsパスは閉じ引用符を飲み込んでしまいます。三つ目の分岐が真偽値で、PostgreSQLには本物の真偽型があり、他は1と0を求めます。さらにSQL Serverは1000行を超えるテーブル値コンストラクタを拒むため、大きな出力は失敗する一文ではなく複数の文として書き出されます。

PostgreSQL   INSERT INTO "records" ("id", "ok") VALUES (1, TRUE);
MySQL        INSERT INTO `records` (`id`, `ok`) VALUES (1, 1);
SQLite       INSERT INTO "records" ("id", "ok") VALUES (1, 1);
SQL Server   INSERT INTO [records] ([id], [ok]) VALUES (1, 1);

スキーマはファイルである

ビルダーの隣の欄は、同じスキーマをJSONで書いたものです。双方向に働きます。フィールドを編集すれば更新され、スキーマを貼り付ければビルダーが追随します。既定値のままの設定は省かれるので、読み返すのはこのツールが持つすべてのつまみではなく、あなたが下した決定です。

このファイルと、その中のシードとで、再現の単位はそろいます。データを使うテストの隣に置いておけば、フィクスチャは誰にも説明できない大きな値の塊ではなく、レビュアーが読めて同僚が作り直せるものになります。

よくある質問

クレジットカード番号は本物ですか。
有効ですが本物ではありません。どれも正しいLuhnチェックディジットを持つので決済ライブラリは形式を受け付けますし、どれも稼働中の発行レンジではなく公開された四つのテストBINの上に作られているので、誰かが持っているカードと一致することはありません。どこでも決済は通りません。
同じシードで来年も本当に同じデータが得られますか。
はい。生成器は挙動が変わりうるブラウザのAPIではなく、参照実装が固定された公開アルゴリズムであり、このページはその実装から書き写した出力と照合されています。時計を読む処理はどこにもありません。日付の範囲はスキーマ内の明示的な値です。スキーマのJSONとその中のシードを保管しておけば、行はそのまま戻ってきます。
列を追加しても他が何も変わらなかったのはなぜですか。
各フィールドがシードとフィールド名に紐づいた専用の乱数列から値を引くからです。これは意図的です。スキーマを広げるたびに並び替わるフィックスチャはリポジトリに置いておけません。同じ性質により、行数を増やしても先頭の行はそのまま残ります。
フィールド名を変えたらデータが変わりました。
同じ設計から出てくる結果です。フィールド名はその乱数列の鍵の半分だからです。値を保ちたいなら下流で列名を変えるか、新しい抽選を受け入れてください。名前変更にも並べ替えにも強くするには、スキーマファイルが隠し識別子を持ち歩く必要があり、それなしには両立しません。
これでパスワードやAPIキーを作れますか。
いいえ。ここにあるものはすべてシード付きの疑似乱数生成器から来ており、設計上予測可能です。だからこそ出力が再現できるのです。秘密はプラットフォームの暗号論的乱数源から来なければなりません。それには専用のトークン生成ツールを使ってください。
メールアドレスを氏名に合わせるには。
テンプレートフィールドを追加し、他の列名を二重波括弧で書いてください。たとえば {{first_name}}.{{last_name}}@example.com のようにし、大小文字の変換を小文字にします。フィールドは依存順に生成されるので、テンプレートは一覧上で自分より後ろにある列を指定できます。
何行まで作れますか。
最大40フィールドで1万行です。この規模なら生成はメインスレッドに置いておける程度に速く、実際に厄介になるのは出来上がるテキストのほうです。だから欄には切り詰めたプレビューを表示し、コピーとダウンロードは全体を対象にしています。
この内容はブラウザの外に出ますか。
出ません。生成器も氏名のデータもすべての出力形式も、ページ上のJavaScriptとして動きます。サーバーへの通信はなく、スキーマに入力した内容がどこかへ送られることもありません。