# UUID・ULID ジェネレーター

UUID v4・UUID v7・ULID をまとめて生成できます。IDを貼り付ければ、バージョン、バリアント、タイムスタンプを確認できます。

https://codeknife.dev/ja/uuid-seisei/

## 概要

UUID と ULID をまとめて生成します。既存の ID を貼り付けて、バージョン、バリアント、タイムスタンプを読み取ることもできます。ID はブラウザの安全な乱数生成器で作られ、端末の外には出ません。

## 使い方

1. **UUID v4**(完全にランダム)、**UUID v7**(時間順)、**ULID**(時間順、26文字)のいずれかを選びます。
2. 必要な個数を設定し、大文字とハイフンを選びます。
3. **生成**を押します。ID は1行に1つずつ入力欄に表示され、それぞれの詳細が出力欄に表示されます。
4. 自分の ID を1行に1つずつ貼り付けて調べることもできます。波括弧、`urn:uuid:` のプレフィックス、ハイフンなしの形式も受け付けます。

## 例

バージョン7の UUID と、ツールがそこから読み取った内容です。

```
017f22e2-79b0-7cc3-98c4-dc0c0c07398f
v7 · RFC 9562 · 2022-02-22T19:22:22.000Z
```

## 知っておくと便利なこと

- バージョン7と ULID はミリ秒のタイムスタンプで始まるため、作成した順に並びます。これによりデータベースのインデックスが小さく保たれます。
- 同じミリ秒に作られた ID は増えていく値になるので、一意性と順序が保たれます。
- バージョン4からは、いつ作られたかは分かりません。
- nil UUID(すべて0)と max UUID(すべて1)は、特別な値として認識されます。

## UUID と ULID とは?

UUID は、調整なしにどこでも生成できる128ビットの識別子です。バージョン4は完全にランダムです。バージョン7は先頭にミリ秒のタイムスタンプを持つため、IDは作成順に並び、データベースのインデックスをコンパクトに保てます。ULID は UUID バージョン7と同じ情報を26文字で表します。

## よくある質問

### データベースのキーにはどれを使うべき?

バージョン7か ULID がおすすめです。どちらも作成時刻順に並ぶので、新しい行がインデックス内に散らばらず末尾に追加されます。作成時期を知られたくない場合はバージョン4を使ってください。

### 2つのIDが衝突することはある?

バージョン4には122ビットのランダム値があり、衝突は事実上起こりません。バージョン7と ULID はタイムスタンプとランダム値を組み合わせ、同じミリ秒内のIDは順に加算されるため、一意性と順序が保たれます。

### このツールはIDをどこかに送信する?

いいえ。IDはブラウザの安全な乱数生成器で作られ、お使いの端末上で検査されます。入力した内容が当社のサーバーに送信されることはありません。