はじめに
Classiでは5年ぶり2度目となるTDDワークショップを『テスト駆動開発』の翻訳者として知られる t_wada さんこと和田卓人さんにオンラインで開催していただいたので、その様子をお伝えします。
前回の記事はこちらになります!
概要
ワークショップは午前と午後の2部制で午前中は講義、午後にはTDD実践という流れで1日をまるまる使って実施していただきました。
午前の講義では、「AIとの協業を支える自動テスト」をテーマにAIとの向き合い方やAIと開発をするうえでのテストの立ち位置についての講義を行っていただきました。
午後からはAIを使わず、TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング - YouTubeや講義で出てきたTDD例を参考に「整数の閉区間」というお題で4つのレベルの中から選んでTDDを実践し、t_wadaさんにレビューをしていただきました。TDDを行う中で参考にしたのが以下になります。(参考: 【翻訳】テスト駆動開発の定義 - t-wadaのブログ])
網羅したいテストシナリオのリスト(テストリスト)を書く
テストリストの中から「ひとつだけ」選び出し、実際に、具体的で、実行可能なテストコードに翻訳し、テストが失敗することを確認する
- プロダクトコードを変更し、いま書いたテスト(と、それまでに書いたすべてのテスト)を成功させる(その過程で気づいたことはテストリストに追加する)
- 必要に応じてリファクタリングを行い、実装の設計を改善する
- テストリストが空になるまでステップ2に戻って繰り返す
参加した人の感想
いもり
エンジニアに求められるのは「やりたいことを正確に言語化・設計する力」だと再認識できた1日でした。
午前の講義で特に印象深かったのは「AIとの伴走パターン」のテンプレートです。事前に設計書を作成・レビューしてから実装させる手法は、その後のコーディング精度を劇的に向上させると感じ、普段の開発にもすぐに取り入れられた内容でした。
午後のワークショップではTDDに初挑戦しましたが、最初のリスト作成以上に、開発サイクルの中での「TODOリストの軌道修正」に苦戦しました。原因としてはリスト単位の機能実装に集中するあまり、全体像を見失ってしまった点にあります。部分と全体を行き来し、時には柔軟に設計方針を見直す視点こそが、開発を行う上での重要なスキルなのだと痛感しました。
kanapiii22 ( id:kanapiiii )
今回のTDDワークショップで特に印象に残ったのは、「テストはコードで書く仕様書である」という言葉でした。これまでの私は、RSpecを「実装したコードが意図通りに動いているかを確認するためのもの」として書いており、テストは実装の後追いになっていました。しかし、事前動画やワークショップを通して、使用や振る舞いを先に言語化し、それをテストとして表現するという体験をし、テストそのものが仕様書の役割を果たす感覚をつかむことができました。
将来このコードを読むチームメイトが、テストを読むことで使用を理解できるようにするためにも、今回ワークショップでつかんだ「テストをドキュメントとして書く」という感覚を忘れず、チームに戻ってからも振る舞いを表現にするテストを書くことを意識していきたいと思います。
akinko
本講義を通じ、AI時代におけるエンジニアの真価は「知識に基づいたディレクション能力」にあると再認識しました。直感的な「Vibe Coding」に留まるのではなく、専門知識を駆使してAIを自律的に制御する「Agentic Coding」へと昇華させることが、プロのエンジニアには不可欠であると身が引き締まる思いになりました。
午後のワークショップでは、テストリストの作成を通じて自身の設計スキルの現在地を痛感しました。実装前に設計を言語化し、思考の解像度を高めることが、成果物の品質を左右するのだと改めて学びました。今回の気づきを糧に、より一層スキルアップに励みたいと思います。
すずまさ
受講前は、TDDの概要こそ知っていたものの「一気に実装してからテストを書く方が効率的に書けるのではないか」と考え、実践したことはありませんでした。
しかし、今回TDDを体験したことで、むしろ実装が複雑なものほど全体的なスピードが上がりそうだと感じました。
ワークショップでは小さめのお題を対象に取り組みましたが、当初作成していたTODOリストは次々と更新され、最終的には2倍近い数の項目になっていました。
実際の業務でも、TODOに漏れが見つかり想定より時間がかかることはよく経験しているので、Red→Green→Refactorのサイクルを小さく回すことで素早く漏れに気づけるのはTDDの強みだと感じました。
また、小さくステップを刻むことで、複雑な仕様でどこから着手していけばよいかわからない場合も、設計を練りながら「とりあえず書いてみる」ことができるのも魅力的でした。
AIとどう協働していくかの話も含めて、明日から実践できる学びを多く得られたので早速取り入れていきたいと思います!
しらたき
講義の中で言及されていた「AIと作業するときは細かく指示するより、広く使われているテクニックを一言伝える方が正確」という教えは、目から鱗でした。 デザインパターンなどの標準的な語彙を学ぶことは、単なる実装技術の向上以上に、AIとのコミュニケーションコストを下げるために不可欠だと痛感しました。
また、私がやっていたのは「Vibe Coding」であり、「Agentic Coding」ができていなかったなと気づきにもなりました。
データエンジニアリングの領域でも、標準的なアーキテクチャやパターンを意識的に取り入れ、AIと共通言語で対話できるスキルを磨いていきたいです。
マイン
午前中はAIと開発についての話でした。いろいろな新しいキーワードが出てきて、とても面白かったです。AIが進化しても、人間がテストを書いて「何が正しいか」を決めることが大切だとわかり、勉強になりました。
午後は実際にTDDを体験しました。テストを先に書くやり方は初めてでしたが、少しずつコードを作る感覚がよくわかりました。今まではテストを「最後にするもの」と思っていましたが、これからは「作りながら考えるための道具」として使っていきたいです。
とても役に立つワークショップでした。明日からの仕事でも頑張って使ってみます。
いしかわ
テスト駆動開発を理論だけで終わらせず、手を動かして学べたのは大きな収穫でした。 特に印象的だったのは、オープンな場でのコードレビューです。自分ひとりの視点だと気づけない「詰まりどころ」や、それに対する回答を周りと共有できたことで、学びの解像度がぐっと上がりました。
また、AIコーディングの難しさについても改めて実感しています。ハルシネーション以上に「AIが自分に合わせすぎてしまう(イエスマン化)」(シコファンシー)の方が意外と厄介だなと感じています。AIは自分の考えを肯定して増幅させるツールだからこそ、流されないように主導権を持って使っていきたいです。
アイン
今回のTDDワークショップを通して、開発における「考える順番」の重要性を改めて実感しました。特に印象的だったのは、テストを書くことで「何を作るべきか」「何が正しい振る舞いか」を先に決められる点です。
午後のワークでは、TODOリストを何度も見直しながら進める難しさと同時に、その過程自体が設計を洗練させていくことを体験できました。
また、AIを使った開発においても、人が設計と判断を担う重要性を強く感じました。今後からの開発でも、小さなサイクルで考え、確認し、改善する姿勢を大切にしていきたいです。
daichi ( id:da1chi24 )
普段サービス開発をしていると「ユーザー視点で考えろ」と言われます。これはUIに限った話ではなく、インターフェース設計やアーキテクチャにも通じる考え方です。今回の研修を通じて、テスト駆動開発とは「実装するメソッドを利用者としてどう使いたいか」から設計を考えるプロセスであり、Red / Green / Refactor の手順を行う中で自然と利用者視点の設計になる手法だと腹落ちしました。これは大きな学びでした。
研修全体を通して、テスト駆動開発だけでなく、エンジニアリングの歴史やAIとの向き合い方、t_wadaさんご自身の学習の姿勢に至るまで、幅広い内容に触れられました。知識として理解するだけではなく、リアルタイムに質疑しながら学べたことは研修ならではの価値だったと思います。一流のエンジニアの思考に触れて、刺激になりました。ありがとうございました。
ねこびっと
TDDワークショップの中で一番手が止まってしまったのは、最初のリストを作るフェーズでした。その原因は全体から詳細までを決めてからテストを書き始める必要があるからだと思い込んでしまっていたためです。ですが、ワークショップやレビューを通して、TDDにおいてリストは途中で変更をしても良いものであり、さらにはテストコードまでも状況によっては変更をしても良いという柔軟性のあるものであることを学ぶことができました。
開発、設計におけるプロセスは成果物では体験しづらいので、ワークショップを通してTDDにおける試行錯誤のプロセスを体験できたのは非常に良かったです。今回得られた感覚を大切にして日々の開発に活かしていきたいと思います。
開催の背景
lacolaco ( id:lacolaco )
プラットフォーム部のlacolacoです。Classiでは2020年に一度t_wadaさんのTDDワークショップを開催し、参加者からは非常に好評でしたので、またお呼びしたいとずっと思っていました。2025年は、社内でも生成AIを使ったAgentic Codingの導入も本格的になり、コードを読み書きする仕事の形や意味が変わっていく時期でした。特に、新卒エンジニアにとっては生成AIと共に行う業務が最初の経験になります。開発のスピードがどんどん加速する状況の中で、ソフトウェアの開発をいかに安心できる、地に足ついたものにするかということは、これまで以上に深刻な課題になっていると感じていました。そこで、いまこそテスト駆動開発の考え方が必要だと思い、t_wadaさんにお声がけをしました。とてもいいタイミングで実施できたと思います。
おわりに
今回、研修を行っていただいた t_wada さんに改めてこの場で感謝申し上げます。講義中、コードレビューの際にSlack上や口頭での質問に一つ一つ丁寧に答えていただいたため、TDDにとどまらず、AIとの協業についてや設計、開発における考え方を得ることができたと思います。TDDワークショップを通して得られた知見を今後の開発に活かしていきたいと考えています。ありがとうございました!