🆔 ULID生成
48ビットのミリ秒タイムスタンプと80ビットのランダム値を組み合わせた、辞書順にソート可能なユニークID「ULID」を生成するツールです。UUIDと違い、生成順に文字列としてもソートできるのが特徴です。
使い方
- 生成する個数を指定します。
- 「生成」ボタンを押すとULIDのリストが表示されます。
- 個別または一括でクリップボードにコピーできます。
計算の仕組み
ULID(Universally Unique Lexicographically Sortable Identifier)は、作った順に文字列として並べ替えられる一意のIDです。UUIDと同じ128ビットですが、26文字と短く、先頭が時刻になっているのが特徴です。 構成 ・先頭10文字: 1970年1月1日からのミリ秒数(48ビット) ・後ろ16文字: 暗号学的に安全な乱数(80ビット) 文字には、クロックフォードのBase32(0〜9とA〜Z、ただし見間違えやすいI・L・O・Uを除く32文字)を使います。先頭の時刻部分が大きい順に並ぶため、ULIDを文字列として並べ替えると、作られた順番になります。このツールは、ULIDの先頭部分から作成日時を読み取って表示することもできます。
計算例
ULIDの例 01J8GZ5N3K7Q9V2XWM4YBTCRHE 先頭10文字「01J8GZ5N3K」: 作成したミリ秒単位の時刻 残り16文字: ランダムな部分 同じミリ秒の間に作ったULIDどうしは乱数の部分で並ぶため、作った順とは限りません。
使用上の注意
- データベースの主キーに使うと、作成順に並ぶため、ランダムなUUID v4よりインデックスの効率がよくなることがあります。
- ULIDから作成日時がわかるため、作成時刻を知られたくない用途には向きません。
- 同じ用途には、2024年にRFC 9562で標準化されたUUIDバージョン7もあります。
よくある質問
ULIDとUUIDの違いは何ですか?
UUIDは基本的にランダムな値のため生成順とソート順が一致しませんが、ULIDは先頭にタイムスタンプを含むため、文字列としてソートするだけで生成時刻順に並びます。
ULIDはどんな文字を使いますか?
視認性を高めるため、I・L・O・Uを除いたCrockfordのBase32(0-9とA-Z の一部)、26文字で表現されます。
ULIDの構造を教えてください。
先頭10文字が48ビットのミリ秒タイムスタンプ、残り16文字が80ビットのランダム値をエンコードしたものです。