みたにっき@はてな

三谷純のブログ

ランダムな文字列(ruby)

「会議スケジュール調整支援ツール」なるものを公開してから3年弱経ちます。
最近は自分で使う機会があまりなかったので、しばらく放置状態だったのですが、ふとログを見てみたら使用された会議件数は800弱、のべ使用人数は5000名ほどでした。多くの方に使っていただけているようで嬉しい限りです。
このツールには、登録時にパスワードの入力を求めているのですが、冷静に考えるとパスワードはランダムに生成すれば十分で、登録者に何か入力してもらう必要はなかったな。ということで、ちょっと手を加えてパスワードは自動生成するように変更しました。

さて、ここで問題になるのがどうやってランダムな文字列を生成するか。
自分で考えてもよいのですが、どこかにサンプルコードがあるだろうな、と思って検索して見つけたのが以下の2行。

a = ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
Array.new(16){a[rand(a.size)]}.join

こちらを参考
http://sheepman.sakura.ne.jp/diary/?date=20050104

なるほど、簡潔で優れたコードです。Rubyを使いこなしていないと、なかなかこういうコードは思いつかないでしょう。
やっぱり自分で考えなくてよかった。。
(Javaではこう簡単にいかないでしょう。Cなら簡単にできるかも。)

※ ちなみに、今年の筑波大学修士論文の1つに、会議のスケジューリングを行うツールに関する研究がありました。数多くの会議のスケジューリングプロセスをサーベイし、私が作ったツールをリプレースする意気込みでツールの開発を行ったそうで、発表内容は大変興味深いものでした。近いうちに、一般公開されるかもしれません。