スピーディかつ、ユーザーの要求に応じた柔軟性を持つ製品を提供することは大切です。近年注目されている開発方法の中に「アジャイル開発」があります。
この記事では、アジャイル開発の意味や手法、ウォーターフォール開発との違いやメリット・デメリットについて徹底解説します。
目次
アジャイル開発とは何か
「アジャイル開発」と聞いても「どんな開発方法なのか分からない」という人も多いのではないでしょうか。ここでは、アジャイル開発の意味を詳しく解説します。
アジャイル開発の意味を知ろう
アジャイル開発とは、システム構築やソフトウェア開発をするときのプロジェクト開発手法です。アジャイルを日本語に訳すと「素早い」「機敏」といった意味になります。
アジャイル開発はこれまでの開発手法と比較して開発期間が大幅に短縮されることから、アジャイル(素早い)と名づけられました。短い期間でテストを繰り返してスピーディーに開発していくのが大きな特徴になります。
アジャイル開発は「反復増加タイプ」
アジャイル開発は開発期間がスピーディーなのが特徴です。
1週間から1か月といった短期の反復期間内で、どんどん機能を追加していく「反復増加タイプ」の開発プロセスによって、アジャイル開発は進んでいきます。アジャイル開発は、ソフトウェアやアプリ開発といった、開発中で仕様の変更や新しい機能が追加される可能性の高いプロジェクトに向いています。
次にアジャイル開発の流れを解説します。
分かりやすく説明するために「ソフトウェアを開発する」という例で説明します。アジャイル開発を使ってソフトウェアを開発するには、まずは大まかな仕様を決める「計画」を立てます。
この段階では、細かい仕様は無視してざっくりと計画を立てるだけでOKです。次に「イテレーション」と呼ばれるサイクルを用いて開発を進めていきます。イテレーションとは「反復」のことです。
開発を小さな単位に分け「計画する」「設計、実装、テストを行う」「機能のリリースをする」という流れを、何度も繰り返します。この流れが「イテレーション」です。
イテレーションは1週間~1か月ごとなど短期で行うのが一般的で、イテレーションごとに毎回新しい機能をリリースします。
開発の辞めどきを見極めるのは製品の責任者の判断になり「機能が足りない!」と判断して開発を継続するか「顧客の満足度も高いし、機能は十分」と判断して開発終了するか、見極める必要があります。
アジャイル開発の手法とは
アジャイル開発の具体的な手法について見ていきましょう。アジャイル開発には「スクラム」「エクストリーム・プログラミング(XP)」「ユーザー機能駆動開発(FDD)」などのさまざまな手法があります。
ここでは、それぞれの手法について徹底解説していきます。
チーム一丸となる「スクラム」
「スクラム」と聞くと、ラグビーでチーム一丸となって肩を組みぶつかり合う様子を思い浮かべる人も多いでしょう。アジャイル開発における「スクラム」も、まさにラグビーのようにチームワークを重視しているのが特徴です。
「スクラム」とは、開発を進めるためのフレームワーク(チームで仕事をスムーズに進めるための枠組み)を指し、2つのバックログ(チームの作業計画や計画変更のためのキャンバス)を定義しています。
バックログには製品がユーザーに提供する価値を記述する「プロダクトバックログ」と作業計画を示した「スプリントバックログ」があります。
「スクラム」ではチームメンバー自ら計画を立て、イテレーションごとに開発の進行や製品に問題点はないか、正しく動いているかどうかを精査します。
チームの協力が必要なため、メンバー同士がうまくコミュニケーションを取れなかったり、お互いの足を引っ張り合ったりする関係だと、開発自体がうまくいかなくなる恐れがあります。
ラグビーでスクラムを組むように、チームメンバーの一致団結が成功の秘訣になります。
柔軟性が強みの「エクストリーム・プログラミング(XP)」
エクストリーム・プログラミングを英語表記するとExtreme Programmingで、XPとも略されます。
この手法は、あらかじめ立てた計画をどんなことがあっても曲げずに遂行することよりも、途中で状況に応じて変更する柔軟さの方を重視する手法です。
開発チームの現場では「上司やチームとコミュニケーションを取る」「フィードバックを行い、改善を行う」「適切に判断する」ことが大切です。その中でも「適切に判断する」とは、開発途中の仕様変更に柔軟に対応する姿勢や、必要だと思ったときは設計の変更すら躊躇しない判断力を指しています。
最初に立てた計画よりも、臨機応変に対応する技術面を重視している手法なので、プロジェクトの管理者サイドというよりも、プログラマーやデザイナーといった現場中心の開発手法です。
顧客観点の「ユーザー機能駆動開発(FDD)」
ユーザー機能駆動開発を英語表記するとFeature Driven Developmentとなり、FDDと略されます。
FDDは、実際に動いているソフトウェアであっても、適切な間隔で開発を繰り返す手法で、ユーザーにとっての機能価値(feature)を重視して開発されているのが特徴です。
実際に動作する製品を開発するには、ユーザー側にあらかじめビジネスモデリングを実施することが必要です。
アジャイル開発とウォーターフォール開発の違い
アジャイル開発とよく比較されるのがウォーターフォール開発です。ここでは、ウォーターフォール開発とは何かを説明し、アジャイル開発との比較を行います。
ウォーターフォール開発は「工程分割タイプ」
ウォーターフォール開発では、工程を「企画」「設計」「実装」「テスト」に分割した上で開発を進めていきます。分かりやすいように「ソフトウェア開発」を例に解説していきます。
最初の企画の段階で、開発対象のソフトウェアの機能を全て決めてしまいます。「企画」「設計」「実装」「テスト」のそれぞれの工程は決められた技術者が担当します。前の工程でドキュメントを作成し、次の工程へ引き継ぎます。
ウォーターフォール開発では、全ての工程が無事に完了したあと、はじめてソフトウェアを利用することができるのです。
アジャイル開発とウォーターフォール開発の比較
1. クライアントや取引先への対応方法
アジャイル開発では、開発期間中ならいつでもクライアントが要求の変更や仕様の追加を求めることができます。開発期間中に受入可否の判定が出るのも特徴です。
ウォーターフォール開発では、クライアントが仕様の変更や要求は開発開始前に行う必要があります。意見が通るかどうかは開発終了後にならないと分かりません。
2. 要求への対応方法
アジャイル開発では、イテレーション(反復)ごとに開発するため、開発期間中なら変更が可能です。しかし、ウォーターフォール開発では開発前に要求を確定しなくてはなりません。
3. サービスの提供
アジャイル開発ではイテレーション(反復)のたびに、サービスを提供できるので早いです。ウォーターフォール開発では全工程が終わった後に提供するので時間がかかります。
4. ドキュメントは必須かどうか
アジャイル開発ではドキュメントは必須ではないのですが、もしそれが適切な情報伝達手段なら作成します。ウォーターフォール開発では各工程ごとにドキュメントを作成し、次の工程に繋げます。また、工程が全て終わったあとも、エビデンスとして必要になります。
5. テスト頻度
アジャイル開発では実装ごと頻繁にテストを行いますが、ウォーターフォール開発ではテスト工程でのみで実施します。
6. 開発者は誰か
アジャイル開発では、それぞれの技術者が特定の専門分野を持たずに全ての開発作業を行いますが、ウォーターフォール開発では各工程ごとに専任担当者がいます。
7. 人材育成
アジャイル開発では、反復開発で実践的に現場で学びます。全ての開発を担当しなくてはならないので、マルチに活躍できる人材になれます。ウォーターフォール開発では専任の技術者に特化しているため人材育成や採用が比較的容易です。
8. プロセスの改善方法
アジャイル開発では「今回ここがダメだったから次の反復にいかそう!」と、反復ごとにプロセスの改善が可能です。
しかし、ウォーターフォール開発ではプロジェクト終了後にやっと改善点が見えるので、同プロジェクトではなく、次のプロジェクトに経験を活かすしか方法はありません。
アジャイル開発とウォーターフォール開発、それぞれのメリット・デメリット
「結局、アジャイル開発とウォーターフォール開発のどっちがいいの?」と疑問に持つ人もいるでしょう。ここでは、アジャイル開発とウォーターフォール開発それぞれのメリット・デメリットをご紹介します。
アジャイル開発のメリット・デメリット
アジャイル開発のメリットは、反復ごとに開発・提供を行うため、より速いスピードでユーザーにプロダクトや新機能を提供できることです。
ユーザーのリアルな声を製品に反映しながら開発できることは、開発側にもユーザー側にもメリットがあるでしょう。一方、柔軟性があるあまりに、最初の方針を定期的に確認しないと開発の方向性がブレやすいデメリットもあります。
ウォーターフォール開発のメリット・デメリット
ウォーターフォール開発のメリットは、開発の計画や予算の見積りが容易になることです。また、工程ごとの開発担当者は専任の技術者で基本的には工程以外の技術を必要としないため、人材育成や採用が比較的容易です。
デメリットは、製品の完成後に初期段階のトラブルに気が付いた場合、戻るための工数が大きくなることです。それによって開発をやり直す時間やコストが膨らんでしまいます。
まとめ
IT企業の現場で使われることが多いアジャイル開発とは、システム構築やソフトウェア開発をするときの手法のひとつです。開発を小さな単位に分け「計画する」「設計、実装、テストを行う」「機能のリリースをする」という流れを、短期間で何度も繰り返します。
アジャイル開発には「スクラム」「エクストリーム・プログラミング(XP)」「ユーザー機能駆動開発(FDD)」という手法があります。アジャイル開発とよく比較されるのは、工程を分割して開発する「ウォーターフォール開発」です。
アジャイル開発のメリットはスピーディーさと柔軟性、ウォーターフォール開発のメリットは容易に見積もりや人材育成ができることです。ここまで読んでアジャイル開発に興味を持った方は、チームと協力してスピーディーに開発できるアジャイル開発を検討されてもよいのではないでしょうか。
▼アジャイルに関連する記事はこちら