システム開発やデータベース設計、分散処理などにおいて「一意な識別子」は不可欠です。
中でも、世界中で重複しない識別子として広く使われているのがUUID(Universally Unique Identifier)です。
本記事では、UUIDの構造・バージョンの違い・実装方法・IT分野における活用例まで、技術者向けにわかりやすく解説します。
GUIDとの違いも明確にし、開発現場で即活かせる知識としてお届けします
UUIDとは何か?
UUIDの基本定義
UUID(汎用一意識別子)は、ソフトウェアやITシステム内でオブジェクトやリソースを一意に識別するための符号形式です。
誰でも自由に生成可能で、重複が起きないように設計されています。
-
128ビット(16バイト)の長さを持つ
-
通常は32桁の16進数をハイフンで区切った形式で表記
例:f47ac10b-58cc-4372-a567-0e02b2c3d479
-
波括弧
{}
で囲う場合もあり(Windows Registryなど)
ポイント:UUIDは中央集権的な管理者が不要であり、分散システムやマイクロサービス環境でも一意性が保たれます。
UUIDのバージョンと生成方法
UUIDは5つのバージョン(Version 1〜5)が存在し、それぞれ生成方法が異なります。
Version 1:MACアドレス+タイムスタンプ
-
コンピュータのMACアドレスと生成時刻を元に生成
-
ネットワーク経由で生成者を特定可能
-
時系列でソート可能という特長がある
利用例:トランザクションIDやログトレース
Version 2:DCEセキュリティ
-
一部のUNIXシステムで使用
-
ユーザーID(UID)やグループID(GID)を埋め込む特殊用途
-
他のUUIDと互換性がないため、汎用利用には不向き
Version 3 / 5:名前空間+ハッシュ値
-
名前空間(Namespace)と元データからUUIDを生成
-
Version 3はMD5ハッシュ、Version 5はSHA-1ハッシュ
-
同じ入力からは常に同じUUIDが得られる(再現性あり)
利用例:URLやドメイン名など、同一オブジェクトに対して固定UUIDが必要なケース
Version 4:完全ランダム型
-
122ビットのランダム値により生成
-
最もよく使われる形式。ランダム性が高く、生成が高速
-
一意性は統計的に保証される
利用例:セッションID、CSRFトークン、APIキーなど
UUIDの構造とバリアント(variant)
UUIDのフォーマット
標準的なUUIDは以下の形式で構成されています:
8桁-4桁-4桁-4桁-12桁(計36文字)
例:550e8400-e29b-41d4-a716-446655440000
-
第3ブロックの先頭1ビットがバージョン
-
第4ブロックの上位ビットがバリアント
バリアントの種類
UUIDには複数の仕様(バリアント)が存在し、仕様の互換性を保つために識別されています。
開発中のUUIDの解析時に「どのバリアントか?」を確認することで、互換性や由来が明確になります。
UUIDとGUIDの違い
用語の違いと実質的な同一性
-
GUID(Globally Unique Identifier)は、UUIDと同形式の識別子で、主にWindows環境で使われる呼称
-
技術的にはUUIDのバリアントが「110」の形式が旧GUIDで、現在はUUIDとGUIDはほぼ同義
例:WindowsのCOM(Component Object Model)で使用されるクラスIDなど
UUIDのIT分野での実用例
1. データベースの主キー
-
分散システムで一意性を保証
-
自動採番(Auto Increment)に依存せず安全
-
複数ノード間で重複なく生成できる
2. REST APIのエンドポイント識別
-
シンプルかつ安全な識別子としてURLパスに利用
-
情報漏洩のリスクが低い(予測困難)
3. セッションやトークンの生成
-
ユーザーのセッションID、認証トークンなど
-
一時的な一意性が求められる場面に最適
まとめ
UUID(Universally Unique Identifier)は、ITシステムで重要な一意性の担保を簡単に実現できる強力なツールです。
バージョンやバリアントの違いを理解し、適切な形式を選ぶことで、セキュリティ・スケーラビリティ・保守性を向上させることが可能です。
-
Version 1〜5:生成方法の違いに応じた用途がある
-
UUIDとGUIDは実質同じ:OSや環境による呼称の違い
-
IT現場では、データベース、API、認証、トレーシングなど多岐に渡って活用
今後のシステム設計やアーキテクチャ選定時に、ぜひUUIDの特徴とバリエーションを活かしてみてください。