本文へスキップ

UUID生成ツール(v4・v7)ベータ

UUIDのバージョン4とバージョン7を好きな数だけ生成し、貼り付けたUUIDのバージョン・バリアント・(v7なら)生成時刻まで確認できます。すべてブラウザ内で完結します。

UUIDを生成

バージョン
一度に1〜1000個まで生成できます。

生成結果

UUID解析

使い方

バージョンを選び、生成する個数(1〜1000個)を指定して「生成する」を押すと、ブラウザ内でUUIDが生成されます。大文字、ハイフンなし、中括弧のオプションを切り替えるとその場で表示形式が変わり、すべてコピーするか.txtファイルとしてダウンロードしてそのまま使えます。下のUUID解析に1つのUUIDを貼り付けると、バージョン、バリアント、そしてバージョン7であれば埋め込まれた生成時刻まで確認できます。

バージョン4とバージョン7の違い

バージョン4は固定されていない122ビットすべてを暗号学的に安全な乱数で埋めるため、値だけからは何も推測できません。一方で並び順を持たないため、データベースの主キーに使うとインデックス内のあちこちにランダムに挿入され(局所性がなく)、B-treeのページ分割が頻発してキャッシュヒット率が下がります。バージョン7は先頭48ビットにミリ秒単位の生成時刻をそのまま持つため、値自体が生成順に並びます。主キーに使うと新しい値は常にインデックスの末尾に追加されるため、ページ分割が減りキャッシュヒット率も高まります。どちらのバージョンもRFC 9562標準に従っており、ランダムな部分はこのツールでもブラウザの暗号学的乱数関数(crypto.getRandomValues)で生成します。

同じミリ秒内でも並び順が保たれる理由

バージョン7にはタイムスタンプの直後に12ビットの余白(rand_a)があり、このツールは同じミリ秒内で複数生成するときにこの値を1つずつ増やします。そのため一度に複数生成しても、文字列としてそのまま並べ替えた順序が実際の生成順序と一致します。

重複する可能性

バージョン4は122ビットのランダム空間を使うため、1秒間に10億個生成しても偶然同じ値になる確率は事実上ゼロです(誕生日問題で計算しても、衝突確率が50%に達するには10の18乗個以上の生成が必要です)。バージョン7はランダム部分が74ビットとやや小さいものの、同じミリ秒内ではカウンターで値を区別するため、このツールで生成している間に重複することはありません。

プライバシー

UUIDはこのブラウザの中だけで生成され、サーバーには送信されません。ただしバージョン7のUUIDは生成時刻をそのまま含んでいるため、時刻を知られたくない値(匿名のままにしたい識別子など)にはバージョン4を使うのが安全です。

参考資料

よくある質問

UUID v4とv7、どちらを使えばいいですか?

データベースの主キーのように並び順や挿入性能が重要な場合はv7を、値だけから生成時刻を推測されたくない場合はv4を使ってください。どちらのバージョンも衝突する確率は事実上無視できるほど低いです。

生成したUUIDが偶然重なることはありますか?

理論上はあり得ますが、確率は極めて低いです。v4は122ビットのランダム空間を使い、このツールがv7を生成する際も同じミリ秒内ではカウンターを1ずつ増やすため、一度の生成中に重複することはありません。

v7のタイムスタンプから正確な生成日時がわかってしまいますか?

はい。先頭48ビットに1970年1月1日からのミリ秒数がそのまま入っているため、解析ツールに貼り付けると生成された日付と時刻がそのまま表示されます。そのため、生成時刻を隠したい値にはv7ではなくv4をおすすめします。

ハイフンなしや中括弧のオプションはどんなときに使いますか?

ハイフンを除いた32桁の形式はファイル名や一部のデータベースの列に使いやすく、中括弧で囲んだ形式は主にWindowsレジストリやCOMコンポーネントのGUID表記で使われます。