UUIDジェネレーター
ブラウザ組み込みの暗号論的乱数生成器を使ってランダムなUUID v4識別子を生成します。1個でも100個でも一度に生成でき、どこにも送信されません。
UUID v4とは?
128ビットのランダム性を、標準的な識別子として整形したもの。
UUID v4は122ビットのランダムな値です(残り6ビットはバージョンとバリアントを示すために固定)。可能な値はおよそ5.3 undecillion(10の36乗のオーダー)通りです。衝突の確率は極めて低く、データベースの主キー、リクエストID、ファイル名として実用上問題になりません。
よくある用途
行数が漏れないデータベース主キー、APIリクエスト用の冪等性キー、サービス間でログを追跡するための相関ID、そして異なるマシンで同時に生成しても衝突しないユニークなファイル名やセッション名。
仕組み
各IDはブラウザ組み込みのジェネレーターである crypto.randomUUID() から生成されます。内部ではOSの暗号論的に安全な乱数源(TLS鍵を生成するのと同じ源)から128ビットを取得し、そのうち6ビットに固定値を刻印します。バージョンのニブルは4に、バリアントビットは10になります。そのため、ここで生成されるすべてのUUIDは3番目のグループの先頭が4になり、4番目のグループの先頭が8、9、a、bのいずれかになります。残りの122ビットは純粋にランダムであり、これが実質的に衝突を問題にしない理由です。
どれくらい問題にならないか? 可能なv4 UUIDは2^122通り、約5.3 undecillion通りです。誕生日問題の数学によれば、たった1回の衝突確率が100万分の1に達するまでには、およそ103兆個のUUIDを生成する必要があります。システムが生成するあらゆるIDは、この数字に対しては誤差の範囲でしかなく、これがv4 UUIDをどのマシンでも協調なしに安全に生成できる理由です。
生成はブラウザAPIの1回の呼び出しにすぎないため、サーバーへの要求も送信も一切発生しません。開発者ツールのネットワークタブを開いて「生成」をクリックしても、何も起きないことを確認できます。大文字化とハイフンなしのトグルは、すでに生成されたIDを整形し直すだけで、内部の値自体は変わりません。
実用上の注意点として、v4 UUIDは意図的に順序を持たないため、データベースの主キーとして使うと挿入がインデックス全体に分散します。作成日時順に並べ替えたいIDが必要な場合は、上位ビットにタイムスタンプを持つUUID v7を検討してください。それ以外の用途(リクエストID、ファイル名、相関トークンなど)には、ランダムなv4がまさに最適です。