koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

リソース名を付ける時の名前長制限への対応

最近公私でいくつかリソース名の長さ制限に抵触する例が発生して面白かった。

ここでいうリソース名は、自分で長さの制御ができない接続先システムで一意にしたい名前だ。

一意な名前の作り方は幾つもあるけれど、以下のような場合が多いだろうか。

  1. 元々一意な値を使う
  2. UUID を生成する
  3. 幾つかの名前を組み合わせる
    • 環境名+システム名+リソースの種類・用途 など……

こうした何かしらの形で一意な値を作ったが、接続先システムのリソース名制限長がそれより短かったわけだ。

(最近はUUIDの文字列表現36文字は受け入れられることが多いけれど、そうではない場合もまぁある)

『私』の分では厳密に一意でなくてもどうにかなりそうな場面だったので、雑に超過した分を切り捨てて対応した。重複したらその時考えよう。

厳密に一意であって欲しい場合は『幾つかの名前を組み合わせる』の場合は命名規則を見直したり、『UUID』のように値が数値の場合は文字列表現を見直したりで対応していた。

Base64エンコードはなかなか短くなる。使用する文字(特に記号)が名前に使えない場合はBase32なんて手法もある。16進数に比べたら断然短くなる。

どうにもならなくなった場合は、衝突可能性はあるものの適当にハッシュを計算して、Base32エンコードするとどうにか収まったりするのではなかろうか。

たまたまが重なって面白かったこの頃だった。