スナックのママの人生を生成するgemを作った

正月の暇な時間でスナックのママの人生を生成するgemを作った。*1

使い方は簡単で、CLI

$ gem install snacknomama

して、

$ snacknomama

をすると、

店名: スナック GA繭みや
ママ: ユウヒ
人生: 両親富豪->中学校卒業->結婚出産->旦那借金->離婚バツ2

とか

店名: スナック 花幸STELLA
ママ: チナツ
人生: 両親離婚->高等学校中退->結婚出産->旦那暴力->離婚バツ1

みたいなスナックのママの波乱万丈人生が生成される。

店名と名前と人生は適当で、それっぽいものがランダムに生成されてく。

$ snacknomama --snack

とやると

スナック アップルローズ

みたいに個別で生成できたりする。

詳しくは-hオプションでヘルプ見てくれ。

作った背景

元ネタは、元旦深夜お笑い番組やらジャニーズライブやらやってる裏のTOKYO MX5時に夢中 目指せ!場末の歌姫!おママ対抗歌合戦」という番組。

司会はふかわりょう、ゲストはミッツマングローブとマツコデラックスみたいな濃厚なメンツで年明け一発目の放送でこれやるんか...という感じで惹きつけられ見てた。

何よりも惹かれたのがスナックのママたちの人生で、皆共通して波乱万丈だったのが印象的。

波乱万丈には共通な部分多くて、ある程度のパターンがありそうだったのでそれをまとめたのがこのgemというわけ。

正月一発目で何か作りたかったけど特にネタ思いつかなくてどうしようかと思ったが、たまにはTVも見てみるもんだ。

見所

特に実装で難解なことしてないけど、一つ挙げるとすればスナックっぽい名前の自動生成のところ。

東京スナックナビから山手線と中央線沿線のスナック名をスクレイピングして、それらを形態素解析して「スナック名の元素材」を作成した。

スナック名の元素材なんて作る人いないだろうけど、もしいたら使ってください。

あと、自分は知らなかったのだけどRubyに標準でoptparseというCLIオプションをいい感じに設定できるライブラリがあったことを知った。

以下のような感じで書くと

require "optparse"
OptParser.new do |opt|
  opt.banner = "Usage: test_command [options]"
  opt.separator("options: ")
  opt.on("-h", "--help", "Show help message") do
     puts opt
     exit
  end
  opt.parse!(ARGV)
end

こんな風に簡単にCLIオプションが使えるようになる。

$ test_command -h
Usage: snacknomama [options]
options: 
    -h, --help                       Show help message

学びがあった。

まとめ

  • スナックのママの人生を生成するgemを作成した
  • スナックのママたちの人生は波乱万丈
  • 今年もよろしくお願いします

*1:登場するスナックのママの人生はフィクションであり、実在する、人物・地名・団体とは一切関係ありません。