UUID生成
データベースやAPI、テスト用の一意なIDをワンクリックで。
形式
ブラウザ内で動作します。入力した内容はどこにも送信されません。
- バージョン4と7
- 最大1000件まとめて生成
- 安全な乱数を使用
UUIDの生成方法
- ランダムなIDならバージョン4を、時系列で並ぶIDならバージョン7を選びます。
- 必要な件数と形式を設定します。
- 「生成」をクリックし、コピーまたはダウンロードします。
UUIDバージョンの比較
| バージョン | 構成要素 | 時系列順か |
|---|---|---|
| v4(このツール) | 122ビットのランダム値 | いいえ |
| v7(このツール) | 48ビットのタイムスタンプ+ランダム値 | はい |
| v1(ここでは非対応) | タイムスタンプ+端末のMACアドレス | はい。ただしどの端末で作られたか漏れる可能性あり |
RFC 9562によるUUIDの構造
| 部分 | 長さ | 意味 |
|---|---|---|
| バージョンニブル | 16進数1桁 | 3番目のグループにあり、バージョン4なら4、バージョン7なら7 |
| バリアントビット | 4番目のグループの上位2ビット | このRFCのUUIDバリアントでは10に設定 |
| 全体の長さ | 36文字 | 16進数32桁とハイフン4つ |
UUIDを使うコツ
- データベースがUUID型や16バイトのバイナリ型を用意している場合はそれを使いましょう。36文字のテキストとして保存すると、必要な容量がおよそ2倍になります。
- バージョン7は先頭のタイムスタンプによって作成時刻順にソートできますが、そのIDを持つ人は誰でもミリ秒単位でおおよその作成時刻が分かってしまいます。
- 波括弧やハイフンなしの形式は、一部の古いWindows APIやPowerShellスクリプトが期待するGUIDの見た目に合わせたものです。
UUID生成のFAQ
UUID v4とv7の違いは何ですか?
バージョン4は122ビットのランダムな値です。バージョン7はミリ秒単位の48ビットのタイムスタンプで始まり、その後にランダムなビットが続くため、新しいIDは古いIDより後にソートされます。
2つのUUIDが同じになることはありますか?
実際にはほぼありません。10億分の1の確率で1件でも重複が起きるには、バージョン4のUUIDを約103兆個生成する必要があります。
GUIDはUUIDと同じですか?
はい。GUIDはMicrosoftが同じ128ビット形式に付けた呼び名です。「大文字」と「波括弧」にチェックを入れると、Windowsや.NETで使われる{XXXXXXXX-XXXX-...}形式になります。
データベースの主キーにはどちらのバージョンを使うべきですか?
バージョン7です。値が時系列順になるため、新しい行がランダムな位置ではなくインデックスの末尾に追加され、挿入が高速に保たれます。IDから作成時刻が分かってはいけない場合はバージョン4を使ってください。
UUIDをパスワードや秘密のトークンとして使えますか?
ランダムなビット自体はブラウザの暗号論的に安全な生成器から来ていますが、UUIDは識別子として使うためのものです。バージョン7のIDは作成時刻も分かってしまうため、秘密の値にはパスワードジェネレーターを使ってください。
UUIDの長さは?
ハイフン付きなら36文字です。16進数32桁とハイフン4つで、合計128ビットのデータを表します。
暗号論的に安全な乱数源を使っていますか?
はい。どちらのバージョンも、ブラウザの暗号論的に安全な乱数生成器であるcrypto.getRandomValues(バージョン4はcrypto.randomUUID)から作られており、Math.randomは使いません。