UUID / ULID ジェネレーター
暗号学的に安全なユニークIDをブラウザで即生成
設定
UUID と ULID の違い
UUID v4
- • ランダムな128ビットの値
- • 形式: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
- • 生成順序がバラバラ
- • データベースのインデックス効率が低め
- • RFC 4122 標準
ULID
- • タイムスタンプ + ランダムの128ビット
- • 生成時刻順にソート可能
- • ハイフンなしのCrockford Base32
- • データベースインデックスに有利
- • 先頭10文字がタイムスタンプ
主な用途
- ✓データベースのレコードID
- ✓セッションID・トークン
- ✓ファイル名の一意化
- ✓分散システムでの一意ID生成
よくある質問
UUIDとULIDの違いは何ですか?
UUID(v4)は完全ランダムで一意性が確実な128ビット識別子。ULIDは前半48ビットがミリ秒タイムスタンプ、後半80ビットがランダムで、生成順にソート可能です。データベースのインデックス効率ではULIDが有利(INSERT時のページ分割が少ない)、暗号学的にランダムな匿名IDが必要ならUUID v4 を選びます。新規プロジェクトでは ULID を採用するケースが増えています。
UUID v1とv4の違いは何ですか?
v1 は (1) 60ビットのタイムスタンプ + (2) 14ビットのクロックシーケンス + (3) 48ビットのMACアドレスで生成され、生成元の特定が可能で順序が予測可能。v4 は完全ランダム(122ビット)で予測不可能・匿名性が高い。セキュリティトークン、URLに含まれる識別子には v4、内部のレコードIDには v1 や v7(タイムスタンプ + ランダム)が向きます。
UUIDが重複する可能性はありますか?
理論上はあり得ますが、UUID v4 では 122ビットのランダム空間(約 5.3 × 10^36 通り)から生成されるため、衝突確率は天文学的に低くなります。生年月日と同じ「誕生日のパラドックス」を考慮しても、毎秒 10億個 生成し続けて重複が出るまで 100年以上かかる計算で、実用上は重複しないと考えて問題ありません。
ハイフンなしでも使用できますか?
はい、UUIDのハイフンは可読性のためのフォーマット要素で、識別子としての本質ではありません。ハイフンを除去した32文字の連続形(`550e8400e29b41d4a716446655440000`)でも同じUUIDとして認識されます。データベースの`UUID`型カラムは内部的にバイナリで保存され、表示時にハイフン付きで戻すことが多いです。
Nil UUIDとは何ですか?
Nil UUIDはすべてのビットがゼロのUUID `00000000-0000-0000-0000-000000000000` で、特別な意味(「無効」「未割当」「ルート」)を表すために使われます。Bool値の代わりや、外部キーの初期値として使うことがあります。一方で「Max UUID」はすべてのビットが1の `ffffffff-ffff-ffff-ffff-ffffffffffff` で、こちらも特殊な役割を持つことがあります。
UUID v7 やULIDはなぜ最近注目されているのですか?
従来のUUID v4はランダム性が高い反面、データベースのB+Tree インデックスで「ページ分割」が頻発し、INSERTパフォーマンスが低下する問題がありました。UUID v7 や ULID は「タイムスタンプを先頭に配置」することでインデックスのlocalityを保ち、書き込みパフォーマンスを大幅に改善できます。新規DB設計では推奨されつつあります。
UUIDをURLに含めるのは安全ですか?
UUID v4 を含むURLは予測不可能なため「URL自体を秘密の鍵」として使えます(capability URL)。共有リンク、招待リンク、ファイル共有URLでよく使われるパターンです。ただし、(1) URL がログに残る、(2) リファラーで漏洩する、(3) ブラウザ履歴に残る、リスクがあるため、長期的な認証には使わず、短期トークンとして使うのが安全です。
生成したIDはサーバーに送信されますか?
いいえ、本ツールはすべての生成処理をブラウザ内(クライアントサイド)で行います。生成されたUUID/ULIDはst0z.comのサーバーや第三者に送信されることはありません。本番システム用の識別子、APIキーの種、テストデータの生成など、機密性の高い用途でも安全にご利用いただけます。