ショートUUIDをジェネレート出来るjavascript製ライブラリ「shortid」の紹介です。
UUID ( Universally unique identifier )といえば、
128bit長の16進数で表記された、理論上 重複しない識別子で様々な所で使われています。
システム開発を行っていると、重複しないユニークIDが欲しい場面は度々ありますが、
UUIDは16進数( 0 - F )
で表記されるので、文字列が長くなり 使い所も限られてきます。
# UUIDの例
10b6506b-3b35-41d1-9445-73a5b2216fdd
そんな文字列が長いユニークIDを、短い文字列で使えるjavascriptライブラリが「shortid」です。
UUIDは36文字で表記されるのに対し、shortidは7 - 14文字のユニークIDを生成することが出来ます
。
# UUID ( Version 4で生成)
123e4567-e89b-12d3-a456-426655440000
110ec58a-a0f2-4ac4-8393-c866d813b8d1
# shortidで生成したID
rk-yiszPe
HJm3ijGvg
shortidはnpmパッケージで提供されているので、ターミナル上でnpm
コマンドを使ってインストールします。
( * ブラウザでの動作サポートされています )
# npmコマンドでインストール
npm install shortid --save
shortidの使い方は至って簡単で、ライブラリを読み込んでgenerate
関数を呼び出すだけで使えます。
UUIDは16進数で表記されるのに対し、shortidは64個の文字から構成されます。
( デフォルトで使われる文字: A-Z
, a-z
, 0-9
, _-
)
const shortid = require('shortid');
// 'r14djfmPe'のようなランダムな文字列が生成されます
shortid.generate()
また、characters
関数を使えば、好きな文字内で生成することも可能なので、
一時的なパスワードを生成したい場合でも 紛らわしい文字を省いたりすることが出来ます。
( 64文字であれば、どんな文字でも使えます *ひらがなでも可 )
const shortid = require('shortid');
var r = '';
// 生成時に使う、64文字を定義
const c = {
small: 'abcdefghijklmnopqrstuvwxyz',
capital: 'ABCDEFGHIJKLMNPQRSTUVWXYZ', // 大文字の'O'を抜いています
num: '1234567890',
symbol: '#$=', // デフォルトで定義されている'_-'の2文字を変更、'='を追加
};
// 文字列を連結
const str = r.concat(c.small, c.capital, c.num, c.symbol);
// 64文字を登録 (キッチリ64文字になる必要があります)
shortid.characters(str);
// ユニークIDを生成
shortid.generate();
isValid
関数を使えば、文字列がshortidなのか判別も出来ます。
const shortid = require('shortid');
shortid.isValid('H1ktoz7vgfd'); // true
shortid.isValid('i have spaces'); // false
以上がshortidの紹介でした。
一見ランダムな文字列を生成するシンプルなライブラリですが、
UUIDより短い文字列でユニークIDを生成出来るので 使い所も沢山あります。
* shortidが約に立ちそうな場面
1. redisでデータを登録する時のkeyとして
2. mongodbのidとして
3. ユーザーから画像等のファイルをアップロードする時のファイル名をつける時
4. 一時的なパスワードを発行する時
5. 記事に紐付けてTwitterでツイート時の圧縮URLとして
shortidが'url-friendly'のユニークID生成ツールとして設計されているので、
圧縮URLを生成したい時に便利に使えそうなライブラリですね!
GitHub : dylang/shortid