UUID生成ツール
すべてブラウザ内で動きます。ファイルやデータが外部に送られることはありません。
このツールについて
UUIDはハイフンで区切られた32桁の16進数で表される128ビットの識別子です。例えばf47ac10b-58cc-4372-a567-0e02b2c3d479のような形式です。中央の管理者を介さず、複数のシステムがそれぞれ独立して生成しても、実用上ぶつかることがないくらい一意になるよう設計されています。このツールはバージョン4とバージョン7のUUIDを、1件ずつでも数百件まとめてでも生成できます。
v4とv7は何が違うのか
バージョン4は完全にランダムです。122ビットはブラウザのcrypto.randomUUID()からそのまま得られ、残りの6ビットはRFC 9562が定めるバージョンとバリアントの識別に固定で使われます。この完全なランダム性のおかげで、v4のIDからはいつ・どんな順番で作られたかが分からず、それがAPIキーのような用途にはむしろ都合よく働きます。
バージョン7はランダム性の一部を順序性に譲っています。先頭48ビットはミリ秒単位の現在のUnixタイムスタンプで、残りはランダムです。そのため後から生成されたIDは、文字列を単純に比較するだけで先に生成されたIDより後ろにソートされます。これはデータベースのインデックスにとって、v4のように値が散らばる方式よりずっと相性が良い性質です。このツールがv7を作る手順は、まずWeb Crypto APIから得た暗号学的に安全な乱数でバッファ全体を埋め、その先頭6バイトを現在のタイムスタンプで上書きするというものです。ランダムな部分はv4と同じ安全な乱数源から来ています。
v4とv7、どちらを使うべきか
主キーなど、データベースのインデックスに挿入されるIDにはv7を選んでください。ある程度連続した値になるため、インデックスが断片化しにくくなります。逆に、パスワードリセット用トークンやセッションIDのように、IDから作成時刻を推測されたくない場合はv4を選んでください。
生成したUUIDはどこかに送信されるか
送信されません。すべてブラウザ内のWeb Crypto APIだけで生成されます。これはブラウザ自身がTLSの鍵などに使っているのと同じ仕組みなので、どこにも送信されず、データベース移行やテスト用フィクスチャのためにいくつ生成してもサーバーに触れることはありません。
データベースのキー以外にも、ログや分散トレーシング用のリクエストID、テストやモック用のダミーデータなど幅広く使われます。ブラウザがどのように乱数を生成するかはMDNのcrypto.randomUUID()リファレンスを、バージョンやバリアントのビットを含む完全な仕様はRFC 9562を参照してください。