UUIDをワンライナーで生成する

ちょっと調べたのでメモ。
UUID(Universally Unique IDentifier)の詳細については下記リンク先をご参照いただくとして、UUIDの生成については様々なプラットフォームでサポートされているのと、いくつかバージョンが存在します。


バージョン4(完全ランダム生成)を使う前提で、いくつかワンライナーで実行するやり方を残しておきます。

uuidgenコマンド(Linux)

$ uuidgen
f6574b6b-02f7-4255-865b-dda39dcd0979

オプションなしで実行すると、上記の通りデフォルトはバージョン4で返してくれます。
(UUIDの 00000000-0000-X000-0000-000000000000 のXの部分の数字がバージョンを示す)

オプション:
 -r, --random     generate random-based uuid
 -t, --time       generate time-based uuid

ヘルプを見る限り、他は"-t"をつけると、バージョン1でも返してくれるみたい。

Python

$ python -c 'import uuid;print uuid.uuid4()'
25ce40b4-aa93-4f7b-967e-694cf3000720

uuidモジュールでは、 uuid1(), uuid3(), uuid4(), uuid5() が提供されている。(バージョン1, 3, 4, 5)

Ruby

$ ruby -e 'require "uuidtools";p UUIDTools::UUID.random_create.to_s'
"d14dc0cf-ada9-4045-a99b-31e57ef19937"

こちらは、 timestamp_create(), md5_create(), random_create(), sha1_create() が提供されている。(バージョン1, 3, 4, 5)

Perl

$ perl -e 'use UUID::Tiny;print UUID_to_string(create_UUID(UUID_V4)), "\n";'
cc4bbae1-832a-42d1-a207-0d6619d481e8

こちらも、バージョン1, 3, 4, 5 がサポートされている。

use UUID::Tiny;

my $v1_mc_UUID         = create_UUID();
my $v3_md5_UUID        = create_UUID(UUID_V3, $str);
my $v3_md5_UUID        = create_UUID(UUID_V3, UUID_NS_DNS, 'caugustin.de');
my $v4_rand_UUID       = create_UUID(UUID_V4);
my $v5_sha1_UUID       = create_UUID(UUID_V5, $str);
my $v5_with_NS_UUID    = create_UUID(UUID_V5, UUID_NS_DNS, 'caugustin.de');


(尚、"UUID::Tiny"についてはCPANでインストールしました。)


調べていると、"Data::UUID"を使うパターンが多く紹介されていたのですが、バージョン4をサポートしていないっぽかったので、↑の"UUID::Tiny"を使ってみた。

追記: cURLコマンドでサイトから

$ curl -s uuid.jp
43f8c8da-d375-486a-826e-2b5d6c87de8d

コメントで教えていただいたのですが、"uuid.jp"にアクセスするとバージョン4のUUIDを返してくれますねw


それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́