生成ツール
識別子やテスト用の値をその場で生成するツール群です。生成はすべてブラウザ内で行われ、送信されることはありません。
- ダミーデータ生成ツール必要なフィールドを定義して、現実的なダミーデータを最大1,000行、JSON・CSV・SQLのINSERT文として生成します。処理はすべてブラウザ内で行われ、実在する個人情報は一切使用しません。
- UUID生成ツールブラウザ内でUUIDを生成します。ランダムなv4と時系列ソート可能なv7を選べます。必要な数を指定し、個別または一括でコピーできます。
- パスワード生成ツールブラウザ内で強力なランダムパスワードを生成します。曖昧な強度メーターではなく、実際のエントロピーをビット単位で表示します。データの送信・保存は行いません。
- 乱数生成ツール任意の範囲で整数または小数の乱数を生成します。重複なしの指定も可能です。Math.randomではなく、ブラウザの暗号学的乱数源を使用しています。
- QRコード作成URL・テキスト・Wi-Fi情報のQRコードを作成し、PNGまたはSVGで保存できます。処理はすべてブラウザ内で行われるため、データは送信されず、コードが失効することもありません。
- cron式ジェネレーター・パーサーcron式を入力すると、実際に次回実行される日時が表示されます。各フィールドを検証し、決して実行されない設定は警告します。
- 抽選ルーレット名前や数字のリストを貼り付けて、ルーレットを回すだけでランダムに1つ選べます。当選者はルーレットが動く前に決まるため、アニメーションが結果に影響することはありません。
生成ツールの選び方
認証情報にはパスワード生成ツール、識別子にはUUID生成ツール、抽選やサイコロ、テスト用の値には乱数生成ツールを使います。3つとも、ブラウザの暗号学的乱数源から棄却サンプリングで値を取り出すので、どの結果も等しい確率で出ます。
表やフィクスチャファイルを埋めるにはダミーデータ生成ツール、リンクやWi-Fiの認証情報を読み取れる形にするにはQRコード作成ツール、スケジュールが実際にいつ実行されるかを確認するにはcron式ツール、その場の全員に抽選を見せたいときは抽選ルーレットを使います。
乱数がどこから来ているか
ここでのランダムな値はすべて、ブラウザの暗号学的に安全な乱数生成器crypto.getRandomValuesから取り出し、剰余ではなく棄却サンプリングで指定の範囲に収めています。そのため、範囲内のどの値もほかより出やすいということがありません。パスワードにとってこれはセキュリティ上の性質であり、抽選にとっては単純に公正さの問題です。
多くのコードが最初に手を伸ばすMath.randomは、まったく別物です。高速で、いくつかの出力から予測でき、言語仕様で暗号用途には使ってはならないと明記されています。これをパスワードに使うツールは、見た目には壊れているとわかりません。それがまさに問題なのです。
生成したデータはそのまま使っても安全であるべき
フィクスチャが役に立つのは、テストを実行しても実在の人に届かない場合だけです。そのためダミーデータ生成ツールは、電話番号を架空用途に予約されたブロックから、メールアドレスとURLをRFC 2606の例示用ドメインから、IPアドレスをルーティングされないドキュメント用の範囲から取っています。
これは、本番データをコピーして名前を消すという魅力的な代替案に反対する根拠でもあります。識別子を削除してもデータセットは匿名になりませんし、消した後のコピーも、アクセス制御の弱い場所に置かれた本番データのままです。スキーマから生成すれば、正しい形を持ちながら出どころがまったくないデータが手に入ります。
値ではなく「仕様」を生成するものもある
cron式とQRコードはランダムな出力ではなく、後で別のシステムが解釈する成果物です。そこで意味を持つのは、その解釈があなたの意図と一致しているかどうかです。cronツールがフィールドを解析するだけでなく次回以降の実行日時を一覧表示するのも、QRコード作成ツールが選んだバージョンと誤り訂正レベルを表示するのも、そのためです。
世に出す前に現実と突き合わせてください。誰もが引っかかる日と曜日の組み合わせについては実行日時を読んで確認し、印刷したコードは1,000枚発注する前に2〜3種類のスマートフォンで読み取ってみましょう。
