VNEXTの会社紹介資料
2023/09/01
システムやソフトウェアの開発手法として「アジャイル開発」を取り入れる企業が増えてきました。
従来は、ウォーターフォールモデルによる開発が主流でしたが、2000年代以降、新たな手法として登場したのが "アジャイル開発" です。
本記事では、アジャイル開発の概要から特徴、開発の流れ、メリット・デメリットなどを詳しく解説していきます。
目次
|アジャイル開発とは?
アジャイル(Agile)とは、直訳すると「素早い」「機敏な」「頭の回転が速い」という意味があります。
アジャイル開発は、システムやソフトウェア開発におけるプロジェクト開発手法のひとつで、『企画→設計→実装→テスト』といった開発工程を
機能単位の小さいサイクルで繰り返して開発を進めていきます。
アジャイル(素早い)と呼ばれる所以は、従来の開発手法に比べて開発期間が短縮されるためです。
優先度の高い要件から順に開発を進めていき、開発した各機能の集合体として1つの大きなシステムを形成します。
また、「開発には仕様の変更がつきものである」という前提で進められるため、仕様変更に強く、プロダクトの価値を最大化することに
重点を置いた開発手法です。
|アジャイル開発の始まり
2001年に、アジャイル開発という概念が生まれました。
アメリカ・ユタ州に集まった17名の技術者・プログラマーによって開発手法の重要な部分について統合することを議論したことが始まりです。
それらをまとめたものが、以下の「アジャイルソフトウェア開発宣言」です。
私たちは、ソフトウェア開発の実践 あるいは実践を手助けをする活動を通じて、 よりよい開発方法を見つけだそうとしている。 この活動を通して、私たちは以下の価値に至った。 プロセスやツールよりも個人と対話を、 包括的なドキュメントよりも動くソフトウェアを、 契約交渉よりも顧客との協調を、 計画に従うことよりも変化への対応を、 価値とする。すなわち、左記のことがらに価値があることを 認めながらも、私たちは右記のことがらにより価値をおく。 |
引用文の赤字にした部分は、「ソフトウェア開発において、どこに重きをおくか」という価値観を定義したものです。
アジャイルソフトウェア開発宣言は、ソフトウェア開発とそれに基づく12の原則を定義しており、現在もアジャイル開発の公式文書として、
広く知られています。
|アジャイル開発とウォーターフォール開発の違い
ウォーターフォール開発は「順次型」とも呼ばれ、滝が流れるように、要件定義から設計・開発・実装・テスト・運用までの各工程を順番に
実施していく開発手法です。
下図のように、開発工程を段階的に完了させていくのが、ウォーターフォール開発の特徴です。
全体のシステム設計をしっかりと固めてから次の工程に進むため、納期までの時間が長い傾向にあります。
一方で、各工程に必要なリソースの見積りがしやすいため、スケジュールが立てやすさや、「今どの工程まで進んでいるか」が明確になるため、
全体の進捗が把握しやすいといった特徴があります。
アジャイル開発との大きな違いは、開発途中での仕様変更や追加対応が困難なことです。
最初に要件定義や全体の機能設計を決めてから開発に着手するため、仕様の抜け漏れが発覚した場合や開発途中で要求に変更があった場合、
1つ手前の工程から見直すことになります。
そのため、追加費用が発生したり、開発期間の延期に繋がってしまう懸念があります。
|アジャイル開発の特徴
アジャイル開発には、主に4つの特徴があります。以下ではそれぞれの特徴について解説します。
|要望から提供までのスピードが速い
上図のように、短いサイクルの開発により要望の高い機能が反復ごとにリリースされます。
要望から提供までのスピードが速いため、利用したい機能をタイムリーに利用できます。
|仕様変更に強い
アジャイル開発では、反復ごとに開発対象の機能を決定します。
確定していない仕様や変更の可能性が高い機能は、次回以降の反復で開発するかどうかが決定されるため、要求の変化に柔軟に対応できます。
このように、1機能ごとに反復を行うため、不必要な機能をつくることもありません。
|満足度が高い品質になる
機能を一つ一つ順に利用可能な状態まで完成させていくため、納得のいく機能になるまで試行錯誤しながら開発を進めることができます。
そのため、技術的な実現可能性や品質の検証が早期に実施されるため、故障も少なく満足度の高いプロダクトが提供されます。
|開発者やチームの成長を促せる
アジャイル開発は、ウォーターフォール開発と異なり各工程の役割分担がありません。
多様な作業を何度も体験することができるため、「多能工化」「技術力向上」「士気の向上」など開発者の成長を促します。
また、プロセスの改善やマネジメント力の向上など、チームの成長にもつながります。
|アジャイル開発に向いているプロジェクト
それでは、どのようなプロジェクトがアジャイル開発に向いているのでしょうか?
アジャイル開発に向いているプロジェクトの例を3つ挙げて解説します。
|要件の全体像が決まっていない
ウォーターフォール開発では、要件が完全に固まっていないのにプロジェクトが発進できませんが、アジャイル開発ではこれができます。
要件定義でとりあえず7割程度が固まってしまえば、実際の設計フェーズに進めるといったイメージです。
残り3割の要件は、発注者が出来上がった部分を確認しつつ、それらと整合性をとりながら残りの要件を決めていき、最終的な完成の形へと
持っていくことができます。
|ニーズの変化に対応する
アジャイル開発は、開発を通して得たナレッジや、リリース後のユーザーのフィードバックから得られた結果をもとに、改善を繰り返していきます。
一般的に、2~3週間をひとつのサイクルとして考えており、その間隔で完成した部分から発注者へ届けられるので、発注者側もビジネスの状況によって
優先度を変更しやすいです。
そのため、開発しているサービスやプロダクトが市場で求められているかどうかの価値検証を行い、顧客や市場ニーズの変化に対応して、
開発を進めることができます。
|発注者が積極的に開発に参加する
発注者側が開発過程に積極的に関わるのであれば、アジャイル開発の強みを活かしやすく、迅速な開発も可能になります。
アジャイル開発は、開発途中に発注者などのフィードバックを踏まえてPDCAサイクルを回すことで、開発の精度を上げていくためです。
発注者側が積極的に意見を言い、開発側はフィードバックを汲み取り活かすことで、開発の質を大幅に上げることができます。
|アジャイル開発の流れ
アジャイル開発の一般的な流れは以下となります。
Step.1:だいたいの要求と仕様を決める
Step.2:強く要求される機能から順番に開発をする
Step.3:開発対象の機能は反復ごとに決定していく
Step.4:開発者は設計、実装、テストなどすべての開発作業を担当する
Step.5:実際に動作する機能を反復ごとに提供する
Step.6:提供された機能を発注者側が確認・フィードバックする
Step.7:開発者はフィードバックをもとに、変更があれば仕様変更をする
これらのステップを2〜3週間かけてサイクルを繰り返し、最終的に完成した機能すべてを集合させシステムを作り上げます。
このように、短期間で反復しながら効率的に開発を進めるアジャイル開発の1サイクルを単位にしたものを「イテレーション」と言います。
また、アジャイル開発を行う際、初めに「いつまでにどの機能をリリースできるか」というプロジェクト全体を管理するためのリリース計画を立てます。
これを「リリース計画」と言います。
アジャイル開発は、イテレーションを繰り返す過程でベロシティ(チームの開発量を表したもの)をしっかり測定し、チームのパフォーマンスに
合わせてリリース計画を更新しながら、徐々に精度を上げていきます。
|アジャイル開発の手法
アジャイル開発の中にも複数の開発手法が存在します。
以下では、代表的な3つのアジャイル開発の手法について解説していきます。
|スクラム
スクラム開発とは、最も有名なアジャイル開発の手法で、短い期間で計画と実装を繰り返すアジャイル開発のフレームワークです。
チーム一体となってプロジェクトを遂行、実践と経験による知識を重要視し、プロダクト価値の最大化に重点を置いています。
スクラムとはラグビーで肩を組んでチーム一丸となってぶつかり合うフォーメーションのことで、その名の通り、チーム間のコミュニケーションを
重視している点が特徴です。
また、スクラム開発では、イテレーションのことを「スプリント」と呼ぶことが多いです。
スクラム開発は、メンバー自身がスプリントごとの企画を立案し、設計・実装を進行します。
スプリント毎に開発の進捗状況や制作物の動作を検査するため、上述のようにチーム内のコミュニケーションが非常に重要になります。
|エクストリーム・プログラミング(XP)
エクストリーム・プログラミング(Extreme Programming)はXPとも略され、技術面に重きを置いたプログラマー中心の開発手法です。
事前に立てた計画よりも途中変更などの柔軟性を重視した手法で、5つの価値「コミュニケーション」「シンプル」「フィードバック」「勇気」「尊重」
をチーム内で共有することが特徴です。
【5つの価値観】
・コミュニケーション:ステークホルダー間のコミュニケーションを重視する
・シンプル:設計は必要最低限に止める
・フィードバック:頻繁にテストを行い、フィードバックを重視する
・勇気:仕様変更や設計変更に立ち向かう勇気を持つ
・尊重:開発チームと運用チームが尊重し合うことが最も重要である
|ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(Feature Driven Development)は、実際に動作するソフトウェアを適切な間隔で繰り返す手法です。
顧客にとっての機能価値(feature)という観点で開発が進められているのが特徴です。
ユーザーのビジネスを見える化して必要な機能を洗い出し、適切な間隔で反復的にソフトウェアの開発を繰り返します。
そのため、事前にビジネスモデリングを実施する必要があります。
|アジャイル開発のメリット・デメリット
最後に、アジャイル開発のメリットとデメリットをご紹介します。
|メリット
アジャイル開発のメリットは、臨機応変に柔軟な対応が可能で開発スピードが速いことです。
ウォーターフォール開発は初めに決定した設計・計画を重視するため、仕様変更やトラブルの発生箇所によっては、修正にかかる時間やコストが
膨大になる可能性があります。
一方、アジャイル開発の場合は、機能単位で『設計→開発→実装→テスト』を繰り返しているため、リリースのタイミングが早く、不具合が発覚した際に
修正にかかる工数が少ないです。
また、最初から綿密な仕様を決めないため、開発途中でユーザーとコミュニケーションを取りながらフィードバックを行い、確認をしながら進めるので
発注者側のニーズに最大限応えることができる点も大きなメリットです。
|デメリット
デメリットとしては、仕様・要件ごとにスケジュールを設定して開発に臨むため、全体スケジュールのコントロールが難しいことです。
プロジェクト自体の納期はあるものの、チームごとに小単位で開発を繰り返すため、全体の進捗を把握しきれずに、気付いたら納期に間に合わないと
いうことも起こりえます。
また、厳密な仕様を決めていないため、開発の方向性がブレやすいというデメリットもあります。
よくあるケースは、より良くしようと改善を繰り返しテストやフィードバックで変更・追加を加えていくことで、当初の計画からズレてしまうことです。
アジャイル開発を導入する際は、全体のスケジュールを把握すること、そしてプロジェクトを進める前にしっかりとシステムやソフトウェア開発の目的を
明確化しておくことが重要になってきます。
|まとめ
〜 試行錯誤しながら納得のいくプロダクト作り上げるならアジャイル開発 〜
アジャイル開発は、開発中の仕様変更に柔軟に対応できることが最大の特徴です。
最初から要件や仕様をしっかり固めずに、開発を進めながら課題を見つけ、それを解決しながらプロダクトを作り上げていくことができます。
また、優先度の高いものから順に機能単位でイテレーション(スプリント)を繰り返すので、いち早くリリースすることも可能です。
従来主流だったウォーターフォール開発では困難なことを、アジャイル開発なら実現できるため、近年ではアジャイル開発が主流になりつつあります。
しかし、アジャイル開発にもメリットだけではなくデメリットもあります。
全体のスケジュール把握が難しい、開発の方向性がブレやすいといったデメリットも把握し、自社のプロジェクトに最適な開発手法を選びましょう。
弊社VNEXTでも、幅広い業界・分野でアジャイル開発の案件を多く行ってきました。
VNEXTのラボ型開発は、まさにアジャイル手法にフィットしたプランです。
詳しくはこちら:
⇒【無料資料ダウンロード】1本でわかる!ラボ型開発サービス資料
アジャイル開発の開発事例を知りたい方やアジャイル開発を検討している方は、この機会に是非VNEXTにお問い合わせください!
▶️ お問い合わせ:https://vnext.co.jp/contact.html?view=contact