コンテンツにスキップ

無料のナノID生成器 - セキュアでURL安全な一意の識別子をオンラインで

ランダムなNano IDをブラウザ上で生成する無料ツール。生成する文字数と使用する文字集合を自由に指定するだけで、UUIDより短くURLに安全なコンパクトな一意の識別子をまとめて作成でき、データベースの主キー、APIトークン、セッションIDの発行などにも利用できます。

生成される Nano ID の長さ(1〜100文字)

Nano ID の文字セットを選択

生成された Nano ID

値を入力すると結果が表示されます

可視化

ローディング計算機...
📚

ドキュメンテーション

Nano IDジェネレーターは、Nano IDと呼ばれる短くランダムな文字列を作成します。Nano IDは、データベースレコード、URL、APIトークンなどの一意の識別子として機能し、生成された2つのIDが一致する可能性は極めて低いものです。

Nano IDとは?

Nano IDは、何かを他のすべてのものと区別できるようにラベル付けする、ランダムに生成された文字列です。ソフトウェア開発者のAndrey Sitnikは、UUID(Universally Unique Identifier)のより小さな代替として、2017年にこの形式を作成しました。UUIDはコンピューティングで広く使われる36文字の識別子です。デフォルトのNano IDは21文字で、UUIDの36文字と比べて約42%短くなっています。

このツールでNano IDを生成する方法

このページのジェネレーターは、2つの設定からNano IDを作成します。

  1. 長さ:1から100までの整数。デフォルトは21です。
  2. 文字セット:IDの生成元となる文字のグループ。デフォルトは英数字です。

長さを入力し、文字セットを選んでから「Generate」を押すと、IDが作成されます。「Copy」を押すとコピーでき、「Reset」を押すと長さ21と英数字セットに戻ります。長さまたは文字セットを変更すると、新しいIDも自動的に表示されます。ボタンの下には、IDの各文字が色付きのブロックで表示されます。大文字は青色、小文字は緑色、数字はオレンジ色、記号は灰色のブロックとして表示されます。

長さが1から100までの整数でない場合、ツールは「長さは1から100までの整数でなければなりません」というメッセージを表示し、IDを生成しません。

使用できる文字セット

このツールでは、7種類の固定文字セットを使用できます。ユーザーが入力したカスタムアルファベットには対応していません。「With Symbols」セットは、次の26個の記号を英数字に追加します:! @ # $ % ^ & * ( ) _ + - = [ ] { } | ; : , . < > ?です。

文字セット使用される文字アルファベットのサイズ
英数字(デフォルト)A-Z、a-z、0–962
URLセーフA-Z、a-z、0-9、-、_64
数字0–910
アルファベットA-Z、a-z52
小文字a-z26
大文字A-Z26
記号付きA-Z、a-z、0–9、および26個の記号88

英数字セットがデフォルトで選択されています。URLセーフセットで使われるハイフンとアンダースコアは含まれませんが、文字と数字だけなら、URLに直接配置しても安全です。

Nano IDの計算式

Nano IDは、暗号学的に安全な乱数生成器を使い、アルファベットから一定数の文字を1文字ずつランダムに選んで作成されます。これは、出力を事前に予測できないように設計された生成器です。

1id = random(alphabet, size)
2

デフォルト設定では、alphabetの文字数は62で、sizeは21です。

計算例

デフォルトの英数字アルファベットと長さ21を使った場合、生成されるIDの例は次のとおりです。

1K7pQ2mZxT9vY4nR8jH3wL
2

各文字は62個の英字と数字から独立して選ばれるため、ジェネレーターを2回実行して同じ文字列が生成されることはほとんどありません。

衝突確率の計算方法

Nano IDはランダムに選ばれるため、可能性は非常に低いものの、生成された2つのIDが一致することがあります。これを衝突と呼びます。k個のIDを生成した後に少なくとも1回衝突する確率は、「誕生日問題」と同じ数学に従います。

1P(collision) ≈ 1 - e^(-k² / (2n))
2

ここでnは、生成可能なIDの数です。これはアルファベットのサイズをIDの長さで累乗した値、つまりn = alphabet_size^lengthです。

計算例

デフォルト設定で、62文字のアルファベットと21文字の長さを使用する場合:

1n = 62^21 ≈ 4.4 × 10^37 possible IDs
2

衝突確率1%になるように式を解くと、次のようになります。

1k ≈ 9.4 × 10^17 IDs
2

つまり、2つのIDが一致する確率が1%に達するまでに、約940×10^15個のIDを生成する必要があります。毎秒百万個のIDを生成しても、その数に達するまで約29,700年かかります。

64文字のURLセーフアルファベットに切り替えると、同じ1%のリスクに達するID数は約1.3 × 10^18個へとわずかに増えます。アルファベットが大きいほど、選択可能なIDが増えるためです。

Nano IDと他の識別子の比較

種類長さ注記
Nano ID21文字、調整可能ランダムでコンパクトだが、時刻順には並べられない
UUID36文字標準形式で広くサポートされているが、ハイフンを含む
ULID26文字作成時刻順に並べ替え可能
KSUID27文字作成時刻順に並べられ、タイムスタンプを含む
自動インクリメント整数場合によって異なる単純で連続的だが、予測しやすく、別々のデータベース間で調整しにくい

よくある質問

デフォルトのNano IDの長さと文字セットは?

デフォルトは、英数字セット(A-Z、a-z、0-9)から選ばれた21文字で、合計62文字です。

このツールはカスタムアルファベットに対応していますか?

いいえ。英数字、URLセーフ、数字、アルファベット、小文字、大文字、「With Symbols」の7種類の固定文字セットを使用できます。

Nano IDはUUIDとどう違いますか?

Nano IDのほうが短い点です。デフォルトは21文字で、UUIDの36文字より約42%短くなっています。どちらもランダムに生成され、連続した値ではありません。

Nano IDを作成時刻順に並べることはできますか?

いいえ。Nano IDは完全にランダムなので、いつ生成されたかを示す情報を持ちません。ULIDやKSUIDなどの形式は、時刻順に並べられるよう設計されています。

Nano IDをデータベースの主キーとして安全に使用できますか?

はい。数値ではなくテキストまたは文字列型の列に保存し、高速な検索のために一意インデックスを設定します。

生成可能なNano IDはいくつありますか?

選択した長さと文字セットによって異なります。デフォルトの62文字のアルファベットと21文字の長さでは、62^21個、約4.4 × 10^37個のIDを生成できます。

参考文献

  1. Sitnik, Andrey. "Nano ID." GitHub、https://github.com/ai/nanoid.
  2. "Universally unique identifier." Wikipedia、Wikimedia Foundation、https://en.wikipedia.org/wiki/Universally_unique_identifier.
  3. "ULID Spec." GitHub、https://github.com/ulid/spec.