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 からタイムスタンプを取り出す手順
- UUID を貼り付ける 8-4-4-4-12 のハイフン区切り36文字の形式で入力します。大文字・小文字は問いません。
- 版と variant を確認する v7 であれば警告は出ません。v7 以外の場合は「v7 ではない」という警告が表示されます。
- 復元された日時を読む Unix ミリ秒・ISO 8601(UTC)・お使いの端末のローカル時刻の3つの形で表示されます。
- ビット配置の表で構造を見る 先頭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が「時計」を内蔵するということ
UUID v7が画期的なのは、識別子自体が生成時刻という情報を恒久的に保持する点です。従来のUUID v4では「いつ作られたレコードか」を知るには別途created_atのようなタイムスタンプカラムが必須でしたが、UUID v7を主キーに使っていれば、そのID文字列だけから生成時刻を機械的に復元できます。本ツールはその復元処理を、姉妹ツールであるUUID v7生成ツールの逆変換として提供しています。
この性質は障害調査やデータ移行の現場で特に役立ちます。例えば、古いログに残された注文IDや、外部システムから受け取ったイベントIDがUUID v7形式であれば、専用のタイムスタンプカラムを参照しなくても「このレコードは何時ごろ作られたものか」を即座に確認できます。created_atカラムが欠落している旧システムの調査や、他社が発行したUUID v7の解析にも応用できます。
一方で、この仕組みには注意点もあります。UUID v7のタイムスタンプはあくまで生成側のクロックに依存するため、生成元のサーバー時刻がずれていれば抽出結果もずれます。また本ツールがUUID v4のような他バージョンの値からも「タイムスタンプらしきもの」を機械的に抽出してしまうのは、あくまでビット位置の解釈にすぎず、意味のある値であることを保証するものではない点も踏まえて利用してください。