UUID生成器
RFC 4122標準準拠のユニーク識別子を生成
「UUID生成」をクリックして開始
UUIDとは?
UUID は Universally Unique Identifier の略で、分散システム内のレコード、オブジェクト、セッション、ファイル、端末、メッセージなどを識別するための 128 ビットの ID です。一般的な文字列表記は、16 進数を 8-4-4-4-12 のグループに分けた形式です。複数のサーバー、クライアント、サービスが中央データベースに連番を問い合わせずに ID を作れるため、分散処理でよく使われます。UUID のバージョンによって、乱数、時刻情報、名前空間ベースのハッシュなど生成方法が異なり、プライバシー、並び替えやすさ、予測可能性、衝突リスクも変わります。UUID は識別子であり、権限や秘密情報の代わりにはなりません。
使い方
生成手順
- UUIDバージョン(v1、v4、Nil)を選択してください
- 生成数を設定してください(1〜100)
- 出力の大文字/小文字を選択してください
- 形式を選択してください(ハイフンあり/なし/括弧付き)
- 生成ボタンをクリックして識別子を作成してください
キーボードショートカット
- Ctrl + GUUIDを生成
- Ctrl + Shift + Cすべてコピー
識別子の注意点
- UUID v4はランダムなクライアントサイド識別子として通常最適な選択肢です。時間やデバイス情報は含まれません。
- UUIDを秘密情報として使わないでください。レコードを識別するためのもので、認証トークンやアクセスキーの代わりにはなりません。
利用シーン
仕組み
UUIDは標準形式8-4-4-4-12の128ビット識別子で、合計36文字(4つのハイフンを含む)です。128ビットは以下に分割されます:time-low(32ビット)、time-mid(16ビット)、version-and-time-high(16ビット、上位4ビットがバージョン)、variant-and-clock-seq(16ビット、上位2〜3ビットがバリアント)、node(48ビット)。RFC 4122はv1からv5までの5つのバージョンを定義しています。 v1は60ビットのタイムスタンプ(100ナノ秒分解能、1582年10月15日からのカウント)に48ビットのMACアドレスと14ビットのクロックシーケンスを加えて構成されます。理論的には生成時刻でソート可能ですが、マシンの身元と生成時刻が漏洩します。v4は最も広く使用されているバージョンで、122ビットが暗号学的に安全な乱数源で埋められ、バージョン(4)とバリアント(10)のビットが固定されます。 衝突確率はUUID設計の中心的な課題です。v4は122ビットの乱数空間を持ち、誕生日のパラドックスにより、1秒あたり10億個のUUIDを85年間生成し続けた場合に50%の衝突確率に達しますが、実用上は十分すぎる値です。新しいv7はタイムスタンプを先頭に、乱数ビットを末尾に配置し、一意性と時系列順序のバランスを取り、データベース主キーにより適しています。
- UUID v4:122ビットの乱数に固定バージョンビット4とバリアントビット10を付加。ほぼすべてのシナリオで動作し、プライバシー情報を漏洩しません。
- UUID v1:60ビットのタイムスタンプ + 48ビットのMAC + 14ビットのクロックシーケンス。時系列でソート可能ですが、マシンフィンガープリントが露出するため注意が必要です。
- UUID v7:タイムスタンプが先頭、乱数ビットが末尾。2024年のドラフト標準で、データベース主キー向けに特に設計されています。
- 衝突確率:v4の乱数空間は2^122で、1秒あたり10億個のUUIDを85年間生成し続けることで50%の衝突確率に達します。
- Nil UUID:すべてゼロの00000000-0000-0000-0000-000000000000。プレースホルダーやデフォルト値として一般的に使用されます。
- フォーマットのバリエーション:標準の8-4-4-4-12のほかに、ハイフンなしの32文字形式、{括弧}付き形式、URN形式(urn:uuid:...)があります。
使用例
UUID v4(ランダム)標準形式
550e8400-e29b-41d4-a716-446655440000
バージョン桁(13番目の16進文字): 4 -> v4、ランダム
バリアントビット(17番目の16進文字): 8/9/a/b -> RFC 4122 バリアント
用途: データベースの主キー、リクエスト ID、アセット ID — 順序が重要でない場合の既定の選択肢
RFC: RFC 4122 セクション 4.4 が v4 の生成を定義UUID v1(タイムスタンプ + MAC)形式
c232ab00-9414-11ec-b909-0242ac120002
バージョン桁: 1 -> v1、時刻ベース
注意: 生成タイムスタンプを time_low にエンコード。末尾12桁の16進文字はノード ID(多くの場合 MAC)
用途: ソート可能な ID やホストごとに決定的なソースが必要な場合に使用。ただし MAC によるホスト身元の漏洩に注意
RFC: RFC 4122 セクション 4.1 が v1 のレイアウトを定義v4 ID を5つ一括生成
a1b2c3d4-e5f6-4789-a012-3456789abcde
f7e8d9c0-b1a2-43f4-95e6-7d8c9b0a1e2f
3c4d5e6f-7a8b-49c0-9d1e-2f3a4b5c6d7e
8e9f0a1b-2c3d-44e5-bf6a-7b8c9d0e1f2a
5f6a7b8c-9d0e-45f1-a2b3-c4d5e6f7a8b9
注意: 各 ID は crypto.getRandomValues から独立に生成される。RFC 4122 付録 B によれば、2^122 個の ID での衝突確率は無視できるよくある質問
UUIDとは何ですか?
Universally Unique Identifierは128ビット値(RFC 4122/9562)で、通常は8-4-4-4-12のパターンで32桁の16進数として書かれます(例:550e8400-e29b-41d4-a716-446655440000)。バージョンによって時刻、ランダムデータ、またはハッシュをエンコードします。中央コーディネーターなしでシステム間で一意であることを目的としています。
UUID v1、v4、v7の違いは何ですか?
v1はホストのMACアドレスと100ナノ秒タイムスタンプを混合します(順序付けは良好だが、ホスト情報が漏洩)。v4は完全にランダムです(122ビットのエントロピー、順序なし)。v7(RFC 9562)は48ビットのUnixミリ秒タイムスタンプを上位ビットに、ランダムビットを下位ビットに配置します。v1のようにソート可能ですが、MACの漏洩はありません。v7はデータベースキーの最新の標準です。
UUIDは本当に一意ですか?
統計的にはそうです。100年間毎秒10億個のv4 UUIDを生成しても、衝突確率はおおよそ50%(誕生日パラドックスの境界)にしかなりません。実用的なすべてのシステムでは、UUIDを調整なしで一意として扱えます。
UUIDはランダムで推測不可能ですか?
v4 UUIDはランダムで、事実上推測不可能です(122ビットのエントロピー)。v1 UUIDはランダムではなく、ホストのMACとタイムスタンプを露出するため、セキュリティトークンとして使用しないでください。v7のタイムスタンププレフィックスも予測可能で、末尾のランダムビットのみが推測不可能です。
UUIDをデータベースの主キーとして使うべきですか?
機能はしますが、トレードオフがあります。ランダムなv4 UUIDは、主キーでクラスタリングするデータベース(MySQL InnoDB)でB-treeの断片化を引き起こし、大規模での挿入パフォーマンスを損ないます。ソート可能なv7 UUIDはこれを回避します。自動採番整数は依然としてサイズが小さく高速です。分散生成が重要な場合にUUIDを使ってください。
UUID生成はブラウザ内で行われますか?
はい。本ページではWeb Crypto APIの一部であるcrypto.randomUUID(古いブラウザではcrypto.getRandomValues)を使用します。サーバーには何も送信されず、ページを更新すると新たなエントロピーストリームが得られます。
なぜ一部のUUIDは先頭がほぼ同じに見えるのですか?
v1とv7のUUIDは先頭の文字に時刻をエンコードするため、同じミリ秒内に生成されたUUIDはプレフィックスを共有し、末尾のバイトのみが異なります。この性質によって自然にソート可能になっています。v4 UUIDはランダムで、この性質はありません。