ショートuuidを生成するJSライブラリ「shortid」



ショート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のインストール

shortidはnpmパッケージで提供されているので、ターミナル上でnpmコマンドを使ってインストールします。
( * ブラウザでの動作サポートされています )

# npmコマンドでインストール
npm install shortid --save

 

shortidの使い方

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

 

Summary

以上がshortidの紹介でした。

一見ランダムな文字列を生成するシンプルなライブラリですが、
UUIDより短い文字列でユニークIDを生成出来るので 使い所も沢山あります。

* shortidが約に立ちそうな場面
1. redisでデータを登録する時のkeyとして
2. mongodbのidとして
3. ユーザーから画像等のファイルをアップロードする時のファイル名をつける時
4. 一時的なパスワードを発行する時
5. 記事に紐付けてTwitterでツイート時の圧縮URLとして

shortidが'url-friendly'のユニークID生成ツールとして設計されているので、
圧縮URLを生成したい時に便利に使えそうなライブラリですね!

GitHub : dylang/shortid

 

この記事のカテゴリ
プログラミング

この記事のタグ