ひますぎてボウリングゲーム実装してた。
- coding-kata-bowling/Game.pm at master · hakobe/coding-kata-bowling · GitHub
- coding-kata-bowling/Bowring-Game.t at master · hakobe/coding-kata-bowling · GitHub
これはCoding Kataの一種で、ボウリングゲームのスコア計算をするのが目的ではない。Coding Kataというのは、達人プログラマー―システム開発の職人から名匠への道などで有名な
Dave Thomasさんが提唱した、プログラミングの練習法。このボウリングゲームのKataはアジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技などの著者であるRobert C. MartinさんのWebサイトに詳しいやり方が載ってる。2008年くらいの角谷さんの発表にも少しのっていてわかりやすい(当時実演を見せてもらった)。
- ArticleS.UncleBob.TheBowlingGameKata
- ↑に関するPowerPointの資料
- 角谷さんの発表"スはスペックのス〜RSpecによるテスト駆動開発の実演〜" 81ページくらいから
ボウリングゲーム以外に逆ポーランド記法電卓でやるパターンとかさがせばいろいろある。
Kataといってるのはまさに柔道の形のことで、Wikipediaによると、
形(型)(かた)による形稽古は日本の武道(日本の武術)では普遍的な稽古法であるが、柔道(柔術)では、技を掛ける「取(とり)」と技を受ける「受(うけ)」にわかれ、理合いに従って、決められた手順で技を掛け、受け止め、反撃し、それを反復することによってその理合と技を習得するものである。我が国の修行方法といえる
とある。これと同じで、決められたプログラムを決められた手順で実装することで、リズム感のあるTDDの開発や、テストライブラリの使い方や、効率のよいエディタの操作方法などの練習ができ、実戦でもすばらしいプログラミングができるようになるというものだ。
今回やったボウリングゲームは、なんか資料を見ながらちまちまやってたら一時間くらいかかったのだけど、練習するうちに10分くらいでできるようになってすばらしい生産性が得られる予定。ひまなときにどんどんボウリングゲームしていきたい。