UUID ジェネレーターは v1〜v7 のすべてのバージョンと NIL・MAX の UUID を生成でき、一度に最大 100 個まで作成できます。組み込みのチェッカーが任意の UUID 文字列を検証し、正規化された形式・バージョン・RFC 4122 バリアントを返します。
バージョンの選び方
v4(ランダム)
- 完全にランダムで、時刻やハードウェア情報を含まない
- 汎用的な識別子として最も一般的な選択
- 大量挿入を行うデータベースの主キーに使うと、ランダム値により B-tree インデックスが断片化する
v7(データベースキーに推奨)
- 最初の 48 ビットがミリ秒精度の Unix タイムスタンプ
- 作成時刻で自然にソートされ、インデックスの断片化を防ぐ
- MAC アドレスなし — 時系列性を保ちながらハードウェア情報を漏らさない
v5(決定的生成)
- 同じ名前空間 + 同じ名前は常に同じ UUID を生成
- SHA-1 使用。冪等な ID 生成に適している
- 例: ドメイン
example.comは常にcfbff0d1-9375-5685-968c-48ce8b15ae17を生成
v1(時刻 + MAC)
- 生成元マシンの MAC アドレスを含む — ハードウェア情報が漏れる可能性あり
- 時系列性はあるが、タイムスタンプフィールドが UUID の中央にあるため v7 ほどソート効率が良くない
- 新規プロジェクトでは避け、v6 か v7 を使う
v3 と v5 の違い
どちらも名前空間と名前から決定的な UUID を生成します。v3 は MD5、v5 は SHA-1 を使用します。新規プロジェクトでは v5 を選んでください。v3 は明示的に必要とするレガシーシステムとの互換性のためだけに存在します。
v3/v5 の名前空間と名前
デフォルトの名前空間は DNS 名前空間 UUID 6ba7b810-9dad-11d1-80b4-00c04fd430c8 です。異なる名前空間を使うと同じ名前でも異なる UUID が生成されるため、名前空間は分離キーとして機能します。任意の有効な UUID をカスタム名前空間として指定できます。
チェッカーが返す情報
チェッカーに任意の文字列を貼り付けると以下が返されます。
- フォーマットが有効かどうか
- 小文字の正規化された形式
- バージョン(v1〜v7、非標準の場合は「不明」)
- バリアント: RFC 4122(標準)、NCS(レガシー)、Microsoft(GUID 形式)、Future
- NIL(全ゼロ)または MAX(全 F)かどうか
フォーマットが無効な文字列には単純に「無効」が返されます。最も近いバージョンを推測することはありません。