[JavaScript] UUID.jsを作成しました

[JavaScript] UUID.jsを作成しました

[追記] UUID.jsの最新版はGitHubで公開されています! (解説記事)

[さらにさらに追記] UUID.js の最新版は CodeRepos に放流しました。

[さらに追記] 新バージョンを公開しました!

[追記] バグが見つかったので修正版を公開しました><

UUID (Universally Unique Identifier) を生成する JavaScript ライブラリを作ってみたので公開します。

UUID.js

UUID は、128 ビットの長さを持つ識別子です。普段使うときは↓のように 16 進法で表現されて、ところどころにハイフンが入ります。

e8783d5e-90dd-4af9-8aa6-371d43fcbcb4

UUIDは 128 ビットで 2128 = 3.4e+38 通りもあるので、偶然同じ ID が生成されることが (ほぼ) ないんです。だから、ID の一意性を維持するためにわざわざ統制する必要がなくて、面倒くさがりな人間にとっては便利すぎる ID なんですね!

で、そんな便利な UUID を JavaScript で使うためのライブラリを探してみたのだけれど、あまり良いものが見つからず。英語版 Wikipedia に書いてある JavaScript UUID Class というのも試してみたけれど、RFC 4122 に書いてある UUID の仕様とはちょっと違う感じの不思議な ID を生成するのでいまいち。ということで、自分で RFC を読みながら実装してみました。

使い方等は続きで。

使い方

使い方は簡単。

1. UUID.js をロードする
<script type="text/javascript" src="uuid.js"></script>
2. 生成する
var uuid = UUID.generate();  // "8368a644-87b7-429a-8cbb-ee0b29f9d4b2"

たったこれだけで使えるし、ライセンスも MIT ライセンスにしておいたから、ぜひ使ってね!

サンドボックス

8d5b2507-b6fc-4cf0-b962-fbf61165efad

アルゴリズムについて

RFC 4122 に規定されている UUID は Version 1 から Version 5 まであって、今回実装したのは一番簡単な Version 4。RFC に書かれている Version 4 のアルゴリズムは↓たったこれだけ。

RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace

4.4. Algorithms for Creating a UUID from Truly Random or Pseudo-Random Numbers

The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers.

The algorithm is as follows:

  • Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.
  • Set the four most significant bits (bits 12 through 15) of the time_hi_and_version field to the 4-bit version number from Section 4.1.3.
  • Set all the other bits to randomly (or pseudo-randomly) chosen values.

See Section 4.5 for a discussion on random numbers.

Version 4 以外の UUID では、MAC アドレスを使ったり、POSIX 準拠のユーザー ID を使ったり、MD5 を使ったり、 SHA-1 を使ったりということで、JavaScript で直接実装するのはちょっと面倒な感じ。Version 1 はちょっとがんばれば実装できそうだから、今度元気があったときに実装するかも。

@todo

できれば実装したいものリスト

  1. ランダム性の改善 (Math.random で素直に生成しているだけなので、もう少し改善したい)
  2. Version 1 に対応 (MAC アドレスの代わりに乱数を使った Version 1 が RFC に書かれているので、それを実装したい)
  3. CodeRepos に放置したい (CodeRepos のアカウントってどうやって作るんだろう)
スポンサーサイト



関連記事

トラックバック URL

http://liosk.blog103.fc2.com/tb.php/154-381ae767

トラックバック

[UUID.js] バグがあったので修正しました><
前回のエントリーで公開したばかりの UUID.js ですが、いきなりバグが出てしまったので修正版を公開しました>< UUID.js (修正済み) バグの内容は...
  • 2008-10-04
  • 発信元: 文系大学的IT系の悲哀
UUID.js が UUID version 1 に対応しました
今までは UUID version 4 にしか対応していなかった UUID.js を、UUID version 1 にも対応させてみました。 UUID.js 使い方 使い方はやっぱり簡単。 1. UUI...
  • 2008-10-04
  • 発信元: 文系大学的IT系の悲哀
UUID.js を CodeRepos に放流しました
表題の通り、UUID.js を CodeRepos に放流しました! root/lang/javascript/UUID.js - CodeRepos まだまだ育て甲斐のある状態なので、どんどんいじっちゃってく...
  • 2008-10-08
  • 発信元: 文系大学的IT系の悲哀
[JavaScript] UUID.js を更新しました!
以前公開したまま放置していたJavaScript用のUUID生成ライブラリ、UUID.jsの最新バージョンを公開しました! 大幅な機能追加とバグ修正が行われて、...
  • 2010-07-27
  • 発信元: LiosK-free Blog

コメント

http://coderepos.org/share
> commit権いる方はyappo <at> shibuya <döt> plまでhtpasswdを送ってください。自分のブログの URL や、coderepos で何を開発したいかなどを書いておくとベターでございます。

って事なのでメールにhtpasswdつけて送るだけです。

UUIDはちょうど使いたいなと思っていた所なので非常にタイムリーです。
  • 2008-10-05
  • by zigorou
  • id:v0W2OX1k
  • 編集
ありがとうございます。メールを送ってみました!
  • 2008-10-06
  • by LiosK
  • id:-

コメントの投稿

お名前
コメント
編集キー