ソフトウエア開発の分野において、『アジャイル』という言葉はよく聞かれます。エンジニアにとってはなじみの深い言葉ですが、IT分野に詳しくなければ意味が分からない人も多いでしょう。アジャイルという言葉の意味から開発手法まで解説します。
アジャイルの意味は?
アジャイルはIT分野でよく使われる言葉です。とはいえ、エンジニアをはじめとした技術者以外には、あまりなじみのない言葉かもしれません。まずはアジャイルの意味から押さえましょう。
言葉の定義
アジャイル(agile)とは、日本語で『俊敏』『敏捷』といった意味を持つ単語です。名詞にすると『敏捷性』を意味する『アジリティ(agility)』となり、素早い行動や動きの速さを表します。
特にIT分野では、ソフトウエアをスムーズに開発するための方法を指すのが一般的です。具体的な方法というよりは、開発の進め方というニュアンスで用いられていると考えましょう。
ソフトウエア開発で起こりがちな不安定な状況にうまく対処しながら、確実な成果を上げられる進め方です。
アジャイル開発とは
アジャイル開発は、開発プロセスを短い単位で区切り、それぞれで実装とテスト・改善を繰り返しながら進める開発手法です。IT分野では、単に『アジャイル』と表現するだけでもアジャイル開発のことを指し、エンジニアの間ではごく一般的に使われています。
アジャイル開発では、ソフトウエア開発で頻繁に発生する仕様や設計の変更を前提として、計画段階では大まかな仕様だけを決めておきます。その上で1~2週間ごとにテスト用のソフトウエアを作り上げるのが、アジャイル開発の基本的な流れです。
短期間で検証と改善を繰り返すことにより、徐々に開発を進めていきます。
ウォーターフォール開発との違い
『ウォーターフォール開発』とは、要件定義から設計・開発・テスト、それぞれの工程を一つずつ順番に完了させていく開発手法です。要件定義や設計を事前に完了させてから開発に進みます。
短期間で開発とテスト・仕様の見直しといった工程を繰り返すアジャイル開発とは、対極的な開発手法といえるでしょう。アジャイル開発とウォーターフォール開発は、それぞれにメリット・デメリットがあります。
日本のソフトウエア開発は以前、ウォーターフォール開発が主流でした。しかし近年は、開発途中での仕様変更・機能の追加にも柔軟かつ素早く対応できるアジャイル開発を採用する現場が増えています。
アジャイル開発の流れ
アジャイル開発は企業によってプロセスに若干の違いはあるものの、基本的な流れは同じです。進め方をステップごとに分けて見ていきましょう。
大まかな開発計画を策定
事前に要件定義や全体の設計をしっかり終わらせてから開発に入るウォーターフォール開発と違い、アジャイル開発では対象を小規模な単位に区切り、単位ごとに計画から設計・実装とテストを繰り返します。
アジャイル開発の計画段階では、厳密な仕様は必要ありません。まずは大まかな仕様や要件を決めるに留め、設定した単位ごとに開発サイクルを実行します。最初から細かく設計しないことで、仕様の変更・顧客からの新たな要望があったときに柔軟な対応ができるのです。
イテレーションによる実装・テストの反復
大まかな仕様と要件を決定したら、小分けした単位ごとに設計から開発・テスト・改善までの工程を繰り返していきます。この開発サイクルの単位は『イテレーション』と呼ばれ、1~4週間の範囲で設定されるのが一般的です。
イテレーションごとに設計とテストを行い、機能を付加していきます。
途中でクライアントの要望・予期せぬエラーなどで仕様変更や機能の追加が必要になっても、スピーディーな対応が可能です。各イテレーションで設計からテストまで繰り返すため、一から設計し直す必要はありません。
早い段階でプログラムの稼働を確認することで、急な機能の追加や変更にも臨機応変に対応できます。
アジャイル開発の主な手法
アジャイルはソフトウエア開発においてスタンダードな考え方になっており、多くの手法があります。アジャイル開発の代表的な手法も、併せて押さえておきましょう。
スクラム
アジャイル開発の手法としては、『スクラム』が最も広く導入されているといってよいでしょう。スクラムは開発チームのコミュニケーションを重視し、チームミーティングやプランニング・振り返りによって開発を進める手法です。
ラグビーのスクラムが語源であり、開発チームのメンバーが一丸となってプロジェクトを進める様子をたとえています。
ビジネスシーンで一般的になっているテキストベースのコミュニケーションはできる限り排除し、メンバーのミーティングによって方針を決めるのが、スクラムの特徴でありメリットです。
プロジェクトの進捗や問題点などについて頻繁にミーティングを開いて確認し合うため、状況の変化に柔軟に対応できます。
エクストリーム・プログラミング(XP)
『エクストリーム・プログラミング(XP)』は、次に挙げる五つの価値を重視して開発を進める手法です。
- コミュニケーション:チーム内はもちろん、顧客とのコミュニケーションも重視する
- シンプリシティ:初期設計をできるだけシンプルなものにする
- フィードバック:顧客からのフィードバックを重視し、テストを繰り返す
- 勇気:開発途中での仕様や設計の大胆な変更に対して、勇気を持って取り組む
- リスペクト:他の開発メンバーを尊重する
これらの考え方を軸に、具体的な取り組みを決めていきます。アジャイル開発のメリットである途中段階での要件・仕様変更に対して柔軟に対応するため、常に重視すべき価値としてチーム内への共有が必要です。
構成/編集部