TDD Boot Camp 横浜 Second Seasonにスタッフとして参加してきた #tddbc
- 9月1日 TDD Boot Camp (#TDDBC) 横浜 Second Season(神奈川県)
- 2012/09/01 TDD Boot Camp 横浜 Second Season #tddbc - Togetter
去年夏の東京1.6、秋口の横浜に引き続いてのTDDBC参戦。
- TDD Boot Camp 東京 1.6に参加してきた #tddbc - Shinya’s Daily Report
- TDD Boot Camp 横浜に参加してきた #tddbc - Shinya’s Daily Report
開催会場は株式会社アットウェア@横浜。毎度お馴染み『アジャイルサムライ読書会 横浜道場』の場でもありますね。
今回はスタッフ/TAとして参加していたというのもあり、早め(8:45)に会場入り。諸々の調整、準備等をしているうちにあっという間に受け付け開始の9:30に。(※ちなみに当日はいっしょー(TwitterID:@1syo)さんと2人で受付業務を行っておりました。
受付以降も何だかんだで色々動き回っていたのもあるので、今回のレポートについては一部を除いてつぶやき/写真付きつぶやきが多めです。ざっくり振り返りつつ、内容についてはつぶやき/写真で展開して行こうと思ってますので寄り詳しい内容は併せてエントリされるであろう多くの参加者のブログや各種資料を御参照頂けると幸いです。
前回参戦(TDDBC横浜)〜今回の参戦(TDDBC横浜Second Season)までに行われたTDDBC関連イベント
…とその前に、毎回ブログエントリでまとめているシリーズで今回も前回までを総括。今年は6月辺りから怒濤のイベントラッシュでした。直近も仙台(8/11)→岡山(8/25)と割とタイトな実施日程。
前回横浜1.0から今回のSecond Season(横浜はこの後のナンバリングどうするんだろう…)までに開催されたTDDBC関連イベントは以下の通り。
- 2011/11/26〜27 TDDBC福岡2
- TDD Boot Camp(TDDBC) - TDDBC福岡2
- TDD Boot Camp 福岡 2 Day 1 : ATND
- TDD Boot Camp 福岡 2 Day 2 : ATND
- TDD Boot Camp 福岡 2 懇親会 : ATND
- TDD Boot Camp 福岡 2 #tddbc - Togetter
- TDDBC 福岡 2を開催します #tddbc - pocketberserkerの爆走
- TDD Boot Camp 福岡 2を開催しました - pocketberserkerの爆走
- TDDBC福岡2に参加してきました - 日々常々
- TDDBC 福岡 2日目 午前のメモ - 日々常々
- TDDBC 福岡 2日目 午後のメモ - 日々常々
- TDDBC 福岡2に参加してきた | ひげろぐ
- #107 TDDに対して思っていること « TDD « Gab_kmのブログ
- 2011/12/10 TDDBC札幌2.3
- 2012/06/02 TDDBC大阪1.0
- 2012/06/03 TDDBC大阪2.0
- 2012/06/24 TDDBC大阪2.1パッチ
- 2012/08/05 TDDBC大阪2.2パッチ
- TDD Boot Camp(TDDBC) - TDDBC大阪1.0
- TDD Boot Camp 大阪 1.0( #tddbc ) : ATND
- 6月3日 TDD Boot Camp 大阪 2.0 #tddbc(大阪府)
- TDDBC大阪2.1パッチ : ATND
- TDDBC大阪2.2パッチ : ATND
- #tddbc 大阪 1.0 & 2.0 - Togetter
- TDDBC大阪1.0 - datsuns's blog
- 6/2 TDDBC大阪1.0行ってきました! - 2冊の本を3等分
- TDD Boot Camp 大阪 1.0( #tddbc ) に参加しました - kk_Atakaの日記
- TDDBC 大阪 1.0 について - @yujioramaの日記
- TDDBC 大阪 1.0に参加しました!! - DAIDAIの日記
- TDDBC 大阪 2.0 参加してきた #tddbc - ITとともに生きよう
- TDDBC大阪1.0、2.0に参加(Picture) - 千里霧中の犀
- #tddbc 大阪1.0, 2.0 メモ - 日々常々
- It's just same as dust ahead of a wind: TDDBC大阪 1.0 & 2.0
- #117 TDDBC大阪のお手伝いをしてきました « TDD « 勉強会 « Gab_kmのブログ
- #TDDBC 大阪でGroovyを最大勢力にしてきました。 - うさぎ組
- #tddbc 大阪2.0の企画・運営をしてきました - pocketberserkerの爆走
- TDDBC大阪2.1パッチをあてました - 日々常々
- 2012/07/22 TDD in Action
- 7月22日 TDD in Action #tddact(東京都)
- TDD in Action #tddact - Togetter
- TDD in Actionを開催しました。 #TDDAct - うさぎ組
- イベントTDD in Actionを開催します #tddact - pocketberserkerの爆走
- TDD in Actionを共同開催しました #tddact - pocketberserkerの爆走
- TDD in Actionに参加してきた #tddact - くりにっき
- イベントTDD in Actionを開催します #tddact - pocketberserkerの爆走
- レポート置き場: TDD in Action に参加してきました #tddact
- TDD in Action - 負けてゐる日誌
- mike、mikeなるままに…: TDD in Actionに参加してきた
- (TDD) TDD in Actionに参加してきた - joker1007の日記
- TDD in Action に参加しました - THE BLUE NOWHERE
- 2012/08/11 TDDBC仙台02
- TDD Boot Camp(TDDBC) - TDDBC仙台02
- イベント案内 | 2012-08-11 (土) TDDBC(TDD Boot Camp)仙台02 - 東北デベロッパーズコミュニティ
- TDDBC仙台02 #tddbc - Togetter
- 2012-08-14 TDDBC(TDD Boot Camp)仙台02に参加してきた - marsのメモ
- TDDBC仙台02 を開催しました - nnasakiのブログ
- TDDBC_仙台02の課題をC#で素振り(ステップ0 〜 1まで) - nnasakiのブログ
- 2012-08-18 - エンジニアが来たりて笛を吹く
- Twitter / masanobuimai: #tddbc 仙台02の集合写真もらったんで、ちょっ ...
- 2012/08/25 TDDBC岡山
- 8月25日 TDDBC岡山 1.0
- TDDBC大都会岡山1.0 まとめ #tddbc - Togetter
- TDDBC岡山告知 for Ruby会議01 by Shinsuke Abe on Prezi
- TDDBC岡山1.0に行ってきたよ! - mirai-iroの雑記
- TDDBC岡山1.0に行って - 日々常々
- 美涼の露 - 日々常々
- TDDBC岡山開催に向けた自主練習所感 - 冥冥乃志
- TDDBC岡山1.0を開催しました - 冥冥乃志
- TDDBC岡山で発表してきました - pocketberserkerの爆走
- TDDBC岡山開催についての構想(妄想?)メモ - zephiransasのチラシの裏
- TDDBC岡山に参加してきた - 三日坊主と呼ばせない!日記
- TDDBC岡山で紹介されていた本のメモ - 三日坊主と呼ばせない!日記
- #TDDBC 岡山にスタッフとして参加してきた - 水まんじゅう
- #TDDBC 岡山 参加者のプログラムを見て - 水まんじゅう
- TDDBC岡山1.0に参加してきました - IT素人がIT機器を弄ったり妄想したりする日記
はじめに (10:00〜10:10)
TDDBC横浜シリーズ主管、せとあずさ♂さんと会場ホストのKIMURA Takao(TwitterID:@tw_takubon)さんによる挨拶から。
基調講演 (10:10〜12:00)
かわにしさんによる基調講演。書籍『テスト駆動開発入門』をベースにした内容でした。(※スライド資料は公開され次第リンクします)
基調講演中、突如一斉に鳴り響く音、音、音。何事か?と思いましたが、こういう事情のようでした。
ペアプロ・TDDデモ (12:00〜12:30)
- 実践ペア:
- リアルタイム解説:
TA/スタッフはこの時、基本部屋の後ろに陣取ってました。
そしてお昼休みを前にグリーンバンド販売についての軽い説明が和田さんからありました。
そのままお昼になだれ込み、お昼休み中にグリーンバンド販売も実施。トータルで35個近くは売れていた模様。このタイミングで販売する事で会場はグリーンバンド一色に。(※注:グリーンバンドでは現地(開催会場)での『実費での配布』となっております)
TDD&ペアプログラミング実習/コードレビュー (13:15〜18:00)
昼食後はいよいよイベントの肝、ペアプロTDD実践&コードレビューのサイクルに。
Javaで選択した人数は今回最も多かったので、Java(JUnit)テスティングに自信のある/無しで一列に並んでもらい、両端同士でペアを組んでもらう形を取り、ペアを作成。
その他の言語及び当日の座席表、席位置はこんな感じでした。
- (注:座席表位置は【ペアプロ第1・第2セッションでの座席位置】午前中は講演ベースだったので席はバラバラでした/第3セッション目にはこの状態から更にペア交代を行っていました)。
- (注:Java及びRubyでの参加者の座席位置が把握出来ておりませんでした...orz 自分はココに座ってたよ!とかこの人はココに座ってた、と御存知の方は是非修正をお願いします。ドキュメントは誰でも修正可能な状態にしてあります)
- TDDBC横浜 Second Season 座席表 - Google Docs
エントリ冒頭にも書いたように、私自身はTDDBCに過去2回参加者として参加しています(共にJava)。なので、さすがに3回目は(ちょっと参加者で参加するのはねぇ…/もうTAやスタッフとして関わるべきだろう)…という思いもありました。また、TDDBC参加後もBootはしたもののBoostしてるか?と問われると疑問符が付く所もありました。そんな経緯もあり、TDDBC横浜2nd開催が決定から少々経った時期にある種『イベント駆動』で関連するテーマへの学習を促進させよう!と今回のTA/スタッフ参加に手を挙げてみた感じです。
TA目線で他のTAの方々を眺めて見ると、やはり皆さん素晴らしい知識や振る舞いでペアに適宜的確な助言やアドバイスなどを送られていたり、テストに関する独自の見解や意見なども持っておられたり。色々な気付きや学びを得られたひとときでした。(主に)Javaで参加された皆さん、当日は如何だったでしょうか?楽しめていただけたのなら幸いです。
これまでのTDDBCに於いてTAの方々は皆歴戦の強者揃い!といった顔触れで若干TAエントリに手を挙げるのは『大丈夫かな〜』と躊躇いもありましたが、TDDBCや関連イベントに参加され『是非自分も!』と触発されたのであればその勢いを大事に手を挙げてしまっても、まぁ大丈夫なんじゃ無いでしょうか。既に所定の言語でのテスティング経験が十分にある人は勿論の事、イベントを体験したけどその辺のスキルはまだ…という方も、参加された事で既にまだ参加していない人よりは1歩前に進んでいるわけで、その際の思いや振り返り、経験を踏まえて次回以降参加される方々に助言やアドバイスされる事でも務まるのではないでしょうか。(※あ、対象言語及びその言語で推奨・指定されているテスティングフレームワークはマスターまでは行かなくても、そこそこ把握し使える事は勿論必要ではあると思います。あと、参加者の体(てい)で強力なマサカリを投げてくる強者も紛れ込んでくる事も多々あると思いますのでその辺りには注意が必要になるかもしれません)
なお、課題に関しては最近行われているTDDBCで良く採用されている『自動販売機2.0』を横浜2ndでも採用。課題として利用されている頻度が多い事もあり、『用語集』など補足情報も用意されている参加者にはありがたい課題に熟成されておりました。
個人的にもこの日を迎えるにあたり、事前に途中(Step5)まで予習をしてみました。今回のイベントでのレビュー指摘内容を踏まえると、TAなのにこんな出来で大丈夫だったのだろうか…と若干不安ではありますが、晒しておきます(笑) たぶん指摘個所だらけだろうとは思うので、改めて内容を見直しつつ、空き時間を使って最後までトライしてみようと思います。
実践内容やコードレビューの詳細については参加者の方々が各々振り返ってブログなりに上げてくれると思うのでそちらにお任せ。ここではTA/スタッフの傍ら撮っていた写真の数々(及び参加者のつぶやき)で当日の雰囲気を感じ取って頂ければと思います。
関連書籍
コードレビュー
質問コーナー (18:00〜18:30)
ペアプロTDDの時間内までに寄せられた質問に、主にTA(参加者も含む)が回答して行くと言うコーナー。
今回のイベント中、唯一メモを取れたのがこのコーナーのみだった(笑)という訳で、こちらは可能な限り書き留められたメモをUP。
回答の中で記載に指摘事項がある場合は教えてください。対応致します。
- Q.コードが変更されたら、テストを直さないといけなかった。これはしょうがない?
- Q.シナリオ的なものはどこまで考えるべき?
- 目処を立てて作る
- ユニットベースでの機能単位で考える
- 最終的にはエンドツーエンドだけれども
- シナリオ、とは何なんでしょうね?
- 今日のお題:払い戻し操作、2回目はゼロである。というシナリオ
- 行間にあるところをどこまで読むか。
- ユーザーストーリー?
- 身もフタもないけど…わかるじゃないですか?(笑)その分かるを、どこまで明確にするか?
- 何もかもPOに聞けと言われたら、そらPOキレますよ
- 対象とするものがちゃんと書ける
- それこそ、ドメイン知識なのではないか。
- 動かしてみてから、分かった段階で
- テストする、という価値判断をどこに持つか。
- テストケースの選びかた、という所に行くのでは。
- 今日のお題:払い戻し操作、2回目はゼロである。というシナリオ
- Q.テストケースを考えてみた時にそれをリストに出してみると細かい点が出てきた。それらテストの『実行順序』という点を考えると、どういう順序で書くのが良いのか?
- テストするケースを考えた場合、どういう順序で書く?
- 状態が初期値の状態で
- 10円入れた状態で
- 1個書いた段階で気付くテストもある、そういう時に順序はどうする?
- テストメソッドの名前で意味を表している。
- まずは一旦テストメソッドで枠を書いてしまう。一覧。そしてignoreにしといて順次対応、ignoreを消していく。
- このメソッド要るな、と分かったらペンディング状態にしておいて後で対応。
- todoで消す、というというのもあると思う。
- 一旦ガーッと書いておいて。
- 状況を増やす方が安価なのか、機能を増やす方が安価なのか。悩ましい問題。
- すぐ手を出すか、後で手を出すか。すぐ脇道に逸れやすいので、控えておくと言うのは良い。
- テストリストというのも、そういう側面があると思う。
- 機能増やす方が、コストが高くなりがち。
- TDDをEclipseでやる時のオススメショートカットやテンプレートを教えて欲しいです。
- ショートカットについては、この辺等をご参考に。
- Q.git commitのタイミングはいつが適切でしょうか?git-nowも使いますか?
- 手で動かす時代は終わりました!
- auto-commitをオススメします。歴史を再編集するという手法。
- 最後に終わってからコミットコメントを考えるので良い。
- 便利そうだけど面倒臭そう?
- だいたい10コミットが1つになる粒度。
- git-nowを使っています。
- git-nowも忘れるというケースもある。コミット感覚が空く場合
- gitでマスター上で作業するというケースはまず無い。ブランチを切って作業するのが普通。
- greenになった段階でコミット。赤い時点でやると同僚に怒られる。
- リファクタリング:綺麗にするのは意外に手間が掛かる。戻れる様にしておく/戻れる地点を作っておくという事は価値がある。
- Q.『納品に間に合わない!』テストを書かないとダメ?
- Q.『時間がない』『リリースが近い』事を理由にテストを書かない人を戒める方法を知りたいです。
- とあるスゴいバグを起こした。みんな怒られる。痛い目を見るとみんな言う事を聞く。
- (うちも大分痛い目見てる、辛いと思うんだけどな〜という声多数)
- 手動テストの項目が10000を超えているというところも…
- 自動化することでどれだけ効率化出来るのか?というのを再確認
- 4回テストをやるくらいなら、自動化すべし。
- リリースする直前にリファクタリングしてはいけない、というのはある。
- 言ってることは分かるけど、書いてる暇はねえんだよ!というのをはじく仕組みは難しい。
- Q.テストがあれば安心して作業出来るのは分かるけど、現実には時間もお金も有限、どうすれば良い?
- A.基本的には今の開発だとテストが無いとリジェクトされる。そういう仕組みが無いと書けないという心理状態になった。
- Q.TDDの1ステップが大きすぎると感じた時、設計中でしか使わないメソッドを追加して進んで行くのはアリでしょうか?(プロダクトコードではそれは削除)
- 途中で確認がしたくなった。メソッドを作って最後に消す。privateにする
- 1個がデカ過ぎると1サイクル回らない
- 途中経過を見ると言うことが副作用を与えないのであれば、構わないのでないか。寧ろ推奨?
- オブジェクト指向的な考えで行けば、小さいメソッドを作って…というのはあり。
- デカイ事はフィードバックになり得るのではないか?
- Q.実装してる時に気づいた新たなTDDの管理方法や、やるタイミングについて、オススメな方法などがあれば教えてください!
ふりかえり・クロージング (18:30〜19:00)
目立った所としては、『質問コーナーが良かった』等でしょうか。突発的に思いついてこのコーナーを設けたらしいのですが、参加者の疑問に時間を置かずに回答が得られたのもあって好評だったようです。
ふりかえり内容については以下に文字起こし致しましたので宜しければ御参照ください。
そして最後は全員集合写真撮影で締め。ちょうどこのタイミングで懇親会用食料の宅配が到着していたので撮影をお願いしていましたw
懇親会 (19:00〜)
時間的には大きな遅れも無く、ほぼ定刻通りに懇親会に突入。そして午後8時を回る頃にはLT大会へと突入。
LT:『Goos本翻訳版のお知らせ』
実践テスト駆動開発 (Object Oriented SELECTION)
- 作者: Steve Freeman,Nat Pryce,和智右桂,高木正弘
- 出版社/メーカー: 翔泳社
- 発売日: 2012/09/14
- メディア: 大型本
- 購入: 4人 クリック: 262回
- この商品を含むブログ (31件) を見る
LT:『RSpecに関するパッチを(TA業の傍ら)書いていたお話』
そして引き続き懇親会は続きます…(※この後とあるトピックで懇親会会場が多いに盛り上がっていた(一日を通して、本編のどの場面よりも遙かに盛り上がってた!)んですが、寝て起きて冷静に考えてみるとアレだった(熱量は半端無かったけど方向性がドイヒーw)のでこちらのエントリで言及するのは自重します(笑) 詳細を知りたい人は参加者に直接聞くか、Togetterを見てみよう!)
以上、TDDBC横浜2ndに御参加の皆様、お疲れ様でした&ありがとうございました!
その他関連: