UUIDの仕組みと生成方法
このジェネレーターの役割
UUID(汎用一意識別子)は128ビットの値で、8-4-4-4-12というおなじみの形式に沿って32桁の16進数で表記します。例えば 550e8400-e29b-41d4-a716-446655440000 のような形です。このツールは必要なときに RFC 4122 準拠の識別子を生成し、バージョン4かバージョン1を選んで一度に最大100件までまとめて作成できます。
ハイフンの有無を切り替えたり、小文字と大文字を選んだりできるため、データベースの列やAPIの仕様、既存のコードが求める書式にそのまま合わせられます。
UUIDが向いている場面
UUIDは、連番を配る中央の管理者なしに識別子を独立して発行したいときに役立ちます。代表的な用途は、分散データベースの主キー、サービスをまたいでリクエストを追跡する相関ID、API呼び出しの冪等キー、決して衝突してはならないファイル名、クライアント側で発行するオブジェクトやセッションの参照などです。
2台のマシンが調整なしで同時に識別子を生成できるため、UUIDはマイクロサービスやオフラインファーストのアプリ、イベントパイプラインに特によく馴染みます。
バージョン4とバージョン1の違い
バージョン4は、ブラウザの crypto.randomUUID と Web Crypto API から得た暗号的に強い乱数でほぼすべてのビットを埋めます。そのため識別子は予測できず、いつどこで作られたかも一切明かしません。多くの場面ではこちらが推奨の選択です。
一方バージョン1は、現在のタイムスタンプにノード識別子とクロックシーケンスを組み合わせて値を作ります。生成順におおよそ並べ替えられる反面、その時刻が露出します。予測不可能性が重要ならv4を、おおまかな時系列の順序が役立つならv1を選んでください。
書式と衝突の確率
どちらのバージョンも標準の 8-4-4-4-12 という並びを保ち、バージョンを示す数字は3番目のグループの先頭に置かれます(4か1)。v4の強さは122ビットの乱数にあります。取りうる値は 5×10^36 を超えるため、何十億件の識別子を生成しても、そのうちの2つが一致する確率は実質的に無視できるほど小さいままです。
ハイフンを外すと32文字のコンパクトな文字列になり、URLやキーに使いやすくなります。大文字での出力は、識別子をその形で保存するシステムに合致します。