UUID生成ツールとは?
UUID(Universally Unique Identifier、汎用一意識別子)は128ビットの識別子で、550e8400-e29b-41d4-a716-446655440000のように16進数32桁を8-4-4-4-12に区切って表記します。中央サーバーなしでも事実上重複しないIDを作れるため、データベースのキー、ファイル名、リクエストIDなどに広く使われています。Microsoftでは同じものをGUIDと呼びます。
このツールはブラウザの暗号論的乱数(Web Crypto API)を使用し、v7は最新規格のRFC 9562に準拠しています。
使い方
- v4またはv7を選び、生成する個数(1〜100)を入力します。
- 必要に応じて大文字、ハイフンなし、波括弧、引用符・カンマ(コードの配列用)をオンにします。生成済みの値の表記だけが変わります。
- すべてコピーまたは各行のコピーを押します。.txtで保存でファイルとしてダウンロードもできます。
- 下のUUIDチェッカーにUUIDを貼り付けると、形式が正しいか、どのバージョンか、v1・v6・v7ならいつ生成されたかを表示します。
UUIDのバージョンごとの違い
| バージョン | 生成方法 | 特徴 |
|---|---|---|
| v1 | 時刻 + MACアドレス | 機器情報が漏れるおそれ |
| v3 / v5 | 名前のMD5 / SHA-1ハッシュ | 同じ入力なら同じUUID |
| v4 | 122ビットの乱数 | 最も一般的、順序なし |
| v7 | Unixミリ秒時刻 + 乱数 | 時刻順に並ぶ、DBインデックスに有利 |
UUIDの13桁目(3つ目のグループの先頭文字)がバージョン番号です。例えばxxxxxxxx-xxxx-7xxx-…はv7です。
DBの主キーにv7をすすめる理由
v4は完全にランダムなため、MySQL(InnoDB)やPostgreSQLのBツリーインデックスに挿入すると書き込み位置が散らばり、ページ分割やキャッシュミスが増えます。v7は先頭48ビットが生成時刻なので新しい値は常にインデックスの末尾に追加され、オートインクリメントに近い性能を保ちながら、複数のサーバーで衝突なく生成できます。ただし生成時刻がIDから分かるため、外部に知られたくない場合はv4を使いましょう。
よくある質問
UUIDが重複することはありませんか?
v4の組み合わせは2^122(約5.3×10^36)通りあり、1秒に10億個ずつ約85年間生成し続けてようやく重複の確率が50%になります。実用上は重複しないと考えて問題ありません。
GUIDとUUIDは違うものですか?
同じ128ビットの識別子です。Microsoftの環境ではGUIDと呼ばれ、大文字と波括弧 {…} で表記するのが一般的です。大文字と波括弧のオプションをオンにするとGUID形式で生成できます。
生成したUUIDはサーバーに記録されますか?
いいえ。UUIDはブラウザ内で生成され、どこにも送信されません。この端末には表記オプションと個数だけが保存されます。
同じミリ秒に生成したv7も順序は保証されますか?
はい。同じミリ秒内ではRFC 9562のカウンター方式で次の値が必ず大きくなるため、100個を一度に生成しても作成順に並びます。