ULIDジェネレーター
ULID(汎用一意辞書式ソート可能識別子)を生成。26文字、URLセーフ、時間ソート可能、UUID互換。
ULIDを生成
ソート可能な一意識別子を作成
生成されたULID
「ULIDを生成」をクリックして一意識別子を作成
よくある質問
ULID とは何ですか?
48 ビット ミリ秒のタイムスタンプと 80 ビットのランダム性をパックした 26 文字の識別子。そのため、ID は作成時間によって並べ替えられます。
UUID ではなく ULID を選択する理由
ULID は辞書順に並べ替えられます。
順序は信頼できますか?
異なるミリ秒間でも、はい。同じミリ秒内では、2 つの ULID 間の順序は保証されません。
ULID は UUID が使用される場所で機能しますか?
ほとんどの文字列列と API に組み込まれており、両方の形式が共存する必要がある場合、ULID と UUID の間の変換は簡単です。
ULIDの長さは何文字で、どのような文字を使用しますか?
すべてのULIDは、Crockford Base32を使用したちょうど26文字です。0~9の数字と、I、L、O、Uを除くA~Zの英字で構成されます。この固定長により、データベースのカラムサイズを予測可能に保ち、IDを読み上げたり手入力したりする際に紛らわしい文字を避けられます。
ULIDはURLやファイル名で安全に使用できますか?
はい。ULIDには大文字の英字と数字のみが含まれ、ハイフン、スラッシュ、記号はないため、パーセントエンコーディングなしでURL、パスセグメント、ファイル名にそのまま使用できます。26文字の長さは、ルートパターンやログ行にも問題なく収まります。
同じミリ秒内でいくつのULIDを生成できますか?
80ビットのランダム部分により、1ミリ秒あたり約2^80通りの値が得られるため、衝突は事実上起こり得ません。アプリケーションが1ミリ秒以内に複数のIDを作成する場合は、モノトニックモードを使用してください。ランダム部分が1ずつ増加するため、ソート順が維持されます。
ULIDからタイムスタンプを読み取るにはどうすればよいですか?
最初の10文字にはUnixタイムスタンプがミリ秒でエンコードされており、残りの16文字はランダムです。その10文字をCrockford Base32から数値にデコードし、任意のUnixタイムスタンプツールで変換すれば、正確な作成時刻が取得できます。
ULIDの構造
各ULIDはタイムスタンプとランダム性の2つの部分で構成
01ARZ3NDEKTSV4RRFFQ69G5FAV
例:このULIDは特定のミリ秒で生成され、80ビットのランダム性を含んでいます
タイムスタンプ(48ビット)
Unixエポック(1970-01-01)からのミリ秒。時間順ソートを提供し、10889年まで持続。
ランダム性(80ビット)
暗号学的に安全なランダム値。ミリ秒あたり1.21京の一意IDを提供。
技術仕様
ULIDはソート可能、URLセーフ、UUID互換に設計
機能
- 暗号学的に安全なランダム性
- クライアント側のみで生成
- 辞書式ソート可能
- 特殊文字なし(URLセーフ)
仕様
- 26文字(128ビット)
- Crockford Base32エンコーディング
- 48ビットタイムスタンプ + 80ビットランダム性
- ミリ秒あたり121万ID
参考資料・リソース
-
ULID Specification - GitHub
タイムスタンプを先頭に付したソート可能な一意識別子、ULIDの仕様。
-
Universally Unique Identifier - Wikipedia
汎用一意識別子(UUID)とそのバリアントに関する一般リファレンス。