UUID生成

UUIDは 36 文字で書きます。16進数32桁を 8-4-4-4-12 の5つに区切った形です。

UUIDを調べる

問題は解決しましたか?
Googleで優先表示

使い方

  1. 完全にランダムなIDならv4、作成時刻の順に並ぶIDならv7を選びます。
  2. 必要な数を1から500で指定し、使うシステムに合わせて大文字やハイフンなしにチェックを入れます。
  3. すべてコピーを押します。既存のUUIDを調べるには一番下の欄に貼り付けると、バージョン、バリアント、v7なら作成日時が表示されます。

計算方法

UUIDは128ビットの値で、16進数32桁を5つのグループに分けて書きます。3つ目のグループの4ビットがバージョン、4つ目のグループの先頭ビットがバリアントを表します。そのためv4は必ず xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx の形になり、y は 8、9、a、b のどれかです。

バージョン4は残りの122ビットをブラウザの暗号用乱数で埋めます。重複は現実的に心配いりません。

バージョン7は先頭がミリ秒単位の48ビットのUnix時刻で、その後ろが乱数です。後から作ったIDほど後ろに並ぶので、データベースのインデックスが散らかりません。1回の生成の中では、同じミリ秒に複数できてもカウンターで作成順を保ちます。

よくある質問

v4とv7はどちらを使えばいい?

一意なIDがほしいだけならv4です。データベースの主キーにするならv7がおすすめです。新しい行がインデックスのあちこちではなく末尾に追加されるので書き込みが速く、作成順の並べ替えも簡単です。

UUIDが重複することはありますか?

理論上はあり得ますが、実際にはまず起きません。v4のランダム部分は122ビットあり、重複が起きそうになるには毎秒何十億個も何十年も作り続ける必要があります。

v7のUUIDから作成日時が分かりますか?

分かります。先頭12桁の16進数から、誰でもミリ秒単位の時刻を読み取れます。公開トークンのように作成時刻を知られたくない値にはv7を使わないでください。

UUIDをパスワードやシークレットに使っても大丈夫?

ブラウザの暗号用乱数で作っていますが、UUIDはあくまで識別子です。パスワードやAPIキーには専用のトークン生成ツールを使ってください。