(Photo by:Anthony DiLaura)
はじめに
どんなソフトウェア開発手法を使っていますか?
「ウォーターフォール型開発をしている」「手戻りが多くてなんだかうまくいっていない」といった現場も多いのではないでしょうか?
今回紹介するのは、アジャイルソフトウェア開発手法である「エクストリームプログラミング」(以下XP)です。XPは、従来のウォーターフォール型開発の問題点を解決します。現在の開発手法に問題を感じているなら、パイロットプロジェクトを立ち上げて導入したときの効果を確かめてみましょう。
この記事では、ソフトウェア開発手法を改善したい方のために、XPの概要と5つ価値、19のプラクティスについてお伝えしていきます。XPはすでに過去の手法だと思われている方もいるかもしれませんが、今でもスクラムに次いで人気のある手法です。まだ試したことがないなら一度試してみる価値はあります。
XPの概要
XPは、従来のウォーターフォール型開発の問題点を克服するために、1990年代後半にケント・ベックらによって考案されました。ご存じの通り、ソフトウェア開発は単純なものではありません。ほとんどのプロジェクトでは予想外のことが起き、スケジュールの修正を迫られます。このため、XPでは変化を受け入れます。プロジェクトが途中で変更されることを前提に柔軟に計画を変更していきます。そのために、XPでは5つの価値(ポイント)と19のプラクティス(実践方法)を定義しています。まずは、5つの価値からみていきましょう。
XPの5つの価値
コミュニケーション
XPでは、コミュニケーションを重視します。プロジェクトがうまくいかない原因のひとつはコミュニケーション不足です。これは、クライアントでもチームでも同じです。積極的にコミュニケーションを取ることで重要事項を聞き逃すことがないようにします。また、時間の節約にもなります。100ページのドキュメントを書かなくても30分のミーティングで済むかもしれません。
シンプル
プログラマーは、早計な共通化や将来を見越した過度な実装(オーバーエンジニアリング)をしてしまうことがあります。もしかすると、最終的には役に立つこともあるかもしれません。しかしながら、得てしてこういった思惑は外れることが多く、そのために使った時間や労力は無駄になってしまいます。XPでは、シンプルさを重視し、まずはできるだけ単純な実装で済ませるようにします。本当に必要だとわかった時点で本格的に実装すればよいのです。
フィードバック
ソフトウェア開発では、しばしば無駄な機能が開発されることがあります。ある有名な調査では、ソフトウェアでよく使用される機能は全体の20%にしか過ぎないとの調査結果が出ています。なぜこんなことが起きるかというと、ユーザーのフィードバックを得ていないからです。開発の初期段階ではシステムに対する理解が浅く、重要な部分がどこなのかわかりません。XPでは、クライアントやユーザーを巻き込んで一緒にシステムを開発していきます。定期的にフィードバックを得ることで、本当に重要な20%の機能を早期に提供します。
勇気
XPでの”勇気”とは、上記の3つの価値を実現するための勇気です。XPは、今までのウォーターフォール型の開発とはかなり異なっているため、実行するためには勇気がいります。しかし、変化を受け入れ大胆な変更をすることこそが重要なことなのです。
尊重
ソフトウェア開発はひとりでやるものではなく、たいていはチームです。XPがいかに優れた方法論だとしても、人と人が尊重し合わなければ何の役にも立たないでしょう。最近流行の開発手法であるDevOpsでも、開発チームと運用チームが尊重し合うことが最も重要なことだとされています。プロジェクトを円滑に進めるためには、互いの尊重が必要不可欠です。
XPの19のプラクティス
XPには、4つのカテゴリに分けて、次に示す19のプラクティスが定義されています。
カテゴリ | プラクティス |
---|---|
共同のプラクティス | 反復 共通の用語 オープンな作業空間 回顧 |
開発のプラクティス | テスト主導型の開発 ペア・プログラミング リファクタリング 集団的な所有権 継続的インテグレーション YAGNI |
管理者のプラクティス | 責任の受け入れ 援護 四半期ごとの見直し ミラー 持続可能なペース |
顧客のプラクティス | ストーリーの作成 リリース計画 受け入れテスト 頻繁なリリース |
特徴的なプラクティス
反復
ウォーターフォール型の開発とは違い、開発期間を1週間~2週間程度の短いイテレーションに区切り「設計→実装→テスト→リリース」を繰り返していきます。この短期間の繰り返しにより、クライアントからの早期のフィードバックを得ることができます。手戻りを最小限に抑え、無駄な作業を削減することにつながります。
テスト主導型の開発
XPでは、テスト駆動開発(TDD)でも採用されているテストファーストでコーディングしていきます。まず、実装する対象のテストを書き、次にそのテストをパスする実装を書きます。必要であれば、リファクタリングをして、再びテストを書きます。こうすることで、実装がシンプルになり、作成したテストは後でリグレッションテスト(回帰テスト)に使えます。頻繁にリリースするためには、包括的な自動テストが必要不可欠です。
ペア・プログラミング
ペア・プログラミングはXPの最も特徴的なプラクティスで、二人一組となってプログラミングをします。一人がコードを書いているときには、もう一人はコードのレビューや全体の設計などを考えてサポートします。また、ちょっとした問題(調べ物)を解決する手助けもします。この役を交互に交代しながらプログラミングを進めていきます。こうすることで、問題の解決を短時間で行うことができ、結果的にプログラミングの効率が上がります。その他にも、コードの共有や設計の質の向上などさまざまなメリットがあります。
ストーリーの作成
XPでは、ストーリーカードと呼ばれる実装する予定の機能を記したカードを機能ごとに作成します。このカードを元にクライアントと話し合い、優先的に実装する機能を決定します。優先度の高いカードから実装していくため、無駄な機能を開発してしまうことを防げます。最初は概要のみを記載しておき、必要になったときに詳細をさらに詰めていきます。作成したカードは「未着手・作業中・完了」などに分類してホワイトボードや壁に貼り付けておきます。こうすることで、現在の作業状況が一目瞭然になります。
まとめ
XPについて理解が深まりましたか?実用的な価値があると感じられたなら実際に試してみましょう。ケント・ベック本人による著書が多数ありますので、入門~実践まで学べることでしょう。XPは単独で使用されるよりも、スクラムと組み合わせて使用されることのほうが多いです。XPがうまくいったらスクラムも試してみるとよいでしょう。あなたのプロジェクトがよりよいものになれば幸いです。
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments