ユカシカド エンジニアブログ

体の栄養状態を把握する検査サービス VitaNoteを開発するエンジニアのブログ

西脇.rb & 東灘.rb:ペアプログラミング in Action Vol.2 にいってきました

今回もクジでペアを決めての2回目のペアプロ体験です。初めてお会いする参加者もいらっしゃったのと、面白いお題でとても楽しいペアプロ勉強会になりました。 若い方の参加者も増えて、平均年齢が恐ろしいほどに下がっていたと思います。

概要

Wiki

西脇.rb & 東灘.rb ペアプログラミング In Action vol.02

課題

「のんびり座りたい」問題 http://nabetani.sakura.ne.jp/hena/ord7selectchair/

感想など

2回目のペアプロ体験

今回は初参加の@shinokadaさんとペアになりました。すごく面白い方だったというのは余談ですが、最近Rubyを始められたばかりとのことでした。
この勉強会では問題を解く早さや、問題を解き終えることを求められていません。
TDDの実践と、実装と思考を共有することを重視しています。
なので、問題をどう捉えて、どういう実装を目指すか出来るだけ言葉にしようと努めたんですが、今回の問題もなかなかニクい問題で苦戦しました。

お題について

この「のんびり座りたい」問題、取り組み始めた時は今回は実装完了まで辿り着けるかも?と感じたのは裏腹に進めていくにつれて結構難しいことがわかってきました。そういう意味でも今回も楽しい難易度の問題でした。
しかし、僕自身この問題の核心を捉え損なったことで度々長考に入ってしまい、ブレブレの意図を共有するのが難しくなってしまいました。

断末魔のコミットメッセージと共にタイムオーバーをむかえた時のコードです。

https://github.com/nishiwaki-higashinadarb/pair-programming-in-action/blob/master/20131019/terada_okada/lib/chair_rule.rb

後日

復習(復讐)するまでが勉強会、ということで後日再チャレンジしたわけですがテストをパスしたものの、コレじゃない感が拭えませんでした。
その時の実装がこちらです。

https://github.com/nishiwaki-higashinadarb/pair-programming-in-action/blob/0d29c7a686fdf2a4ab1e922329e2a0ca7cf87a32/20131019/terada/lib/chair_rule.rb

(※ 実は最後のcommit前にスペルを中途半端に変更してテスト通らない状態でした。この後Guardを導入しました。。)

そして、例によって僕だけではなくて他の皆さんも続きに取り組まれていてYouRoomGitHubで共有されます。

そして!@jnchitoさん、いつもいつもすいません! 伊藤さんによって怒涛のリファクタリングによってコレじゃない感が完全に払拭された実装がこちらです。

https://github.com/nishiwaki-higashinadarb/pair-programming-in-action/blob/13d64c15a468ae059178f2bff4c5cf13501aa64c/20131019/terada/lib/chair_rule.rb

一見原型を留めていないように見えるのですが、ステップごとにコメントによる説明を頂いているので、確実に自分の血肉にしなくてはならないと思いました。 もう西脇方面に足を向けて眠れません。

教訓にしたこと

  • 問題の細分化を妥協しない
  • DRYは徹底的に
  • TDDは着実にステップごとに進める
  • 組み込みクラスのドキュメントをきちんと調べる
  • 正規表現が使えないか一考してみる
  • テストは自動化する

今回は反省文のような記事になってしまいましたが、いつものようにはち切れるほどインプットがあり、教訓へつながるアウトプットができたのでとても楽しかったです。あと懇親会も盛り上がってすごく楽しかったです。