← すべてのツール

UUID生成器(v4 GUID)— speedor.net

ブラウザでランダムなv4 UUID(GUID)を即時生成。128ビットUUIDの仕組み、バージョンの違い、衝突確率、用途についてわかりやすく解説します。

UUIDとは何か

UUID(Universally Unique Identifier、汎用一意識別子)とは、誰かに許可を求めることなく何かにラベルを付けるために使われる128ビットの値です。GUIDという呼び方も見かけますが、これはMicrosoftがWindowsや.NETの世界で同じ概念に与えた名前です。2つの用語はほぼすべての実用的なケースで同じ128ビットの数値を指しており、同僚がGUIDと言い、あなたがUUIDと言っても、ほぼ確実に同じものを指しています。

この128ビットは通常、32桁の16進数をハイフンで5グループに区切った形式で表記されます。8-4-4-4-12というパターンで、典型的な値は 123e4567-e89b-12d3-a456-426614174000 のようになります。ハイフン自体に意味はなく、人間が値を見失わずに読めるようにするためだけに存在します。すべての文字は0からfの16進数字で、UUID が普通の数値より密に見えるのは、内部的には非常に大きな1つの整数にすぎないからです。

暗いインディゴの背景に輝く128ビット識別子を表す抽象的な16進トークン
UUIDは1つの128ビット数値で、32桁の16進数を5つのグループにハイフンで区切って表記します。

バージョンと、なぜv4が主流なのか

規格にはいくつかのバージョンが定義されており、ビットの埋め方が異なります。バージョン1は時刻ベースで、現在のタイムスタンプとマシンのネットワークMACアドレスを組み合わせます。v1の値は生成時刻でソートできますが、どこでいつ作られたかという情報が漏洩するため、常に歓迎されるわけではありません。バージョン3と5は名前ベースで、名前空間と名前をハッシュ化するため、同じ入力は常に同じ識別子を生成します。

バージョン4はまったく異なるアプローチをとります。ほぼ純粋なランダム性です。128ビットのうち6ビットはバージョンとバリアントを示すために予約されており、残り122ビットがランダムデータで埋められます。タイムスタンプもMACアドレスも名前空間もなく、ただのランダム値です。これが、このツールを含むほとんどのジェネレーターがデフォルトでv4を生成する理由です。デバイスや生成時刻に関する情報を何も公開せず、生成する当事者間の調整も不要です。このページのツールはブラウザ内で完全に動作するため、ランダムな値があなたのマシンから出ていくことはありません。

衝突がいかに起こりにくいか

合理的な懸念として、2つのランダムなUUIDがいつか一致するかもしれないという点があります。122ビットのランダム性があれば、可能なv4値の空間は2の122乗、つまり5.3の後ろに36個の0が続く数です。人間的な感覚で言えば、何十年もの間、毎秒何十億ものUUIDを生成し続けて、ようやく重複の可能性が測定できる水準に達するという規模です。規格自体も衝突の可能性を無視できるほど小さいと説明しています。実際、チームはv4を一意として扱い先に進みますが、それは正しい判断です。

広大な暗い空間に無数の異なる輝く鍵が浮かび、シアンとゴールドのアクセント、重複なし
可能なv4値のプールは非常に広大で、衝突は実質的に不可能です。

開発者が使う場面

一意性に中央機関が不要なため、UUIDは調整が高価または不可能な場面で真価を発揮します。特に複数のサービスがそれぞれ行をINSERTし、共有カウンターに次の番号を問い合わせる暇がない場合のデータベース主キーとして最適です。分散システムでは、地球の反対側にある2つのノードが同じ瞬間に識別子を生成しても衝突しません。APIのべき等キーにも活用され、クライアントがリクエストにUUIDを添付することで、ネットワークが再試行した場合にサーバーが重複を安全に無視できます。セッショントークン、ファイル名、イベントID、メッセージキーもすべて同じ特性を活用しています。

UUIDと自動インクリメントIDの違い

古典的な代替手段は自動インクリメント整数、つまり1、2、3という連番です。連番IDはコンパクトで自然にソートでき、読みやすいですが、実際のデメリットもあります。レコード数が外部に露出し、隣接する値を推測されやすく、すべてのINSERTが単一のカウンターを通過するため、データベースをシャーディングしたり複数ソースからデータをマージしたりするとボトルネックになります。UUIDはどの当事者も独立してキーを生成でき、ボリュームや順序に関する情報を公開しないことでこれらの問題を解決します。トレードオフはサイズとインデックスの局所性が若干低下することです。スケールアウトするシステムや内部情報を隠す必要があるシステムでは、そのトレードオフは通常価値があります。全ジェネレーターコレクションでこれや関連するユーティリティを探したり、開発者ツールで関連するビルディングブロックを見てみましょう。

よくある質問

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

日常的な用途ではほぼ同じです。GUIDはMicrosoftが同じ128ビット識別子に付けた名前です。一部のWindowsシステムでのバイナリ形式でのバイト順に実質的な違いがあるだけで、文字列形式では同一かつ互換性があります。

このツールはどのバージョンのUUIDを生成しますか?

バージョン4(ランダム型)を生成します。128ビットのうち122ビットがランダムデータで埋められるため、値が繰り返す可能性は極めて低く、タイムスタンプやデバイス情報も含まれません。

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

理論上、確率は厳密にはゼロではありませんが、v4の可能な値が約5.3×10の36乗あるため、無視できるほど小さい値として扱われます。衝突が起こりうる水準になるまでには天文学的な数を生成する必要があります。

なぜ自動インクリメント数値の代わりにUUIDを使うのですか?

UUIDは共有カウンターなしにどのサービスでも独立して生成でき、レコード数や順序を公開せず、複数ソースからのデータマージを簡単にします。自動インクリメントIDはサイズが小さいですが、スケール時にボトルネックになり情報が漏洩します。

UUIDはサーバーで生成されますか?

いいえ。このツールはブラウザ内で完全に動作するため、ランダムな値はローカルで生成され、どこにも送信されません。プライベートに保ちたいキーやトークンに安全に使用できます。

ハイフンのパターンは何を意味しますか?

8-4-4-4-12のグループ分けは可読性のための慣例にすぎません。ハイフン自体にデータはなく、32桁の16進数をチャンクに分割することで、人間が値をスキャンして比較しやすくするためだけに存在します。