使い方
バージョンを選び、生成する個数(1〜1000個)を指定して「生成する」を押すと、ブラウザ内でUUIDが生成されます。大文字、ハイフンなし、中括弧のオプションを切り替えるとその場で表示形式が変わり、すべてコピーするか.txtファイルとしてダウンロードしてそのまま使えます。下のUUID解析に1つのUUIDを貼り付けると、バージョン、バリアント、そしてバージョン7であれば埋め込まれた生成時刻まで確認できます。
バージョン4とバージョン7の違い
バージョン4は固定されていない122ビットすべてを暗号学的に安全な乱数で埋めるため、値だけからは何も推測できません。一方で並び順を持たないため、データベースの主キーに使うとインデックス内のあちこちにランダムに挿入され(局所性がなく)、B-treeのページ分割が頻発してキャッシュヒット率が下がります。バージョン7は先頭48ビットにミリ秒単位の生成時刻をそのまま持つため、値自体が生成順に並びます。主キーに使うと新しい値は常にインデックスの末尾に追加されるため、ページ分割が減りキャッシュヒット率も高まります。どちらのバージョンもRFC 9562標準に従っており、ランダムな部分はこのツールでもブラウザの暗号学的乱数関数(crypto.getRandomValues)で生成します。
同じミリ秒内でも並び順が保たれる理由
バージョン7にはタイムスタンプの直後に12ビットの余白(rand_a)があり、このツールは同じミリ秒内で複数生成するときにこの値を1つずつ増やします。そのため一度に複数生成しても、文字列としてそのまま並べ替えた順序が実際の生成順序と一致します。
重複する可能性
バージョン4は122ビットのランダム空間を使うため、1秒間に10億個生成しても偶然同じ値になる確率は事実上ゼロです(誕生日問題で計算しても、衝突確率が50%に達するには10の18乗個以上の生成が必要です)。バージョン7はランダム部分が74ビットとやや小さいものの、同じミリ秒内ではカウンターで値を区別するため、このツールで生成している間に重複することはありません。
プライバシー
UUIDはこのブラウザの中だけで生成され、サーバーには送信されません。ただしバージョン7のUUIDは生成時刻をそのまま含んでいるため、時刻を知られたくない値(匿名のままにしたい識別子など)にはバージョン4を使うのが安全です。