開発ツール

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にはいくつかのバージョンがあり、生成方式が異なります:

バージョン生成方式特徴
v1MACアドレス+時刻生成時刻を含む。MACアドレスが露出する懸念あり
v3名前空間+MD5同じ入力から常に同じUUIDを生成
v4ランダム最も広く使われる。完全にランダムで予測不可能
v5名前空間+SHA-1v3の改良版。同じ入力から常に同じ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として事前に割り当てておくことが推奨されます。

ツールの使い方

  1. 「生成」ボタンをクリックしてUUIDを生成します
  2. 必要に応じて一度に複数のUUIDを生成できます
  3. コピーボタンでクリップボードにコピーします
  4. 大文字・小文字の切り替えや、ハイフンなしの形式にも対応しています

プログラミングでの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生成ツール