UUIDフォーマット解説 (8-4-4-4-12)

UUIDの文字列フォーマットを解説。32桁の16進数が8-4-4-4-12の形式で128ビットを表現する仕組み、各セクションの意味、バージョンとバリアントの読み取り方を説明します。

Format

詳細な説明

UUID(Universally Unique Identifier)は128ビットの値で、通常32桁の16進数が4つのハイフンで区切られた 8-4-4-4-12 のパターンで表現されます:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

文字列フォーマットの構造:

550e8400-e29b-41d4-a716-446655440000
|      | |  | |  | |  | |          |
|  8   | | 4| | 4| | 4| |    12    |
|      | |  | |  | |  | |          |
time_lo  mid  ver  var   node/random
              +hi  +seq
  • グループ1(8桁 = 32ビット): v1では time_low。v7ではタイムスタンプの上位32ビット。v4ではランダム。
  • グループ2(4桁 = 16ビット): v1では time_mid。v7ではタイムスタンプの下位16ビット。v4ではランダム。
  • グループ3(4桁 = 16ビット): 最初の桁(M)がバージョン番号。残りの12ビットはバージョンによって異なります。
  • グループ4(4桁 = 16ビット): 最初の桁(N)の上位ビットがバリアントをエンコード。標準UUIDでは最初の16進数字は 89ab のいずれか(2進数で 10 始まり)。残りのビットはクロックシーケンスまたはランダム。
  • グループ5(12桁 = 48ビット): v1ではノードID(MACアドレス)。v4とv7ではランダムデータ。

バージョンの読み取り方: 3番目のグループの最初の文字を見ます。4 ならv4、7 ならv7、1 ならv1、のように判別できます。

バリアントの読み取り方: 4番目のグループの最初の文字を見ます。89ab ならRFC 4122/9562バリアントです。07 はレガシーNCSバリアント、cf はレガシーMicrosoftバリアントを示します。

大文字・小文字の区別: RFCの規定により、UUIDは大文字・小文字を区別しません。550E8400-E29B-41D4-A716-446655440000550e8400-e29b-41d4-a716-446655440000 は同じUUIDを表します。ほとんどの実装は小文字を出力し、RFC 9562では新しい実装には小文字を推奨しています。

その他の表現形式:

  • ハイフンなし:550e8400e29b41d4a716446655440000(32文字)
  • URN形式:urn:uuid:550e8400-e29b-41d4-a716-446655440000
  • バイナリ:16バイトの生データ(最もコンパクト、データベースで使用)
  • Base64:22文字(例:VQ6EAOKbQdSnFkRmVUQAAA==

ユースケース

UUIDのフォーマットを理解することは、分散システムのデバッグに不可欠です。バージョン桁とバリアントビットを読むことで、UUIDがどのように生成され、何の情報をエンコードしているかをすばやく判別できます。

試してみる — UUID Generator

フルツールを開く