UltKit

UUID生成ツール

バージョン4のランダムなUUIDを1個から100個まで一度に作成し、リストとしてコピーできます。UUIDはブラウザの暗号論的に安全な乱数生成機能で作られます。貼り付けたUUIDのバージョンとバリアントを調べるチェッカーも使えます。

0 文字 · 0 語 · 0 行

すべてこのブラウザのタブ内で処理されます。テキストがアップロードされたり保存されたりすることはありません。

UUID のバージョン

バージョンは3番目のグループの先頭の数字、バリアントは4番目のグループの先頭の数字(RFC の UUID では 8、9、a、b)で示されます。例は RFC 9562 のテストベクターです。

バージョン生成方法例
v1グレゴリオ暦のタイムスタンプ + ノード(MAC)IDc232ab00-9414-11ec-b3c8-9f6bdeced846
v3名前空間 + 名前の MD5 ハッシュ5df41881-3aed-3515-88a7-2f4a814cf09e
v4122ビットの乱数919108f7-52d1-4320-9bac-f847db4148a8
v5名前空間 + 名前の SHA-1 ハッシュ2ed6657d-e927-568b-95e1-2665a8aea6a2
v6v1 のタイムスタンプを並べ替え、時刻順にソートできるようにしたもの1ec9414c-232a-6b00-b3c8-9f6bdeced846
v7Unix ミリ秒 + 乱数、ソート可能017f22e2-79b0-7cc3-98c4-dc0c0c07398f
v8アプリケーションが定義する独自のレイアウト2489e9ad-2ee2-8e00-8ec9-32d5f69181c0

UUIDとは?構成と読み方

UUID(Universally Unique Identifier。Microsoft製ソフトウェアではGUIDと呼ばれます)は128ビットの数値で、32桁の16進数を8-4-4-4-12の形に区切って表記します。例: f47ac10b-58cc-4372-a567-0e02b2c3d479。2005年にRFC 4122として標準化され、2024年5月にRFC 9562に置き換えられました。RFC 9562は従来のバージョンをそのまま残し、新たに3つのバージョンを追加しています。位置が固定されている箇所が2つあります。3番目のグループの先頭の桁がバージョン(4372の4)で、4番目のグループの先頭の桁がバリアントを示します。RFCに準拠するUUIDでは、この桁は必ず8、9、a、bのいずれかです。

バージョン4は、残りの122ビットをランダムなデータで埋めます。取りうる値の数が非常に大きいため、重複が1組でも出る確率が50%になるには、約2.7×10¹⁸(270京)個を生成する必要があります。そのため、複数のマシンが互いに調整せず、それぞれ独立にv4のIDを生成できます。このページではcrypto.randomUUIDを使い、利用できない環境ではcrypto.getRandomValuesを使います。出力が予測不能になるよう設計されていないMath.randomは使いません。大文字とハイフンなしのオプションが変えるのは表記だけで、値は同じです。ほとんどのパーサーは大文字・小文字のどちらも受け付けます。

v4、v7とその他のバージョン

バージョン1と6は、タイムスタンプとノードIDから作られます。ノードIDは元々コンピューターのMACアドレスで、IDがどこで、いつ作られたかが漏れてしまいます。バージョン3と5は、名前空間と名前をMD5またはSHA-1でハッシュするため、同じ入力からは常に同じUUIDが得られます。バージョン8は独自の方式向けに自由に構成できる形式です。中でも最も重要な新顔がバージョン7です。先頭に48ビットのUnixタイムスタンプ(ミリ秒)を置き、残りをランダムなビットで埋めるため、IDが作成時刻順に並びます。

この順序性こそ、データベースの主キーにv7を検討する理由です。ランダムなv4のキーはB-treeインデックスのあちこちに挿入されるため、テーブルが大きくなるとページ分割が起き、キャッシュの局所性も悪化します。一方v7のキーは、自動採番の列のようにおおよそ増加する順で入ってくるうえ、中央のカウンターなしで生成できます。作成時刻を含め何も明かさないIDが欲しい場合はv4を、挿入性能や時刻順が重要な場合はv7を選んでください。UUIDは識別子であり、秘密情報ではありません。パスワードやAPIシークレットには専用のパスワード生成をご利用ください。ほかのエンコーダーや検査ツールは開発者向けツールにあります。

よくある質問

ランダムに生成したUUIDが重複することはありますか?
理論上は起こりえますが、現実にはまず起こりません。ランダムな122ビットなら、毎秒10億個のv4 UUIDを約86年生成しても、1組でも衝突する確率は約50%にすぎません。ただし、乱数源が適切であることが前提です。
UUIDとGUIDの違いは何ですか?
実質的な違いはありません。GUIDは、同じ128ビットの識別子に対するMicrosoftでの呼び名です。Microsoftのツールには、GUIDを大文字や波括弧付きで表示するものがありますが、ここのチェック機能はその形式も受け付けます。
UUIDのバージョンはどうやって見分けますか?
3番目のグループの先頭の桁を見てください。4ならランダム、7なら時刻順、1ならタイムスタンプとノードの組み合わせです。UUIDを確認する機能に貼り付けると、バージョンとバリアントが表示されます。
データベースのキーにはv4ではなくUUIDv7を使うべきですか?
多くの場合は有効です。v7のキーは時刻順に並ぶため、B-treeインデックスがコンパクトに保たれ、挿入も高速です。v7のIDに埋め込まれる作成時刻を非公開にしたい場合は、v4を使い続けてください。
UUIDをパスワードリセット用のトークンに使っても安全ですか?
安全な生成器で作ったv4 UUIDは122ビットのランダム値を持つため、推測されにくさは十分です。ただし、有効期限を明示できる専用のトークン関数を用意しているライブラリも多くあります。v1やv7のような時刻ベースのバージョンは、秘密情報として絶対に使わないでください。