UUID とは
UUID(汎用一意識別子。Microsoft のツールでは GUID と呼ばれます)は 128 ビットの ID で、919108f7-52d1-4320-9bac-f847db4148a8 のように 16 進数 32 桁を 5 つに区切って書きます。中央のサーバーに問い合わせなくてもどのプログラムでも作成でき、ランダムに作った 2 つの UUID が重なることは事実上ありません。
v4 と v7 のどちらを使う?
- v4 は 122 ビットがランダムです。公開する ID、ファイル名、招待コードなど、何の情報も含めたくない ID に向いています。
- v7 は先頭がミリ秒単位のタイムスタンプなので、新しい ID ほど後ろに並びます。データベースの主キーにすると新しい行がインデックスの末尾に追加され、ランダムな v4 より高速です。
使い方
- バージョンと個数(最大 1,000 個)を選びます。
- システムが特定の形式を必要とする場合は、大文字、ハイフンなし、波かっこ付きに切り替えます。一覧はすぐに更新されます。
- 一覧をコピーするか、テキストファイル(1 行に 1 つ)として保存します。
- 既存の UUID を確認するには「UUID を検証」に貼り付けます。バージョンとバリアント、v1・v6・v7 では記録された時刻が表示されます。
例
次の v7 UUID は、UUID の標準仕様 RFC 9562 に載っている例です。
017f22e2-79b0-7cc3-98c4-dc0c0c07398f
先頭 12 桁の 017f22e279b0 はミリ秒単位の Unix タイムスタンプで、検証結果には次のように表示されます。
2022-02-22T19:22:22.000Z
よくある質問
ここで作った UUID は本番環境で使えるほどランダムですか?
はい。ランダムな部分にはブラウザの crypto.getRandomValues(暗号論的に安全な乱数)を使っており、サーバー側のライブラリと同じ品質です。UUID はブラウザ内で作成され、どこにも送信されません。
2 つの UUID が重なることはありますか?
理論上はありますが、実際にはありません。v4 は 2122 通りあり、毎秒 10 億個を 85 年間作り続けてようやく 1 回重なる確率が 50% になります。v7 は時刻も含むため、異なるミリ秒に作られた ID が重なることはありません。
v7 から作成日時がわかってしまいますか?
はい。上の例のように、v7 の UUID からは誰でも作成日時を読み取れます。作成日時を知られたくない場合は v4 を使ってください。
大文字と小文字のどちらがよいですか?
標準では小文字での出力と、大文字・小文字を区別しない比較が推奨されているため、小文字が最も安全です。大文字や波かっこは、GUID を {...} の形で表示する一部の Microsoft ツールなど、システムが求める場合だけ使います。