UUID 【Universally Unique IDentifier】 汎用一意識別子

概要

UUID(Universally Unique IDentifier)とは、ソフトウェアが扱う何らかの対象を一意に識別するための符号の形式の一つ。何らかの組織やシステムなどが管理・割り当てを行うわけではなく、誰でもいつでも自由に生成することができるが、他のUUIDとの重複は起きないようになっている。

UUIDは128ビット(16バイト)の値で、バージョン番号などに6ビットを用いるため、固有の識別情報は122ビットとなる。文字列として表記する際は先頭から4ビットごとに16進数の値(0~F)に変換し、「XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」のように8桁-4桁-4桁-4桁-12桁に区切ってハイフンを挟んで記載する。Windowsレジストリなどではさらにこれを波括弧({})で括る。

バージョン1から5までの5種類の生成方法が定義されており、それぞれ元にするデータや算出手順などが異なる。バージョン1は生成に用いるコンピュータ自身の識別子(一般的にはネットワークインターフェースのMACアドレスが用いられる)や生成日時の情報を連結して生成する。

バージョン2は一部のUNIX系OSでのアクセス権限などの記述するためのもので、バージョン1の符号の一部をオペレーティングシステム(OS)の管理するユーザーIDやグループIDなどで差し替えたものとなっている。用途が決まっており他のシステムで用いることはない。

バージョン3と5は利用者が元になるデータを任意に指定し、そのハッシュ値(MD5またはSHA-1の上位128ビット)を用いる。元になるデータが同じなら同じUUIDが得られる点が他のバージョンと異なる。バージョン4は単純に122ビットの乱数(ランダムなビット列)を生成してこれを識別子とする方法である。

UUIDの仕様はもともとUNIX系OSの標準仕様などを検討するOpen Software Foundation(OSF)がDCE(Distributed Computing Environment)規格の一部として策定したが、その後、国際標準化機構(ISO)がISO/IEC 11578の一部として、IETFがRFC 4122としてそれぞれ標準化している。

バリアント (variant)

UUIDは歴史的経緯から互換性のない複数の異なる仕様に分かれており、これを「バリアント」(variant)という。64ビット目から始まる1~3ビットがバリアントの種類を表している。

バリアントを表すビット列が「0」のUUIDは初期の古いシステム(最初にUUIDが導入された1980年代のNetwork Computing System)で生成されたもの、「10」は現在広く利用されている標準形式(狭義のUUID、Leach-Salz形式とも呼ばれる)、「110」は米マイクロソフト(Microsoft)社の独自実装(古いGUID実装)、「111」は将来のために予約された未使用領域を表している。

GUIDとUUIDの違い

WindowsなどではUUIDと同じ形式の識別子を「GUID」(Globally Unique Identifier)と呼称している。現代ではほとんどの場合、GUIDとUUIDは同じものを指し、同じ概念の単なる別名として扱われる。

歴史的には、GUIDはMicrosoft社がかつてCOM(Component Object Model)のインターフェース識別子やクラス識別子などに用いていた独自形式の符号のことを指していた。この形式はバリアントが「110」になっている。現在の同社のソフトウェアはGUIDとしてバリアントが「10」で始まるUUID標準形式の識別子を生成するため、GUIDとUUIDは同義となっている。

(2023.4.20更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。