Categories: Python

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

この記事では、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)
uuid1()はコンピュータのネットワークアドレスを含むUUIDを生成するためにプライバシーを侵害するかもしれない点に注意

試しに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を生成することができました。

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago