UUID v7タイムスタンプ抽出

UUID v7の先頭48ビットに埋め込まれたミリ秒単位のタイムスタンプを、UUID文字列を貼り付けるだけでUTC日時に復元します。v7以外のバージョンやvariant異常も検出し、姉妹ツール「UUID v7生成」の逆変換として使えます。

UUID v7のビットレイアウト

ビット範囲 フィールド 説明
0-47 unix_ts_ms Unixエポックからのミリ秒数をビッグエンディアンで格納。本ツールが抽出する値。
48-51 version UUIDのバージョン番号。v7なら固定値0111(16進数で7)。
52-63 rand_a 12ビットのランダム値。同一ミリ秒内での順序保持に使われる実装もある。
64-65 variant RFC 4122/9562のvariantを示す固定値10。16進数では先頭が8/9/a/bになる。
66-127 rand_b 62ビットのランダム値。衝突回避のためのエントロピー。

UUID v7 のタイムスタンプ抽出とは

UUID v7 は2024年に RFC 9562 で標準化された新しい版で、先頭48ビットに「生成した時刻」がミリ秒単位の Unix タイムスタンプとして埋め込まれています。このためソートすると生成順に並び、データベースの主キーに使ってもインデックスが断片化しにくいという利点があります。このツールは UUID 文字列を貼り付けるだけで、その先頭48ビットを取り出して UTC の日時に復元します。

版(version)と variant も同時に判定します。v7 以外の UUID を入れた場合もタイムスタンプの計算自体は行い、「これは v7 ではない」という警告を添えて表示します。v4 のようにランダムな UUID では意味のない日時が出ますが、どの UUID にどんな情報が入っているのかを確かめる用途には役立ちます。ビット配置の表も併せて示すので、先頭48ビットの後ろに何が入っているかまで確認できます。処理はすべてブラウザー内で完結します。

UUID からタイムスタンプを取り出す手順

  1. UUID を貼り付ける 8-4-4-4-12 のハイフン区切り36文字の形式で入力します。大文字・小文字は問いません。
  2. 版と variant を確認する v7 であれば警告は出ません。v7 以外の場合は「v7 ではない」という警告が表示されます。
  3. 復元された日時を読む Unix ミリ秒・ISO 8601(UTC)・お使いの端末のローカル時刻の3つの形で表示されます。
  4. ビット配置の表で構造を見る 先頭48ビットのタイムスタンプに続いて、版・variant・乱数がどのビットに入るかを確認できます。

使いこなすためのヒント

  • 解析処理はすべてブラウザ内のJavaScriptで完結し、入力したUUIDがtoolbase.ccのサーバーに送信されることはありません。
  • データベースの主キーにUUID v7を採用している場合、レコードにcreated_atカラムが無くても、主キーを本ツールに貼り付けるだけでそのレコードが作成された時刻を復元できます。
  • v7以外のUUID(v4など)を入力すると警告が表示されますが、先頭48ビットから機械的に抽出した参考値は引き続き表示されるため、フォーマットの違いを学ぶ目的にも使えます。
  • UUIDを生成したい場合は姉妹ツールの「UUID v7生成」を使うと、本ツールでそのまま逆変換できる形式のUUIDが得られます。
  • ログファイルやAPIレスポンスに含まれるUUID v7を1件ずつ貼り替えることで、外部システムのイベント発生時刻を推定するデバッグにも活用できます。

こんなときに使えます

ログに残った UUID から発生時刻を割り出す

時刻カラムが無いログでも、主キーが v7 ならそこから生成時刻を復元できます。障害調査で前後関係を追うときに有効です。

主キーの生成順を確かめる

複数のレコードの UUID を順に入れれば、本当に生成順に並ぶ実装になっているかを確認できます。

v7 を採用するか検討する

実際に値を入れて何が取り出せるかを見ると、「時刻が外部から読める」という性質の意味が分かります。推測されて困る情報を含む場面では、この性質が欠点になります。

どの版の UUID か見分ける

受け取った UUID が v4 なのか v7 なのか、目視では判別しにくいものを即座に判定できます。

UUID の用語

UUID v7
RFC 9562 で標準化された版で、先頭48ビットに Unix ミリ秒のタイムスタンプを持ちます。時刻順にソートできることが v4 との最大の違いです。
version(版)
13桁目(ハイフンを除いた16進数の位置)に入る数字で、UUID の生成方式を表します。v7 ならここが 7 になります。
variant
版とは別に、UUID の内部レイアウトを示す値です。RFC 9562 に従う UUID では 17桁目が 8・9・a・b のいずれかになります。
Unix ミリ秒
1970年1月1日 00:00:00 UTC からの経過ミリ秒数です。48ビットあれば西暦10889年まで表現できます。
UUID v4 との違い
v4 は全体がほぼ乱数で、**生成時刻の情報を一切持ちません。** そのためソートしても生成順にはならず、代わりに時刻が外部から読めないという性質があります。

よくある質問

UUID v7はRFC 9562で標準化されており、128ビットのうち先頭48ビットにミリ秒単位のUnixタイムスタンプがビッグエンディアンで固定的に埋め込まれています。そのため先頭12桁の16進数を数値に変換し、ミリ秒として解釈するだけで生成時刻を復元できます。

UUID v4は完全ランダムな値のため、抽出された「タイムスタンプ」は実際の生成時刻とは無関係な意味のない数値になります。本ツールはバージョン桁を検査して警告を表示しますが、参考として先頭48ビットの機械的な抽出結果自体は引き続き表示します。

UUID v7の仕様上、精度はミリ秒単位です。同じミリ秒内で複数のUUID v7が生成された場合、先頭48ビットの値は同一になり、区別はrand_a・rand_bのランダム値に委ねられるため、それらの生成順序までは復元できません。

RFC 4122/9562準拠のUUIDは4番目のグループの先頭16進数字が8・9・a・bのいずれかになるよう定められています。この値がそれ以外(0-7・c-f)の場合、独自仕様のID生成ロジックやビット破損の可能性があるため警告を表示します。
ツールくん

余談ですが ― UUIDが「時計」を内蔵するということ

UUID v7が画期的なのは、識別子自体が生成時刻という情報を恒久的に保持する点です。従来のUUID v4では「いつ作られたレコードか」を知るには別途created_atのようなタイムスタンプカラムが必須でしたが、UUID v7を主キーに使っていれば、そのID文字列だけから生成時刻を機械的に復元できます。本ツールはその復元処理を、姉妹ツールであるUUID v7生成ツールの逆変換として提供しています。

この性質は障害調査やデータ移行の現場で特に役立ちます。例えば、古いログに残された注文IDや、外部システムから受け取ったイベントIDがUUID v7形式であれば、専用のタイムスタンプカラムを参照しなくても「このレコードは何時ごろ作られたものか」を即座に確認できます。created_atカラムが欠落している旧システムの調査や、他社が発行したUUID v7の解析にも応用できます。

一方で、この仕組みには注意点もあります。UUID v7のタイムスタンプはあくまで生成側のクロックに依存するため、生成元のサーバー時刻がずれていれば抽出結果もずれます。また本ツールがUUID v4のような他バージョンの値からも「タイムスタンプらしきもの」を機械的に抽出してしまうのは、あくまでビット位置の解釈にすぎず、意味のある値であることを保証するものではない点も踏まえて利用してください。