エクストリームプログラミングとは
エクストリームプログラミングは、アジャイル開発における開発手法の1つです。略してXPとも呼ばれます。
アジャイル開発とは、最初に綿密な計画を立てず、臨機応変に進める開発方法のことです。設計・実装・テストを短期間で何度も繰り返しながら、顧客の意見や要望を都度取り入れて開発を進めます。設計・実装・テストの1サイクルをイテレーションと呼びます。
ただし、闇雲に開発を進めてもうまくいきません。そこで、アジャイル開発の指針となる手法があります。その代表格がスクラムです。エクストリームプログラミングはスクラムほどではありませんが、アジャイル開発手法として知られています。スクラムが勢いよく製品を作る手法であるのに対し、エクストリームプログラミングは継続的な成長に主眼を置いています。
エクストリームプログラミングの5つの価値
エクストリームプログラミングでは、以下の5つの価値が提唱されています。価値というより、開発を行ううえで重視すべきポイントとして認識するとよいでしょう。
- コミュニケーション
- プロジェクトが失敗する原因の多くはコミュニケーション不足です。エクストリームプログラミングでは開発チーム内だけでなく、顧客とのコミュニケーションも重視します。
- シンプル
- 最初の設計を極力シンプルにします。基本的な機能だけを盛り込み、そのほかの機能が必要になれば、その都度対応します。
- フィードバック
- ソフトウェア開発において、不要な機能を盛り込むのは大きな無駄となります。顧客からのフィードバックを得て、必要な機能を洗い出すことが大切です。
- 勇気
- 最初に綿密な計画を立てないという特性上、途中で大胆な変更が求められる場合があります。
- 尊重
- チームで開発する以上、ほかのメンバーを尊重する姿勢は欠かせません。
\ 開発ツール の製品を調べて比較 /
製品をまとめて資料請求!
資料請求フォームはこちら
エクストリームプログラミングのプラクティス
慣習となっている手法を、ビジネスではプラクティスと呼びます。エクストリームプログラミングにおいては、以下のプラクティスが存在します。
共同プラクティス
共同プラクティスは、エクストリームプログラミングに関わる全員を対象としたプラクティスです。以下の4つのプラクティスからなります。
- 反復
- 1つのイテレーション(設計・実装・テスト)が約1~2週間で終わるような開発とし、これを何度も繰り返しながら開発を進めます。
- 共通の用語
- 用語集を作成することです。これにより、コミュニケーションの齟齬を防止します。
- 開けた作業空間
- 開発チームと顧客間で密なコミュニケーションをとりやすく、作業に集中できる環境を構築します。
- 回顧
- ミスが再発しないよう、作業状況を明らかにし、過去のフィードバックを活かします。
開発プラクティス
開発プラクティスは、プログラマーなどの開発チームを対象としたプラクティスです。19つのプラクティスに分けられますが、それを大きな括りで分類して紹介します。
テスト後に実装を行う「テスト駆動開発」
テスト駆動開発とは、プログラムの実装よりもテストコードを先に作成することです。それにより、求められる機能が洗い出され、シンプルな設計が実現します。
テストの通過を目標に開発を行えば、仕様変更などによる開発途中のブレを最小限に抑えられるでしょう。なお、テストはユニットテストと受け入れテストからなり、どちらのテストも自動化が望ましいです。
2人1組で行う「ペアプログラミング」
ペアプログラミングは、2人1組でプログラミングを行うことです。1人がコードを記述し、もう1人はそれを確認・補佐します。
記述しながら確認を行うと、細々とした問題をその場で解決できるメリットがあります。また、記述されたコードを把握している人物が2人いるので、その後の問題発生時にも迅速な対応が可能になるでしょう。
内部構造を整える「リファクタリング」
リファクタリングとは、完成したコードをわかりやすく書き換えることです。外部の動作を変えずに、内部構造だけを変更します。同じ動作をするコードでも、わかりやすいものに変換されるので、メンテナンス性の向上や不具合の発生頻度の低下が期待できます。
必要なコードだけを記述する「YAGNI」
YANGIは「You Aren't Going to Need It」の略で「今必要なことだけをする」という意味です。つまり、必要なコードのみを記述することを意味します。
開発時には、後に必要になるであろう機能を考慮して、あれこれと盛り込みたくなるでしょう。しかし、そうした思惑は外れる場合が多く、結果として無駄になります。今必要とされるコードの記述に注力することが大切です。
管理者プラクティス
管理者プラクティスは、管理者を対象としたプラクティスです。開発が適切に進行しているのか把握し、チームで共有する必要があります。
特に、チームの負荷が大きすぎないか常に確認することが求められます。エクストリームプログラミングは短期間で集中して作業を行う方法であるため、過度な労働は避けなければなりません。
顧客プラクティス
顧客プラクティスは、その名のとおり顧客を対象としたプラクティスです。
エクストリームプログラミングでは、顧客も開発に携わるチームメンバーとして扱います。ビジネス的な視点から必要な機能を考え、開発の優先順位を付けるのが顧客の役割です。
具体的には、要求機能のコンセプトを短い文章にしたストーリーの作成やリリース計画を立案します。また、イテレーションごとに開発チームとともに受け入れテストを行い、求めた機能が実現しているか確認します。
ソフトウェアの開発スピードを高める方法
ソフトウェア開発には膨大な時間と労力が必要になります。そこで有効なのが、開発ツールの導入です。
開発ツールとは、ソフトウェア開発を支援するITツールの総称です。そのため、一口に開発ツールといっても、さまざまな種類があり、それらによって何が実現するかが異なります。
例えば、ノンプログラミングで開発できるツールがあります。メンバーのスキルによって製品の品質が左右されづらくなるでしょう。また、デバッグツールで問題を自動で発見することもできます。自動化できる作業をツールに任せられるため、開発が効率化するでしょう。
エクストリームプログラミングを理解して、開発を進めよう
エクストリームプログラミングは、アジャイル開発における手法の1種です。共同プラクティス・開発プラクティス・管理者プラクティス・顧客プラクティスに従って開発を進めます。特に、開発プラクティスにおけるテスト駆動開発やペアプログラミングが、エクストリームプログラミングの特色といえるでしょう。
従来のウォーターフォール開発では、開発途中の仕様変更が難しいことから最近はアジャイル開発が主流になっています。ぜひこの機会にエクストリームプログラミングでの開発も検討してみてはいかがでしょうか。
開発ツールの比較検討をしたい方は、以下のボタンより資料請求をして製品比較をしてみましょう。