この1、2週間いろいろイベントがありすぎてブログが現実世界に追いつけていない。。。
はじめに
8月18日(金)に渋谷駅のきれいな方にあるミクシィで開催された、「TDD challenge」というイベントに参加してきたので、その記録を書いておく。
そもそもTDDやペアプログラミングってなんじゃいって人はこのへんどうぞ。(ペアプロのページ開くといきなり「ワークステーション」って出てきて時代を感じる)
TDD challengeとは
今年の新入社員研修で、受講者から大変好評だった「テスト駆動開発研修」のコンテンツを、
「TDD challenge」と称してご提供する特別な1dayワークショップです。
*TDD=test-driven developmentテスト/設計について学ぶ機会が少ないものの、今後のサービス開発において役に立つ開発手法です。
現場エンジニア社員の講師・チューターのサポートを受けながら、この夏のスキルアップを目指しましょう!- 【学生限定】TDD challenge(テスト駆動開発ワークショップ) #1 2018.08.18 - connpass
とのこと。
午前中にテストや設計についての講義を受けた後、軽くTDDとペアプログラミングの実習をして、午後は与えられた3つの課題をガッツリ解いていくという感じだった。
事前アンケートでgit/GitHub等開発ツールの使用経験や、得意なプログラミング言語について聞かれ、それをもとにしていい感じにマッチングされた相手と2人組、"ペア"になって課題をこなしていく。僕は、得意な言語として同じRubyと答えた@_iamkuntaoさんとペアになった。
また、ランチタイムには新卒のエンジニアのみなさんとランチしながらお話をすることができた。(記事TOPの画像はランチタイムに出た釜飯です。激ウマであった。)
開催中のいろいろ
9月4日にも第二弾をやるらしいので、そこに参加する人たちに最大限楽しんでもらうために詳細は書かないでおく。だからまぁ雰囲気だけでも伝わればということでここはひとつ。
わーい #mixi_tdd
— mktakuya (@mktakuya) 2017年8月18日
チームBの向平です!mktakuyaです!よろしくお願いします!!! #mixi_tdd
— mktakuya (@mktakuya) 2017年8月18日
イベントのはじめにハッシュタグの案内があったのであいさつツイートくらいはしたけど、その後はツイートしている暇など無いくらい楽しかったし忙しかった。とにかくガリガリとコードを書いていた。
ペアプロは、1台のPCを囲ってやるのではなく、それぞれのPCを使ってやる感じだった。運営側がでかいモニタを用意してくれたので、ドライバ(コード書き担当)になる人が適宜モニタに繋いで、ナビゲータさんがそのモニタを見ていろいろ指示出したりという感じ。モニタはHDMI接続だったけど、USB-Cのアレも運営側で用意してくれてました。
ペアでのソースコードの共有は、ぼくたちはGitHubを使った。
僕らの他にRubyのペアがもう1つか2つくらいあったと思う。あとはPythonとか、Swiftとか、Javaとか、そのへん。C言語のひとたちもいてすごかった。
イベント中はガッツリコード書くし、思考を言葉として、そしてソースコードとしてアウトプットし続けなければならないので、めちゃくちゃ疲れます。前日はよく寝たほうが良い。あとランチタイムのときにコーヒーもらっておくこと。
学んだこととか感想とか
学んだことについてあまり書きすぎると何やったかバレるのでふんわりと箇条書きで。
- 名前は知っていたしそれっぽいことはやっていたかもしれないもののちゃんとはやっていなかったペアプロを実践できた。
- ペアプロ中は、ドライバはとにかく自分の脳内を垂れ流しまくると良い。
(自分自身の思考の整理にもなるし、ナビゲータの助けにもなる) - ナビゲータは、「これは指摘したほうが良いかな?」「でも今ノリノリでコード書いてるのにここでゴチャゴチャ言うのもな」とか迷うし、自分がドライバになってから「いやこれ絶対さっき言ってくべきだったわ、、、」となる。
- テストしやすいコードは、良い設計である。
- 自分たちが1時間前に書いたコードのテストしやすさに感動し、自画自賛をはじめる。
- 「今回はTDDしにきたから、やりすぎってくらいテスト書こう」という感じでテスト書いてた。
- コード書いてる横から「もっとこう書けるんじゃない?」が飛んで来るのは最高。よりよいRubyを知ることができた気がする。
- HRTの精神ほんとうに大事。今回僕らのペアはそれをちゃんとできていたので、とても楽しくペアプロできたと思う。
おわりに
今回は他チームと競い合うイベントではないので気楽に参加できたし、かといって課題のボリュームや難易度もそこそこにあるのでガッツリコードを書くという体験ができたしで、たいへん良い1日であった。
僕らのペアは開始時点でいい感じに仲良くなって、各種開発ツールの使い方やコードの書き方、開発の進め方の合意も早い段階でとれて、git/GitHubもとりあえずこのイベントをこなすにはまったく困らない程度にお互い使えたので、素早く開発を始めることができた。活発に議論しながらやっていきを発揮できたので非常に楽しかったけど一番前の席だったのでうるさかったと思う。
あとはまぁ、普段フルスタックなフレームワークを使ったプログラミングしかしない人は、フレームワークに依存しないコードの書き方とテストツールのセットアップの方法くらいはおさらいしておくとスムーズでいいと思う。(例えばRails書きさんは、Railsに依存しない、RSpecやMiniTestのセットアップ方法を軽く調べておくと良いと思う。)
第2回もやるらしいので、興味ある方はぜひ参加してみてはどうでしょうか。