11月3日(木)に開催されたTDD Boot Camp 札幌 2.2に参加してきました。
最近はJavaの(頼りない)TAとして参加させていただくことが多かったのですが、今回は少人数でまったり、基本に立ち返るということで、異なる言語を選択しました。
そう、札幌名物、SmalltalkでのTDDBC参戦です。
TDDBCでSmalltalkに触れた皆様がことごとく感動されていたので一度やってみたかった・・・!
きっと、初めてSmalltalkをやる場所はTDDBCが良いに違いない。ということで思い切って参加。
すごく、面白かったです。
Squeakによる開発を行ったのですが、最初に一瞬で環境が構築できたことに感動。
そして、バージョン管理やデバッグ、テスト環境がSqueakにすべて詰まっていることに驚き。
TDDの内容としては「FizzBuzzの実装」から始まり、最後は「BuzzFib(5の倍数とフィボナッチ数列)の実装」を行いました。
最初はJavaのこんなコードを思い浮かべて
int[] input = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; StringBuilder result = new StringBuilder(); for(int i : input){ StringBuilder sb = new StringBuilder(); if(i%3 == 0) sb.append("Fizz"); if(i%5 == 0) sb.append("Buzz"); if(sb.length() == 0) sb.append(i); result.append(sb.toString()); }
数のリストをループさせてそれぞれを判定するロジックを考えていたのだけど、考え方が違った。
「それぞれの数が、自分が何者なのかを判定できるようにする」
「外からは”自分が何者なのかを判定するように”というメッセージを送る」
という考え方でした。
それが、頭に入ってきた時の「!」という感覚はとても新鮮だった。
(数字の型自体の実装に何かを追加できるということも「!」でした)
@sumimさんに「メッセージを送る」という考え方であるということを、きっちり教え込んでいただいたおかげで、ひっかかることもなく、スムーズに(ゆっくりと)コードを書き進めることができました。
疑問をすぐにぶつけて解決することができる環境が、贅沢でとても幸せでした。
テストが通ることを確認しながら、ソースをどんどんリファクタリングしていって、
最初とは全く違う形になっていったのが、なんだろう、なんか、わくわくしました。
すごく純粋に、プログラミング楽しいなーと感じました。
コーディングや新しい言語や、色々なものに触れることができた貴重な時間でした。
主催者の@shuji_w6eさん、そして@sumimさん、貴重な時間を本当にありがとうございました!
こちらこそありがとうございました。楽しかったですね!
当日のと似たコードは URI のページの一番最後にあります。
復習とさらなる異次元体験にご笑覧ください。