UUID
UUID 生成ツール
ランダムなバージョン 4 の UUID を生成します。
UUID について
UUID(Universally Unique Identifier)は 128 ビットの値で、通常はハイフンで区切られた 5 つのグループからなる 32 桁の 16 進数として表示されます。バージョン 4 の UUID はランダムなビットから生成されるため、独立に生成された 2 つの UUID が実際に一致することはありません。
ここで生成されるバージョン 4 は、実際に使われている複数の UUID バージョンの一つにすぎません。バージョン 1 は生成元マシンの MAC アドレスとタイムスタンプを符号化しており、並べ替えには便利ですが、ランダムな ID では漏れない情報を漏らします。バージョン 3 と 5 は名前空間と名前から決定的にハッシュされるため、同じ入力からは常に同じ UUID が得られ、コンテンツアドレス方式の識別子に向いています。より新しいバージョン 7 はミリ秒単位のタイムスタンプを先頭ビットに詰め込んでおり、UUID が時系列でソートできるようにするためのものです。これはバージョン 4 の純粋なランダム性では決してできないことです。
使われる場面
- 連番である必要がないデータベース行の主キー
- API リクエストの冪等性キー
- セッション、リクエスト、分散システムイベントの一意な識別子
- 自動増分 ID と異なり作成順序が漏れない匿名識別子
よくある質問
生成された 2 つの UUID が衝突することはありますか?
理論上はあり得ますが実際には起こりません。バージョン 4 の UUID には 122 ビットのランダム性があり、数十億個の ID であっても衝突の可能性は無視できるほど小さいです。
UUID は作成時刻で並べ替えられますか?
バージョン 4 ではできません。時刻順に並べ替え可能な ID が必要な場合は、UUIDv7 や ULID などの時間順序型の代替を検討してください。
UUID には何か秘密の情報が含まれていますか?
いいえ、v4 の UUID は単なるランダムビットであり、生成したサーバー、ユーザー、時刻は一切含まれていません。
UUIDv1 や新しい UUIDv7 を使わないのはなぜですか?
バージョンごとに異なる性質のトレードオフがあります。このツールが生成する UUIDv4 は、順序も埋め込み情報もない純粋なランダム性で、ID がいつどこで作られたかを明かしたくない場合にまさに適しています。UUIDv1 はタイムスタンプと MAC アドレスを埋め込み、UUIDv7 はタイムスタンプのみを埋め込んで、作成時刻順にソートできる ID を提供します。これはランダムな v4 の値よりもデータベースがはるかに効率的にインデックスできます。挿入順のパフォーマンスが重要で、作成時刻が漏れても構わない場合は v7 を選んでください。