UUID生成ツール:UUID v4・v7の生成と検証
UUID(GUID)をブラウザー上で生成します。ランダムなバージョン4と、時刻順に並ぶバージョン7(RFC 9562)に対応。「検証」モードでは、UUIDが正しい形式か、どのバージョンか、いつ作られたかがわかります。
計算方法
UUID(Universally Unique Identifier、MicrosoftではGUIDと呼びます)は、中央の登録機関なしで世界中で一意になる128ビットの識別子です。32桁の16進数を5つのグループに分けてxxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxxと書きます。Mの桁がバージョン、Nの上位ビットがバリアント(現在のUUIDでは8、9、a、b)です。現行の規格はRFC 9562(2024年)で、RFC 4122を置き換えています。
UUIDの生成・検証の手順
- 操作を選びます。UUIDを生成するか、UUIDを検証・解析するかです。
- 生成する場合は、バージョン4(ランダム)かバージョン7(時刻順)を選び、個数を入力し、必要に応じて大文字やハイフンを設定します。
- 一覧をコピーします。検証モードではUUIDを貼り付けると、バージョン、バリアント、タイムスタンプが表示されます。
例:UUID 01932c07-209c-7000-8000-000000000000はバージョン7です。先頭48ビット(01932c07209c)はミリ秒単位のUnix時間1731610484892、つまり2024年11月14日18時54分44.892秒(UTC)を表します。
バージョン4とバージョン7、どちらを使う?
- バージョン4は122ビットのランダム値です。時刻や機器について何も明かさないため、トークン、ファイル名など、順序が不要な用途に向いています。
- バージョン7は先頭にミリ秒単位のUnix時間(48ビット)があり、その後に74ビットのランダム値が続きます。新しいUUIDは作成順に並ぶため、データベースの主キーに最適です。新しい行がインデックスの末尾に追加され、あちこちに散らばりません。その代わり、作成日時は誰でも読み取れます。
v7のUUIDを一度に大量に生成すると、ほとんどが同じミリ秒に入ります。その場合、ツールはランダム部分を1ずつ増やし(RFC 9562 §6.2、方法2)、一覧が必ず昇順になるようにしています。
乱数の品質は?
ランダムなビットは、ブラウザーの暗号学的に安全な乱数生成器crypto.getRandomValues()から得ています。crypto.randomUUID()と同じ仕組みです。サーバーへの送信や保存は一切ありません。122ビットのランダム値では、重複が1つでも起きる確率が50%に達するまでに約270京個(2.7×1018)のUUIDが必要です。
UUIDの検証と解析
「検証」モードでは、既存のUUIDを分解します。長さと文字をチェックし、バージョンとバリアントを読み取り、バージョン1・6・7では埋め込まれたタイムスタンプをUTCとローカル時刻に変換します。バージョン1と6は1582年10月15日(グレゴリオ暦の開始日)からの100ナノ秒単位、バージョン7は1970年1月1日からのミリ秒を数えます。特別な値として、Nil UUID(すべて0)とMax UUID(すべてf)があります。
よくある質問
UUIDとGUIDの違いは何ですか?
中身は同じです。GUID(Globally Unique Identifier)は、同じ128ビット形式に対するMicrosoftの呼び名です。Windowsや.NETのGUIDは、通常バージョン4のUUIDです。
UUIDが重複することはありますか?
理論上はありえますが、実際にはまず起きません。バージョン4には2122通りの値があります。毎秒10億個生成しても、重複の確率が50%になるまで約86年かかります。ただし、ここで使っているcrypto.getRandomValues()のような質の高い乱数生成器が前提です。
UUIDの生成方法は?
このページで「UUIDを生成」を選び、バージョンと個数を指定するだけです。プログラムでは、JavaScriptならcrypto.randomUUID()、Pythonならuuid.uuid4()でバージョン4のUUIDを生成できます。
データベースにはどのバージョンを使うべきですか?
バージョン7です。先頭がタイムスタンプなので新しいレコードが順番に挿入され、Bツリーインデックスがコンパクトで高速に保たれます。PostgreSQL 18にはこのための組み込み関数uuidv7()があります。
UUIDがいつ作られたかわかりますか?
バージョン1・6・7ならわかります。「UUIDを検証・解析」を選んでください。バージョン4はランダム値だけなので、時刻も機器もわかりません。
大文字と小文字、どちらが正しいですか?
どちらも有効です。RFC 9562は出力には小文字を使い、入力は大文字・小文字を区別せずに扱うよう定めています。Microsoftのツールには、GUIDを波かっこ付きの大文字で表示するものもあります。
出典・根拠
- § 4 (Format, Variante, Version), § 5.4 (v4), § 5.7 (v7), § 6.2 (Monotonie), Anhang A (Testvektoren): RFC 9562 – Universally Unique IDentifiers (UUIDs), IETF 2024
- W3C Web Cryptography API – Crypto.getRandomValues()
- MDN Web Docs – Crypto.randomUUID()
更新日:
関連ツール
- UNIX時間(Unixtime)変換ツールUNIX時間(タイムスタンプ)を日時に、日時をUNIX時間に変換します。秒・ミリ秒(13桁)・マイクロ秒・ナノ秒を自動判別し、日本時間とUTCを表示。
- DNSレコード確認(nslookupオンライン)ドメインのDNSレコードをオンラインで確認。A、AAAA、MX、TXT、CNAME、NS、SOA、CAA、SRV、PTRをTTL・DNSSECの状態・エラーコードの解説付きで表示します。
- ハッシュ生成:SHA-256・SHA-512・SHA-1・MD5テキストやファイルのSHA-256、SHA-512、SHA-1、MD5ハッシュを生成し、チェックサムを照合できます。ブラウザー内で計算、アップロード不要です。
- Base64エンコード・デコードBase64・Base64urlのエンコードとデコードをUTF-8で正しく変換。日本語も文字化けしません。URLエンコード・デコードにも対応した無料ツールです。
- JSON整形・構文チェック・圧縮ツールJSONを貼り付けるだけで整形・構文チェック。エラーの行と列を日本語で表示し、インデント整形、1行に圧縮、キーの並べ替えもブラウザ内で完結します。
- 正規表現チェックツールJavaScriptの正規表現をその場でチェックできるテストツール。一致した箇所を色付きで表示し、キャプチャグループを一覧に、パターンの意味を1つずつ日本語で解説します。