S-Collection株式会社 システムについて

S-Collection株式会社のシステムサポート事業

スピーディーなシステム開発を実現!XP(エクストリームプログラミング)についてお話します

アジャイル開発の一種、XPはプログラマー主体の開発手法


以前「アジャイル開発とは~①生まれた時代背景~」、「アジャイル開発とは~②内容・成功事例~」でアジャイル開発の特徴や導入事例について書きました。アジャイル開発の特徴は、スピーディーなシステム開発を実現できることや仕様変更に柔軟に対応しながらシステム開発できることです。

今回はアジャイル開発の手法のひとつである「XP(エクストリームプログラミング)」について紹介します。

XP(エクストリームプログラミング)とはなにか?

XP(エクストリームプログラミング)とは、アジャイル開発手法の先駆けとなったもので、1999年にアメリカのプログラマケント・ベック(Kent Beck)氏らが提唱した開発手法です。
ウォーターフォール開発のように、最初にシステムの仕様やプログラムの設計を決めてからプログラミングを行う従来の手法とは異なり、XPでは小規模な設計、実装、テストを何回も繰り返して段階的に完成度を高めていきます。
XPは10人くらいの小規模な開発チームに適した手法で、開発スピードや変化への素早い対応が求められるベンチャー企業の自社製品開発や、オンラインサービス開発でよく使われます。
プログラミングをはじめたあとに仕様変更が行われる前提なので、設計やプログラミングなどの技術面を重視した開発手法です。

XPが重要視している5つの価値

XPには、重要視している5つの価値があります。それぞれについて、1つずつ見ていきましょう。

1つ目はコミュニケーションです。プロジェクトがうまくいかない原因の1つとして、コミュニケーション不足が挙げられることが多いため、XPでは特にコミュニケーションを重視しています。
プロジェクトではクライアントはもちろん、開発チームのメンバーとも、積極的にコミュニケーションをとることで、大事なことを共有することができます。

2つ目はシンプルにすることです。システム開発の現場では将来を見越して過度な実装を行うことがあります。当初は役に立つと思って実装した機能が最終的には使われず、時間や労力が無駄に終わってしまうのです。
そういった無駄な労力を省くためにもXPではシンプルさを重視していて、最初はできるだけ単純な実装で済ませるようにしています。そのあとに、本当に機能を追加する必要がある場合は、そのたびに実装するようにしています。

3つ目はフィードバックです。XPでは、クライアントやユーザーを巻き込んで一緒にシステムを開発していきます。システムの仕様についても繰り返し確認を行うので、定期的にフィードバックを得ることができ、無駄な機能が開発されることを防ぎます

4つ目は勇気です。XPはウォーターフォール型とは、開発手法が大きく異なります。そのため、上述した4つの価値を実現するためには、かなりの勇気が必要です。

5つ目は尊重です。システム開発は1人で行うのではなく、チームで行うことがほとんどです。XPがいかに優れた手法でも、チームのメンバー同士がお互いに尊重しあうことが必要不可欠です。

以上が、XPで重要視している5つの価値です。

XPを構成する手法を紹介

次にXPを構成する手法を紹介します。
XPでは大きく、共同のプラクティス、開発のプラクティス、管理者のプラクティス、顧客のプラクティスと4つのカテゴリに分けられます。
また、そこからさらにこまかく19のプラクティスに分類されます。

◎共同のプラクティス:
 ・反復
 ・共通の用語
 ・オープンな作業空間
 ・回顧

◎開発のプラクティス:
 ・テスト主導型の開発
 ・ペア・プログラミング
 ・リファクタリング
 ・集団的な所有権
 ・継続的インテグレーション
 ・YAGNI

◎管理者のプラクティス:
 ・責任の受け入れ
 ・援護
 ・四半期ごとの見直し
 ・ミラー
 ・持続可能なペース

◎顧客のプラクティス:
 ・ストーリーの作成
 ・リリース計画
 ・受け入れテスト
 ・頻繁なリリース

ここで、もっとも特徴的なプラクティスである、ペア・プログラミングを少し紹介しておきます。

ペア・プログラミングとは、その名のとおり二人一組でプログラミングを行う開発の手法です。ひとりがコードを書いているときに、もうひとりはコードのレビューをしたり、全体の設計などを考えてサポートします。こうすることで、問題の解決を短時間で行うことができ、結果的にプログラミングの効率が上がります。そのほかにも、コードの共有や設計の質の向上などさまざまなメリットがあります。

XPのメリットとデメリット

XPのメリットとデメリットについても触れておきましょう。

一番のメリットは、変化に柔軟な対応が可能で、開発スピードが早いことです。この特徴は、Webやスマートフォンのアプリの開発に適しています。
また、小規模な設計、実装、テストを繰り返し、段階的に完成度を高めていくため、ユーザーからのフィードバックを受け入れやすいことも大きなメリットです。

次にデメリットについてです。まず、計画段階で綿密に仕様を決定しないため、開発の方向性が途中でぶれやすくなります。次に、チームごとに小単位で開発を繰り返すため、全体でのスケジュール管理、進捗管理が難しく、気付いたときには納期が迫っているということも起こり得ます。

また、あまり採用されない開発手法であるため、XPを取り入れてはじめてわかることもあり、当初の想定とギャップが発生することもあります。プロジェクトでXPを採用してメンバーが開発手法に慣れるまでに時間がかかってしまい、システム開発が進まなくなることもあれば、XPを採用してシステム開発が進むケースもあります。

まとめ

これからはシステム開発の現場では、よりスピーディーにシステムをリリースすることが求められます。開発スピードが速い手法であるXPは、今後より多く取り入れられると考えられます。

XPは設計やプログラミングの技術が重視される開発手法です。そのため、XPを採用し、より早くシステムをリリースするためには、設計やプログラミングの技術を向上することが求められます。

次回はここでも少し触れましたが、XPを構成するプラクティスの1つである、ペアプログラミングについて詳しく紹介していきます。
また、ペアプログラミングの説明を通じて、XPが実際に現場でどのように導入されているかも紹介します。