UUIDとは何か?平易な言葉での説明
公開日 2026-07-15
UUIDはソフトウェア、データベースのキー、APIトークン、ファイル名などに頻繁に登場しますが、その説明は概念そのものよりも混乱を招くことがよくあります。ここでは簡潔なバージョンを紹介します。
平易な言葉での定義
UUID(汎用一意識別子)は128ビットの数値で、通常は32個の16進数文字を5つのグループに分けて表記されます。例えば f47ac10b-58cc-4372-a567-0e02b2c3d479. のように。その唯一の目的は、中央機関が一意の番号を配布する必要なしに、いつ、どこで、誰によって生成された他のUUIDとも衝突する可能性が天文学的に低い識別子として機能することです。
単純に連番を使わない理由
データベースの自動増分ID(1、2、3……)は単一のデータベース内では非常にうまく機能しますが、複数のシステム間で一意性が必要になった瞬間に破綻します。2つの別々のデータベースがそれぞれ独立して「注文番号4521」を生成し、後でそのデータを統合する必要がある場合、衝突が発生します。UUIDは、調整を必要とせず独立して生成されながらも、実質的には一意であり続けることでこの問題を解決します。これが、データベースの主キー、APIリクエストID、セッショントークン、ファイル名、分析イベントの追跡IDなど、分散システムのあらゆる場所にUUIDが存在する理由です。
一意性は実際どのように保証されているのか
絶対的な数学的な意味で保証されているわけではなく、「絶対に起こらない」という実用的な意味で保証されています。最も一般的なバージョンであるUUID v4は、ほぼ完全にランダムなビットから生成されます。128ビットのうち122ビットがランダムで、残りの6ビットはv4のUUIDであることを示すために固定されています。これほどのランダム性があれば、単一の衝突が発生する確率が50%に達するまでに生成する必要があるUUIDの数は、約271京(2.71×10¹⁸)個です。仮に毎秒10億個のUUIDを生成し続けたとしても、10億分の1の衝突確率に達するまでにはおよそ85年かかります。実質的にあらゆる実用目的において、これは不可能に等しいと言えます。
UUIDのバージョン、簡単に
UUIDには生成方法が異なるいくつかのバージョンがあります。バージョン1はタイムスタンプに加えて、生成元のコンピュータのネットワークハードウェアアドレスに基づいています(いつどこで生成されたかという情報が漏れる可能性があるため、今日ではほとんど使われていません)。バージョン4はほぼ完全にランダムで、特別な入力を必要とせず、由来に関するメタデータも持たないため、現代のソフトウェアで圧倒的に最も一般的です。バージョン5は、ハッシュ関数を使ってネームスペースと名前から決定論的に生成されるため、同じ入力からは常に同じUUIDが得られます。新しいランダムな識別子ではなく、既存のデータから導出された安定した識別子が必要な場合に便利です。
実際にいつ生成する必要があるのか
よくあるケース:データベースが割り当てるのを待たずに新しいデータベースレコードに一意のIDを割り当てる、既存のファイルを上書きしないように一意のファイル名を生成する、使い捨てのAPIキーやセッショントークンを作成する、実際の本番データと衝突しないことが保証されたIDでテストデータのバッチにタグを付ける、などです。「今すぐ、調整なしで、一意の識別子」が必要などんな場面でも、UUIDは通常最もシンプルな答えです。