この記事では、PythonでUUID
を生成する方法を解説します。
UUID(Universally Unique Identifier)
とは、世界中で重複しないIDのことを言います。将来的に重複や偶然の一致が起こらない値を使いたい場合に使用されます。
それでは、UUID
の生成方法を見ていきましょう!
UUIDの生成
UUID
を生成するにはuuid
モジュールを使います。標準ライブラリなのでインポートするだけで使用可能です。
import uuid
UUID
には色々な生成方法が用意されています。UUID
のバージョンによってそれぞれ異なるので1つずつ確認していきましょう。
UUID: バージョン1
バージョン1のUUID
を生成するにはuuid.uuid1()
関数を使います。こちらのIDは、ホストID、シーケンス番号、現在時刻から生成されます。
import uuid
uuid.uuid1(node=None, clock_seq=None)
試しにUUIDを生成してIDと型を確認してみます。
import uuid
u = uuid.uuid1()
print(u)
print(type(u))
実行結果
cca225e8-19f3-11ec-9ed0-6476ba9c3936
<class 'uuid.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'>
UUID: バージョン3と5
バージョン3と5のUUIDは名前空間識別子と名前で生成されます。バージョン3のUUIDはuuid.uuid3()
、バージョン5のUUIDはuuid.uuid5()
を使います。
バージョン3はMD5ハッシュから、バージョン5はSHA-1ハッシュからUUIDが生成されます。
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
ドメイン名からユニークなIDを生成することができました。