ULID・NanoID生成
生成した順に並ぶ「ULID」と、短くてURLに使いやすい「NanoID」をまとめて生成します。どちらもブラウザの暗号学的乱数を使っています。標準的な形式のIDが必要な場合は UUID生成 もあわせてご利用ください。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
注意事項
- ULIDは先頭10文字が生成時刻(ミリ秒)、残り16文字がランダム値です。1回の生成分は同じ時刻を共有し、ランダム部を1ずつ増やすため、生成順に並べ替えても順序が保たれます。
- ULIDには生成時刻がそのまま含まれます。作成日時を知られたくないIDには使わないでください。
- NanoIDは長さが短いほど衝突しやすくなります。長さや文字種を減らす場合は、必要な一意性が保てるか確認してください。
- パスワードや認証トークンの用途には、専用のパスワード生成ツールのように文字種・強度を確認できるものを使うことをおすすめします。
用語解説
ULID
Universally Unique Lexicographically Sortable Identifier の略です。時刻とランダム値からなる26文字のIDで、文字列として並べると生成順になるため、データベースの主キーに向いています。
NanoID
短くてURLにそのまま使える文字だけで作るランダムなIDです。標準では21文字で、長さや使う文字を自由に変えられます。
Crockford Base32
ULIDで使う文字セットです。数字と英大文字から、読み間違えやすいI・L・O・Uを除いた32種類の文字でできています。
よくある質問
ULIDとUUIDの違いは何ですか?
UUID v4は完全にランダムですが、ULIDは先頭に生成時刻を含むため、文字列として並べると生成順になります。26文字でUUID(36文字)より短く、データベースの主キーにしたときにインデックスの効率が落ちにくい点が利点です。
ULIDから生成日時はわかりますか?
先頭10文字が生成時刻(ミリ秒)なので、デコードすれば作成日時が分かります。作成日時を公開したくない用途では使わないでください。
NanoIDの長さはどれくらいが適切ですか?
既定の21文字・64種類の文字なら、UUID v4と同程度の衝突しにくさです。短くすると衝突の確率が上がるため、必要な件数に対して十分な長さかどうかを確認してから変更してください。
NanoIDの文字セットに日本語や絵文字は使えますか?
使えます。2〜256種類の文字を指定でき、絵文字などのサロゲートペアも1文字として数えます。ただし、URLやデータベースで扱いにくくなる場合があります。
このページをシェア
