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
メソッドを実装している必要があるのに対して、SecureRandom
はrand
を実装していないことが判明しました。
あと、Random
クラスはメルセンヌ・ツイスタを使っているのでそれなりに良い擬似乱数を返すはずですが、今回のユースケースに本当に適しているのか自信がありません。