RubyのSecureRandom.uuidで生成した文字列の長さについて

FBCSinatraとDBを使ったメモアプリの開発に取り組んでいます。 DBに保存するレコードのRPIMARY KEYとしてSecureRandom.uuid で生成した文字列をCHAR型のカラムに保存しようと考えています。 最大文字列長をCHARに設定しようと思ったのですが、SecureRandom.uuid で生成した文字列が何文字か分からなかったので調べました。

結論

SecureRandom.uuid で生成した文字列の長さは36文字。

SecureRandom.uuid とは?

バージョン4のUUIDを生成するメソッド。

SecureRandom.uuid (Ruby 3.1 リファレンスマニュアル)

Ruby でID用のユニークな文字列を生成する方法 - karlley's tech blog

UUIDとは?

128ビットによる数値で16進数で表される文字列

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

文字数の内訳

UUIDは128ビット(16バイト)の値で、バージョン番号などに6ビットを用いるため、固有の識別情報は122ビットとなる。文字表記する際は先頭から4ビットごとに16進数の値(0~F)に変換し、「XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」のように8桁-4桁-4桁-4桁-12桁に区切ってハイフンを挟んで記載する。

  • 識別情報の桁数: 8 + 4 + 4 + 4 + 12 = 32文字
  • ハイフン: 4文字
  • 文字数合計: 識別情報32文字 + ハイフン4文字 = 36文字

UUID(GUID / 汎用一意識別子)とは - 意味をわかりやすく - IT用語辞典 e-Words

感想

ちょっと気になっていたのでスッキリした! ビットやバイトという言葉が出てくると一気に分からなくなるので一度時間を作って振り返る必要がありそう。

参照

SecureRandom.uuid (Ruby 3.1 リファレンスマニュアル)

Ruby でID用のユニークな文字列を生成する方法 - karlley's tech blog

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

UUID(GUID / 汎用一意識別子)とは - 意味をわかりやすく - IT用語辞典 e-Words