はじめに
2025年度に新卒エンジニアとして入社しました、takiです。
ペパボでは、2024年に引き続き今年も日本のTest-Driven Development(TDD)の第一人者であるt_wadaさんをお招きしてTDDワークショップを開催しました。今回は午前に講義、午後にワークショップという構成で行われ、午後のワークショップには10名が参加しました。この記事では、午後の部に参加したメンバーから、当日の様子をお届けします。
昨年のワークショップについては『t_wadaさんによる2024年度版TDDワークショップを開催しました』をご覧ください。また、なぜTDDワークショップを開催しているのかについては、過去の記事『ふつうの開発と TDD ワークショップ』で詳しく説明しております。
TDD研修 概要
Corporate Engineering GroupでSaaS運用などITサポートを担当しているinatchiです。
今回のワークショップは、事前に「見てわかるテスト駆動開発」の動画でTDDの流れを学び、RSpecを使える環境を整えた上で参加します。
ワークショップ当日はTDDの理論と実践を深く学ぶことを目的に、午前と午後の二部構成で実施されました。 午前の部では『AIとの協業を支える自動テスト』をテーマに、生成AIがソフトウェア開発にもたらす影響と自動テストの重要性について学び、午後の部では「整数の閉区間」をテーマにした難易度別4種類のTDD実装課題に参加者同士のペアプログラミング形式で取り組み、実際に手を動かしながら実践形式でTDDの流れを体験しました。
スケジュール
- 10:00 - 12:00 講義(AIと自動テスト、TDDの理論)+ 質疑応答
- 12:00 - 13:00 昼休み
- 13:00 - 17:00 ペアプログラミング形式によるTDD実装課題
午前の部について
minne事業部でモバイルエンジニアをしているfumyと申します。
普段はSwiftやKotlinに触れることが多いので、Rubyに触れるのは久しぶりでした。
まずはワークショップまでの事前課題と、当日の講義部分を紹介します!
事前課題
事前にt_wadaさんがライブコーディングでTDDについて紹介している動画を視聴し、TDDの基本的な考え方とコーディングの仕方を学習しました。
TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング
TDD自体は以前に少しだけ触れた経験がありましたが、ぼんやりとした知識しかありませんでした。今回改めて動画を視聴し、TDDの大きなメリットを再確認できました。
TDDは、単にバグを減らすだけでなく、問題を小さく分割する事による設計の改善、そしてリファクタリングの促進にも大きく貢献します。特に、テストコードがそのまま「生きたドキュメント」として機能し、仕様書となる点が非常に美しいと感じました。これにより、コードの意図が明確になり、チーム内での認識共有もスムーズに進むことを改めて認識しました。
当日の講義
午前中の講義は『AIとの協業を支える自動テスト』というタイトルで、生成AIとTDDがどのように関係して結び付くかという内容でした。
AIの進化がソフトウェア開発に与える影響と、それに伴うエンジニアの役割の変化について深く掘り下げました。特に、AIとの協業における自動テストの重要性が強調され、TDDのワークフローがAI時代でもいかに効果的であるかを学びました。AIがコード生成を担う中で、人間はより上流の設計やレビュー、そして品質保証に注力する必要があり、自動化から「自働化」へのシフトが求められていることを強く認識しました。
講義中は専用のSlackチャットで、積極的かつ自由闊達な情報交換や質問が飛び交い、とても賑やかな雰囲気でした。また、講義中のQ&Aでも多様な質問が寄せられるなど、終始良い雰囲気で進行しました。
今年はTDDに加えて、AIとの協業という注目の話題にも触れる講義内容だったため、若手・ベテランの垣根を越えてさまざまな意見交換や情報共有が活発に行われていました。
午後の部について
minne事業部 Webエンジニアのikechiです。
6月1日にGMOペパボに中途入社いたしました。
今回は入社早々、社内で開催されたTDDワークショップに参加する機会をいただいたので、その体験をレポートします!
ワークショップの内容
ワークショップでは、実際に手を動かしながらTDDを体験しました。
難易度別の4種類の課題が用意されていたことと、AIツールを使用しないことが特徴的でした。
実施内容
- 課題: 整数の閉区間に関する問題
- 制約: AIツールは使用せず、実装
- 進め方: 自分たちでテストパターンを考え、TDDの基本ステップ(RED → Green → Refactor)の順で実装していく
TDDの基本ステップ
- レッド(Red): 機能を確認した上で、失敗するテストコードを書く
- グリーン(Green): テストを成功させる最小限のコードを実装する
- リファクタリング(Refactor): 動作するコードをより良い形に整える
実践!ペアプログラミングでTDD
やってみて気づいたこと
ペアプログラミングで進めたことで、パートナーと「こんなケースはどうだろう?」と議論できました。一人では思いつかなかった観点も出てきて、より網羅的なテストを書くことができました。
実装を進める中で印象的だったことは、シンタックスエラーなど不本意な理由でテストがREDになる場面に何度か遭遇したことです。期待する機能がまだ実装されていないことでテストが失敗している状態を作り次のステップに進むことで、TDDの効果を最大限に活かせることを実感しました。
おわりに
今回のワークショップを通じて、TDDの基本的な流れを体験し、ペアプログラミングの中でお互いの考えを共有しながら進めることの価値を再認識できました。
特に、各ステップを丁寧に踏むことの大切さは、今後の開発業務でも意識していきたいポイントです。実際の業務でもTDDのアプローチを取り入れて、より品質の高いコードを書けるよう努めていきます!
ワークショップに参加した各パートナーの感想
taki
学生時代に簡単なテストを書いた経験はありましたが、テスト駆動開発(TDD)は今回が初めてでした。最初はテストを書いてからコーディングをすることに違和感を覚えましたが、ペアプロでの実践を通じて、開発の方向性を明確にしながら進められる点にTDDの強みを感じました。また、文字列の数値を渡したときにRedになると思っていたのにGreenになったことで、想定よりも広い入力をプログラムが受け入れていることに気づけました。 これはTDDを実践していなければ見落としていたかもしれない点であり、改めてそのメリットを実感しました。
一方で、つい先にクラス設計を考えてしまい、TDDに適した思考への切り替えに苦労した場面もありました。今後は小さな開発からでもTDDを取り入れ、テストから設計を導く考え方を使いこなせるようになっていきたいです!
bqnq
私は今までテストコードを書くという経験がほとんどなく、別の研修でRSpecについて少し触れた程度の知識しか持っていない状態で今回のTDD研修に参加しました。
研修は午前が講義、午後が演習という構成で、午後はペアプログラミング形式で簡単なクラス設計を題材にTDDを実践しました。演習は、AIを使わずに自分たちの手でテスト要件を洗い出し、定義していく必要がありました。この作業は想像以上に難しく、特に「何をテストすべきか」「どこに漏れがないか」といった網羅性を意識しながら進めるのに苦労しました。
ペアで意見を交わしながらリファクタリングしていく中でテストコード自体がそのまま仕様を説明するような、ドキュメントとしての役割を果たしている状態になっていました。最初に書いたコードと見比べたとき、その可読性や保守性の違いに驚きを感じました。今後の開発でもTDDの姿勢を意識して、より品質の高いコードを目指していきたいと思います。
SatoMichi
私は、内定者アルバイトや研修でRSpecに軽く触れた経験はありましたが、テストをドキュメントレベルで丁寧に書いたり、整形したりしたことは今まではありませんでした。テスト駆動開発という概念自体は知っていましたが、本当の意味でのテストのあり方等を知れた今回の経験は私にとってとても貴重なものであると感じています。
午前はAI時代のエンジニアやTDDのあり方についてさまざまな知見を得ることができ、興味深い話をたくさん聞くことができました。また、午後は実際に仕様からテストの内容を切り出し、さらにその内容を構造化して、ドキュメントとしても機能するように整形し直すという一連の流れを体験することができ、とても意義深いものとなりました。
今回の研修で得られた知見を是非とも今後に活かしていきたいと考えています。
yulily
午前は、AI が開発に介入した際にどこにボトルネックが出てくるのか、現時点での現実的なワークフローの紹介の中では TDD がどう活きてくるのかなど、とても勉強になる内容が盛り沢山で、今後の開発を考える上で多くの学びがありました。
午後は、TDD の基本を学ぶためのワークショップをペアプロの形式にて行いました。過去にテストフレームワークの導入経験はあるものの、テストファーストな開発はなかなか実践できずにいました。最初はつい先にコードを書いてしまうことが多々ありましたが、タスクの粒度やテストの構成を見直しながら進めていくうちに、まずテストを書くという意識が身についていったように思います。この感覚を忘れず、今後の業務においてもテストはコードの仕様書と意識し、開発時はまずテストに目を向けられるよう取り組んでいきたいです。
Jonny
TDD研修を通じて、これまで当たり前だと思っていた開発手法を改めて見直すきっかけになりました。 iOS開発でXCTestなどを使ってテストを書いたことはありましたが、テストは常に「後付け」という認識が強かったです。しかし今回は、テストを出発点に据えて開発を進めることで、テストが単なる確認ツールではなく、開発の方向性を示す指針になり得ることを実感しました。
最初は細かくテストを切り出すのが難しく感じましたが、繰り返すうちにその構造に慣れ、むしろ実装が明確になるのを感じました。短い時間でしたが、「テストを先に書く」という考え方が開発習慣に大きな影響を与えることを、自分自身で体験できた貴重な時間でした。これからも意識しながらテストから始まる開発をしてみたいです。
Ikechi
入社直後のタイミングで、充実したTDD研修を受講することができ、非常に貴重な経験となりました。
これまでRubyを使用した開発に約3年間携わってまいりましたが、TDD(テスト駆動開発)を実践的に活用した開発経験は十分ではありませんでした。 今回の研修を通じて、TDDがもたらす具体的なメリットについて、理論と実践の両面から深く理解することができました。
また、研修では、TDDの手法に加えて、AIツールを効果的に活用した現代的な開発フローについてもご紹介いただきました。 これまで知らなかった実践的なアプローチを学ぶことができ、非常に有益でした。
本研修で学んだ知識と技術を活かし、今後の開発業務においてTDDを積極的に導入していきたいと考えています!
inatchi
私は業務でGitHub Actionsの作成・改修を担当することがあり、今回の研修で学んだTDD(テスト駆動開発)の考え方は、非常に有意義で実務に活かせる内容でした。
「要件に沿ったテストを書く → テストが通るように実装 → リファクタリング」というTDDの進め方には最初こそ戸惑いましたが、テストを先に書くことで目標が明確になり、実装に迷いが生じにくくなることを実感できました。
また「とりあえず動くコードを書く」のではなく、「想定したテストで正しく動くコードを書く」という意識への転換にもつながりました。
今後この知見を日々の業務改善に積極的に取り入れていきます!
demi
TDD研修を通して、開発の視点が増えました。以前はずっと実際のAPI、schemaなどに注目して開発していましたが、testの部分は詳しく考えていませんでした。
Testには最後に実現したい機能のあらゆる部分が反映できます。その視点から開発を見直すことで、プロダクトの目的や、お客様にとって本当に大切なことに立ち返ることができると思いました。
fumy
普段はモバイルアプリのエンジニアとして、SwiftやKotlinを用いた開発を行っており、RSpecに似たライブラリを利用したことやTDD(テスト駆動開発)の概念については知っていました。
しかし、自らTDDを実践するのは、以前バックエンドのコードを書いていた時以来のことでした。
今回改めてTDDを試みてみると、テストとそれに基づく仕様を深めていく過程が非常に楽しく、テストコードがそのまま仕様書に変わっていくような感覚を思い出しました。
この研修で得た知見やエッセンスを、これからの業務に積極的に活かしていきたいと考えています。
sakipi
業務ではこれまで、機能を実装してからRSpecでテストを書くというフローしか経験がなく、今回の体験はとても新鮮でした。
「テスト駆動開発(TDD)」という言葉は聞いたことがありましたが、実際に取り組んだのは今回が初めてで、午後のペアプロ形式で一緒に体験できたことは貴重な経験となりました。
また、「テストが仕様書のように機能する」という視点でテストを考えたことがなかったため、そうした観点からテストを整備する重要性にも気づかされました。
特に、規模の大きなプロジェクトになると、コードだけで仕様を読み解くのに時間がかかることもあるので、今回のワークショップで得た視点を今後の業務にも活かしていきたいと思います。
おわりに
今回のTDDワークショップでは、2025年度新卒からベテランまで、さまざまな経験レベルのエンジニアが参加しました。1日を通してTDDの理論と実践の両面から深く学ぶことができました。ペアプログラミングでは、一人では気づけない視点や、テストファーストな思考の難しさと面白さを体験でき、参加者全員にとって大きな収穫でした。
今後は、今回学んだTDDの手法を日々の開発業務に積極的に取り入れ、より品質の高いコードを書けるよう努めていきます。また、AIとの協業が進む中で、人間のエンジニアとしての価値を高めるためにも、自動テストの重要性を改めて認識し、継続的に学習をして理解を深めていきたいと思います。
最後に、前年度に引き続きワークショップの講師を引き受けていただいたt_wadaさんに心より感謝申し上げます!