XPという言葉を聞くと真っ先に懐かしのOS、WindowsXPを思い出してしまいますが(歳がバレる...)、システム開発において「XP」と言えば、 アジャイルソフトウェア開発手法と総称される一連の手法の先駆けとなったソフトウェア開発手法です。
今回はこのXP(エクストリームプログラミング)に関して調べてみました!
概要
Wikipediaによると「ケント・ベックらによって定式化され、提唱されているソフトウェア開発手法である。柔軟性の高い開発手法であるため、難易度の高い開発やビジネス上の要求が刻々と変わるような状況に向いた開発手法である。事前計画よりも柔軟性を重視する。」と記載してあります。
柔軟性とぃう言葉がよく使われているように、スピード感と変化に対応することを重要にする開発手法なんですね。
5つの価値
XPでは、そのすべての原理となる5つの価値というものが存在します。
5つのカテゴリ
②シンプル
③フィードバック
④勇気
⑤尊重
これら5つの価値は各プラクティス(作業)に影響を与え、XPの根幹をなすようです。
これら5つの価値は人間としても必要な価値に思えますね。
4つのカテゴリと19のプラクティス
難しくなってきましたが、5つの価値を19のプラクティスに活用するのですが、19もあると多すぎるので4つにカテゴリで表せるようです。
4つのカテゴリ
②開発のプラクティス
③管理者のプラクティス
④顧客のプラクティス
それぞれの立場や場面でカテゴリを分けているようですね。このカテゴリの中でよく言葉として出てくるカテゴリは「開発のプラクティス」なので続いてこの開発プラクティスを調べてみます。
他の19のプラクティスはWikipediaをご参照してみてください。
開発のプラクティス
テスト駆動開発
テスト駆動開発(Test Driven Development = TDD)とは言葉の通り、テストを主体においてプログラミングをしていくことです。
最初にテストケース(シナリオ)を作成します。そして、そのテストを通すためのプログラミングをしていきます。テストを通れば良いので、プログラムが非常にシンプルになります。
そして、リファクタリング(プログラムの外部から見た動作を変えずにソースコードの内部構造を整理する:※リファクタリングもプラクティスの一つです!)を行い、作ったテストケースはリグレッションテスト(バグ修正などの変更をプログラムに加えた際、修正した箇所以外に影響がないかを確認するテスト)の時に役に立ちます。
ペア・プログラミング
これはプログラミングを二人一組で行うことです。一人がコードを書き、もう一人はそれをチェックしながら、仕様書を確認したり全体構造を考えたりするなどのナビゲートを行います。二人の役割はメインとサポートということで違いがありますが、この役割を定期的に交代しながら仕事を進めます。これにより、以下の効果を得ることができます。
- 細々とした問題の解決に要する時間が短くなる
- 常にコードレビューを行うことができる
- 集中力が持続する
- コードの詳細を理解したメンバーが常に2人以上いることで後々のコード共有に役立つ
一人で悩んで解決より、二人の方が効率が上がる、ということですね。二人で同じことをするのではなく、違う役割を行うということがポイントなのですね。
YAGNI(ヤグニ)
You Aren't Going to Need It.(必要なことだけ行う)。先を見据えて、前払い的に機能を増やし、実装を複雑化させることは避けることです。これにより、後のイレギュラーな変更に対応しやすいようになります。人生の色々なことにも適用できそうですね。
まとめ
今回はXP(エクストリームプログラミング)に関して調べてみました。
全てのプラクティスを実践するのではなく、導入できること、やれそうなプラクティスから実践していくということが大事なんですね。
5つの価値の考え方や概念も開発する上では役に立ちそうですね。
以上です!
参考URL)
・エクストリームプログラミングの5つの価値と19のプラクティス