Max UUID (全ビット1)

RFC 9562で新たに導入されたMax UUID(ffffffff-ffff-ffff-ffff-ffffffffffff)を解説。128ビットすべてが1のセンチネル値の目的と活用法を紹介します。

Format

詳細な説明

Max UUIDはRFC 9562(2024年5月)で新たに導入された特別なUUIDで、128ビットすべてが1に設定されています:ffffffff-ffff-ffff-ffff-ffffffffffff。Nil UUIDの上限バウンド版として、UUID範囲の最大値にセンチネル値を提供します。

バイナリ表現:

11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111

バージョンとバリアント: Nil UUIDと同様に、Max UUIDは標準のバージョンやバリアントのエンコーディングに準拠しません。バージョンビット(ビット48-51)は 1111、バリアントビットは 11 であり、RFC 4122のバリアント空間の範囲外です。RFC 9562に対応したUUIDパーサーはこれを特別なケースとして認識すべきです。

Max UUIDがなぜ必要だったか: RFC 9562以前には、標準化された「最大」UUIDが存在しませんでした。範囲クエリ、ページネーションカーソル、境界マーカーに上限バウンドのセンチネルが必要な開発者は、独自の慣習を作る必要がありました。Max UUIDはこのパターンを標準化します。

実用的な活用例:

  • 範囲クエリ: Nil UUIDを下限、Max UUIDを上限として全レコードを選択:WHERE id >= '00000000-...' AND id <= 'ffffffff-...'
  • ページネーション: カーソルベースのページネーションにおける「結果の終了」マーカーとして使用
  • ソート境界: UUIDを辞書順にソートした場合に確実に最後になる値として機能
  • テスト: UUID処理を検証するユニットテストの境界値として有用

コード例:

const MAX_UUID = 'ffffffff-ffff-ffff-ffff-ffffffffffff';
const NIL_UUID = '00000000-0000-0000-0000-000000000000';

// Range check
function isWithinRange(uuid) {
  return uuid >= NIL_UUID && uuid <= MAX_UUID;
}
import uuid
max_uuid = uuid.UUID(int=(1 << 128) - 1)
# or uuid.UUID('ffffffff-ffff-ffff-ffff-ffffffffffff')

互換性に関する注意: RFC 9562以前に作成された古いUUIDライブラリは、バージョンとバリアントのビットがどの既知バージョンとも一致しないため、Max UUIDを無効として拒否する場合があります。この問題が発生した場合は、ライブラリのアップデートを確認するか、特別なケース処理を追加してください。2025年時点で主要なライブラリのほとんどは更新済みです。

ユースケース

Max UUIDは、カーソルベースのページネーションシステムにおける標準化された上限バウンドのセンチネルとして機能し、APIがnullやカスタムマーカーを使わずに「結果の終了」を伝達できるようにします。

試してみる — UUID Generator

フルツールを開く