【しばらく編集不可モードで運営します】 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

ペアプログラミングのやりかた -

差分表示




** http://www.wikihow.com/Pair-Program

ペアプログラミングとは、二人が一つのキーボードでプログラミングをすること。

driverはキーボードを叩き、observer(あるいはnavigator)はdriverの書くコードを眺め、エラーや設計を吟味する。

** 7つのステップ123

*** 1. 作業を決める

座る前に、1〜2時間程度で終わると確信できるはっきりした仕事を決める。

例:「引越しトラックのデータベースに『修理履歴』の機能をつける」

*** 2. 最初の目標を決める

数分で出来るようなことを考える。問題を言葉でパートナーに説明すると考えやすい。何をやるかお互いがわかっていることを確認できる。

*** 3. パートナーを頼りにし、支えてやる

- driver側

プログラム全体の問題はobserverが考えてくれる。仕事を終わらせることだけに専念すること。

どうやって機能を作るか細かいことを考える。

observerに言われたとおりにコードを打ち込むようなことはしない。

- observer側

driverのコードを横から睨み、バグ、デザインの改善や簡潔化、大局的な問題について考える。

driverに指摘をするタイミングには気をつける。

- 読みづらいコードや文法ミスは、その行を書き終わった後に指摘する
- 大局的な問題やデザインのアイデアは、メモだけしておき、仕事のすんだ後で話す

例えば今のコードにぬるぽが出ると気づいたら、「ぬるぽに対するユニットテストを追加」とメモをしておく。

driverに「こう書け」と命令しないこと。
「今から言うとおり打て。if (s == NULL) { return...」より「ぬるぽが出るかも」と言ったほうがよい。

*** 4. 喋る

今なにをしようとしているか、変数名、関数名、別の短くすむやり方、今のコードが想定していない入力、observerが知っていてdriverの知らないAPIの事情・・・など。

ペアプログラミングがうまくいっているときは大抵お互いぶっつづけで話している。

例えば:
- 「ここの条件これでいい?」
- 「これで正しいと思う?」
- 「あとなんだっけ」
- 「ちょっと貸して」(口で言うより書いた方が早い時)

*** 5. お互い何をやっているか把握する

パートナーが今なにをやってるかわからなくなったり、今なにをするべきか見失ったりすることはよく起こる。

認識がズレだしたら1分以内に話し合って頭の中の同期を取ること。5分もおいてけぼりにしてしまうと、一人でプログラムを書くのと同じことになる。頻繁に同期をとることがペアプログラミングのミソだからだ。

- 何かする前にobserverにやろうとしていることを説明するか、もしくは尋ねること。「ぬるぽのテスト書く?」
- 書いてみないと説明しづらい場合も「ちょっと書いてみる」と口で言うこと。この類の試し書きは1分以内ですませたほうがいい。
- パートナーの質問にはイエス・ノーですぐに答えること。「このメソッド消していいよね」「ぬるぽのテスト書こうか?」
- キーボードの貸し借りは悪いことではない。口で言うより書いた方が早い時もある。

*** 6. 喜ぶ

一仕事すんで次の問題が見えたらお祝いをする。

例えばユニットテストがパスしたときなどにハイファイブする。

テストが失敗してもハイファイブできるようになれば、テスト駆動プログラミングとペアプログラミングの両方の利点を楽しんでいるといえる。

*** 7. 交代する

最低30分ごとに交代すること。これによってお互いの集中力を保つことができ、大局的な視点と細かい事情を二人ともが把握できる。driverはずっと全力でいると疲れてしまうし、observerは観察力を30分以上も保つには無理がある。交代することで休憩がとれる。
最低30分ごとに交代すること。これによってお互いの集中力を保つことができ、大局的な視点と細かい事情を二人ともが把握できる。driverはずっと全力でいると疲れてしまうし、observerは観察力を30分以上も保つのは不可能だ。休憩して交代しよう。

** コツ

- お互い丁寧に。ミスの指摘も丁寧に。指摘されたら礼を言う。別にその人の能力が欠けているわけではないのだ。
- ミスに気づいても、その行を書き終わるまで指摘を待つ。
- 実装をする前に、ユニットテストを先に書くこと。ステップ2の小目標を立てるに役立つ。つまり、テストを書いたらそれをパスすることだ。テスト駆動開発は慣れるまでは大変だが、パートナーが身につけていれば教えてもらえるだろう。
- 実装の前にユニットテストを先に書くこと。ステップ2でいう小目標を決めやすくなる。つまり、書いたテストをパスすることだ。テスト駆動開発は慣れるまでは大変だが、パートナーが身につけていれば教えてもらえるだろう。
- お互い集中すること。2人で集中する方が1人で集中するより簡単なはず。片方が話している間はものを食べたりメールを見たりしない。どっちかが飽きたら1人でプログラムしているのと同じになる。
- テーブルはキーボードを貸し借りしやすい物を使う。(普通の四角いやつで充分。人間工学的なふにゃふにゃしたやつよりよっぽど使いやすい)
- テーブルはキーボードを貸し借りしやすい物を使う。(普通の四角いやつで充分。人間工学のふにゃふにゃしたやつよりよっぽど使いやすい)
- あなたが充分オタクなら、キーボードとマウスを2セット用意して切り替える方法もある。キーボードの貸し借りが楽になる。
- ラップトップは横から画面を覗きにくいのでペアプログラミングには向かない。observerを横ではなく後ろに置けばできる。
- インデントなどの好みによる細かいことは作業を始める前に確認して決めておくこと。
- 経験の少ない方をdriverにするほうがいい。眺めるより打ちこむ方が覚える。
- ラップトップは横から画面を覗きにくいのでペアプログラミングには向かない。observerを横ではなく後ろに置くという策もあるが。
- 人の好みによるような細かいこと(インデントや括弧の付け方など)は、作業を始める前に決めておくこと。
- 二人のうち経験の少ない方をdriverにするといい。眺めるより打ちこむ方が覚える。