第一回チキチキ 日本ペアプログラミングの会java-ja支部会(仮)の参加メモ

忘れないうちに書いておく。懇親会もそうだけどメモもなぜかカオスだ...。

TDDに関してはこれまでで一番わかりやすかったと思う。
本とか読んでてもいまいちピンと来ない部分があったんだけど、大分クリアになった気がする。
java-jaの雰囲気のおかげ...というよりt-wadaさんの説明の仕方がうまいんだと思うけど
理解しやすかった。こんな僕でもTDD出来そうな気がしてきた。

で、メモがまとまりきってないんだけどもう投げてしまう。あとで加筆修正するかもしれないししないかもしれない。

t-wadaさんによるプレゼンjava-jaバージョン

テストの分類

Developer Testing
Customer Testing
QA Testing
今回言及するのはDeveloper Testingについて。

目指すもの

動作するキレイなコード
二通り

  • キレイな設計をしっかりやる
  • 動作するところからアプローチしていく->TDD
TDDの二つのアプローチ

最初に大きな粒度で受け入れテストを作る
小さく積み上げていくテストを作る

TDDの基本テクニック
  • 仮実装
    • テストの仕組み自体が機能不全になるという状況を避けるために小さなステップを入れる
  • 三角測量
  • 明白な実装
リファクタリング

呼吸するようにリファクタリング
バージョン管理とテスティングと自動化は近代ソフトウェア開発の三本柱

リファクタリングのタイミング

緑のときにやる
こまめにテストを起動してグリーンを確認する

  • >これに関しては今使ってるautotestは超有効だと思うなぁ。毎回起動するのは面倒くさいし
間合いをはかる

最初の一歩を踏み出すことが重要なスキル
不安の量と歩幅を調節するスキル

ペアプロで伝播するスキルは?

いわゆるtips系は勿論だけど...
小さな問題の割り方や、小さい一歩の設定の仕方
こんなところからやるの?こんな実装から始めるの?という部分
(t-wada氏とペアプロするとみんな驚くらしいよ)

帽子を取り替えながら開発する

開発者の帽子
顧客の帽子
品質の帽子

例外の扱いとか、不正引数とか
品質では心もとないが、テストは揃っている...場合、異常系や不正引数のテストを入れていく。
最初から異常系を考えるのはcase by case

その他のメモ

テストは実装に対する不安を無くすために書いている
近代のIDEIDEに提案させればいろいろできるよ
Eclipseは空気読める子
キーバインド重要
参考文献ダイエット
参考文献筋トレ
(ペアプロ)は定量評価するのは難しいが、定性評価として品質が上がっている感覚はある
TDDは開発を促進するためのテスト。品質保証のためのテストではない。ただし仲良く出来るはず
テストはスキル。写経しよう(例えばテスト駆動開発入門のサンプルコードをそのまま写すなど)

ここまでのまとめ

ゴールから考える

どんなメソッド名にするか?
どんな引数にするか?
一番小さなゴールから積み上げる。
不安を克服しながら進める。

一番重要なスキルはゴールの設定の仕方

どんなものが動けばゴールになるのか?
複雑さを解くための最も単純な要素は何か?
(最初の単純な要素が解けたら)次に単純な要素は何か?それを解くための方法は何か?

短いサイクルでレッド、グリーン、リファクタをまわすために

どこまで動けばいいのかを考えて最初の着地点から順番に積み上げる
もやもやした問題を小さな解決可能な問題の集合として捉える
ある場所まで出来たら次の(小さな)一手を考える。これこそがTDD(に必要な)スキル

ペアプロ

ペアプロでは最初はいぬビームさんとFizzBuzzのテストをRSpecで書きなおしてみるみたいなことをしたり、雑談したり。
次はゆーすけさんとよしおりがやってたボーリングの続きをゆーすけさんとペアで。
ボーリングのルールからして把握してなかった俺涙目orz
あと久しぶりすぎるEclipseのためにEsc押したりカーソル移動でjとかvim脳で迷惑かけまくった

懇親会

カオスっぷりがおかしいw
ラーメンサラダと蟹チャーハン多すぎ
t_yanoの酔拳発動しそうでしなかった
店員さんはニコニコもmixiも知らない子
正直カオスすぎてほとんど覚えてない
社内SNS繋がりのid:pentasaと初遭遇できた