このツールについて
UUID(Universally Unique Identifier、汎用一意識別子)は、正準の 8-4-4-4-12 のレイアウトで 32 桁の 16 進数として書かれる 128 ビットの値です。このジェネレーターは、Web Crypto API による暗号学的にランダムなデータで 122 ビットを満たすバージョン 4 の UUID と、ランダムビットの前に 48 ビットのビッグエンディアンの Unix ミリ秒タイムスタンプを付加することで識別子が時系列でソートされる RFC 9562 のバージョン 7 の UUID を生成します。いずれも仕様に従ってバージョンビットとバリアントビットを手動で設定します。
データベースの主キー、相関 ID やリクエスト ID、冪等性キー、テストフィクスチャの初期化に使えます。B ツリーのインデックスをコンパクトに保ち、ランダムな v4 キーが引き起こすページ分割の頻発を避けたい、時系列でソート可能なキーが欲しい場合は v7 を選んでください。順序のシグナルが不要で一意性だけが必要な場合は v4 を選んでください。一度に最大 500 個を生成し、改行区切りのリストとしてコピーでき、大文字、ハイフンなし、引用符付きの出力に切り替えれば、SQL、JSON、コードにそのまま貼り付けられます。
すべての UUID は crypto.getRandomValues を使ってブラウザ内で生成されます。いずれもサーバーに送信されたり、サーバーによって記録されたりすることはありません。
よくある質問
UUID v4 と UUID v7 の違いは何ですか?
v4 は完全にランダム(122 ランダムビット)であり、値は予測不可能ですが順序がありません。v7 は 48 ビットの Unix ミリ秒タイムスタンプで始まり、その後にランダムビットが続くため、あとで生成された値は先に生成された値の後にソートされます。これは効率的にインデックスされるデータベースキーに役立ちます。
UUID v4 の値は一意であることが保証されますか?
保証されてはいませんが、衝突の確率は無視できるほど小さいものです。122 ランダムビットでは、重複が統計的に起こりやすくなる前に数十億個の UUID を生成する必要があります。実用上は一意なものとして扱われます。
UUID v7 はデータベースの主キーとして使っても安全ですか?
はい。その用途では v4 よりも優れていることが多いです。v7 は時刻順であるため、連続した挿入は B ツリーのインデックス全体に散らばるのではなく末尾に追加され、ページ分割を減らしてインデックスをよりコンパクトに保ちます。