XP | FAQ |
- Embrace Change |
このページは....
エクストリームプログラミング(eXtreme Programming)を紹介するページです.
FAQ 形式で簡単な解説を試みます.間違いや追加して欲しい
項目は,hiranabe@esm.co.jp まで
教えてください.なお,末尾に日本語メーリングリストへの参加方法が
あります.
|
エクストリームプログラミングとは何ですか? |
Kent Beckらによって提唱されているソフトウェア開発プロセス(工程)です. 正式には eXtreme Programming ,略してエックスピー(XP)と呼ばれます. |
エクストリームプログラミングの特徴は何ですか ? |
開発リスクを早期に軽減することを主眼におき,繰り返し型 (iterative)の開発を取り入れている点は,RUP(Rational Unified Process) な どのオブジェクト指向プロセスと同じです.ただし,次の点が XP の大きな特徴です.
そして何より,「プログラマは人間である」という温かな視点による思想 が全体を通して流れていること,これがエクストリームプログラミングの人気 の秘密だと私は思っています. |
エクストリームプログラミングの「12のプラクティス」とは何ですか ? |
XP は 12のプラクティスを示しています.プラクティス(practice)とは, 経験に基づいて有用性が立証された実践項目のことです.以下が,その 12のプラクティスです(要約 by 上手).
|
なぜエクストリームプログラミングと呼ばれるのですか? |
1つのイメージを思い浮かべてください.グラフィックエコライザーのように, たくさんの調節用のスライドバーが着いたパネルがあります.1つ1つのバーには, ソフトウェアプロジェクトに必要な実践項目が書かれています. 例えば,伝統的な項目としては「設計レビュー」や「単体テスト」 のようなものを思い浮かべるとよいでしょう. XP では,いくつものバーの中で12のプラクティスのバーだけを ボリューム10にまで上げた状態をイメージしています. Kent Beck は,この状態で行われるプロジェクトが安定していてかつ 生産性の高いものだということを発見し,この名前を付けました. |
エクストリームプログラミングの歴史を教えてください |
XP の父と呼ばれる資格がある人が3人います. Ward Cunningham, Kent Beck, Ron Jeffries です.彼らは Three Extremos とも呼ばれる ことがあります. WardとKentの2人は,ソフトウェアパターンの開祖となる 一派でもあります.Kent は 1987年にSmalltalkでユーザインター フェイスの設計を行った時に,建築家 C.Alexanderの 「パターン言語」 のアイディアをはじめてソフトウェアに取り入れ, OOPSLA'87で "Using Pattern Languages for Object-Oriented Programs" として発表しています.また,Ward は PLoP(Pattern Language of Programming) の父とも呼ばれ, PLoP'94の議長を務めています.2人は,Hillside Group を生み出しました. Ward が書いたパターン言語である "EPISODES: A Pattern Language of Competitive Development には,XP 的な考え方の萌芽がみられます. Ward と Kent の2人はパターンコミュニティで大きな役割を果たしています. Ron は,Kent に招かれて最初の XP プロジェクトである伝説の C3プロジェクト(Crysler payroll project)に参加しました. このプロジェクトには, Martin Fowler も参加しています. そのプロジェクトで Kent は Smalltalk, パターンの経験を 活かしながら,初めて12のプラクティスバーを10にまで上げることを試しました. Ron の実践を通して XP は形あるものへとなったのです. Kent は'99に "Extreme Programming Explained - Embrace Change" という最初のXPの本を書き,12のプラクティスを示しました.この本を, 以下"EC本"と呼びます. Marin Fowler が'99に "Refactoring" を著しましたが,これはXP の12のプラクティスの1つとしてXPを支える中核であると同時に,XPの 実プロジェクトの中で実践され,収集されて初めて効果が 立証されたと言えます. また,Ron は 2000に "Extreme Programming Installed" を著し,実践的なXP 導入法を書いています. |
エクスプラクティス(XPractices)とはなんですか? |
Kent Beck が EC本 を書く以前に,Ron Jeffries が C3 プロジェクトでの XP の経験を 'XPractices'と してまとめています.そこでは多くのプラクティスが,いきいきとした文章で まとめられています.エクスプラクティスは,ここで参照可能です. |
変化ヲ抱擁セヨ(Embrace Change),とは ? |
時間を横軸に,ソフトウェアの変更にかかるコストを縦軸にプロットします. この「時間-変更コスト」曲線は極端な右上がりになると信じられています. 現在までのソフトウェア開発プロセスは,この仮定上の議論が多数でした. XP はこの問題に立ち向かう1つの回答を示して行こうとしています. この曲線を平坦にできるのではないか, またそうできたら全く違った方針でプロジェクトに 立ち向かえるのではないか,と考えています. 「変化ヲ抱擁セヨ(Embrace Change)」とは,変化を嫌うのではなく 変化が起こることを自然なこととして受け入れよう, という XP の基本姿勢を表明しています. Kent は,"Extream Programming Explained - Embrace Change" の中で,はじめて"EC"という言葉を"Embrace Change"として使いました. |
エクストリームプログラミングを例えると ? |
Kent は,はじめて自動車を運転する練習をした日のことを例にしています. これが,XP のパラダイムです. |
エクストリームプログラミングの開発プロセスは? |
XP の開発プロセスを以下に示します. |
まず,「計画ゲーム」では,ユーザが書いたストーリーカードを 基にプランニングが行われます.そこでは, システムを表現する比喩(メタファー)が投入され, ユーザーストーリーは,プログラマが見積り可能なタスクに分割されます. これらから,リリース計画が決定されることになります. 「イテレーション」によって 実装,ユニットテストが行われ,継続的インテグレーションによって 最新バージョンが作成されます.最新バージョンに対して機能テストが行われ, それを 100% パスすることで,小さなリリースにたどり着きます. 全過程で,フィードバックが行われること, また,サイクルが非常に短いことが,XP の特徴です. 1イテレーションは1~4週間.継続的インテグレーションと機能テスト は少くとも日に1度です.XP ではこのリズムを大切にしています. |
訪れるべきサイトはどこにありますか ? |
|
読むべき本はなんですか ? |
Addison-Wesley から,「XP Series」が刊行されています. 日本では,ピアソンエデュケーションから翻訳が出ています. 以下のリンクは,amazon.co.jp へのアソシエイトリンクです. |
|
ユニットテストツールはどこにありますか ? |
XP では,リファクタリング(Refactoring)による再設計や 複数人によるコードの変更(Collective Ownership)をプラクティスの中に含 んでいます.これを支えているのは,ユニットテストを非常に 短いサイクルで行うことができる環境です. Eric Gamma と Kent Beck とは,このテスト環境を「テスティングフレームワーク」 呼び,JavaReport 1999 May に解説しています. 現在,さまざまな言語に対してこのユニットテストをサポートする ツールが発表されています.JUnit, CppUnit, VBUnit, RubyUnit, PalmUnit などです.
|
エクストリームプログラミングのメーリングリストはどこにありますか ? |
その他フリーソフト,ドキュメントは,こちら |