ちくわ

ちくわにきゅうりを入れるとうまい

Ruby っぽい FizzBuzz

会社でお茶会をしていた中で、とにかくアウトプットをする癖を着けて見ようぜ!という話があがり、今月(2016/5)は毎日なんでもいいので記事を書こうという試みを始めます。
試みの内容はこの ブログお遍路 からインスパイアされたものです。

ブログお遍路参り、はじめました。 – glover.jp

ということで更新が途絶えたり日が空いたら察してください。

ruby 読書会

続けて自社ネタですが、お昼に Effective Ruby 読書会をしています。

今日は GW の真っ只中ということもあり参加者が少なかったので、お題を出してコードを書いてみようという企画になりました。お題はよくある FizzBuzz 問題。
ちなみに、自分は shell script ぐらいしかまともに書いたことがなく、Ruby はゼロベースでこれからというレベルです。

最初に書いたコードはこんな

for i in 1..100
  fizz = i % 3
  buzz = i % 5
  fizzbuzz = i % 15
  if fizzbuzz == 0 then
    puts "fizzbuzz"
  elsif fizz == 0 then
    puts "fizz"
  elsif buzz == 0 then
    puts "buzz"
  else
    puts i
  end
end

なんとも shell script っぽいですね!
これでも一応 fizzbuzz の出力にはなりますが、ここでレビューをしてもらい、ruby だったらこう書くことが多いという幾つかのポイントを教えてもらいました。

  • then は省略可能
  • for よりも .each メソッド(メソッドチェ―ン)を使う
  • 変数に一度入れなくとも i %3 == 0 と書ける
  • if を後ろに回して 1 行で書く
  • 既存の class に fizzbuzz を評価するメソッドを追加する (この辺りからだいぶ書き方が変わってくる)

(※ いろいろな書き方ができるので、何が正解というのは無いが、ruby っぽい書き方の一つとしてという情報)

次からは意識して書いていこう。世界が少しだけ赤く染まった 1 日でした。