ペアプロはリモートでもできる!という内容でLTやりました

今年のTryプレゼン&現場のProblem相談&Keep事例発表大会 - アジャイルひよこクラブ 〜にわとりへの道〜 | Doorkeeper

色々お手伝いしているアジャイルひよこクラブの集まりでLTやりました!

この記事でLTで端折った部分とか補完出来れば良いかなと思っています。

スライド

SlideShareだと日本語が出ないのでSpeaker Deckで)

ペアプロ

ペアプロとはなんぞや

一言でいうと「2人で1つのコードを書く」ということ。 一応Wikipediaにあったのでそれをご紹介。

ペアプログラミング(英: pair programming)は、2人のプログラマが1台のワークステーションを使って共同でソフトウェア開発を行う手法である。一方が単体テストを打ち込んでいるときに、もう一方がそのテストを通るクラスについて考えるといったように、相補的な作業をする。 実際にキーボードを操作してコードを書く人を「ドライバ」、もう1人を「ナビゲータ」と呼ぶ。30分ごとか、単体テストを1つ完成させる度に役割を交替するのがよいとされる。また、1日に一度の頻度でパートナーを変えるのがよいともされている。 ペアプログラミング - Wikipedia

説明としてはそれだけなんだけど実際やろうとすると難しいということで

ペアプログラミングをうまくやるためのチェックリスト - Cirius Lab. ブログ

が良く参考にされる。

書籍もあるが、もう絶版になっているっぽい。

ペアプログラミング―エンジニアとしての指南書

ペアプログラミング―エンジニアとしての指南書

  • 作者: ローリーウィリアムズ,ロバートケスラー,Laurie Williams,Robert Kessler,長瀬嘉秀,今野睦,テクノロジックアート
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2003/03
  • メディア: 単行本
  • 購入: 6人 クリック: 36回
  • この商品を含むブログ (29件) を見る

オライリー技評とかで誰か書かないかな?)

結局のところ、これが正解!と言えるものはなくて、それぞれの現場にあったやり方を試行錯誤しながら改善しながら作っていくしかない。

そうやって生まれたのが「ぼくたちのペアプロ

発表した「ぼくたちのペアプロ」では主に、ペアプログラミングをうまくやるためのチェックリストと異なる点をご紹介しました。

2人のプログラマがそれぞれのPCを使う

先のWikipedia書かれている定義にもあるように、2人のプログラマが1台のPCを一緒に使うのが一般的です。

なぜそれをやめたのかというと

  • ドライバーがコードを書く際にうろ覚えの部分をナビゲーターが調べることが多々ある
  • ドライバーがコードを書くのに詰まった時に、ナビゲーターもコードを書いてドライバーにコードを渡すことがたまにある

コードを書く際にこれらの状況があり、1台でやるよりも良いと判断した経緯があります。

画面について

そういえばLTでは触れなかったですが、ドライバーの画面をミラーリングして、外部ディスプレイに表示するようにしています。

ナビゲーターはその画面を見て、ドライバーのサポートをしています。

15秒以上の沈黙はよくある

ペアプログラミングでは、15秒の沈黙ですら長すぎます。 ペアプログラミングをうまくやるためのチェックリスト - Cirius Lab. ブログ

これは、ドライバーが何をしようとしているのか、何をしているのか、何を考えているのかを密に伝える。コミュニケーションを取ることが重要だと言っているわけで。 であれば、15秒以上の沈黙はあってもいいのかなと考えています。

ドライバーが沈黙してしまって手も動いていない時、ナビゲーターは「今何を考えてますか?」と一言聞いてあげればOK。

これは、ぼくたちが考えながら手を動かしながら話すことに慣れていないという側面も少なからずあるとは思います。

リモートでペアプロ

そして、それをリモートでもやってみたというのが今回のメイントピックになります。

リモートでやるので設備やツールは非常に重要です。

ツールが充実してきたのでペアプロがリモートでも出来るようになったと言えます。

ディスプレイ

これは2つ以上を推奨。

1画面をメインの画面にして、もう1画面を相手が画面共有したものにします。

こうすることで、「ぼくたちのペアプロ」と同じ状況をリモートでも作っています。

その際に、相手の画面を共有するのはRetinaディスプレイにした方が良さそうです。理由は後ほど。

カメラ

ぼくたちが使ったのはMacbook ProのFaceTime HDカメラです。

相手の顔もはっきり見えますし、よほどの理由がない限りHDカメラを使うのが良いと思います。

イヤホン・マイク

Macbook Proに搭載されているスピーカーはちょっと非力。

5000円以上のものであれば何でも良いような気がします。

イヤホンを買う時にはマイク付きのものがオススメです。

ビデオチャットツール

ぼくたちが試したのは、skypeとappear.inの2つ。

skepe

音質・画質共に良さげなんですが、二人同時に画面共有が出来なくて断念。

appear.in

画質は少し怪しいんですが、二人同時に画面共有が出来たので、今回はこれを使うことになりました。

Retinaにすると画質がちょっと良くなるのを発見して、appear.inの画面はRetinaで見ることに。

Screenhero

KPTのTryとして出したのがScreenhero | Screen sharing for collaboration in teams

今回は使ってないですが、HD画質を謳っているのでappear.inよりもキレイに画面共有することが出来そうです。 しかも、1つの画面を複数人で操作することが出来るらしいので、一般的なペアプロにも使えそうです。

その他ツール

複数人が同時に画面共有できるツールなら、他にも良い物があるかもしれないです。 オススメがあれば教えてください。

裏話

実は、今年のTryというテーマでLTをやって欲しいと言われて、「今年はリモートペアプロに挑戦します」という内容でLTをする予定でしたが、タイムテーブルに「リモートペアプログラミング(仮)」といかにもリモートペアプロやってる感じで掲載されてしまって急遽リモートペアプロをやってみることになりました(;´∀`)

それまでやったことがなかったんですが、仲間にも協力してもらって色々試行錯誤した結果が今回の発表になりました。

手伝って頂いた皆さんありがとうございました!

振り返り(KPT

最後に今回のLTを振り返ってみます。

Keep

  • 緊張したが言いたいことは言えた
  • 取ろうと思っていた笑いは取れた
  • そんなに緊張していたと思われなかった

Problem

  • 思っていたよりもペアプロをやっていない人が多かった
  • 最後の最後で時間切れになってしまった
  • タイムキーパーを見る余裕がなかった
  • 周りを満遍なく見る余裕がなかった
  • スライド作るのがギリギリになってしまった

Try

  • もし次にペアプロの話をするなら、一般的なペアプロの説明を入れる
  • どうしても緊張する場合は水を飲む、一呼吸置く
  • スライドは2日前には作り終わるように

参加して頂いた皆さんありがとうございました!