Androidアプリを遠隔ペアプロTDDした話

id:sambaizこれを作った。
土曜日の朝9時から始めてその日の深夜29時くらいにapkをアップロードした。
9割方 id:sambaiz が作った。

今回の肝は遠隔ペアプロTDDの検証だったが、今回感じたことを書いていく。

1: Google Hangout
遠隔でのペアプロを行うにあたり必須なのがコミュニケーションツールだが、今回はGoogle Hangoutを用いた。
Skypeだと(無料では)画面共有できないが、Hangoutではそれができる。URLを貼るためのグループチャットも同じ画面にある。
もちろん若干のラグもあり、エミュレータで高速に遷移するアプリ画面を見るのは厳しそうだったが、それでもソースコードはちゃんと読めるくらいに綺麗だった。
「ちゃんとコード読めてる?」と聞く場面が何度かあったが、ある程度以上の回線を使っているなら杞憂だと思う。

2: GitHub
ペアプロなのでナビゲータ/ドライバの交代が何度もあるが、その際はコードの変更をリモートリポジトリにpushして相手がそれをpull、相手が書いている間は自分は書かない(コンフリクト防止を兼ねて)という感じで行った。
隣に相手がいる普通のペアプロなら「ちょっと代わろうか」と気軽に交代を行えるが、遠隔では気軽にでいきない。
最初に考えた以上に、push/pullの工程があると交代が億劫になることがわかった。
また、リアルタイムでのソースコード共有ができず、ナビゲータはHangout越しにソースコードを読むため、「上見せて」「このメソッド見せて」という指示が飛ぶ。
この点は慣れないと結構しんどいかもしれない。

3: Android
例えばProject Eulerのような一枚でペラッと書けるようなテーマだったらGoogleDocsを使えるかもしれないが、今回は最初からAndroidアプリを作ろうと言っていたのでその手は使えなかった。
ということはEclipseを使うわけで、でも交代に伴うコードの共有でGitHubをドシドシ使うわけで...となるので、まとめると

        • -

①ドライバがEclipseで書く
②コンソールでgit commit && git push
③ドライバは「pushしたよー」とナビゲータに伝える
④ナビゲータは「りょうかいー」と伝える
⑤git pull
EclipseでプロジェクトのRefreshを行い、コードの変更をIDEに反映する
⑦ドライバ/ナビゲータが交代して①に戻る

        • -

と、なかなか面倒。

4: テストの書き方
Androidに関してもう一点。
TDDBCでは大体が、何かのアプリケーション作成に特化したフレームワークは使わずに、コンソールアプリケーションを作ることで純粋にテスト駆動開発ペアプロを楽しんでいると思う。
しかし、Android(そしておそらくWAFを用いるwebアプリ開発も)では、どうしてもフレームワーク依存のところが出てきてしまう。
それはDSLであったり書き方(書け方)であったりするのだけれど、どうしてもテストが書きにくかったりとかする。
今回はTDDBCお題パクって参考にしたが、Androidアプリを作る前のJavaバージョニングクラスのみTDDを行い、むしろAndroidはテストを一切書かない(書けない)で突っ走った。
JUnitは簡単だけどAndroidのテストとか無理だろ...

まとめ
とはいえ、目標にしていたAndroidアプリのアップロードも遠隔ペアプロTDDもやりきれたし、なかなか楽しい土曜日だったと思う。
TDDもBootCampを含めると3回目で、今後は業務でテスト駆動できるようになっていきたい。
何より、遠隔ペアプロができたことで、今後の可能性が大きく拓けたと思う。

ついにペアプロは空間の制約を超える。

あと、JavaAndroidに詳しいid:sambaizがいなければ絶対にクリアできなかったので謝辞。
id:sambaiz++