特集
.NET開発者のための開発プロセス入門(前編)

アジャイル開発を導入できていない.NET開発者たちへ

福井 厚 & 小井土 亨
2004/11/20
Page1 Page2 Page3 Page4

アジャイル型開発プロセスとは何か?

 1人1人が1台以上のコンピュータを持つようになり、それらのコンピュータがネットワーク、特にインターネットでつながる時代になると、ソフトウェアへの要求が大きく変化した。ソフトウェアは単なる効率化のツールではなく、ビジネスを実現するための主要なリソースとなったのである。

 さらに、ビジネスの変化にソフトウェアを追随させるだけではなく、ソフトウェアを利用するエンドユーザーの、思いも寄らない新たな要求に、できるだけ早く対応することが求められるような形態が出現した。例えば、システム開発を発注する側が最初からすべての要求を決定するのではなく、発注者がエンドユーザーにシステムを提供しながら、ビジネスに勝ち抜くためのアイデアを見つけ出し、それをシステムに追加するといった形態である。このような状況で、ソフトウェアの短納期、高品質が求められる中、「アジャイル開発プロセス」が生まれたのである。

アジャイル開発プロセス

 アジャイル開発プロセスでは、開発を成功させるために必要なことだけを最大限に行うことを基本姿勢としている。さらに、形式化するというプロセスの視点より、プロジェクトを実際に行う人間の視点を重要視している。これは、ソフトウェア開発を成功させるうえで、開発に携わるすべての担当者のモチベーションやアイデアなどが、最も重要であるという、素直な考えに基づいている。チームによる「ものづくり」という行為で大切なことは、各メンバーの作るものに対する思い入れであり、チーム・メンバーの力を合わせて作業を進めることである。

 また、アジャイル開発プロセスでは、新しいものを確実に作るために、(まだ何も作られていない段階で)推測や仮定を基に作業を計画するのではなく、実際に作成されて動作するものを計画の判断材料にするという考えを基本としている。従って、計画についても、臨機応変に変更することを前提としている。これによって、できるだけ少しずつ作り、その過程で発見された問題について、できるだけ早く確実に対処を行うことが可能になり、リスクを軽減しながらの開発が可能となる。アジャイル開発プロセスでは、ウォーターフォール型開発プロセスの1サイクルを非常に短期間で繰り返す。その期間としては、2週間〜1カ月程度である。

◆アジャイル・ソフトウェア開発宣言の4つの価値

 ここで、アジャイル開発プロセスの背景ともいえるアジャイル・ソフトウェア開発宣言の4つの価値を紹介する。

  1. プロセスやツールよりも、個人と相互作用
  2. 包括的なドキュメントよりも、動作するソフトウェア
  3. 契約交渉よりも、顧客との協調
  4. 計画に従うよりも、変化への対応

 アジャイル・ソフトウェア開発宣言とは、Kent Beck氏やMartin Fowler氏など17名が、アジャイル開発を実践し、優れたソフトウェア開発方法を見つけるための活動を行うことをうたった宣言である。

◆XP(エクストリーム・プログラミング)とは?

 次に、アジャイル開発プロセスの代表といえるXP(eXtreme Programming:エクストリーム・プログラミング)を簡単に紹介する。XPは、Kent Beck氏が提唱しているソフトウェア開発手法の1つである。XPでは、システム開発において良いとされる、顧客要求の把握やテスト、コードレビューなどを極限まで行うことを基本姿勢としている。また、システムに対する変化を積極的に受け入れ、そのよりどころとして変更コストを増大させないようにシステムの状態を維持することを特徴としている。XPでは、以下の4つを価値としている。

  1. コミュニケーション
     開発者間、開発者と顧客間のコミュニケーションを重要視する

  2. シンプル
     シンプルで分かりやすい状態を維持する

  3. フィードバック
     推測をやめて、システムで検証する

  4. 勇気
     顧客との信頼関係や自動テストによる保証が勇気を生む

 また、XPのプラクティス(実践項目)として、以下の14項目を挙げている。

  1. 計画ゲーム
     ビジネス価値を最大にするための計画

  2. 小さなリリース
     イテレーションは1〜3週間で、2〜3カ月のリリース

  3. オンサイト顧客
     決定権のある顧客を開発チームに加える

  4. メタファ(比ゆ)
     例えによって、システムの認識を容易にする

  5. シンプルな設計
     凝った設計は行わない
     常に設計を改善する

  6. リファクタリング(設計の改善)
     現状の機能を維持して、設計を改善する
     重複の削除と結合度を下げる

  7. テスティング(テスト・ファースト開発)
     まず初めにテストを作成して、開発するプログラムのゴールを明確にする
     テストを自動化する

  8. ペア・プログラミング
     2人で1台のマシンに向かってコーディングする

  9. コードの共同所有
     いつでも誰でも、どの部分でも改善できる

  10. 常時結合(Continuous Integration)
     ビルドとテストを1日に何度も行う

  11. コーディング規約
     共同所有されるコードは、誰でも分かりやすいものにする

  12. 持続可能なペース
     長期間持続できるペースで開発を行う

  13. オープンワークスペース
     コミュニケーションを促進するために、オープンな作業環境を用意する

  14. 日ごとのスキーマ移行
     永続データを扱う場合でも、必要なときにスキーマを更新する

 XPでは、上記の4つの価値を基本指針とし、14のプラクティスを実践することで、さまざまな問題を解決しようとしている。例えば、要求が頻繁に変わるという問題については、シンプルな設計やテスティング、リファクタリングなどのプラクティスを行うことで、システムの変化コストを常に低く抑えるという解決策を提案している。

 ここまでで解説してきた開発プロセスの中でも、アジャイル開発プロセスは複雑で変化しやすい現在のソフトウェア開発に最も適したものだろう。しかし、実際の.NET開発プロジェクトに対するアジャイル開発プロセスの導入はあまり進んでいないようである。それでは、なぜアジャイル開発プロセスは.NET開発プロジェクトに導入されないのか、それに対する解決策はあるのかについて、筆者らの考えを次のページから説明していく。


 INDEX
  [特集] .NET開発者のための開発プロセス入門(前編)
    1.アジャイル開発プロセスが誕生するまで
  2.アジャイル型開発プロセスとは何か?
    3..NET開発者がアジャイル開発プロセスを導入できない理由
    4.アジャイル開発プロセスの導入
  [特集] .NET開発者のための開発プロセス入門(後編)
    1.1人からでも導入可能なローカル・ライトウェイト開発プロセス
    2.単体テストの自動化とテスト・ファースト
    3.Mockオブジェクトとリファクタリング
    4.数名のチームで導入できるローカル・ライトウェイト開発プロセス



Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間