UUID v4生成
ブラウザーの暗号学的に安全な乱数生成器を使い、バージョン4のランダムなUUIDを1件ずつ、または一括で作成します。
生成したUUID
UUIDを検査
ランダムなUUID v4をオンラインで生成
ふつう「UUID」と言えば、たいていバージョン4のことです。タイムスタンプもマシンのアドレスも名前も含まず、122ビットの乱数だけでできているため、事前の調整なしにどこでも生成できます。ブラウザーでも、スマートフォンでも、1,000台のサーバーで同時にでも構いません。
このページは、バージョン4を選択し、最初のUUIDを生成した状態でUUID生成ツールを開きます。
v4 UUIDの構造
f47ac10b-58cc-4372-a567-0e02b2c3d479を例に取ります。3番目のグループの先頭にある4がバージョンです。4番目のグループの最初の桁(ここではa)は、上位2ビットがバリアントを表すため、必ず8、9、a、bのいずれかになります。それ以外の16進数の桁はすべてランダムです。
重複はどれくらい起こりにくいのか
| 生成したUUIDの数 | どれかが重複する確率 |
|---|---|
| 10億個(10^9) | 約1000京分の1 |
| 1兆個(10^12) | 約10兆分の1 |
| 270京個(2.7 × 10^18) | 約50% |
この数字は、質の高い乱数源を前提にしています。そのためこのツールは、一意性の保証を想定して設計されていないMath.randomではなく、crypto.getRandomValuesを使っています。
v4とv7のどちらを選ぶか
ランダムなUUIDは新しい行をデータベースのインデックス全体に散らばらせるため、非常に大きなテーブルでは挿入が遅くなることがあります。負荷の高いデータベースでUUIDを主キーにするなら、タイムスタンプで始まり新しい値が順に並ぶUUID v7を検討してください。トークン、相関ID、ファイル名には、今もv4がシンプルな既定の選択です。
コードでv4を生成する
- JavaScript:
crypto.randomUUID() - Python:
import uuid; uuid.uuid4() - Java:
UUID.randomUUID() - C#:
Guid.NewGuid() - PostgreSQL 13以降:
gen_random_uuid() - Linuxのシェル:
cat /proc/sys/kernel/random/uuid
プラットフォームでGUIDと呼ばれ、波括弧や大文字が求められる場合は、それらのオプションをオンにしたGUID生成ツールのページを使ってください。