UUIDは128ビットの識別子です。 テストデータを複数の環境で独立して作るならv4が候補です。時刻を先頭に持つ識別子が必要ならv7を検討し、同じミリ秒内の順序が要件に合うか確認します。保存先で一意性を守るには主キーまたは一意制約を使います。
UUID v4・v7・v1の選び方
| 形式 | 主な構成 | 適した用途と条件 |
|---|---|---|
| v4 | 122ビットの乱数部分 | 時刻順を要件にしないテストIDや分散生成 |
| v7 | 先頭48ビットがUnixミリ秒 | 時刻を先頭に持つID。時計と同一msの順序を確認 |
| v1 | 時刻・クロックシーケンス・ノード | 既存システムとの互換。ノード情報と並び順を確認 |
v7の先頭48ビットはUnixミリ秒です。同じミリ秒の順序や時計が戻った場合の扱いは生成器の実装に依存します。監査記録で厳密な発生順が要る場合は、連番やイベント時刻も別に保存します。Unix時間のガイドでミリ秒とUTCの関係を確認できます。
36文字のどこを見ればv4と分かる?
16進数32桁とハイフン4個で36文字です。RFC 9562の形式では第3グループの先頭がバージョン、第4グループ先頭の上位ビットがバリアントを示します。v4の乱数部分は128 − 6 = 122ビットです。
| 位置 | 固定例での値 | 確認すること |
|---|---|---|
| 区切り | 8-4-4-4-12 | 16進32桁とハイフン4個 |
| 第3グループの先頭 | 4 |
v4のバージョン |
| 第4グループの先頭 | a |
RFCのバリアントでは8・9・a・b |
固定例は形式の説明用です。実際に追加するレコードには新しい値を使い、保存先に重複がないか制約で確かめます。進数変換では16進1桁と4ビットの対応を確認できます。
この記事の例を試す
v4を1件生成して形式を確認
件数を1にして生成し、第3グループの4と第4グループの8・9・a・bを確認します。
重複確率と一意制約の使い分け
一様で独立した乱数を仮定すると、候補数は2の122乗です。生成数を n としたとき、衝突確率が十分小さければ n(n−1) ÷ (2 × 2¹²²) で近似できます。10億件で約9.4×10⁻²⁰。乱数の偏りや同じ値の再利用、保存時の切り詰めはこの計算に含まれません。
| 用途 | 対策 | 動作確認 |
|---|---|---|
| 新しい行を識別 | PRIMARY KEY | 同じIDを2度登録すると拒否 |
| 参照先を結び付ける | FOREIGN KEY | 存在しない親IDを拒否 |
| 権限の確認 | リクエストごとの認可 | 別の利用者のIDでアクセスできない |
IDを切り詰めると候補数が減ります。例えば先頭8桁だけなら最大32ビットで、10万件を一様に発行したときの衝突確率は約69%です。表示用の短縮と、保存・比較に使う完全なIDを分けてください。
生成・コピー・保存を確認する
- 生成数を1〜1000の整数で入力します。最初に表示される一覧は10件です。
- 「生成」を押し、指定した件数と36文字の形式を確認します。ブラウザの
crypto.randomUUID()を使い、利用できない場合はcrypto.getRandomValues()でv4を構成します。 - コピーは一覧全体です。ダウンロードでは
uuids.txtに1行1件で保存します。必要な値は再生成する前に控えます。 - テストDBで主キー重複と存在しない外部キーが拒否されることを確認します。再試行する場合は、同じ要求を二重に保存しないよう処理全体の条件も確かめます。
この記事の例を試す
テスト用に3件を一括保存
生成数を3にして、コピーした一覧とuuids.txtがいずれも3行になることを確かめます。
文字列の形式検査は正規表現のガイドへ。生成・時刻・数値を扱うツールは開発ツール一覧から探せます。
編集部の確認範囲
2026年11月9日にRFC、Web Cryptographyの仕様、PostgreSQLの制約とツール動作を照合しました。確率は一様で独立した乱数を仮定した試算です。
よくある質問
このツールでUUID v7も生成できますか?
生成できるのはv4のみです。v7を必要とする場合は、利用中のDBやライブラリがv7に対応し、同一ミリ秒内の並び順が用途に合うか確認します。
UUID v4は絶対に重複しませんか?
一様で独立した122ビット乱数を仮定すると、10億件の生成で衝突する確率は約9.4×10⁻²⁰です。実際の保存では主キーまたは一意制約を使い、衝突時の処理を決めてください。
UUIDをそのまま認証トークンにできますか?
UUIDは識別子です。認証は専用のトークン設計を用い、権限・期限・失効を別に管理します。識別子を知っていることだけでアクセスを許可しないでください。
GUIDとUUIDの文字列は交換できますか?
同じ128ビット識別子を指す名称として使われます。大文字・小文字や括弧などの受け入れ形式を確認してください。バイナリで交換する場合はバイト順も確認します。