UUIDジェネレーター

次へ

UUIDは、中央機関と連携することなく、グローバルに一意な識別子を提供します。このジェネレーターは、RFC 4122に準拠したv1(タイムスタンプ+MAC)、v4(ランダム値)、およびv7(タイムスタンプが先頭に付く並べ替え可能な形式)の値を生成します。バージョンを選択し、1個または1000個を要求して、そのリストをシードデータ、APIキーの生成、またはユニットテストにコピーしてください。

UUIDを生成する方法

  1. 1

    バージョンを選択してください

    一般的なランダム数値にはv4、並べ替え順序が重要な場合はv7、タイムスタンプ情報が必要な場合はv1を使用します。

  2. 2

    数量を選択

    1つのUUID、または1回の実行で最大10,000件までのバッチ。

  3. 3

    生成

    値はブラウザの暗号APIを使用して暗号学的なランダム性を実現しています。

  4. 4

    コピーまたはダウンロード

    改行区切りのリスト、JSON配列、またはCSVとして取得できます。

どのUUIDバージョンを使うべきか?

バージョン 構造 最適な用途
v1 タイムスタンプ + クロック + MACアドレス 時系列が必要なログID
v4 122ビットのランダム値 汎用的な一意ID、テストフィクスチャ
v7 Unixタイムスタンプ(ミリ秒)+ランダム値(ソート可能) データベースの主キー

なぜv7がデフォルトになりつつあるのか

v4はランダムなため、データベースの主キーとしては非常に不向きです。挿入がBツリー全体に分散し、書き込みスループットを損ないます。v7(2024年にRFC 9562で確定)はUUIDの先頭に48ビットのミリ秒タイムスタンプを付加するため、新しい行はインデックスの末尾に配置されます。一意性と無調整という利点はそのままに、加えて作成時刻順のおおまかなソート順も得られます。

フォーマットのルール

UUIDは128ビットで、8-4-4-4-12のパターンに従い32桁の16進数として表現されます。

018f5b9c-7d4a-7a1b-8c0e-2e1b3c4d5e6f
         ^^                ^
         バージョンニブル    バリアントビット
  • バージョンニブルは13番目の文字(018f5b9c-7d4a-の直後)です。v4では4、v7では7などになります。
  • バリアントビットは17番目の文字の最初の2ビットです。RFC 4122準拠のUUIDでは10(上位ニブルが8/9/a/b)になります。

衝突の確率

v4では、重複が生成される確率は極めて小さく、衝突が50%の確率で起こるまでには2.7京(2.7 × 10¹⁸)個のUUIDを生成する必要があります。これはほとんどのデータベースが生涯に扱う量をはるかに超えています。v7はランダムな末尾部分を共有しているため、同一ミリ秒内における衝突の確率はv4と同等です。

よくある質問

かつては該当しました。生成元ホストのMACアドレスが埋め込まれていたためです。最新のジェネレーター(本ツールを含む)はランダムな48ビットのノードIDで代替するため、v1がハードウェアを明らかにすることはもうありません。

CSPRNG(本ツールはcrypto.getRandomValuesを介して使用)で生成されたv4は予測不可能性が十分に高く、セッショントークンとしても利用できます。ただしUUID自体は本質的に秘密ではありません。秘密が必要な場合は、それを明確に秘密として扱ってください。

はい、URLセーフです(16進数とハイフンのみ)。より短く表示したい場合は、生の128ビットをbase-32やbase-62でエンコードするか、26文字でv7と同様にソート可能なULIDの利用を検討してください。

いいえ。生成はブラウザ内で行われ、値がサーバーに送信されることは一切ありません。

関連ツール

このツールは他の言語でも利用できます