UUID v7 生成

RFC 9562で標準化された、先頭48ビットにミリ秒タイムスタンプを持つ時刻順ソート可能な新しいUUID「UUID v7」をブラウザ上で一括生成します。標準・大文字・ハイフンなし・波括弧付き・URN形式にも対応し、既存のUUID型カラムにそのまま保存できます。

UUID v7・UUID v4・ULIDの比較

形式 長さ 生成順に並べ替え可能か 既存UUID型カラムとの互換性 説明
UUID v7 36文字(ハイフン4個含む) はい(先頭48ビットがミリ秒タイムスタンプ) あり(標準のUUID型・16進数表記のまま) RFC 9562で標準化。Unixタイムスタンプ + ランダム値で構成され、時刻順ソートと既存UUID資産との互換性を両立する。本ツールが生成する形式。
UUID v4 36文字(ハイフン4個含む) いいえ(完全ランダム) あり(標準のUUID型) RFC 9562で標準化された完全ランダムな128ビットの識別子。生成元の情報を含まず、最も広く使われている形式。
ULID 26文字 はい(先頭10文字がタイムスタンプ) なし(Base32のため別途型変換が必要) UUID標準(RFC 4122/9562)とは独立したCrockford Base32形式の規格。UUID v7より短いが、既存のUUID型カラムには直接保存できない。

使い方のヒント

  • 生成したUUID v7はブラウザ内のJavaScript(Web Crypto API)で処理され、toolbase.ccのサーバーには一切送信されません。
  • UUID v7は先頭48ビットがミリ秒単位のUnixタイムスタンプのため、生成した順に文字列としてソートするだけで時系列順に並び替えられます。
  • 既存のUUID v4用データベースカラム(CHAR(36)やPostgreSQLのuuid型など)にそのまま保存できるため、アプリケーション側の型変更なしに移行できます。
  • 「ハイフンなし」形式はURLのパスセグメントやファイル名として使う際に便利です。「波括弧付き」形式はWindowsのCOM/レジストリ関連(GUID)で使われる形式と同じです。
  • ULID(Crockford Base32・26文字)とどちらを使うか迷ったら、既存システムがUUID型カラムを前提にしているならUUID v7、短い文字列を優先するならULIDを選ぶとよいでしょう。

よくある質問

最も大きな違いは時刻順にソート可能かどうかです。UUID v4は完全ランダムな128ビットの値のため生成順にソートできませんが、UUID v7は先頭48ビットがミリ秒単位のUnixタイムスタンプのため、文字列比較だけで生成時刻の順序が分かります。

両方とも時刻順にソート可能という点は共通していますが、表記形式が異なります。UUID v7は既存のUUID型カラム・ライブラリとの互換性を保ったまま移行できるのに対し、ULIDは26文字のCrockford Base32というより短い独自形式です。既存システムがUUID型を前提にしているならUUID v7、新規システムで文字数を短くしたいならULIDが適しています。

2024年5月にIETFのRFC 9562として正式に標準化されました。これによりUUID v1〜v5に加えて、再配置タイムスタンプ方式のv6と、Unixタイムスタンプ方式のv7が新たに標準仕様へ追加されました。

はい。UUID v4のような完全ランダムな値は挿入位置がインデックス内でランダムになりB-treeインデックスの断片化を招きやすいですが、UUID v7は時刻順に並ぶため新しい行がインデックスの末尾付近に追加されやすく、挿入性能が向上します。PostgreSQL 18では標準でuuidv7()関数が追加されるなど、主要データベースでの対応も進んでいます。
ツールくん

余談ですが ― UUIDに「時刻」を取り戻したUUID v7

UUID v7は2024年5月にIETFのRFC 9562として標準化されました。これはUUIDの元となる仕様であるRFC 4122(2005年)以来約20年ぶりの大規模改訂で、時刻順にソート可能なv6・v7、そしてカスタムフィールドを扱えるv8が新たに追加されました。背景には、UUID v4の完全ランダム性がデータベースのインデックス効率にとって不利であるという、長年指摘されてきた課題があります。

UUID v7の設計は本サイトの姉妹ツールであるULIDと非常によく似ています。どちらも先頭にミリ秒単位のタイムスタンプを持ち、残りをランダム値で埋めるという構造は共通していますが、決定的な違いは表記形式です。ULIDはUUID標準とは独立した規格として26文字のCrockford Base32を採用しているのに対し、UUID v7はRFC 4122以来の36文字・16進数表記を維持しています。この違いにより、UUID v7は既存のUUID型カラム・ライブラリ・API仕様をそのまま使い続けられるという大きな利点があります。

実際、UUID v7は登場から間もなく主要なデータベース・言語ランタイムでのサポートが広がりました。PostgreSQLはバージョン18でuuidv7()関数を標準搭載し、他の主要言語・ORMでもv7生成に対応するライブラリが急速に増えています。「時刻順にソートできる」という利便性と「既存のUUID資産を壊さない」という保守性を両立できる点が、UUID v7がULIDと並んで急速に採用を広げている理由です。