保存先の要件を先に決める
初期値はNanoIDがURL向けの21文字、CUID2が24文字です。カスタムアルファベットを使えるのはNanoIDだけです。同じ文字を複数入れると、重み付けではなくエラーになります。
- 条件を一つでも変えると以前の結果は未更新になり、再実行するまで出力できません。
識別子
新しいIDをまとめて生成するか、CUIDとKSUIDの読み取れる項目を確認します。
下でアルゴリズムと条件を選んでください。実行するたびに新しい一括結果を生成します。設定を変えただけでは、以前の結果が未更新になるだけです。
処理はこのブラウザー内で完結し、入力をサーバーへ送信しません。
1回1〜1,000件。NanoIDは1〜128文字、CUID2は2〜32文字。カスタム文字セットは重複しない表示可能なASCII文字2〜64個で、空白は使えません。デコードは128,000文字、1,000件まで。
条件を選んで実行してください。
短いIDが必要なテストデータやURLを用意するとき、Nano ID生成なら文字数と使用文字を確かめながら形式を選べます。まず保存先や外部システムが要求する形式を確認してください。
NanoIDは文字セットを調整でき、CUID2は内部情報をハッシュにまとめます。旧CUIDには読み取れるフィールドがあり、KSUIDには秒単位の時刻が含まれます。同じ長さでも構造は同じではありません。
Nano ID生成は四つのアルゴリズムを一つの画面で扱い、それぞれで使える設定だけを表示します。NanoIDは短縮できますが、KSUIDは27文字を保たないと元の形式として読み取れません。
CUIDとKSUIDでは、時刻や乱数部分をレポートで確認できます。NanoIDやCUID2から作成時刻を推測して表示することはありません。読み取れる時刻も、実際の発生日時の証明にはなりません。
初期値はNanoIDがURL向けの21文字、CUID2が24文字です。カスタムアルファベットを使えるのはNanoIDだけです。同じ文字を複数入れると、重み付けではなくエラーになります。
衝突確率には想定する総発行数を使います。KSUIDでは同じ秒に発行する最大件数を入力してください。旧CUIDに一様な文字列の確率をそのまま当てはめることはしません。
最初は50件を表示し、100件ずつ追加できます。コピーと保存は表示件数にかかわらず全件を対象にします。デコードは空行以外に一つでも不正な行があれば全体をエラーにします。
URL向け、16進数、数字、カスタムから選べます。公式の棄却法を使うため、文字数が2のべき乗でない場合も単純な剰余演算による偏りを避けます。
時刻、ソルト、カウンター、セッション指紋をSHA3-512で混ぜ、小文字から始まる文字列にします。長さは2〜32文字に変えられますが、文字セットと内部フィールドは編集できません。
c、Base36のミリ秒、4文字のカウンター、4文字の指紋欄、8文字の乱数という構成です。この実装の指紋欄にはブラウザーの属性ではなくランダムなセッション識別子を入れます。
20バイトを大文字小文字を区別する27文字のBase62に変換します。先頭4バイトはUnix 1400000000からの秒数、残り16バイトは乱数です。UTCと16進ペイロードを確認できます。
外部仕様や列の型がUUIDを要求するなら、その形式を守ってください。短いURL向けの文字列や独自の文字セットが必要な場合はNanoIDを検討できます。デフォルトの21文字は126ビットの理想空間を持ちます。
有限のランダムな空間なので、重複する可能性はあります。確率の表示はゼロ件の重複を保証しません。総発行数を見積もり、保存時の一意制約と衝突時の処理を用意してください。
同じ長さなら組み合わせが減ります。例えば6桁の数字は100万通りだけです。64文字を使う場合と同じ衝突確率を保ちたいなら、長さを増やす必要があります。
NanoIDモードでカスタム文字セットを選ぶと、表示可能なASCII文字を2〜64個指定できます。重複文字や空白、対応外の文字があればエラーにします。ほかのアルゴリズムの文字セットは固定です。
特別な制約がなければ21文字から始め、実際の発行数を入れて比較してください。短いIDを使う場合は、見た目の読みやすさだけでなく、利用期間や同時に有効な件数も考慮します。
想定と違う結果が出ましたか?