エクストリームプログラミング 【XP】 eXtreme Programming
概要
エクストリームプログラミング(XP)とは、迅速で柔軟性の高いソフトウェア開発手法の一つ。いわゆるアジャイル開発手法と総称される軽量で柔軟な手法の先駆けとなったもので、1999年に米著名プログラマのケント・ベック(Kent Beck)氏らが提唱した。事前に仕様や設計を明確に定めてその通りにプログラムを記述することを重視とする従来手法と異なり、プログラミングを始めた後でも変更や修正、仕様の明確化などが行われることを前提として、小規模な設計、実装、テストを何度も繰り返して段階的に完成度を高めていく反復型開発を採用している。
エクストリームプログラミングは10人程度くらいまでの小規模な開発チームに適した手法とされ、開発スピードやビジネス環境の変化への素早い対応が求められるベンチャー企業の自社製品開発やオンラインサービス開発などで人気が高い。
最も重視する原理を「コミュニケーション」(communication)、「シンプルさ」(simplicity)、「フィードバック」(feedback)、「勇気」(courage)、「尊重」(respect)の「5つの価値」として定めている。その上で、開発者が行うべき具体的な実践や守るべき原則を4つの領域に分かれた12のプラクティス(practice)としてまとめている。オリジナルの12のプラクティス以外にも、一部を追加、変更した異なる数や内容の原則を提唱する人もいる。
「細かいフィードバック」(fine-scale feedback)領域では、常に2人1組でプログラミングする「ペアプログラミング」(pair programming)、ストーリーカードに基づいて作業計画を策定する「計画ゲーム」(planning game)、常にコードより先にテストを記述する「テスト駆動開発」(TDD:Test-Driven Development)、顧客と密接にコミュニケーションを取る「オンサイト顧客」(on-site customer)の4つが定められている。
「継続的なプロセス」(continuous process)領域では、コード全体のビルドとテストを頻繁に繰り返す「継続的インテグレーション」(continuous integration)、既存のコードも常に改善していく「リファクタリング」(refactoring)、不完全でも迅速に完成させ段階的に改良していく「小規模リリース」(small releases)が定められている。
「共通理解」(shared understanding)領域では、コードの記法などの標準を定めて皆が従う「コーディング規約」(coding standards)、すべてのコードは全員が等しく共有しているとする「コードの共同所有」(collective code ownership)、設計を簡素に保つ「シンプル設計」(simple design)、関係者全体でシステムの構造や振る舞いのイメージを事例や例えを通じて共有する「比喩」(system metaphor)が定められている。
「プログラマの厚生」(programmer's welfare)領域では、開発者の労働負荷を常に一定に保つ「持続可能なペース」(substaineable pace)が定められ、労働時間を週40時間までに制限すべきとされる。