Ruby勉強会@札幌-21に参加しました

1/21(土)に行われたRuby勉強会@札幌-21に参加しました。
読み合わせとコードレビュー大会。勉強会でコードレビューするのはとっても面白い試みだなあと思いました。

初めてのRuby読み合わせ

6.3制御式〜。6.3.4 while式までやりました。
case文の書き方が独特だなあ。特に条件を横に並べて書く事ができる点。
例えば、targetという変数の値が1の場合はxx、2,4,5の場合はyy、7の場合はzz、その他の場合はhogeという処理を書くとすると

<Java>

switch(target){
    case 1:
        xx();
        break;
    case 2:
    case 4:
    case 5:
        yy();
        break;
    case 7:
        zz();
        break;
    default:
        hoge();
    }
}

<Ruby>

case target
when 1 then
  xx
when 2,4,5 then
  yy
when 7 then
  zz
else
  hoge
end

Groovyを併用する事で、Javaでもswitch文でパターンマッチングを簡単に使用する事ができたり、
セミコロンを省いたり、とかなり気持ちよく書けるようになっているのだけど、breakを書かなくていいというのはすごく気持ちがよいなあ。
caseと処理が1:1なので、あるcaseにマッチしたときにどの処理を行うべきなのか見やすい。

読書会の中では、rubyの色々な記述方法について、「どれを使っているか、そしてそれはなぜか」という話がたくさんされていました。
色々な書き方があると「意味を考えてコードを書く」という気持ちが強くなるんだなぁと感じました。
どっちを使うか考える時に、このコードで表現したい事は何かを今一度考えるというような。
表現方法がたくさんあるrubyならではの強みだなぁ。

次回は P118 6.3.5から。

初めてのRuby読み合わせ

volpe28vさんがリリースした「コタれん」ソースコードをみんなでレビュー。
Railsのソースをそんなにたくさん見た事がないので興味津々でした。
そして、プロダクトの構成を説明してもらう事、そのソースコードを見る事、ソースコードの指摘を聞く事、全部がとても面白かった。
書いた人も、見ている人も、どっちにも有益な時間でした。あっという間!
業務で行われるソースコードレビューも同じようにたくさんの学びや刺激を受ける事ができますが、勉強会では業務という枠を飛び越え、本当にいろいろな考えを聞く事ができるのが面白い。(人数も多いし)
またやってみたいなあ。

Sapporo Cafeさん

今回の会場はSapporoCafe(北8条西5丁目)でした。
1階はWifi完備のカフェ、2階は談話室として解放されています。
今回の勉強会は2階で開催されました。
普段は2階も自由に使えるスペースとなっていますが、2階の半分のスペースを1時間800円で貸していただけるそうです。1階のカフェメニューを2階でいただく事もできるし(スイートポテト美味しかった!)、プロジェクタも電源もあります。半日で電源、インターネット環境、プロジェクタがついて4000円は安い。小さめの勉強会を開催する時にとても嬉しい場所です。開発オフなど出入り自由な勉強会にもとても向いているんじゃないかな。
ただ、冬場の2階はちょっと寒いので、膝掛けなどの防寒具を持参した方が良さそうです。

1階は居心地のよいカフェでした。机が広々。コーヒーも美味しかったし(350円)、立地条件もとても良い(駅から近い、自分の場合は自宅からも会社からも近い)。
1人でちょっと勉強するのに最適のスペースだなと感じました。
仕事帰りに勉強したり本を読んだりするのに、これからたくさん利用させていただこうと思います!

数年前はこういう施設(インターネットが使えて、4,5人でPCを使いながら開発や話し合いをするスペース)が札幌の街中には全然なかったんだよなあ、時代が嬉しい方向に変わっていっているのを感じました。
これからもよろしくお願いします。

今回の勉強会に参加して、いい刺激を受けて「Rubyのコード書きたいー!」という気持ちになりました。
「どうしてその書き方をするのか」という話をしていたのが一番大きかった。
どの書き方を選ぶかでソースコードから伝わるニュアンスや伝えたい意味が変わるなんて考えた事がなかったので、そういう変化を楽しみながら書いていきたいです。まずは写経から。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください