メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.379) XP2 ペアプログラミング  2003/08/25


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第379回 XP2 ペアプログラミング
 発行    2003年8月25日(月曜日)
 発行数   約3200

{magclick}
{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンはまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・このメールマガジンは、横60文字で作成しています。
 また、インデントはすべて半角スペース4つで構成しています。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、まぐまぐさんのホームページでお願いします。
・まぐまぐさんのバックナンバー(下欄参照)を活用して下さい。
・ここは私の復習の場です。内容は約1ヶ月内外に私が勉強した
 内容になっています。最新の技術があれば、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 みなさんはWindowsのワクチン(バグ対策)を入れましたか?

 Windowsが古いと、インストールしなければならないものが多く
て、結構な時間がかかるそうですよ。

 お盆休みがあけて会社にいったら、ブラスターが暴れていまして
ねぇ。。。

 ところで、

★1年目11月23日創業達成! <ヴィオ

 論理上最速は22日なのですが、時間がかかるからなぁ。。

 金曜日に配信せずに何をやっているかと思えば、・・・ねぇ?

{magclick}
/*========================================================*/
 今回のお題  << XP2 ペアプログラミング >>
/*========================================================*/

 まずは12回分の連載の内容についてまとめます。

 1 XPって何?
 2 ペアプログラミング
 3 テスト駆動開発
 4 短期リリース
 5 ユーザテスト
 6 全員同席
 7 最適ペース
 8 コード共同所有
 9 常時結合
10 リファクタリング
11 シンプル設計
12 計画ゲーム

 私の好きな順番で並べました。

 XPを知っている人はメタファという項目がないなぁというかも
しれませんが、つまり私が嫌いということです。勘弁ください。

 コーディング規約という項目もあるのですが、現状においても
当たり前であることなので、あえてはずしました。

 そのほか、リリース計画やイテレーション計画もありませんが、
これらは総合的で高度な項目なので、はずしました。

(すいません、本当は12という計画に入らなかった為です)

 さて、今回は2番ですね。

/*========================================================*/
 2 ペアプログラミング
/*========================================================*/

 ペアプログラミングは、XPの中核とも言うべきもので、これが
なくてはXPではありません。

 というぐらい大事なものです。

 具体的に何をするかというと、プログラミング作業を2人のペア
で行うのです。

 1人でパソコンに向かってプログラムを行うのが普通だと思い
ますが、これを2人がかりでやる、というルールです。

 しかし効率を2倍にする必要はありません。コーディング量など
の成果物は、2人分ではなく1人分でOKです。

 また、作業を2人で行うということは、休憩も2人いっしょに
行うということです。1人がトイレに行っている間に、もう1人が
作業を進めることはルール違反です。

 ペアプログラミングは2人が同じ作業を同時に行うことに意味が
あります。

/*========================================================*/

 ペアをつくるには、4つの条件があります。

 まず、2人は同じぐらいのプログラミングスキルを持っている
という前提です。

 そうしないと、片方が片方にただ教えるだけになり、共同作業
ではなく教育になってしまいます。

 新人や新規メンバーなどに対しては、教育と割り切ります。

 次に、2人ともある一定以上のプログラミングスキルを持って
いなければならないという前提です。

 2人が素人同士だと、プログラムどころの話ではありません。

 3つ目の条件として、資源は1つものを扱うということがあり
ます。

 パソコンもキーボードもマウスも、2人で1つのものを使うの
です。

 ペアプログラミングのポイントは、2人で作業をすることに
よって作業効率を上げるということではありません。目的は、
まったく別のところにあります。

 だから、2人で作業を行うのだからといって、端末などの資源
(リソース)を2つ用意するようなことはしません。2人で1つの
物を使っては効率が悪いじゃないかと思われるかもしれませんが、
目的はそこにはないのです。

 さらに、成果物などを2人分作成する必要はありません。1人分
で十分です。資源が1つなんですから、当然ですよね。

 最後に4つ目の条件として、ペアは1日に1〜2回、つまり
頻繁に取り替えるということです。

 いつも同じ相手をペアとして選んではいけないということです。

 仲良し同士が集まっても仕事がうまくいかないというのは、
どのような仕事にしてもいえることです。

 しかし、友達や仲のいい先輩後輩を選ぶことについては自由で
しょう。

/*========================================================*/

 友達同士で、いつもより楽なペースで、プログラムを行うという
のが、ペアプログラミングです。

 友達同士でなかったら、友達になっちゃいましょう。

 なんだかペアプログラミングは楽しそうじゃないですか。

/*========================================================*/

 XPは、プロジェクト計画の数ある失敗例をもとにして作られて
います。

 ペアプログラミングも、失敗例を反省して作られたルールなの
です。

 2人で1人分の作業を行うというと、開発費の無駄っぽい気が
するかもしれませんが、それは錯覚です。

/*========================================================*/

 プログラムを行う場合に危険なのが、バグを組み込んでしまう
ことです。

 バグを入れる原因としては、変数の名前を取り違えたり変数の
初期化を忘れたりといった、タイピングミスや早とちり、ニアミス
が多いことでしょう。

 コンパイルエラーで警告されるものであればラッキーですし、
仕事でデベロッパスタジオを使う場合にはエラーレベルを4に
するようにといわれていることでしょうが、その程度ではバグを
消すことはできません。

(言われていなければ自発的に4にしましょう。頼もしいのは、
 変数の初期化忘れを警告してくれる点です。すべての警告を
 解消するのは、大変ですけど、すこしマシなものができます)

 1人でプログラムを行っている場合には見過ごしてしまうこれら
のミスも、隣で見ている第3者がそれに気がつく可能性は十分に
あります。

 入力しているのがスーパープログラマならば、忠告するのに
ためらうかもしれませんが、同じレベルの人なので、軽く伝える
ことができます。

 バグを入れないというのは素人の考えです。大事なことは、

・バグをすべて取り除く
・バグが出にくいシステムを構築する
・バグが出にくいコーディングをする

 ということです。
 取り除くのはテストに、システム構築はプログラムリーダーなど
に任せるとして、ただのワーカーであるサラリーマンプログラマは
バグが出にくいコーディングを行うことに気をつける必要がありま
す。

 それが1人では難しいので、2人でコーディングを行うのです。

 お互いがお互いの監視としてね(笑)

 ちなみに私は他人にソースを見られる前にすべてのバグを
つぶしておきます。できる限りですが。

/*========================================================*/

 自分が作成したプログラムを、プロジェクタなどを使って上司や
チーム内に説明する、いわゆるソースコードレビューという発表会
を、たまにやりますよね。

 これは、プログラムした内容は本人以外では、なかなか見ただけ
では伝わらない分からない分かりたくもない、しかし知らないのは
問題じゃなぁ、という危機感から行うものですが、

 他人のレビューなんて聞きませんよねぇ? <聞きなさいよ

 会議もそうですが、大人数を集めるというのはそれだけで膨大な
お金が必要です。

 1人あたり1時間の雇用費が平均3000円/1時間のメンバーを
5人集め、さらに5000円/1時間の上司を呼んで、午前中に
2時間行うとしましょう。

 午後だと新人が眠ますからね。それにこういうのは長引く傾向が
あるので、お昼休みをリミットとしてプレッシャーをかけると
無理やりにでもスムーズに終了できます。

 4万円ですねぇ、2時間で。
 安く見積もっているし、メンバーが多かったり、上司が複数
きたりしたら、すごいですねぇ。

 そんな大事なレビューをろくに聞いていないんだから、上司は
大損ですねぇ(笑)

 まぁ冗談はともかく、こんなレビューを開くのは、必要性といえ
ば必要ですが、しかし効率や成果が悪いのです。

 そこでXPでは、ソースコードレビューを行う必要がない状況を
作り出します。

 それがペアプログラミングです。

 普段コーディングを行っている状態で、常にコードレビューを
行っているのです。

 ソースコードレビューの目的は、そのプログラマ自身のスキルの
公開と、ソースコードの欠点の発見と、そしてその内容をメンバー
に伝えることの、3つぐらいでしょうか。

 薩摩の武士のように、がーといってごーじゃ、みたいな仕事を
せずに、常にレビュー状態にして、この3つの目的を達成し続ける
ことができます。

 疲れますよ、ほんとに。

/*========================================================*/

 最後におまけの利点として、ツールの使用方法などを教えたり
教わったりできることがあります。

 私は基本的にマウスをあまり使わずに、変わりにショートカット
を多用します。

 マウスを使わないので、エクスプローラもあまり使いたくあり
ません。
 可能である限り、私が触ったパソコンは大量のバッチファイルが
増殖します。

 デベロッパでCtrl+Lとすると1行削除だったり、バッチファイル
で引き数を扱う方法だったりするのは、わざわざ教育では教えない
でしょう。

 でもそういうことを知っていると作業効率が飛躍的に上がります
し、私はロボットなみに効率を上がることが好きなのです。

 だからエディッタのショートカットなどは調べますし、マクロ
も多用するのですが、興味がない人はほんとに興味がないようで、
そういうことをぜんぜん知らないのですね。

 よく横から驚かれるのですが、それが面白かったり。

/*========================================================*/
 さいごに
/*========================================================*/

参考文献
 よくわかる最新XPの基本と仕組み
 長瀬嘉秀 監修
 畑田成広 樋口博昭 著
 秀和システム
 ISBN4-7980-9374-3
 1900円(税別)(ただし支給品)

 この本では、ペアプログラミングの価値は、

・プログラムの品質の向上   (バグが発生しにくい)
・チーム内部の設計方針の統一 (いろいろなソースに触る)
・ノウハウの伝授       (あらゆる意味で)
・ペアの暴走の監視      (うっ)
・お互いのスキルの向上    (張り合いによる)
・悩む時間の短縮       (2人だけでも文殊の知恵)
・コミュニケーションの向上  (常に会話が耐えない)
・コードの共有化       (複数人がソースを知っている)
・ほかのプラクティスを実践する上での最低条件

 とされています。

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は8月27日(水曜日)に、第380回を送ります。
 お題は「XP3 テスト駆動開発」

 まだヴィオのアトリエにいそがしいので、周一といたしたい
ところですが、そうはいってはいられない事態になりました。

 上司の命令により、あゆしゃは9月20日にXPの社内テストを
受けなければなくなりました。

 そこでこの1ヶ月の間、囲碁の話題を中断して、1ヶ月12回に
わたって、XPの特集を行います。

 ヴィオも忙しいのですが仕事も忙しい、しかしなるべく落とさず
にいこうと思います。

 次回はテスト駆動開発についてです。

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されます。
 このメールマガジンの内容に文面の引用はありません。
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容は、転用、流用、宣伝、リンク、
時間がない割には漫画をよく読む なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

まぐまぐアイディー
0000020674

まぐまぐバックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

登録と解除
http://www.mag2.com/m/0000020674.htm

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

めーらっくす
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。