メインコンテンツへスキップ
Tooletto

UUIDジェネレーター

ランダムなUUIDを生成します — 汎用にはバージョン4、データベースに効率的にインデックスされる時間順の識別子にはバージョン7です。1つでも1000でも一度に生成でき、すべてローカルで行われます。

  • ファイルは端末の外に出ません
  • 無料、登録不要
  • 透かしなし
  • 一度読み込めばオフラインでも動作します
Loading tool…

UUIDジェネレーターの使い方

  1. 1

    バージョンを選ぶ

    汎用のランダムIDにはv4、IDがデータベースの主キーになる場合はv7です。

  2. 2

    個数を設定

    1つから1000まで一度に生成します。

  3. 3

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

    リストをクリップボードにコピーするか、テキストファイルとしてダウンロードします。

UUIDが実際に解決すること

UUIDは、次に利用可能な番号を割り当てる中央調整機関なしで、任意の数の別々のシステムによっていつでも独立して生成されるよう設計された128ビットの識別子であり、それでいて2つの生成された値が決して衝突しないという圧倒的な統計的保証を持っています。これは、次の番号を順番に追跡して割り当てるために単一のデータベースを必要とする自動増分の整数IDとは根本的に異なります — UUIDは、ネットワーク接続のないスマートフォン上、サーバーレス関数の中、あるいは千の並行マイクロサービスインスタンス全体で、それらの間でまったく調整を必要とせずに同時に生成できます。数の空間の単なる大きさが、独立して生成される数にかかわらず偶発的な衝突を天文学的にありそうにないものにするためです。

v4とv7がどちらも「ランダム」なのに異なる問題を解決する理由

UUIDバージョン4は本質的に128ビット全体を暗号学的にランダムなデータで埋め、これにより生成される各値は完全に予測不可能になり、それがいつ作られたか、あるいは他のどのUUID v4との相対的な順序についても一切のヒントを与えません — セキュリティトークンのようなものにとってはまさに望ましい性質であり、予測可能性自体が脆弱性になってしまうものです。RFC 9562(2024年)でずっと最近標準化されたUUIDバージョン7は、その不透明性の一部を意図的に犠牲にします: 先頭ビットにミリ秒精度のタイムスタンプを配置するため、後で生成されたUUID v7は常に前に生成されたものより後ろに並びますが、残りのビットはv4と同じくランダムで推測不可能なままです。この2つは、片方が単純に「優れている」競合するデザインではありません — 順序付けか均一な予測不可能性のどちらが特定のユースケースで本当に重要かに応じて、同じ基礎となるランダム性を異なる性質と交換しているのです。

ランダムな主キーを持つデータベースが成長するにつれ遅くなる理由

主キーを支えるデータベースインデックスは通常B-treeとして保存されます。これは新しい値が既存のソート順の最後またはその近くに挿入されるときに最もよく機能する構造であり、まさに従来の自動増分整数キーが振る舞う方法です。均一にランダムなUUID v4の主キーは、毎回そのソートされた構造内の効果的にランダムな位置に挿入され、データベースは最後にただ追加するのではなく、木全体に散らばったインデックスページを繰り返し分割・再バランスすることを強いられます。小規模ではこのオーバーヘッドは見えませんが、数百万行の規模になると、これはインデックス断片化と書き込みの遅延の本物の測定可能な原因になります — まさにこれが、UUID v7の先頭タイムスタンプが特に解決するために標準化された問題であり、UUIDが一意で推測不可能なIDを維持しながら、なおおおよそ連続した順序で挿入され続けることを可能にします。

よくある質問

UUID v4とv7の違いは何ですか?

v4は完全にランダムです。v7は先頭ビットにミリ秒単位のタイムスタンプを設定するため、後で生成されたIDは前のものより後ろに並びます。どちらも実務上は同じように推測不可能です。v7は加えてたまたま順序付けられています。

データベースの主キーにはどちらを使うべきですか?

v7です。ランダムなv4キーはB-treeインデックス全体に挿入を分散させ、断片化させ、大規模での書き込みを大きく遅くします。v7キーは順序どおりに追加されるため、挿入は連続したままです — これが2024年にv7が標準化された理由です。

2つのUUIDが同じになることはありますか?

数学的には可能ですが、実務上はありません。UUID v4は122のランダムビットを持ちます — 衝突がありそうになる前に約2.7×10^18個生成する必要があります。比較として、これは地球上の砂粒の数より多いUUIDです。

安全に生成されますか?

はい。`Math.random`ではなく、オペレーティングシステムの暗号学的ランダムソースである`crypto.getRandomValues`を使います。これはUUIDが共有リンク、退会URL、パスワードリセットキーのような能力トークンとして使われる場合に重要です。

UUIDとGUIDは同じものですか?

はい。GUIDは同じ128ビット識別子のMicrosoftによる名称です。見つかる唯一の違いは形式です: Microsoftのツールはしばしばそれらを波括弧で囲み大文字を使います。どちらもこのツールが生成できる形式です。

UUIDジェネレーターのよくある使い方