ObjectSquare

[ObjectDay2001特集]






XP談義 −その有効性を問う−

ObjectDay2001 実況レポート




平成13年5月18日に品川のホテルパシフィック東京でOBJECT DAY 2001が開催されました。「今日は、オブジェクトのクラス会。」と銘打つだけあって、カンファレンスが終わると、あちらこちらでクラス会の2次会が開催されたようです(笑)

数ある、興味深いセッションの中でも、一際目を引いたのが午後からパネルディスカッションとして開かれた、「XP談義−その有効性を問う−」でしょう。簡単に言えば、Extreme Programming(以下、XP)について、擁護派と懐疑派とに分かれて討論するという内容なのですが、擁護/懐疑派のどちらも、エンジニア経験豊富なパネラーの方々が参加されるということで、XP Seriesは読んだけど実際のところはどうなの?という興味津々の聴講者満員での開催となりました。



■ パネラー紹介/XPの概要

まずは、セッションが始まるということで、パネラーの方々が席につこうとしますが、XP懐疑派の方々の机に、XP否定派と書かれているのを見て、懐疑派の方々に動揺が走っているように見受けられました(笑)

擁護派4人、懐疑派4人に、司会1人という構成でパネルディスカッションが行われましたので、パネラーの方々を紹介させていただきます。(当日配布資料順、敬称略)

司会

擁護派

懐疑派

次に梅澤さんの方から、XPについての概要が説明されましたが、XPの概要についてはご存知の方も多いと思いますので、ここでの説明は省略させていただきます。

XPに関しての資料をお探しの方は、Kent Beckの著書を始め多くの本(XP Series)が出版されていますので、購入を検討されてはいかがでしょうか?また、XPの概要/精神をつかむには、「eXtreme programming FAQ」などのWebページが参考になると思います。



■ 擁護/懐疑派主張

XPの概要についての説明が終わったところで、個々のパネラーがXPに対しての考えを主張をする時間が設けられました。ここでは、擁護/懐疑派の主張の中でも、私が印象に残ったものについて挙げていきたいと思います。

擁護派主張

擁護派の主張する、XPを擁護する理由としては、

といったことを挙げられていました。

特に、平鍋さんが、「XPは、規格や標準化に傾きがちなソフト開発で、ぽっかり空いたスペースへの、目を引くキラーパス。」だとコメントしていたことに思わず納得してしまいました。ここで主張されている「空いたスペース」というのは、"Standards"や"Taylorism"などの標準化を主眼としたものとは、逆サイドのスペースでいて、かつ"Agility"を持ち合わせているようなスペースのことを指しています。Kent Beckがこのスペースへパスを出したことで、現在、Martin Fowler、Ron Jeffries、Robert C. Martinなど優れたソフトウェアエンジニアが走り込んでいます。それぞれのソフトウェアエンジニアがスペースに走り込む理由は具体的には分かりませんが、現在のソフトウェア開発/開発プロセスに何らかの疑問や不満があり、その解決方法の選択肢の1つとしてXPに注目しているのは、間違いないでしょう。

また、擁護派からも、XPを採用するにあたっての注意点が挙げられていました。

などです。擁護派の方々も実際にXPでのプロジェクトを経験されているだけあり、より実践的/冷静な発言が多いと感じました。

懐疑派主張

次に、懐疑派の主張する、XPを採用することへの疑問点を紹介したいと思いますが、その中でも藤野さんの主張は後で紹介したいと思います。

主にこのような主張をされていたと記憶しています。

次に、懐疑派?のメンバーの中でも異色を放たれていた藤野さんの主張を紹介させていただきます。話を聞いていると、どう考えてもXP擁護派に近い発言をされているのは気のせいではないでしょう。「XPの12のプラクティスもKent Beckが新しく考え出したものではなく、昔からその有効性が確認されているものである。」、と発言されているあたりからも、決してXPの本質を否定されているわけではなく、なぜXPを採用するのか?という一点でのみ擁護派と微妙な違い(という程のものでもなくて、”XP”という流行言葉へのアンチテーゼかもしれません)があるように思えます。

さて、まず藤野さんは、ソフトウェア開発プロジェクトにおいて、「ソフトウェアの変更にかかるコストは、時間とともに指数的に増大する」ことの理由から解説されていました。以下、藤野さんの主張の概要です。(あくまでも自分の記憶と、メモからの復元ですので、誤りがあるかもしれないことをご了承ください。)

1回成功した開発プロジェクトを、もう1回行うのは容易なことである。しかし、自分が未経験のドメイン、組織、ソリューションを必要とするプロジェクトにおいては、それらの知識を正しく把握することが難しく、その間違った知識をインプリメントしてしまうため、バグが発生してしまう。もちろんバグは修正されるのだが、そこには制約が存在するために、修正のコストが高くついてしまうのだ。

まずは、The Five Orders of Ignoranceに当てはめて、自分がどのレベルの無知なのかを知るのも良いだろう。

難しい問題に直面したときに、これらの無知のどのレベルなのかを自問するのもいいし、XPに関して自分がどの程度分かっているかを確認することもできる。要するに、自分の無知がわかったときに、その解決方法の1つとしてXPを適用できるのは良いことだが、XP以外の選択肢が無いようでは困り者だ。

以上が、藤野さんの解説の概要です。特に、The Five Orders of Ignoranceに関する解説は、惹きつけられる点も多く、藤野さんの話術も相まって聞き入ってしまいました。

ちなみに、藤野さんは、「この説明を聞いただけで、レベル4(4IO - Meta Ignorance)はクリアしているので、ラッキーです(笑)」、といった趣旨の冗談を話されて、聴講者の笑いを誘っていました。



■ ディスカッション

XP談義の後半は、ディスカッション形式を取りました。基本的には、擁護派と懐疑派がお互いに疑問点をぶつけて討論する形式ですが、実際にはXPに対する疑問点を懐疑派がぶつけて、擁護派が反論するというものになっていたようです。ディスカッションの全てがQ&Aで流れたわけではなく、また全てを記憶していませんので、印象に残ったやり取りをまとめてレポートさせていただきます。

Q.
XPでは、分析/設計をしないで、実装を開始し、実装においても明日のことは考えないというスタイルでうまく行くのか?

A.
XPにおいても、分析や設計を全くしないというわけではない。非機能要求などは、最初のイテレーションの前スパイクソリューションで検討が行われるし、分析/設計は、日々の作業として行われている。

Q.
XPでうまくいったプロジェクトは、たまたまスキルの高いメンバーで適用したためにうまくいっただけなのではないか?

A.
スキルが重要なのではなく、チーム内のメンバーのモチベーションが高いことが重要だと考えられる。プログラマーは、楽しく仕事をしたいと考えているとともに、良いものを作りたいと思っているものだ。XPはソフトウェア開発を楽しいものとさせてくれることを、期待させてくれる。
ただし、XPの適用開始段階においては、自分の組織にあったXPのテンプレートを作り出す目的のために、経験をつんだエンジニアでチームを構成することを考えても良いかもしれない。

Q.
XPは大規模開発に適用することができるのか?

A.
何を持って、大規模開発と呼ぶのか分からないが、Martin Fowlerは50人規模のプロジェクトでXPを適用している。ただし、それをXPと呼べるかどうかは分からないけど。(XPを自分のものとすることで、XPを意識しなくなるレベルということが言いたいのだと思われます。)

Q.
ペアプログラミングを取り入れるためには、ひとりひとりが個別にコーディングするよりも、効率的なことが実証されないと、組織で採用することが、難しいのではないか?ペア間での教育効果以外の利点はあるか?

A.
ペアプログラミングは、既に有効な開発方法であることが実証されている。性格の不一致など難しい面もあるかもしれないが、チームの一体感をあげるような方法を採用することで、十分克服することも可能だ。
朝、チームの誰かがトラックに引かれたときに、そのプロジェクトが中断する事態に陥ってしまうかもしれない、という冗談話がある。ペアプログラミングによってチームのメンバーの知識共有のレベルを高く保つことによって、チーム内の誰かが抜けただけでプロジェクトが破綻してしまうというリスクを避けることができるという利点もある。

この中で特に注目したいのは、ペアプログラミングに対しての見解で、質問に対する回答は、懐疑派パネラーである藤野さんが説明されていました。回答の中で、「ペアプログラミングの有効性は既に実証されている。」とはっきり述べていらっしゃいますが、具体的な論文/資料に関しては、参照資料の方に記述したので、是非一読することをお奨めします。
また、チームの一体感の重要性については、「Peopleware」で取り上げられているので、是非一読されることをお奨めします。



■ 私的感想

今回、XP談義のセッションを聴講するにあたり、XP擁護/懐疑派のどちらでもない中立な立場で参加したつもりです。セッション開始時に、パネラーの方が「勝ち負けの挙手などはやらないんですか(笑)」という冗談を言われていましたが、セッションを終わってみるとやはりXPサイドに立っている自分に気が付くのでした:-)
最後に、私的感想をもってレポートを終わりたいと思います。

懐疑派のパネラーの方々は、今現在XPが人気/注目を集めているのは、"シンプルな設計"や"週40時間"といった開発者の心を惹き付けるプラクティスにばかりが取り上げられるからで、こうした面だけが取り上げられることに、非常に危機感をもっている、という見解で話されているように見受けました。

それに対して、擁護派(私個人含む)の見解としては、XPという言葉や、個々のプラクティスなどはかなり広まってきたものの、XPの精神ともいえる、「コミュニケーション」の重要性についての認識は、まだ(全く)十分でないと感じています。確かにCMMをカスタマイズすることでも、コミュニケーションを大切にしたプロセスの構築は可能だと思いますが、具体的な記述はされていませんし、人間系のアプローチが中心となっているXPとは別のものだと感じています。

「プログラマーは、"良い物"を作りたいと日頃から思っていて、トップダウンのプロセスでは、やる気をそいでしまう恐れがある。」とおっしゃっていた、平鍋さんの意見は、実際のプログラマーの思いと一致していると思いますし、そうしたやる気を最大に生かす組織/プロセスとすることで、生産性を上げることができるということは、「Peopleware」などでも明確に論じられています。また、やる気をそがれた開発者が離職してしまうことで発生する損失を無視することはできず、単に別の人間を補填すれば片付くような、簡単な問題でないことは明白です。

では、どこから始めれば良いのでしょう?XPのプラクティス自体は、それ自体が相互に作用することで、最大の効果を発揮するような性質のものですが、"ペアプログラミング"や"テスティング"などは、XPのプラクティスとしての有効性というよりは、それ自体が既に有効であるということが実証されたやり方です。まずは、今現在の組織/チームが抱えている問題点を解決する方法に、XPのプラクティスや、原則であるコミュニケーションが有効な解決策とならないかを検討し、適用するところから始めてはいかがでしょうか?



■ 謝辞

ペアプログラミングに関しての参照資料に関するアドバイスを、藤野晃延@インアルカディアさんから頂きました。ありがとうございます。



■ 参照資料/リンク

The Five Orders of Ignorance, Phillip G.Armour, October 2000/Vol. 43, NO. 10 COMMUNICATIONS OF THE ACM

Webからも、PDF形式で参照することができる。自分がどこまで知っているのかを確認する良いツールとなるはずだ。

Pair Programming.com https://www.objectmentor.com/pages/pairpro.htm

読んでそのまま。ペアプログラミングについて、多くの資料が集まるだろう。

Jim Coplien https://www.bell-labs.com/user/cope/index.html

Patternsから、「A Development Process Pattern Language」を参照することができる。
Lucid、BorlandやAT&Tなどの組織において、実際に有効であると確認されたプロセスパターンの中に、ペア開発の有効性について触れているパターンが存在する。

Laurie Williams https://collaboration.csc.ncsu.edu/laurie/

ペアプログラミングに関して、実証/研究をされている、Laurie Williamsさんのページ。

eXtreme programming FAQ https://objectclub.esm.co.jp/eXtremeProgramming/index.html

XPについての基本的な知識から、XP関連記事の翻訳ドキュメントなどを参照することができるページ。
また、XP-jpメーリングリストも運営されており、過去記事の公開も行なわれているので、参照していただきたい。

Peopleware : Productive Projects and Teams, 2nd Ed., Tom Demarco, Timothy Lister, 1999, Dorset House

チームの一体感の重要性について知ることができる他、XPの根底に流れる精神を読み取ることができる名著。
他にも、ファシリティについての重要性についても言及していたり、あまり触れられることの無い、離職率の問題にも踏み込んでいる。

Extreme Programming Explained: Embrace Change, Kent Beck, Addison-Wesley
Planning Extreme Programming, Kent Beck, Martin Fowler, et al, Addison-Wesley
Extreme Programming Installed, Ron Jeffries, et al, Addison-Wesley
Extreme Programming Examined, Giancarlo Succi, Michele Marchesi, Addison-Wesley
Extreme Programming in Practice, Robert C. Martin, James W. Newkirk, Addison-Wesley

XPの適用を考えるなら、読んでおくとベターなXP Series。
"ベター"といっているだけで、全てを読まなくても、できるところから始められるのがXPの良いところ。



■ 実況者横顔

(株)豆蔵 栗原哲也

OOの世界に足を踏み入れてからまだ日が浅い若造(実年齢とは関係なかったりします)。RUPベースでの、分析/設計を学びつつも、XPの精神(Demarcoの精神かも)はいつも胸に秘めて精進の毎日。

実際のプロジェクトで、シニアな方と一緒に作業をすると、「そこは、シンプルな設計で良いのでは?」などと、なかなか言い出せない、OOエンジニア見習。
#っていうか、言えませんよね。ホント(笑)

© 2001 OGIS-RI Co., Ltd.
Index
Index