ULID生成ツール

ブラウザで生成され、サーバーには送信されません。

このツールとは ULID生成ツール

ULID(Universally Unique Lexicographically Sortable Identifier)は、Crockford Base32の26文字で表される128ビットの識別子です。先頭10文字がミリ秒のタイムスタンプ、残り16文字が乱数なので、ULIDは文字列のまま生成順に並び、しかもグローバルに一意です。このツールはWeb Crypto APIを使ってすべてブラウザ内で生成し、サーバーは一切介在しません。

使い方

  1. 数量メニューで生成するULIDの件数を選びます。
  2. 生成ボタンを押すか数量を変更すると、新しいバッチが作られます。
  3. 同一ミリ秒内で厳密に順序を保ちたい場合は単調増加にチェックを入れます。
  4. 各ULIDの横のコピー、または全部コピーでリスト全体をまとめて取得します。

こんなときに便利

別途タイムスタンプ列を持たずに、作成順で並ぶデータベースキーが欲しいときに役立ちます。ULIDをまとめて生成して主キーに使えば、タイムスタンプが先頭10文字に入っているため、idに対する単純なORDER BYで古い順に行を取り出せます。イベントログ、メッセージID、UUIDを使う場面で自然な並び順も欲しいときに向いています。

よくある質問

ULIDとUUIDの違いは何ですか?

どちらも128ビットの一意な識別子ですが、ULIDはBase32(26文字、大文字小文字を区別せず、URLで安全)で、先頭のビットがタイムスタンプなので文字列のまま時系列に並びます。UUID v4は完全な乱数で、意味のある並び順を持ちません。

ここでの単調増加とは何ですか?

同じミリ秒内に複数のULIDを作るとき、単調増加モードは乱数部分を引き直さずに1加算するため、新しいIDは必ず直前より大きくなります。独立した乱数IDだけでよい場合はオフのままにします。

生成したULIDはサーバーに送られますか?

いいえ。各ULIDはWeb Crypto APIを使ってブラウザ内で生成されます。アップロードも記録も送信も一切行われません。

ULIDをデータベースの主キーに使えますか?

はい。文字列列や16バイトのバイナリ列に収まり、PostgreSQL、MySQL、MongoDBや多くの言語向けのライブラリが対応しています。時刻順に並ぶため、ランダムなUUIDに比べてインデックスの断片化も抑えられます。

関連ツール