読み方 : ユーエルアイディー
ULID【Universally Unique Lexicographically Sortable Identifier】
ULIDとは?

従来の「UUID」(Universally Unique Identifier)は、グローバルに一意な識別子を必要とするシステムで広く使われている。しかし、UUIDは時間順序を保たず、16進数表記で読みにくく、ソートしても意味のある順序にならないという課題があった。ULIDはこれらの問題を解決するために開発された。
ULIDの構造は、上位48ビットに現在のUNIXタイムスタンプをミリ秒単位で格納し、下位80ビットをランダムな値とする。生成時刻の順序を保ったまま識別子を発行でき、時系列でソートすることで自然に生成順序が反映される。同一ミリ秒内で複数の識別子を生成する場合には、乱数部分を単調増加させる「モノトニックULID」と呼ばれる生成方式も定義されている。
ビット列を文字列表記に変換する規則として「クロックフォードのBase32エンコーディング」を採用し、取り違えやすい「I」「L」「O」、および生成文字列が偶然下品な表現に一致することを避けるため「U」を除外した31種類の英数字のみで表現するため、視認性と入力のしやすさが向上している。ハイフンを含まず固定長であるため、URLやファイル名、分散システムのキーとして利用しやすい。
一方、システムが計測する現在時刻に依存する生成法であるため、システムクロックが不正確だったり精度が低いと識別子の一意性に影響する可能性がある。UUIDほど広くは採用されていないため、既存システムとの互換性が課題となる場合があり、採用されるのは新規に開発されるシステムやサービスが中心となっている。