エクストリームプログラミング(XP)は、「素早いリリースと顧客の意見を取り入れた柔軟なプログラム開発」ができる手法です。
本記事では、XPについて詳しく解説します。メリットやデメリットの他、XPで開発を進める際の基本原則も紹介しているので、参考にしてください。
アプリ・システム開発のプロが開発のお悩みを解決します
アプリ・システム開発の6割が失敗すると言われています。クライアントのリピート率100%のリレイスにご相談ください。
\ まずは無料相談!1営業日以内に返信 /
目次
エクストリームプログラミング(XP)とは
エクストリームプログラミング(Extreme Programming)とは、「顧客の意見や要望を取り入れながら柔軟に開発を進める手法」です。
アジャイル開発における手法の1つで、プロジェクトを細分化して短期間のうちに「設計→実装→テスト」を繰り返します。
スピード感と臨機応変な調整に重きを置いた手法となるため、下記の環境に適しています。
- 素早いリリースを必要とする小規模開発
- 10人程度の少人数で取り組む開発
XPの理解を深めるために、下記2つの点についても確認しましょう。
- アジャイル開発とは
- スクラム開発との違い
アジャイル開発とは
一般的なシステム開発は、下記の工程を一巡すれば完了です。
- 企画
- 要件定義
- 設計
- 開発
- テスト
しかし、アジャイル開発では、要件定義からテストまでの「イテレーション(反復)」を何度も繰り返します。全体のシステム開発を細かな機能に分けて、イテレーションごとに作業を進めます。
「優先度の高い要件から開発を進めて、段階的にシステムを完成させる」のがアジャイル開発の手法です。アジャイル開発の詳しい解説は、下記の記事にまとめているので参考にしてください。
【内部リンク】
スクラム開発との違い
スクラム開発もアジャイル開発に近い手法なので、XPとの違いがわかりづらいかもしれません。
スクラム開発とは、ラグビーの「スクラム」が語源であり、「チームが一丸となってプロジェクトを遂行する」という意味があります。
作業の流れは、「要件定義からテストまでのイテレーションに分けて進めるという点でXPと同じ」です。しかし、スクラム開発の目的は、「複数のイテレーションを並行で進めて効率化を図る」点にあります。
つまり、スクラム開発は「スピード感を持って勢いよく開発する手法」です。一方のXPは、「柔軟な調整によって製品を継続的に成長させる手法」となります。
混同しやすい言葉ですが、目的に違いがあるため、しっかり理解しましょう。
エクストリームプログラミングのメリット
エクストリームプログラミングのメリットは、主に3つ挙げられます。
- 柔軟な開発でリスク回避につながる
- 柔軟な仕様変更に対応可能
- 何度も繰り返しテストするため、完成品のミスが避けられる
柔軟な開発でリスク回避につながる
XPの最大のメリットともいえる柔軟性は、開発で発生するリスク回避につながります。
要件定義からテストまでを一巡で完了させる一般的な開発と違い、イテレーションごとに少しずつブラッシュアップしていくため、「途中で問題を発見しやすい」です。
また、2人1組で取り組むペアプログラミングでは、バグを発見した際の原因を早期発見できるため、迅速に問題を解決できます。
ウォーターフォール開発のようにすべて完成した後では、バグの見落としやテスト不十分による機能不足がある可能性も考えられます。中でも、短期間でリリースするシステム開発では、注意が必要です。
「スピード感を維持しながら、柔軟な開発によりリスク回避もできる」のがXPのメリットといえます。
柔軟な仕様変更に対応可能
XPなら、顧客の意見に合わせて柔軟に仕様変更できます。このメリットは、システム開発でXPを選ぶ大きな理由の1つであるといえるでしょう。
XPは、イテレーションを繰り返す中で顧客の意見を聞く機会が多いです。そのため、開発途中で少しずつ顧客のニーズに合う仕様へと変更しやすい環境が整っています。
何度も繰り返しテストするため、完成品のミスが避けられる
何度も繰り返しテストするXPは、各イテレーションで顧客のニーズを確認できるため、完成品のミスが避けられます。
ウォーターフォール開発のように、完成品をテスト・リリースしてから「イメージと違っていた」「顧客のニーズとズレがある」という事態は起きません。
開発途中で発生した追加したい機能や改善点は、次のイテレーションで反映して徐々に顧客が求める製品へと改良されていきます。
結果、「顧客の要望に最大限応えた製品」が開発できます。
エクストリームプログラミングの5つの基本原則
エクストリームプログラミングには、5つの基本原則があります。また、「5つの価値」と呼ばれる場合もあります。
XPの基本原則はプロジェクトを進める際に重要なポイントとなるため、押さえておきたい内容です。
基本原則 | 詳細 |
---|---|
コミュニケーション | プロジェクトの主な失敗原因は「コミュニケーション不足」であるXPでは開発メンバーや顧客とのコミュニケーションを重視する |
シンプル | XPの特徴である開発スピードと柔軟性を維持するために「最初の設計はシンプル」にするイテレーションを繰り返す中で必要な機能を柔軟に盛り込んでいく |
フィードバック | 顧客からフィードバックをもらって必要な機能を洗い出すスピード感のあるフィードバックを受けるためにシンプルな設計が必要顧客と多くコミュニケーションをとって意義あるフィードバックを受ける |
勇気 | 柔軟な対応を重ねる中で大きな仕様変更が必要となる場合がある開発した機能の取捨選択や変更には強い意志と勇気が必要XPの特性を活かしてより良い製品を作るために積極的に意見を出す勇気が大切な要素 |
尊重 | チームワークを発揮するためにメンバーの意見を尊重する積極的な意見交換や提案をして生産性を高める経験値に関係なくお互いを尊重すればチーム全体のモチベーション向上につながる |
「XPの特徴を活かしてプロジェクトを成功させるための大切な考え方」です。XPでシステム開発を始める際には、心に留めておきましょう。
エクストリームプログラミングの4つのプラクティス
続いて、エクストリームプログラミングにおけるプラクティスを解説します。
プラクティスとは、ビジネスにおいて「慣習となっている手法」です。アジャイル開発に関しては「プロジェクトを実現するための手段・取り組み」を指します。
XPのプラクティスは、大きく4つあります。
- 共同プラクティス
- 開発プラクティス
- 管理者プラクティス
- 顧客プラクティス
共同プラクティス
共同プラクティスは、XPに関わる全員を対象とした内容です。プロジェクトを円滑に進めるために「すべての関係者が周知しておくべきプラクティス」となります。
プラクティス | 詳細 |
---|---|
反復 | 要件定義からテストまでのイテレーションが1~2週間で終わる開発を何度も繰り返す |
共通の用語 | コミュニケーションの相違を防止するために用語集を作成する |
開けた作業空間 | 開発メンバーと顧客でコミュニケーションをとりやすく作業に集中できる環境を整える |
回顧 | 過去のフィードバックを活かしてミスが再発しないように作業状況を明確化する |
開発プラクティス
開発プラクティスは「プログラマーをはじめ、開発チームが対象」のプラクティスです。
プラクティス | 詳細 |
---|---|
テスト駆動開発 | プログラムの実装前にテストコードを作成する取り組みシンプルな設計が実現して求められる機能が明確にわかるユニットテストと受け入れテストから構成される(自動化が望ましい) |
ペアプログラミング | 2人1組でプログラミング作業する取り組み「コードを記述する人」と「確認・補佐する人」で分担するペアで確認しながら作業を進めるため細かなミスを発見・解決しやすいコードを把握しているメンバーが2人いるため問題発生時に迅速な対応ができる |
リファクタリング | 完成したコードをわかりやすく書き換えて内部構造を整える取り組み簡単なコードに書き換えてメンテナンス性の向上や不具合発生の頻度を低下させる |
YAGNI | 「You Aren't Going to Need It(今必要なことだけをする)」の略必要なコードのみを記述する取り組み余計な作業を減らして無駄をなくす |
管理者プラクティス
「管理者を対象としたプラクティス」です。チームの負荷が大きくないかを常に確認しながら、適宜フォローするための取り組みとなります。
プラクティス | 詳細 |
---|---|
責任の受け入れ | 「開発における最終的な責任は責任者である」と受け入れる |
援護 | 作業状況に応じてメンバーの不足を補い開発の援護をする |
四半期ごとの見直し | 四半期ごとに進行を見直してチーム・メンバー間の負担を調整する |
ミラー | 全体の進行状況を適宜チームに共有する現時点でどの段階まで進んでいるのかをチーム全体で理解する |
持続可能なペース | 負荷が大きすぎる場合に進行を調整する過度な労働を避けるための取り組み |
顧客プラクティス
「顧客を対象としたプラクティス」です。XPでは、密にやり取りをする顧客も開発に関わるメンバーとして位置付けています。
プラクティス | 詳細 |
---|---|
ストーリーの作成 | 開発の優先順位をつける必要な機能をストーリーカード(短い文章で記述したカード)にまとめるストーリーカードを元に開発者・責任者・顧客を交えて実装の詳細を決定する |
リリース計画 | リリースの計画を積極的に提案するストーリーごとにどのイテレーションの対象とするのかを決めるチーム全員の合意・承認が必要 |
受け入れテスト | イテレーションごとに受け入れテストをするストーリーカードに記述した機能が盛り込まれているか確認するシステムに不満や意見がある場合には指摘する義務がある |
短期リリース | 製品を2~3週間でリリースする(最長でも2~3ヶ月) |
エクストリームプログラミングの欠点
最後に、エクストリームプログラミングの欠点を2つ確認します。
- 長期スケジュールを組めない
- 予算の増減がある
両方とも、アジャイル開発に共通するデメリットです。
まず、XPは短期間で開発からテストを繰り返すため、長期計画は立てられません。
「短いサイクルでの作業はスケジュールや進捗具合が把握しにくい」ため、あっという間に納期になってしまったという事態も考えられるでしょう。通常のウォーターフォール開発に慣れたチームの場合、最初のうちはペースに順応しづらい可能性があります。
そして、予算の増減があるのも欠点の1つです。
課題発掘を目的としたXPでは、顧客のニーズに合わせて柔軟な対応が必要です。そのため、あらかじめ決定したシステムを開発するウォーターフォールと違い、予算の読みづらさがあります。「緊急で追加予算が必要になるケース」もあり、最終的な開発費用がかさんでしまうかもしれません。
そのため、スケジュールと予算の欠点を理解した上で、XPを検討する必要があります。
まとめ
XPなら、「システム開発で起こり得るリスクをできる限り抑えて、顧客のニーズに沿った製品」を作れます。
しかし、長期計画が立てられず、予算も想定しにくい点に注意が必要です。
XPでシステム開発を進める際には、基本原則とプラクティスを確認して円滑なプロジェクト進行を心がけてください。