UUIDとは?UUID v4の仕組みと生成方法・使い方を解説
UUID(Universally Unique Identifier)は、重複しない一意のIDを生成するための標準規格です。データベースのレコードID、APIキー、ファイル名など、様々な場面で活用されています。この記事では、UUIDの仕組みとバージョンの違い、実際の使い方を解説します。
UUIDとは?
UUID(ユーユーアイディー)は128ビットの数値で表される識別子で、RFC 4122で標準化されています。通常は以下のような形式で表示されます:
550e8400-e29b-41d4-a716-446655440000
8-4-4-4-12の形式で、ハイフンで区切られた32文字の16進数です。理論上は生成できるUUIDの総数は約3.4×1038個(340澗)もあり、事実上重複が起こらないとされています。
UUIDのバージョンと違い
UUIDにはいくつかのバージョンがあり、生成方式が異なります:
| バージョン | 生成方式 | 特徴 |
|---|---|---|
| v1 | MACアドレス+時刻 | 生成時刻を含む。MACアドレスが露出する懸念あり |
| v3 | 名前空間+MD5 | 同じ入力から常に同じUUIDを生成 |
| v4 | ランダム | 最も広く使われる。完全にランダムで予測不可能 |
| v5 | 名前空間+SHA-1 | v3の改良版。同じ入力から常に同じUUIDを生成 |
| v7 | 時刻+ランダム | 時刻順にソート可能なランダムUUID(比較的新しい) |
現在最も一般的に使われるのはUUID v4です。完全にランダムで生成されるため、予測困難でありプライバシーも保護されます。
UUIDの主な用途
1. データベースのレコードID
連番(1, 2, 3...)の代わりにUUIDをIDに使うことで、複数のデータベースやシステムをマージする際にID衝突が起きなくなります。また、URLに含まれるIDが推測されにくくなるセキュリティ上のメリットもあります。
2. APIキー・セッションID
APIキーやセッションIDにUUID v4を使うことで、推測困難で安全な識別子を生成できます。
3. ファイル・リソース名の一意化
ユーザーがアップロードしたファイルを保存する際、元のファイル名の代わりにUUIDを使うことでファイル名の衝突を防ぎ、ディレクトリトラバーサル攻撃も防止できます。
4. フロントエンドのコンポーネントキー
ReactなどのフレームワークでリストのキーとしてUUIDを使うことがあります。ただし、毎回新しいUUIDを生成するとパフォーマンスに影響するため、データのIDとして事前に割り当てておくことが推奨されます。
ツールの使い方
- 「生成」ボタンをクリックしてUUIDを生成します
- 必要に応じて一度に複数のUUIDを生成できます
- コピーボタンでクリップボードにコピーします
- 大文字・小文字の切り替えや、ハイフンなしの形式にも対応しています
プログラミングでのUUID生成
// JavaScript(ブラウザ・Node.js)
const uuid = crypto.randomUUID();
console.log(uuid); // "550e8400-e29b-41d4-a716-446655440000"
// Python
import uuid
print(uuid.uuid4()) # UUID('550e8400-e29b-41d4-a716-446655440000')
// Node.js(npmパッケージ uuid)
import { v4 as uuidv4 } from 'uuid';
console.log(uuidv4());よくある質問
Q. UUID v4は本当に重複しませんか?
A. 理論上は重複する可能性がゼロではありませんが、生成できる組み合わせは約5.3×1036通りあるため、現実的には無視できるほど低い確率です。毎秒10億個生成しても重複が起きるまでに約85年かかると言われています。
Q. UUIDとULIDの違いは何ですか?
A. ULID(Universally Unique Lexicographically Sortable Identifier)はUUIDの代替として作られた識別子で、時刻順にソート可能な点が特徴です。データベースのインデックス効率がUUIDより良い場合があります。UUID v7も同様に時刻順ソートに対応しています。
Q. データベースIDにUUIDを使うデメリットはありますか?
A. 主なデメリットは、①連番よりサイズが大きい(16バイト vs 4〜8バイト)ためインデックスのサイズが増える、②ランダムなUUID v4はデータベースのB-treeインデックスに挿入するたびに再バランスが必要になりパフォーマンスが低下する場合があります。これを解消するためにUUID v7や順序付きUUIDを使うことが増えています。
Q. 生成されたUUIDはサーバーに保存されますか?
A. いいえ。生成はすべてブラウザ内で行われており、生成したUUIDはサーバーに送信・保存されません。
まとめ
UUIDは一意の識別子を生成するための標準規格で、特にUUID v4がデータベースやAPIで広く使われています。連番IDと比べて衝突リスクが低く、分散システムでの利用に適しています。当サイトのUUID生成ツールを使って、すぐにUUIDを生成できます。
▶ 今すぐ使ってみる
st0z.com 無料UUID生成ツール