Python

【Python】ユニークなIDを生成する方法【UUID】

この記事では、PythonでUUIDを生成する方法を解説します。UUID(Universally Unique Identifier)とは、世界中で重複しないIDのことを言います。将来的に重複や偶然の一致が起こらない値を使いたい場合に使用されます。

UUIDの生成

UUIDを生成するには、uuidモジュールを使います。標準ライブラリなのでインポートするだけで使用可能です。

import uuid

UUIDはバージョンによって生成する方法が異なるのでそれぞれ確認していきましょう!

バージョン1

バージョン1のUUIDを生成するには、uuid.uuid1()関数を使います。こちらのIDは、ホストID、シーケンス番号、現在時刻から生成されます。

import uuid

uuid.uuid1(node=None, clock_seq=None)
uuid1()はコンピュータのネットワークアドレスを含むUUIDを生成するためにプライバシーを侵害するかもしれない点に注意

試しにUUIDを生成してIDと型を確認してみます。

import uuid

u = uuid.uuid1()
print(u)
print(type(u))

実行結果

cca225e8-19f3-11ec-9ed0-6476ba9c3936
<class 'uuid.UUID'>

バージョン4

バージョン4のUUIDを生成するには、uuid.uuid4()関数を使います。こちらのIDは乱数を使って完全にランダムに生成されます。

uuid.uuid4()

試しにUUIDを生成してIDと型を確認してみます。

import uuid

u = uuid.uuid4()
print(u)
print(type(u))

実行結果

440a10d9-ee48-4846-b882-57ee04adf8de
<class 'uuid.UUID'>

バージョン3と5

バージョン3と5のUUIDは名前空間識別子と名前で生成されます。バージョン3のUUIDはuuid.uuid3()、バージョン5のUUIDはuuid.uuid5()を使います。

バージョン3はMD5ハッシュから、バージョン5はSHA-1ハッシュから生成されます。

import uuid

uuid.uuid3(namespace, name)

uuid.uuid5(namespace, name)

名前空間識別子(namespace)にはuuidモジュールに定義されている定数を指定します。

Link名前識別子 – uuid — RFC 4122 に基づくUUID オブジェクト — Python ドキュメント

例えば、ドメイン名からUUIDを生成するには以下のようにします。

import uuid

dns = 'yumarublog.com'

u = uuid.uuid3(uuid.NAMESPACE_DNS, dns)
print(u)

u = uuid.uuid5(uuid.NAMESPACE_DNS, dns)
print(u)

実行結果

def133c0-c28a-3601-ba5b-8809edc5eef6
7fc47802-f599-55e3-b45c-3de18f534aa7
最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』