FJORD BOOT CAMP(フィヨルドブートキャンプ)で、伊藤淳一さん(https://twitter.com/jnchito)による「オブジェクト指向の達人を目指す人のための公開ペアプロ会」がオンライン開催され、オブザーバーとして参加させてもらった。
曜日を勘違いしていて直前に参加できることに気づいたため、事前に問題を解いておけなかったことがかなり悔やまれる。昨日の夜12時ぐらいに気づいてコードを書こうと試みたものの、Rubyのバージョン変更に手間取ってコードを書くところまでたどり着けなかった。
テスト駆動開発
テスト駆動開発(Test-Driven Development: TDD)とは、最初にテストを書き、そのテストをパスするようにコードを書いていく開発手法。
伊藤さんの著作『プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)』で学習はしたが、実際テスト駆動開発でオリジナルのコードを書いたことはまだない。
先日Sinatraで小さいアプリを作ったときには、コードを少し変えるたびに毎回ブラウザですべての動作を確認していて、結構面倒だった。今は4ページぐらいしかないアプリだから手作業でも何とかなるものの、もう少し増えたら無理だと感じた。
適切なテストがあればコードに問題がないか一瞬でわかるため、結果的に楽だし、呼び出し側や返り値を考えてから実装していくので多分いいコードになりやすい。というのも、Sinatraのアプリで呼び出し側を考えないで書いていてめちゃくちゃになり、どう呼び出したいか考えてから書き直したら少し良くなったからだ。
自分で0から書いたことがないのでテストのメリットをあまり理解できていなかったが、今回のペアプロ会と先日のアプリ作成の経験から、「テストを書きたい!」という気持ちになった。
今なら『プロを目指す人のためのRuby』を前の3倍ぐらい理解できそうなので、もう一度テストの書き方を勉強したい。Minitestの書き方を理解してブログに書こう。
メモ
- コミット前に
git diff --cached
で変更部分を確認する - テストが通る状態でコミットする
オブジェクト指向
オブジェクト指向は擬人法で考える。オブジェクト指向は、人間の思考に寄り添った形で書ける書き方。
オブジェクトとオブジェクトでどんな会話をさせるか考えてみるとよい。
そういえば『オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方』でも、オブジェクト間で交わされるメッセージが重要だと書かれていた。
オブジェクトにどう会話させるか考えて、コードに落とし込んでいく。それを意識してこれからやっていきたい。
その他
参加者チャットを見ながらペアプロの流れについていくのが思ったより難しかった。チャットに書いたり読んだりしていると何やってるのかわからなくなることがしばしば。これは慣れだろうか。それとも大きいモニターで解決?(MacBookしかないのでSlackはスマホで見ていた)やっとRailsを触り始めたので、これからは勉強会などに積極的に参加していきたい。
return
について質問させてもらった。リアルタイムで質問できるのはとてもありがたい。内容についてはもう少し調べたいので改めてブログに書くことにする。(書きました)