エクストリームプログラミング(XP)の基本知識

2073viewsほっしゅほっしゅ

このエントリーをはてなブックマークに追加
XPエクストリーム・プログラミング入門―変化を受け入れる

エクストリームプログラミング(XP)は優れたソフトウェア開発を行うための開発方法論であり、スクラムと並ぶアジャイル開発手法の一つです。本書はXPの価値・原則・プラクティスについて詳しく解説しています。

XPとは何か

『XPとは、あらゆる段階の開発プロセスに存在するリスクに対処するためのソフトウェア開発の規律である』

様々な開発上のリスク、例えばスケジュールの遅延・プロジェクトの中止・システムの陳腐化・欠陥率・ビジネスの誤解・ビジネスの変化・スタッフの退職などに対処することができます。同時に、生産性が高く実践する喜びも多いとされます。
プラクティスを増やすなど工夫することで大組織にも適用可能であることが分かっています。

価値・原則

XPは5つの価値を採用しています。
1.コミュニケーション:チームの問題回避や改善に必須
2.シンプルさ:無駄な複雑さを排除、コミュニケーションコストの削減
3.フィードバック:フィードバックを短いサイクルで繰り返しながら目標に近付く
4.勇気:真実を伝えること、他の価値を促進する
5.尊重:チームにおける個人の貢献を尊重

XPはこれらの価値に基づき、人間性、経済性、相互利益、自己相似性、改善、などの指針となる原則を持ちます。
原則を理解することで、XPが紹介するプラクティスを適切に運用することができます。あるいは、状況に適した新しいプラクティスを生み出すことも可能です。

プラクティス

様々なプラクティスが紹介されていますが、代表的なものは以下のようなものです。
・1週間サイクル(イテレーション)
週単位で作業を計画する。週の初めにストーリー完了時の自動テストを書き、残りでストーリーを完成し、テストをパスする。

・ユーザストーリー
顧客の目に見える機能単位での計画。典型的な要件定義との違いは「機能のビジネス価値を理解している」こと。早期なビジネス価値を見積もり可能。

・ペアプログラミング
2人で本番プログラムを作成する。問題があっても2人で解決できる。お互いのノウハウやスキルを共有できる。疲労も多いが極めて効果が高い。

・常時結合
常に変更の結合とテストを行う。結合までの時間が長いほど苦痛も増えるため、常に結合することで無駄を排除する。

・テストファースト
コードを変更する前にテストを作成する。仕様の無駄な拡大防止・テスト困難な設計の早期発見・信頼性の高いコードの維持・コーディングペースの維持、などの効果を一度に受けられる。

・インクリメンタル設計
毎日システム設計に投資し、環境の変化にシステムを対応させる。常に設計に注意を払い、変更のコストを最小限にする。

他にも様々なプラクティスが存在しますが、ここでは割愛します。

XPの哲学

XPの適用はシンプルではありません。複雑な社会状況下、様々な背景を持つ組織で効果を出すには時間と経験が必要です。そのために、常に自分自身を改善し、調和し、優れた仕事をする必要があります。

『XPとは、理想に対する考え方と振る舞い方なのだ』

感想

本書はソフトウェア開発に携わる人全てに価値があると思います。
多種多様な価値が存在し、新たな価値が次々と生み出される時代においては、個人のスキルだけでビジネス価値を生み出すことは困難であり、変化に対応する強いチームを作ることが求められていると思います。XPは強いチームを作る力があります。

字数の都合上、いくつかのプラクティスは割愛せざるを得ませんでしたが、本書には様々なプラクティスが紹介されており、実践することが可能になっています。

本書はソフトウェア開発を想定してまとめられていますが、根底にある価値観はもっと広く適用することが可能だと思います。例えば、トヨタのカンバン方式(リーン生産方式)との類似点が挙げられており、XPの考えは他の分野でも通用しうることが書かれています。
XPだけでなく、スクラムやリーン生産方式など他の手法も学ぶことで、より開発プロセスの理解を深めることができると思います。

関連まとめ

本のまとめカテゴリー


コメントを書く