概要
表題の通りですが、2021/07/31(土)に「Kanazawa.js Remote Meetup #14」を開催&参加してきました。
※開催と言っても自分はイベントページの用意や告知系の運営サポートですが😅
今回はいつもの「各々もくもくする」だけではなく「モブプロでFizzBuzz(等)をテスト駆動開発していく」という試みを行いました。
モブプロとの遭遇
モブプロでは「ドライバー(コードを書く人)」と「ナビゲータ(ドライバーを導く人)」と呼ばれる役割に別れてコードを画面共有する形でプログラムを記載していきます。
自分は、モブプロ童貞かつ🐤エンジニアなので「ナビゲーターなんてできるかな?」という若干心配な気持ちもありましたが「モブプロ経験がある方がいた」のと「TDD」というテーマが割と良かったのか「モブプロがとまってしまう」みたいな事は起きずにイベントが進行しており大変よかったです(小並感)
ちなみに本イベントでは、下記運用でモブプロを進めていました。
- 参加者(5名)間で、10分ごとにドライバーを交代する
- ドライバーは「自分はこういう事を思っていますがナビゲーターの皆さんどうします?」みたいな感じで考えていることを伝える
- ナビゲーターは「(ドライバー変更のたび)現状の説明と、こうしたい」をドライバーに伝える。「ドライバーが迷ったりしている場合は抽象的 => 具体的に説明する」
- 誰か1人をホストにして「VSCode」のLive Shareを活用する
(ナビゲーターはドライバーの方を選択してどこを見ているのかわかるようにする)
(合わせてDiscordの画面共有でVSCodeの画面を共有する)
(実装の参考ページなどはDiscordのテキストCHに貼る)
テスト駆動開発との遭遇
TDDの進め方として、
- プロダクトコード側に空関数を用意して「TODO(要件)」をコメントアウトで記載(例: hoge.js / module.exportでtest側で取得できるようにする)
- 別途テスト用のファイルを作成して「TODO(要件)」を満たすテストを記載する(例: hoge.test.js / 実装コード自体は書いてないのでtestは失敗するが)要件を満たす理想のテストを作成する)
- プロダクトコード側でテストを通すための実装を行う
(この時記載するコードは「実装に問題があってもOK。まずはテストが成功するコードを書く」) - 改めてテストコード側を確認して、不備がないかどうかを確認して調整する
- プロダクトコード側のリファクタリングを行う
みたいな事を永遠と繰り返しながら進めていました。
TDDの詳細に関してはt_wadaさんの「TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング」の動画が糞参考になるのでそちらをご確認ください。
3行の感想
- 異なる考え方・実装プロセスを見たり聞いたりすることが出来て理解がより深まった
- モブプロを行う際、想定以上に時間が経過する事がわかった
- 今回はVSCodeを利用したがIDE・エディターをちゃんと確認できるのであれば、ドライバーが画面共有する形でいけそうだなという感触を持った
#15の宣伝
次回、 8/28(土)に「Kanazawa.js Remote Meetup #15」が開催します👍
各自もくもく&有志希望者によるLTなどの通常もくもく会ですので、興味がある方がいれば一緒にもくもくしましょう🤖