Aykut Bulgu
ピンポン・プログラミング(別名:ピンポン・ペア・プログラミング)とは、TDD(テスト駆動開発)をプラクティスに入れながら行うペア・プログラミングの一種です。つまり、ペアプログラミングとTDDの組み合わせです。
ピンポン・ペア・プログラミングには、ペア・プログラミング自体の利点に加え、次のような利点があります:
テスト駆動開発 :)
ペアを交代する際に問題となる、開発の流れのリズムをつかみやすい。
管理する必要のある問題領域はずっと小さくなり、そのため、開発者は他のスタイルよりも素早く流れに同調することができる。
各開発者が交代でテストを書き、それをパスさせるので、一方の開発者がもう一方の開発者よりも詳しいといった、ペアのミスマッチの問題を避けることができる。
この仕事はゲーム化されているので、開発者にとっては別のモチベーションになる。
例えば、開発者Aと開発者Bの2人がいるとしましょう:
Aが失敗するテストを書きます。
Bは、テストがパスするのに十分なコードだけを書いてテストをパスさせます。
Bは次のテストを書く。
Aは、そのテストがパスするのに十分なコードだけを書きます。
AとBの両方が、現在取り組んでいるユニットのテストがもうないことに同意するまで続けます。
どちらの開発者がコードをリファクタリングしても、すべてのテストは「パス」のままです。
このリズムで作業するための最適なセットアップは、2人の開発者が並んで座り、1台のコンピューターに2つの入力デバイスを使うことです: つまり、2つのモニター、2つのキーボード、2つのマウスを準備します。ただし、Live Shareなどのツールを使ってリモート環境で作業する場合は、開発者が2人1組になることもあります。
ピンポン・プログラミングは、モブ・プログラミングの形式に沿ったグループで行うこともできます。その場合、ピンポン・モブ・プログラミングと呼ぶことができます:
ある開発者が失敗する単体テストを書きます。
別の開発者(たぶんその隣の開発者)は、テストがパスするようにできるだけコードを書きます。
別の開発者が(たぶんその隣の開発者が)失敗するユニットテストを書きます。そのあとは繰り返し続く...。
どんな開発者でも、必要なときにどんなコードでもリファクタリングできるが、常にテストがパスするようにします。
「ドライバー」が助けを求めると、グループは他の邪魔をすることなく丁寧に手助けをします。
ピンポン・プログラミング をチームや顧客、ステークホルダーと実施するにあたりより詳細にお知りになりたい場合は、以下のリンクを参照してください。