Pythonのuuidモジュールを使ってランダムな一意ID(UUID)を生成する方法
UUIDは「Universally Unique Identifier(汎用一意識別子)」の略称で、Pythonの標準ライブラリとして提供されているモジュールです。128ビットのIDを扱うことができ、ランダムなオブジェクトに対して重複しない識別子を生成するために広く利用されています。
UUIDの主なメリット
- オブジェクトごとに一意なランダムIDを簡単に生成できる。
- 暗号化やハッシュ処理などのアプリケーションでIDとして活用できる。
- ドキュメントやアドレスなど、さまざまなデータの一意な識別子として使用できる。
方法1:uuid1() を使ってIDを生成する
uuid1() は、ホストのMACアドレスと現在の時刻をもとにUUIDを生成する関数です。まずは基本的な使い方を見てみましょう。
サンプルコード
import uuid
print("uuid1()で生成したランダムID : ", end="")
print(uuid.uuid1())
実行結果
uuid1()で生成したランダムID : 4adeede2-e5d8-11e8-bd27-185e0fd4f8b3
uuid1() の各種表現形式
bytes ― IDを16バイトの文字列形式で返します。
int ― IDを128ビット整数形式で返します。
hex ― IDを32文字の16進数文字列として返します。
uuid1() の構成要素
version ― UUIDのバージョン番号を示します。
variant ― UUIDの内部レイアウト(バリアント)を決定します。
uuid1() のフィールド構成
time_low ― IDの先頭32ビットを表します。
time_mid ― 続く16ビットを表します。
time_hi_version ― さらに続く16ビットを表します。
clock_seq_hi_variant ― 次の8ビットを表します。
clock_seq_low ― その次の8ビットを表します。
node ― 最後の48ビットを表します。
time ― IDの時刻コンポーネントを表します。
clock_seq ― 14ビットのシーケンス番号を表します。
サンプルコード(表現形式・構成要素・フィールドの確認)
import uuid
id = uuid.uuid1()
# uuid1() の各種表現形式
print("uuid1() のさまざまな表現形式 : ")
print("バイト表現 : ", end="")
print(repr(id.bytes))
print("整数表現 : ", end="")
print(id.int)
print("16進数表現 : ", end="")
print(id.hex)
print("\n")
# uuid1() の構成要素
print("uuid1() の構成要素 : ")
print("UUIDバージョン : ", end="")
print(id.version)
print("UUIDバリアント : ", end="")
print(id.variant)
print("\n")
# uuid1() のフィールド
print("uuid1() のフィールド : ")
print("UUIDフィールド : ", end="")
print(id.fields)
print("\n")
# uuid1() の時刻コンポーネント
print("uuid1() の時刻コンポーネント : ")
print("時刻コンポーネント : ", end="")
print(id.node)
実行結果
uuid1() のさまざまな表現形式 : バイト表現 : b'\x1a\xd2\xa7F\xe5\xe4\x11\xe8\xbd\x9c\x18^\x0f\xd4\xf8\xb3' 整数表現 : 35653703010223099234452630771665795251 16進数表現 : 1ad2a746e5e411e8bd9c185e0fd4f8b3 uuid1() の構成要素 : UUIDバージョン : 1 UUIDバリアント : specified in RFC 4122 uuid1() のフィールド : UUIDフィールド : (450012998, 58852, 4584, 189, 156, 26792271607987) uuid1() の時刻コンポーネント : 時刻コンポーネント : 26792271607987
方法2:uuid4() を使ってIDを生成する
uuid4() は、乱数にもとづいて完全にランダムなUUIDを生成する関数です。予測可能性が低いため、一般的な用途では最もよく使われる方法です。
サンプルコード
import uuid
id = uuid.uuid4()
# uuid4() で生成したIDを出力
print("uuid4()で生成したID : ", end="")
print(id)
実行結果
uuid4()で生成したID : 21764219-e3d9-4bd3-a768-0bbc6e376bc0
まとめ
Pythonのuuidモジュールを使えば、uuid1() による時刻ベースのID生成、uuid4() によるランダムなID生成など、目的に応じた一意識別子を簡単に作成できます。また、生成したUUIDは bytes・int・hex といった複数の形式で取得できるため、用途に合わせて柔軟に活用できます。
-
PythonでPOSTメソッドを使ってCGIプログラムに情報を渡す方法
CGIプログラムへ情報を渡す方法としては、POSTメソッドの方が一般的により信頼性が高いとされています。POSTメソッドは、GETメソッドとまったく同じ形式でデータをパッケージ化しますが、URLの「?」以降にテキスト文字列として付加して送信するのではなく、独立したメッセージとして送り出す点が異なります。このメッセージは、標準入力(stdin)を通じてCGIスクリプトへ渡されます。POSTメソッドの主な特徴送信データがURLに表示されないため、GETメソッドよりも安全性が高いURLの長さ制限を受けないため、大量のデータも送信できるデータはリクエストボディに格納され、標準入力経由でCGIスクリプト
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c