概要

UUID/GUID (汎用一意識別子)

UUID (Universally Unique Identifier) および GUID (Globally Unique Identifier) は、ソフトウェアシステムで使用される128ビットの一意な識別子です。RFC 4122およびRFC 9562で標準化されており、中央の調整機関なしに独立して生成でき、重複の確率が極めて低い特性を持ちます。データベースの主キー、分散システムの識別子、APIキーなどに広く利用されています。

UUID GUID 識別子 RFC 4122 RFC 9562 データベース 分散システム
コード スラッグ 名称 概要 algorithm recommended sortable
v1 uuid-v1 UUIDv1 (時間ベース) タイムスタンプとMACアドレスに基づくUUIDです。 Time-based + MAC address false true
v2 uuid-v2 UUIDv2 (DCEセキュリティ) DCEセキュリティ仕様のUUIDです。 DCE Security with POSIX ID false true
v3 uuid-v3 UUIDv3 (名前ベース/MD5) 名前空間と名前からMD5ハッシュで生成されるUUIDです。 MD5 hash of namespace + name false false
v4 uuid-v4 UUIDv4 (ランダム) ランダムに生成される最も一般的なUUIDです。 Random 122 bits true false
v5 uuid-v5 UUIDv5 (名前ベース/SHA-1) 名前空間と名前からSHA-1ハッシュで生成されるUUIDです。 SHA-1 hash of namespace + name true false
v6 uuid-v6 UUIDv6 (並べ替え時間ベース) UUIDv1のフィールドを並べ替えた時間ベースUUIDです。 Reordered UUIDv1 timestamp false true
v7 uuid-v7 UUIDv7 (Unixエポック時間ベース) Unixタイムスタンプベースで推奨される最新のUUIDです。 48-bit Unix timestamp + 74-bit random true true
v8 uuid-v8 UUIDv8 (カスタム) 実装者定義のカスタムUUIDフォーマットです。 Implementation-defined custom false

UUID(Universally Unique Identifier)およびGUID(Globally Unique Identifier)は、ソフトウェアシステムで使用される128ビットの一意な識別子です。RFC 4122で標準化され、その後RFC 9562で更新されました。中央の調整機関なしに独立して生成でき、重複の確率が極めて低いという特性から、データベースの主キーや分散システムの識別子として広く利用されています。

UUIDは標準的に36文字の16進数文字列として表現されます。形式は「XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」で、ハイフンで区切られた5つのフィールドから構成されています。先頭の部分にはバージョン情報が含まれ、生成アルゴリズムを示しています。

現在のRFC 9562では8つのバージョンが定義されており、それぞれ異なる生成アルゴリズムと用途を持ちます。UUIDv4(ランダム生成)は最も広く使用されていますが、データベースのインデックス局所性を重視する場合はUUIDv7(Unixエポック時間ベース)が推奨されています。UUIDv7は時系列順にソート可能であり、かつMACアドレスを含まないためプライバシー上の懸念もありません。

名前から一意の識別子を生成したい場合は、UUIDv3(MD5ベース)またはUUIDv5(SHA-1ベース)が使用されます。同じ名前空間と名前からは常に同じUUIDが生成されるため、決定論的な識別子が必要な場面で有用です。ただし、セキュリティ上の理由からUUIDv5が推奨されています。