はじめに
UUID(Universally Unique Identifier)は、128ビット長の一意識別子であり、データベースやネットワーク上での一意性を確保するために広く使われています。Pythonの標準ライブラリuuid
を使うと、簡単にUUIDを生成できます。
UUIDの種類
UUIDにはいくつかのバージョンがあり、それぞれ異なる方法で識別子を生成します。以下は主なUUIDの種類です:
-
UUID1: タイムベースUUID
- タイムスタンプとノード(通常はMACアドレス)に基づいて生成されます。
- 時間順に生成されるため、タイムスタンプを元にした一意性が保証されます。
-
UUID2: DCEセキュリティUUID
- ローカルドメイン、POSIX UID/GID、およびタイムスタンプに基づいて生成されます。
- 一般的には使用されません。
-
UUID3: 名前ベースUUID(MD5)
- 名前空間と名前のMD5ハッシュに基づいて生成されます。
- 同じ名前空間と名前に対しては常に同じUUIDを生成します。
- 名前空間には、
uuid.NAMESPACE_DNS
、uuid.NAMESPACE_URL
、uuid.NAMESPACE_OID
、uuid.NAMESPACE_X500
などがあります。
-
UUID4: ランダムUUID
- ランダムまたは擬似乱数に基づいて生成されます。
- 非常に高い一意性が保証されますが、完全にランダムです。
-
UUID5: 名前ベースUUID(SHA-1)
- 名前空間と名前のSHA-1ハッシュに基づいて生成されます。
- UUID3と同様に、同じ名前空間と名前に対しては常に同じUUIDを生成します。
UUIDの生成方法
import uuid
# UUID1: タイムベース
print(f"UUID1: {uuid.uuid1()}")
# UUID3: 名前ベース(MD5)
print(f"UUID3: {uuid.uuid3(uuid.NAMESPACE_DNS, 'example.com')}")
# UUID4: ランダム
print(f"UUID4: {uuid.uuid4()}")
# UUID5: 名前ベース(SHA-1)
print(f"UUID5: {uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com')}")
UUIDの用途
- データベース: 一意のプライマリキーとして利用。
- ソフトウェア: モジュールやコンポーネントの識別子。
- ネットワーク: データパケットの識別子。
- ファイルシステム: ファイルの一意識別子。