あまのじゃこ

技術メモとか生活とか

TDDBootCamp松江#1に参加してきた

11月11日、12日TDDBootCamp松江#1に参加してきた。

参加から結構日がたって書いているので結構ざっくりレポートです。

今回のイベントは2日間あり、どちらも参加しました。(片方だけの参加もOKでした)

実に濃厚な2日間でした。

TDDBCとは

テスト駆動開発(Test Driven Development。以下TDD)について、実習形式で学ぶイベント。

きっかけ

自分は普段RubyonRailsを使った開発をしていて、RSpecやMinitest、Capybara、Cucumber等を使ってテストを書いています。

プログラマになったばかりのころはテストを書くのは面倒でしたが、今ではテストを書いてないと不安になるくらいテストを書く習慣にはなっています。

ただ、より保守しやすいコードを書きたかったり、どのようなテストを書くべきか悩んだりはするので、TDDを学びたいと思って参加しました!

また、松江にTDD開発者として著名な和田卓人さん(@t_wada)さんが来られると聞き、なかなかない機会なので是非とも参加したかったのです☆

1日目

基調講演

ライブコーディング

f:id:macera:20171206213158j:plain

和田卓人さんの講演(座学)。

しかもなんと、1日目のスライドはその日の動画付きです!!!

参加できなかった人はぜひみてください!

TDDの要点がつまった濃厚な内容で、とてもわかりやすく贅沢な50分間!

ふるまいの期待することのTODOリストを最初に書いてからテストを書くことが印象的でした!

ちなみに、このイベントの1ヶ月ほど前に、なんとタイムリーに「テスト駆動開発」本が発売されたばかりなので、この内容を聞いてから本を読むと理解が深まりそうって思いました。

f:id:macera:20171206213417j:plain

ジョジョネタが時々出てきたのがジョジョ好きとしては楽しかったですw

f:id:macera:20171206213223j:plain

f:id:macera:20171206213242j:plain

1日目のライブコーディングはRuby&RSpecで書いていただきました。

チーム分け

ペアプログラミングで実習するので2人ずつのチームを組みました。

さすがTDDの勉強会だけあってレベルの高い人が多い印象でした(ほとんどの人が自動テストを普段書いている)。

しかも女子率がIT勉強会にもかかわらず高い印象でした。3人に1人くらいは女性。

今回使用するプログラミング言語については、RubyCity松江なだけあって、8チーム中6チームはRuby(他はJavaScript)になりました。

自分ももちろんRubyを選択。テストはRSpecを使用しました。

テストに慣れていない人はスタッフメンバーと組んでいました。そういう配慮はいいですね。

お菓子休憩

f:id:macera:20171206213516j:plain

チョコやらクッキーやら

めっちゃ考えるので糖分がめっちゃほしくなるのでうれしいw

ドリンクもお菓子も、実習中でも好きに飲食できるようになっていてありがたかったです。

スポンサー様に感謝。

ペアプロ実習

ペアプロのお題はセマンティック・バージョニングでした。全部で4問あります。

自分たちのチームは以下のような感じで進めました。

  • 自分たちのチームは1問1問じっくり議論して進めた(速く問題を終わらせることよりも、TDDを体験することを主眼としている実習のため)
  • 交代する際はGitHubを使ってそれぞれ自分自身のPCを使う(キーバインドやエディタが異なり他の人のPCだと使いにくかったので)
  • describeとcontextを使い分ける。

個人的にdescribeやitに書く期待することについての分かりやすくて短的な日本語文を考えるのが難しかったです。

実習の前に和田さんのライブコーディングがあったので、最初に何をしたらよいのか戸惑うことがなくスムーズに始めることができました。

ペアプロなので、他の人がどういうふうに考えてプログラミングをしているのかわかって面白い!

意見を言いながらやるのでめっちゃ白熱☆

f:id:macera:20171206213634j:plain

コードレビュー

実習 → コードレビュー → 実習 → コードレビュー → 実習 → コードレビュー

の流れで、1回のコードレビューで2,3チームのレビューをしました。

レビューされるチームは前に出て発表しました。

和田さんだけではなく他のチームのメンバーからのつっこみがするどくてレベル高いなと感じました。

(なぜこのような変数名にしたのか。なぜエラークラスを新しく定義したのか。などなど)

他のチームの進め方や考え方が自分のチームとは違っていたところもあり、面白く参考になりました。

そして良いなと思ったことは次の実習で自分のチームでパクったり...いえ活かしたりしました。

サイン会

テスト駆動開発」本の販売とサイン会!見本?1冊を残してほぼ完売!

自分はすでに購入してもってきました。ついでに「SQLアンチパターン」ももってきてサイン頂きましたw

懇親会

f:id:macera:20171206213657j:plain

ピザに、チキンサラダ、ドライカレーおいしかったですw

食後のコーヒーもとても美味しかったです。カフェ・カリアーリのコーヒーで、なんかイタリアの有名なコーヒーらしいです。

f:id:macera:20171208005905j:plain

ITエンジニアの意見交換がとてもワクワクしました。

普段の業務を効率化するためのツール作成の話や、海外のIT市場の話とか、普段の開発スタイルの話とか

他のIT企業のエンジニアと話すのは楽しいですね☆

とても刺激的で自分ももっとプログラムを書きたいっ!!書かねばっっ!!(want&must)て意欲が湧きました。

次の日も朝からあるのに22:00くらいまで自分は残ってましたw

2日目

1日目だけ参加の人もいたのでその日はちょっとだけ人は少なめ。でも2日連続で参加する人がほとんど!すっげえやる気が伝わってきました。

みなさん遅刻することなく二日目がスタートしました。

ライブコーディング(リファクタリング編)

引き続き、和田卓人さんの講演(座学)。

2日目のお題はリファクタリングでした。

そして今回はjavascriptのライブコーディングでした。テストはJest + power-assert-jsでテストされていました。2日間2つの言語のテスト方法が学べるとは豪華です!

1日目は基礎、2日目は応用編と豪華な流れ。

チーム分け

昨日とは異なる人とペアを組みました。

自分の場合は1日目と2日目の相手はそれぞれ違うタイプのエンジニア(経験年数とか普段の開発とか)でまた違った感じでペアプロができましたb

リファクタリング実習

2日目のお題

2日目は用意されたライフゲームソースコードをTDDでリファクタリングするというものです。

そのソースコードrubyっぽくない書き方だったり、変数が分かりにくかったり、要するに汚いコードですw

もちろんテストは書かれていません><

テストを書いて、コードをリファクタリングしていきました。

1日目よりも難易度が高くなっています。

しかし、汚いコードを綺麗にしていくのはとても気持ち良かったですwくせになりそうだ←

2日目のペアプロもやっぱり白熱しましたw

コードレビュー

今回はそれぞれのペアの机に集まってコードレビューしました。

ふりかえり

KPTです。

KPTは、Keep,Problem,Tryの略で「Keep=よかったこと」「Problem=悪かったこと」「Try=次に試すこと」の3つをみんなで考えてふりかえりました。

それぞれ3色カラーの付箋に書いてぺたぺた。

f:id:macera:20171208010034j:plain

f:id:macera:20171208010058j:plain

やっぱ皆、和田卓人さんの講演はわかりやすくてためになったというのと、ペアプロも楽しかった、そしてこれからもTDDを実践していきたいという感想が多かったです。

2日間もあったのに時間がたつのがすごくはやかったです。

自分は現在「テスト駆動開発」本をじっくり読んで復習中です☆

以上、TDDBootCamp松江#1 レポートでした!