ネットの海の片隅で

技術ネタの放流、あるいは不法投棄。

Rubotyでくじびきをする

Ruboty pluginを書いたので簡単に紹介しておきます。

使い方

GitHubにも書いてありますが ruboty kujibiki の後にカンマ区切りの文字列を渡すと、そのうちの1つをランダムに選んで出力します。

> ruboty kujibiki 1,2,3,4,5
5
> ruboty kujibiki 1,2,3,4,5
2

実装には Array#sample を使っています。

きっかけ

職場で「誰がご飯炊く?」となったときに、今まではirbを起動して Array#sample を実行した上でスクリーンショットをSlackに貼って担当者を決めていました。

ただ、この方法だと抽選が個人のPCで実行されるため公平性が担保されていませんでした(実行した人が当たった場合に引き直しが行われている可能性が排除できない)。

そこで、Slack上ででくじびきできれば良いということでさくっと書きました。

書いているときに思ったこと

Array#sample には乱数生成器を渡せます。 そこで SecureRandom を渡そうとしたのですが、渡す乱数生成器はrandメソッドを実装している必要があるのに対して、SecureRandomrandを実装していないことが判明しました。

あと、Random クラスはメルセンヌ・ツイスタを使っているのでそれなりに良い擬似乱数を返すはずですが、今回のユースケースに本当に適しているのか自信がありません。