UUID生成(v4・v7)
ブラウザ内処理ファイルはアップロードされませんこの処理はブラウザ内で完結します。ファイルはどこにも送信されません。
重複しない識別子をまとめて作ります。完全な乱数のv4と、生成した時刻順に並ぶv7の両方に対応しています。大文字やハイフン無しの形にもその場で変えられます。
設定
件
乱数はブラウザの暗号用乱数(crypto.getRandomValues)から取っています。
結果
関連するツール
ツール一覧特長
- 暗号用の乱数から作る
- ブラウザの暗号用乱数(crypto.getRandomValues)を使っています。Math.randomは使いません——あちらは予測できてしまうため、識別子を推測される余地が残ります。
- v7も出せる
- v7は先頭にミリ秒の時刻が入るため、生成した順に並びます。同じミリ秒に作った分も、時刻の下の連番で順序が決まります。データベースの主キーにすると索引が素直に伸びるので、v4より書き込みが軽くなります。
- 版とバリアントのビットを正しく立てる
- 16進32桁を並べただけではUUIDになりません。版番号と変種を示すビットを規格どおりに立てているので、厳密に検証するライブラリでも通ります。
使い方
版を選ぶ
用途が決まっていなければv4で構いません。データベースの主キーに使うならv7が向きます。
件数と書式を決める
最大50件まで。大文字とハイフン無しは、貼り付け先の都合に合わせて切り替えてください。
取り出す
1件ずつでも、まとめてでもコピーできます。まとめた場合は1行に1件で並びます。
用語と読み方
- v4 と v7 の違い
- v4は122ビットが完全な乱数です。v7は先頭48ビットが生成時刻(Unixミリ秒)で、残りが乱数になります。並び順が要るならv7、順番を知られたくないならv4です。
- 重複しないのか
- v4で衝突する確率は現実には無視できます。1秒あたり10億個を85年作り続けて、ようやく1回衝突する程度の見積もりです。
- GUIDとの違い
- 同じものです。GUIDはMicrosoft系での呼び方で、書式も互換です。中括弧で囲む流儀がありますが、値そのものは変わりません。
- 書式(8-4-4-4-12)
- 16進32桁を、ハイフンで5つの塊に区切った形が標準です。ハイフンは飾りではなく書式の一部なので、外した32桁を受け付けない相手もあります。逆に、データベースの列に入れるときは16バイトのまま持つほうが、文字列で持つより半分以下の大きさで済みます。
- 「連番の代わり」に向く場合と向かない場合
- 複数の場所で同時に採番したいときは向きます。中央で番号を配る仕組みが要らず、衝突も起きないためです。逆に、人が読み上げたり手で打ったりする番号には向きません。32桁を口頭で伝えるのは現実的ではないので、伝票番号のような用途には短い連番のほうが合います。
- v1 と v4 の違い
- v1は時刻とネットワーク機器のMACアドレスから作ります。作った機器が特定できてしまうため、外に出す識別子には向きません。時刻順に並べたい目的なら、MACを含まないv7のほうが安全です。この道具がv1を出さないのはそのためです。
よくある質問
- 生成した値は保存・送信されますか。
- されません。すべてブラウザの中で作られ、ページを閉じれば消えます。
- v7から生成時刻が分かってしまいますか。
- 分かります。先頭にミリ秒の時刻がそのまま入っているためです。作られた時期を知られたくない用途ではv4を選んでください。
- パスワードの代わりに使えますか。
- 勧めません。UUIDは秘密にする前提の値ではなく、URLやログに現れることが多いためです。秘密が要るならパスワード生成の道具を使ってください。
- 大文字と小文字は区別されますか。
- 規格上、生成するときは小文字で出し、読み取るときは大文字も受け付ける決まりです。つまり同じ値として扱われます。ただし、文字列としてそのまま比較しているシステムでは別物になるので、貼り付け先が大文字を求めている場合だけ切り替えてください。既定は小文字です。
- v7をデータベースの主キーにすると、なぜ速いのですか。
- 索引の伸び方が変わるためです。v4は完全な乱数なので、新しい行が索引のあちこちに挿し込まれ、ページの分割が頻繁に起きます。v7は先頭が時刻なので、新しい行はほぼ末尾に積まれます。追記に近い動きになるぶん、書き込みが軽く、断片化も進みにくくなります。
- 一度に何件まで作れますか。
- 50件までです。これ以上をまとめて必要とする場面は、たいてい手作業ではなくプログラムから生成する場面で、その場合はここで作るより、使っている言語の標準ライブラリを呼ぶほうが確実です。ほとんどの言語に組み込みの生成関数があります。
スポンサーリンク