👻

super-apple みたいな名前を生成するライブラリを作った

2025/03/13に公開

はじめに

開発現場で毎日のように生成される無味乾燥な識別子たち。退屈な UUID やハッシュ値に別れを告げ、覚えやすく親しみやすい名前を自動生成するライブラリ作りました。Weights & Biases の実験 ID のような、親しみやすさとユニーク性を兼ね備えた識別子を簡単に生成できます。

import ezname

# こんな識別子はもう見たくない
# '550e8400-e29b-41d4-a716-446655440000'

# こんな識別子が欲しい
ezname.generate()  # 'sleepy-penguin'

そんな数がないのにUUIDはいらなさそ

こんなことありませんか?

  • 複数の実験結果を比較する際に、タイムスタンプだけでは区別しづらい問題
  • 内部的に持つHugging Face のモデル名が長すぎる問題

ezname は、これらの問題を解決するために設計されています。人間の脳は「curious-elephant」のような意味を持つ言葉の組み合わせを、ランダムな英数字の羅列よりもはるかに記憶しやすいという特性を活かしています。google/gemma-3-4b-itぐらいであればいけるけど、色々意味込めだすと、、、流石にREADMEに逃がしましょう。特に、作って捨ててがある程度激しい実験とかに使えるかも。

理解しやすい/発音しやすい単語の組み合わせ

ezname の特徴は厳選された単語リストにもあります:

  • 中学・高校レベルの基本的な英単語のみを使用(共通テストレベル)
  • 発音しやすく、聞き取りやすい単語を優先
  • 技術用語や専門用語は避け、誰もが理解できる一般的な単語を使用
# 誰でも理解・発音できる単語の組み合わせ
ezname.generate()  # 'blue-table'
ezname.generate()  # 'quick-student'
ezname.generate()  # 'warm-dinner'

使い方

import ezname

# シンプルな名前生成
name = ezname.generate()  # 'fresh-apple'

# カスタマイズ
test_name = ezname.generate(
    prefix="run",
    suffix="v1",
    delimiter="_"
)  # 'run_small_book_v1'

# コンポーネント単位でアクセス
adj, noun = ezname.generate(as_tuple=True)  # ('cold', 'water')

# 複数生成
names = ezname.generate_batch(3)  # ['green-apple', 'tall-building', 'quiet-room']

# 既存の名前リストを管理
used_names = ['happy-cat', 'clever-monkey', 'silent-forest']
namer = ezname.EzName(names=used_names)
name = namer.generate()  # 既存の名前とは重複しない新しい名前を生成

# イテレータとしても使える
for name in namer:
    print(name)  # 'happy-cat', 'clever-monkey', 'silent-forest' の順で出力

コマンドラインでも使える

ターミナルからさっと識別子が欲しい時も簡単です。

$ ezname -p run
run-clever-monkey

こんな場面で使えます

  • Docker コンテナやクラウドインスタンスの命名
  • W&B や MLflow のような実験管理ツールでの実験名生成
  • 開発環境/テスト環境のリソース識別
  • 研究論文での実験シリーズの命名

インストール

pip install ezname

これだけです。依存パッケージもなく、軽量で導入の障壁がありません。

おわりに

人間の認知的な負荷を減らすための小さなツールですが、日々の実験/開発でちょっとだけ楽になるかもしれません。

MITライセンスで提供されているので、個人利用も商用利用も自由にお使いいただけます。ぜひお試しください!

GitHubで編集を提案

Discussion