UUIDジェネレーターとは?
v4 (ランダム)、v7 (時系列順)、v1 (タイムスタンプとノード ID)、v8 (カスタムレイアウト)、v5 (名前空間ベースで再現可能) の形式で世界で一意な識別子を生成します。単体やまとめての UUID 生成、受け取った UUID の検証、名前空間と名前から安定した ID を導出することができ、データベースキー、API トークン、テストデータ、分散システムに役立ちます。
完全にランダムな ID には v4、生成時刻でソートできる ID (データベースの索引が乱れず、ログのタイムラインも読みやすくなります) には v7、タイムスタンプとノード ID を持つ古典的な ID には v1、RFC 9562 のカスタムレイアウトには v8 を選びます。名前空間と名前文字列から決定論的に導出する ID には v5 を選びます。検証パネルは受け取った UUID をデコードし、バージョン・バリアント・埋め込みタイムスタンプ (あれば) を表示します。一度に最大 1000 件を生成でき、大文字表示の切り替え、1 行ずつまたは一括コピー、テキスト・CSV・JSON 配列・そのまま実行できる SQL INSERT 文でのダウンロードが可能です。
使い方
- 手順 1 — モードを選びます。完全ランダムは v4、時系列順は v7、タイムスタンプとノード ID を持つのは v1、カスタム/試験的レイアウトは v8、名前空間ベースの決定論的 ID は v5、既存 UUID の確認は検証モードです。
- 手順 2 — v4/v7 では必要な件数 (1〜1000) を指定し、v5 では名前空間を選んでハッシュする名前を入力、検証では UUID を貼り付けて検証ボタンを押します。
- 手順 3 — UUID を個別または一括でコピーし、必要に応じて大文字を切り替え、テキスト・CSV・JSON のいずれかでダウンロードします。
使用するタイミング
- 初回マイグレーション前に、テスト用 DB の主キーをまとめて用意するとき。
- 分散システムの API トークンや端末識別子を発行するとき。
- セッション ID・トレース ID・ログ連携用の相関 ID を作るとき。
結果
テストデータベースのシードに50個のユニークな主キーが必要です。UUID v4を選択し、数量を50に設定して生成し、すべてコピーします。暗号論的にランダムなので衝突リスクはほぼゼロです。
よくある質問
- UUID v4・v5・v7 の違いは?
- v4 は構造のない 122 ビットの乱数です。v5 は名前空間 UUID と名前文字列を SHA-1 でハッシュするため、同じ入力からは常に同じ UUID が得られます。メールアドレスや URL から決定論的に ID を作るのに向きます。v7 は先頭に 48 ビットのミリ秒タイムスタンプを置き、その後にランダムビットを並べるので、v7 のリストは時系列に並びます。挿入順が重要なデータベースキーに最適です。
- UUID が衝突する確率はどのくらいですか?
- 毎秒 10 億個の v4 を 85 年間生成し続けて、ようやく 50% 程度の確率で 1 件衝突します。通常のアプリケーション規模では、追加の調整なしに衝突は起こらないと見なして問題ありません。
- UUID を DB の主キーに使ってもよいですか?
- 連番の調整が難しい分散システムでは合理的です。v4 ではなく v7 を選んでください。ランダムな v4 は B-tree インデックスを断片化させますが、v7 はタイムスタンプ接頭辞のおかげで新しい行がインデックス末尾にまとまります。
- UUID を公開 URL に出しても安全ですか?
- v4 は予測不能なので、共有リンクやパスワード再設定トークンのような「ソフトな秘密」に使えます。v7 は生成時刻が読み取れるため、時刻を隠したい公開 ID には v4 を選んでください。
- URL 用に UUID を短くできますか?
- 128 ビットの生バイトを base32 や base62 で再エンコードすると、22~26 文字程度に短縮できます。一意性は同じです。標準形式のハイフンは表示上の区切りなので、外しても情報は失われません。