エクストリームプログラミングとは何か?重要な5つのポイントと4つのプラクティスを解説

2022年5月31日

エクストリームプログラミングとは

エクストリームプログラミング(XP)は、アジャイル開発手法の1つでプロジェクトが途中で変更されることを前提にプロジェクト全体を細かいフェーズに分け、1つずつの要素の開発サイクルを短くして開発を進めていきます。

アジャイル開発とは、綿密な計画を立てずに臨機応変に進める開発方法であり、開発するシステムを小単位に切り分け、プランニング、設計、開発、テストまでの一連の工程を単位ごとに繰り返し、システム全体の開発を進めていきます。
アジャイル開発はあくまでも開発のアイデアであるので、このアイデアをもとに生まれた開発体制がエクストリームプログラミングです。エクストリームプログラミングは柔軟性に優れており、スピード感と変化に対応することを重視した開発手法で、素早いリリースを必要とする小規模な開発のため、少人数でのチームを組む場合に最適な手法と言われています。

エクストリームプログラミングで重要な5つのポイント

エクストリームプログラミングを用いて開発を行う上で、重要な5つのポイントがあります。それぞれの要素は以下の通りです。

コミュニケーション

ソフトウェア開発で重要となるのはコミュニケーションです。プロジェクトが失敗する原因の多くはコミュニケーション不足であり、生じた課題や状況の変化を随時共有し、素早く対応するために相互のやり取りを密にすることが重要です。

シンプル

エクストリームプログラミングはスピードと柔軟性を重要視するためシンプルな設計が望まれます。そして、状況に応じて必要となる機能を設計に加えていきます。

フィードバック

不要な機能を盛り込むのは大きな無駄となります。計画当初に定めた方針からの変更やブレが生じていないかをユーザーからのフィードバックをもらうことで適宜修正していきます。
ユーザーからのフィードバックを受けやすくするためにもコミュニケーションが重要であり、フィードバックへの対応、確認のためにもシンプルで分かりやすい設計であることが必要となります。

勇気

アジャイル開発として計画当初に綿密な計画を立てずに進めていくため、途中で大幅な変更が求められる場合もあります。開発途中であってもより良い成果のために思い切った取捨選択や変更への対応が求められます。

尊重

チームで開発を進めていくため、他メンバーへの尊重も重要となります。開発経験に優劣を持たず積極的な意見交換や提案を行い、お互いを尊重する姿勢を持つことでプロジェクトをスピーディーに進めることができます。

エクストリームプログラミングの4つのプラクティス

エクストリームプログラミングを効果的、効率的に活用していくためにもプラクティス(習慣となっている手法)について理解を深めることが大切です。それぞれ4つのプラクティスがありますので内容を確認してみましょう。

共同プラクティス

共同プラクティスは、エクストリームプログラミングに関わる全員を対象とするプラクティスです。開発チームのみだけでなく、ユーザーも含めた全員を対象とします。

反復

開発期間を、イテレーションと呼ばれる1~2週間程度の短期間に区切り、イテレーションごとに設計、実装、テストを繰り返します。
イテレーションについては下記の記事もご参照ください。

共通の用語

開発に用いる用語集を作成し、チーム全員で共有することでコミュニケーションの齟齬を防ぎます。

開けた作業空間

開発チームとユーザー間で密なコミュニケーションを取りやすく、かつ作業に集中できる環境を作ります。

回顧

状況の把握や過去のフィードバックを活かし、ミスが再発しないように振り返りを行います。

開発プラクティス

開発プラクティスは、プログラマーや開発者といった開発チームを対象としたプラクティスです。19のプラクティスに分けられますが代表的なものを分類して紹介します。

テスト駆動開発

プログラム実装の前にテストコードを先に作成します。求められる機能が洗い出されシンプルな設計が実現します。
テスト駆動開発については下記の記事もご参照ください。

ペアプログラミング

ペアプログラミングは2人1組でプログラミングを行うことです。1人がソースコードを記述し、もう1人がレビュー、サポートを行います。
定期的に役割を交代しながら開発を進め、ツーマンセルでプログラミングを進めることで問題解決への時間短縮が行えます。また、ソースコードの詳細を理解したメンバーが2人以上いることになるため、リスク分散にも期待できます。

リファクタリング

リファクタリングとは、完成済みのソースコードに対して改善の処置を行い、内部構造のみに変更を加えることです。同じ動作をするソースコードでも、保守メンバーが把握しやすいものに変えていくことでメンテナンス性の向上が見込めます。
リファクタリングについては、下記の記事もご参照ください。

YAGNI

YAGNIは「You Aren’t Going to Need It.(必要なことだけを行う)」の略称です。無駄な機能は削除し、必要とされている機能のみを記述することを意味します。

管理者プラクティス

管理者を対象としたプラクティスであり、開発が適切に進行しているかを把握します。
エクストリームプログラミングでは、短期間で集中的に作業を行うことから、チームの負荷が大きすぎないかを適宜確認することが求められます。

顧客プラクティス

顧客プラクティスでは、ユーザーを対象としたプラクティスとなります。
エクストリームプログラミングではユーザーも開発に携わるメンバーとして扱い、開発の優先順位を付ける役割を持っています。また、イテレーション毎に開発チームとともに受け入れテストを行い、求めている機能が実現できているかの確認も行います。

参考