件
乱数はブラウザの暗号用乱数(crypto.getRandomValues)から取っています。
重複しない識別子をまとめて作ります。完全な乱数のv4と、生成した時刻順に並ぶv7の両方に対応しています。大文字やハイフン無しの形にもその場で変えられます。
よくある質問
生成した値は保存・送信されますか。
されません。すべてブラウザの中で作られ、ページを閉じれば消えます。
v7から生成時刻が分かってしまいますか。
分かります。先頭にミリ秒の時刻がそのまま入っているためです。作られた時期を知られたくない用途ではv4を選んでください。
パスワードの代わりに使えますか。
勧めません。UUIDは秘密にする前提の値ではなく、URLやログに現れることが多いためです。秘密が要るならパスワード生成の道具を使ってください。
大文字と小文字は区別されますか。
規格上、生成するときは小文字で出し、読み取るときは大文字も受け付ける決まりです。つまり同じ値として扱われます。ただし、文字列としてそのまま比較しているシステムでは別物になるので、貼り付け先が大文字を求めている場合だけ切り替えてください。既定は小文字です。
v7をデータベースの主キーにすると、なぜ速いのですか。
索引の伸び方が変わるためです。v4は完全な乱数なので、新しい行が索引のあちこちに挿し込まれ、ページの分割が頻繁に起きます。v7は先頭が時刻なので、新しい行はほぼ末尾に積まれます。追記に近い動きになるぶん、書き込みが軽く、断片化も進みにくくなります。
一度に何件まで作れますか。
50件までです。これ以上をまとめて必要とする場面は、たいてい手作業ではなくプログラムから生成する場面で、その場合はここで作るより、使っている言語の標準ライブラリを呼ぶほうが確実です。ほとんどの言語に組み込みの生成関数があります。
スポンサーリンク