こんにちは、鈴木です。
先日(3/29)、社内で勉強会を行いましたので、その様子をレポートします!
勉強会の様子。ふむふむ・・。
勉強会のテーマ
勉強会は Ruby2.0 とリーダブルコードの二部構成で行いました。
スピーカーは本ブログ執筆陣の寺岡さんと村上さんで、テーマはそれぞれ Ruby2.0 とリーダブルコードです。
Ruby2.0 はこれから積極的に使うことになるはずなので、ぜひとも抑えておきたいところです。
そしてリーダブルコードは、コードを書く上での基礎体力のようなもので、世のため人のため、そしてなにより自分自身のために必要なスキルですね。
第一部:Ruby2.0 Getting Started
いつやるの? 今でしょ!
ということで Ruby2.0 の新機能の紹介から始まり、パフォーマンス改善の話や、1.9.x と非互換な機能の話まで、ひと通りカバーしていました。
発表資料は slideshare で公開していますので、ぜひご覧ください。
第二部:リーダブルコード
リーダブルコードは以前行った社内勉強会でも取り上げたテーマで、「好評だったら次回もやろう!」と考えていたテーマです。
そして好評だったので今回も取り上げました。
今回は以下の内容に絞ってコード例を交えながら解説されました。
- コメントすべきことを正確・簡潔に書く
- 一度に一つのことをやる
- 短いコードを書く
練習問題
リーダブルコードが取り上げている内容は、当たり前といえば当たり前なので、話を聞くだけでは「ですよねー」で終わってしまいます。
そこで、参加者の方には練習問題を解いてもらいました。
設問は「以下のコードをリファクタリングする」です。
よければ「自分ならどう書くか」を考えながらチャレンジしてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# files1 〜 files10 は File の配列です。 # このメソッドはその中から最大のファイルサイズを返します。 # ファイルが 1 つも無い場合は 0 を返します。 def maximum_file(files1,files2,files3,files4,files5,files6,files7,files8,files9,files10) max = 0 files1.each do |file| if max < file.size max = file.size end end files2.each do |file| if max < file.size max = file.size end end files3.each do |file| if max < file.size max = file.size end end files4.each do |file| if max < file.size max = file.size end end files5.each do |file| if max < file.size max = file.size end end files6.each do |file| if max < file.size max = file.size end end files7.each do |file| if max < file.size max = file.size end end files8.each do |file| if max < file.size max = file.size end end files9.each do |file| if max < file.size max = file.size end end files10.each do |file| if max < file.size max = file.size end end return max end |
これは実際にあったコードをベースに作成した問題です(実際のコードは条件分岐が入っているなど、上記のコードより複雑です)。
よく見ると同じようなコードを繰り返していますね。それに気付いてしまえば、あとはどう書き換えればリーダブルなコードになるのか・・。
番外編:勉強会の様子
準備中の様子です。そわそわ・・。
練習問題の回答例
リーダブルコードの練習問題の回答例です。
1 2 3 |
def maximum_file_size(*files) files.flatten.map(&:size).max || 0 end |
正解は一通りではありませんので、このような答もあるのだなと思ってください。
あとがき
今までも社内勉強会をやったことはあるのですが、毎回「人が集まらなかったらどうしよう・・。」「反応がイマイチだったらどうしよう・・。」と心配になります。
それでも、いざやってみると興味のある人は集まってくれますし、質問もしてもらえます。ワイワイガヤガヤになるのかなと思っていたらものすごく真剣に聞いてくれてるので、やる側としては恐縮してしまったり。なんやかんやで、やって良かったなと思えます。
最後に、過去を含めて勉強会をやってみて感じたことですが、一方的に話すだけ(聞くだけ)ではなく、練習問題を解くなどのワークがあるとメリハリが付いて良い感じです。