短い UUID とは
短い UUID は暗号学的乱数から数バイトを取り出し、Base64url — A-Z、a-z、0-9、-、_ の文字集合 — で符号化します。そのため URL やファイル名にそのまま使えます。
UUID と同等の乱数量が欲しいときは 16 バイトを選びます。結果は 22 文字で、依然として 128 ビットあり、デコードすれば uuid 型の列にも保存できます。小規模な用途で短い識別子が必要なら 8 バイトを選びます。
使い方
- 乱数バイト数を選びます。8、12、16 のいずれかです。
- 生成する件数を選びます。
- 生成を押して結果をコピーします。
用途
- URL のパラメータや共有リンク。
- ファイル名や短いストレージキー。
- 短い招待コードやセッションコード。
- 長さに制限のあるシステムでの識別子。
短い UUID の位置づけ
| 選択肢 | 使う場面 |
|---|---|
short | 22 文字で UUID と同じ 128 ビットの乱数 |
v4 | 標準の 36 文字。誰でも UUID と分かります |
slug | パス向けの読みやすい文字列 |
UUID の各バージョン早見表
| バージョン | 並べ替え可能 | 基になる情報 | 向いている用途 |
|---|---|---|---|
| v1 | 不可 | タイムスタンプ + MAC アドレス | v1 に依存したままの既存システム |
| v3 | 不可 | 名前の MD5 ハッシュ | MD5 を使わざるを得ない場面の決定的な識別子 |
| v4 | 不可 | 122 ビットの乱数 | 一般的な識別子のほとんど |
| v5 | 不可 | 名前の SHA-1 ハッシュ | 同じ名前から常に同じ識別子を得たいとき |
| v6 | 可 | 並べ替えたタイムスタンプ | 乱数性を保ったまま並べ替えたいとき |
| v7 | 可 | ミリ秒精度の Unix 時刻 | データベースの主キーやイベント識別子 |
| v8 | 不可 | 独自のビット配置 | 独自形式や実験的な用途 |
7 つのバージョンはいずれも 128 ビットで、同じ 8-4-4-4-12 の形式で表記します。違うのはビットの意味だけです。
よくある質問
短い UUID は本当に UUID ですか?
16 バイト版はちょうど 128 ビットの乱数を含むため、強度としては UUID v4 と同等です。違うのはバージョンとバリアントのビットを持たず、16 進数ではなく Base64url で表記される点です。
なぜ通常の Base64 ではなく Base64url なのですか?
通常の Base64 には + と / が含まれ、URL では + が空白と解釈され、/ がパスの区切りと見なされるためです。Base64url はこれらを - と _ に置き換えます。
バイト数はいくつ選べばよいですか?
ほとんどの場合 16 バイトを選んでください。UUID と同等の安全性があります。もう少し短くしたいが余裕も欲しいなら 12 バイトです。8 バイトは小さく寿命の短いデータに限ってください。