前回に引き続き、和田 卓人(@t_wada)さんに、テスト駆動開発(Test Driven Development, 以下TDD)の1日ワークショップを2018/3/22(木)に開催していただきました!
TDD ワークショップの開催概要などは前回の記事で述べているので、本記事では視点を変えて、TDDワークショップを活用するためにどのような準備/工夫をしたら良いか、という運営側視点での一風変わった内容を扱います。全員が対象となるわけではありませんが、特にTDDワークショップを運営としてこれから開催する皆様に役立つ情報になると思います。もし、TDDワークショップに参加者として参加する場合は、運営にこの記事のURLを送っておくと、より良い会になるかもしれません。
以下、運営における準備/工夫について述べます。
事前: 周知文言にテストフレームワーク/スイートに関する準備を含める
ワークショップに参加するメンバが、全てテストを書き慣れているわけではありません。実際、弊社における一部の参加者にも普段はコードを書いていないマネージャ(管理職)も参加しています。参加の狙いとしては「TDD/ペアプロ/コードレビューをやってる、開発チームの気持ちがわかる/コンテクストが理解できる/話が通じるようになる」という点だったようです。このような参加者がスムースに、午後の演習に入れるように、参加者向け事前連絡の文言に
「何らかのテストフレームワーク/テストスイートを使えるようにしておくこと」
という一文を入れておきました。これで、経験が浅い参加者は事前に準備できるようになります。
事前: 周知文言にペアプログラミングについての学習資料を載せておく
午後の演習では、ペアプログラミングでテストケースなどを書いていきます。本ワークショップはペアプログラミングのワークショップではなく、TDDのワークショップでなるため、ペアプログラミングについての知識は先に案内を出しておき、参加者に予習してもらうと良いです。いかに、実際にt_wadaさんからいただいた参考資料を掲載しておきます。
事前+当日: Slack & 専用のchを用意する
参加者が既に同じSlackにジョインしている場合はほぼ準備不要ですが、特定のSlackワークスペースに、TDDワークショップ用のチャンネルを用意しておくと良いです。なぜ便利かというと、たとえば
- 午前の講義: 疑問に思った内容をchannelに書き込んでおいて、後でt_wadaさんに拾ってもらって回答いただける。最後に挙手する場合は、忘れてしまう場合もあるがそれを防げる。また参加者間でリアルタイムで質問をシェアできる。
- 午後のコードレビュー: 参加者からコードレビューのコメントを挙手制で出すのが通常ですが、参加人数が多いと手を挙げにくい、また時間内にコメントが出きらないという可能性もあるため、Slackで非同期でレビューコメントを集めるようにしました。
- ワークショップ終了後: 後述するアンケートのURLをそのSlackで流します。これで、アンケートの回収率を高めることができます。
事前+当日: ディスプレイ持参OKとしておく
ペアプログラミングをする場合、同じ画面を見る状況を作るのが大切です。とても些細なことに思えますが、実際に指を指して「ここ」とコードの場所を示せるのは、同じ画面を物理的に共同所有できているからこそ可能な作業であり、ペアプログラミングの効率を高めてくれます。ラップトップ単体でももちろんできますが、大きめのディスプレイの持参をOK(特にワークショップ開催場所が、参加者の居室と近い場合)としておくと、ペアプログラミングの効率を引き上げてくれます。
当日: ペア数分の紙とペンを用意しておく
ワークショップ後半には、実際にペアプログラミングでTDDを実習していきます。このときに役立つのが、紙とペンです。参加者は自分のラップトップなどを持っているから、それを使えばいいのでは、と思われるかもしれませんが、紙とペンは非常に偉大で、「こういうイメージで修正したいです、こういうデザインにしたいです」というのを圧倒的に早く伝えることができます。そこで、午後の演習が始まる際に、運営から紙とペンを配っておくとワークショップが効果的になります。
当日: アンケート記入時間をプログラムに入れる
このようなワークショップでは、終了後のアンケートが運営側のモチベーションの1つになります。勉強会のアンケート回収率は、失敗してしまうと非常に低いものとなってしまいます。たとえば、30人参加して5人分しか集まらなかった、といったようにです。そこで、アンケート記入時間をプログラムの中に入れてしまいましょう。WS終了後にアンケート記入時間を5-10分程度とって、記入が終わり次第、退出というようにすると回収率が非常に良くなります。
当日: アンケートはオンラインで
アンケートは紙の形式も考えられますが、今回のように自分のマシン・端末を持ち込み前提のワークショップでは、電子版の方が圧倒的に早く済みます。オンラインのアンケートを作るサービスがいくつかあります(たとえば、Google Form)ので、それを使うのがオススメです。
事前+当日: 参加者に和田さん執筆書籍を持参してもらう
本ワークショップの特典として、昼休みやワークショップ終了後に、t_wadaさんから書籍にサインしてもらえるという点があります。テスト駆動開発や、SQLアンチパターンといった書籍を持っている参加者もいるので、こちらも案内しておきましょう。参加者のモチベーション向上の一助になります。
おわりに
NTTコミュニケーションズでは今年度、2度のTDDワークショップを開催しました。次年度以降も引き続き、ソフトウェアエンジニアのスキルアップにつながるワークショップやセミナーなどを開催し、ソフトウェアの内製開発に力を入れていきます。