昨今、SaaSのビジネスモデルが注目されていて多くのサービスが提供されるなか、顧客の声を受けてアジャイル開発を採用するケースが増えています。アジャイル開発は、日本よりも海外で浸透している開発方法です。この記事では、アジャイル開発をイラスト図解で解説し、他の手法との違いや、開発の流れ、メリット・デメリットについても紹介します。
図解で分かるアジャイル開発
Agile(アジャイル)という単語には「素早い」「俊敏」などの意味があります。アジャイル開発とは、いくつかあるプロダクトの開発手法の1つです。速やかにプロダクトをリリースするのに適していることから名付けられました。
図のように小さなサイクル(機能単位)で、計画・設計・開発・テストまでの開発工程を繰り返します。短期間で開発が進められる手法です。
アジャイル開発とウォーターフォール開発の違い
アジャイル開発と従来から使われている開発手法の1つであるウォーターフォール開発との違いを、開発の方法・工程・費用の点で解説します。
開発方法
アジャイル開発は、顧客のニーズや市場の変化に合わせて柔軟に開発を進めていく手法です。最初の段階で要件定義を大枠で決めて開発を進めつつ、方針を定めていきます。
一方、ウォーターフォール開発は、初めに要件定義をしっかり固めて各工程を1つずつ完了させていく手法です。プロジェクトの全体を把握しやすいというメリットがありますが、アジャイルに比べると途中で変更するのが難しい点はデメリットといえるでしょう。
開発工程
アジャイル開発は「要件定義・設計・実装・テスト・運用」の工程を繰り返します。一方、ウォーターフォール開発は全機能で「要件定義・設計・実装・テスト・運用」の工程を一回限りで行うため、後戻りを想定していません。
開発費用
プロダクト開発では、費用のほとんどが人件費(工数)に左右されます。仕様を最初に決めるウォーターフォール開発は費用を算出しやすい点がメリットです。しかし、アジャイル開発は、顧客の反応や市場感で開発を進めるため、費用の算出が難しいという特徴があります。
提供のタイミング
アジャイル開発は、開発が終了した機能から随時提供できるのが特徴です。対してウォーターフォール開発は、全ての機能の開発が終了し、プロジェクトが完了した後に提供します。
アジャイル開発とウォーターフォール開発の使い分け方
アジャイル開発とウォーターフォール開発のどちらがよいか迷うこともあるでしょう。どちらが向いているかの見極め方は以下のとおりです。
アジャイル開発が向いているケース
開発手法を決めるポイントは、仕様変更があるかどうかです。仕様変更の可能性がある場合は、アジャイル開発が向いているでしょう。プロジェクトを進行しながら固めていきたいケース、変更の可能性があるケース、一部の機能を最初にリリースして機能を拡張させていきたいケースの場合は、アジャイル開発がおすすめです。
ウォーターフォール開発が向いているケース
開発したいものが決まっている場合や仕様変更の可能性が低い場合には、ウォーターフォール開発が向いています。大規模なプロダクト開発、建設プロジェクトなど作業が明確に定義されている場合にもおすすめです。リリース期限が決まっているプロダクト開発にも向いています。
アジャイル開発とDevOpsの違い
DevOpsとは、「Development(開発)」という単語と「Operation(運用)」という単語を組み合わせた略語です。開発担当者と運用担当者が協調して開発や運用を進め、プロダクトの価値を持続的に向上させる「方法論」や「概念」を指します。
アジャイル開発は開発手法の一種であり、DevOpsは連携を強化するための方法論や概念であるため、そもそもコンセプトが異なります。ただし、アジャイル開発とDevOpsは親和性が高く、DevOpsで開発を進める手段としてアジャイル開発が採用されるケースもあります。
アジャイル開発の一般的な流れ
アジャイル開発は、大まかに以下のような流れで進められます。
1.リリース計画
・機能などの小さい単位に分けて、要求・開発・テストを1イテレーションとする
・開発チームを立ち上げ、1イテレーションで開発可能な機能の計画を立てる
・各機能の優先順位、機能要求、開発規模、プロジェクトのゴールも決めておく
2.開発
・各機能のテスト・設定・実装を開発プロセスで行う
3.リリース
・テストにパスしたプロダクトの機能をリリースする
アジャイル開発の主な手法
アジャイル開発といっても、手法の種類はいくつかあります。代表的な4つの手法をチェックしておきましょう。
スクラム
スクラムは、アジャイル開発のなかで最も一般的な開発手法です。ラグビーのスクラムのようにチーム全体ががっちりと連携し合い、開発を進めていきます。チーム間のコミュニケーションを重要とするため、情報共有などコミュニケーションの機会を増やすことが必要とされます。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(FDD)は、顧客目線で品質の高い機能を開発することを目的とする手法です。最初の段階で機能に対し、顧客が本当に求めるものは何かを明確にして、機能ごとにチームを分けて開発していきます。顧客の要望に寄り添い、品質の高い機能を開発しやすい手法です。
テスト駆動開発(TDD)
テスト駆動開発(TDD)は、最初にテストを行い、実装と修正を短いサイクルで繰り返す手法です。システムの品質を高めながらも、追加開発のストレスを減らせるというメリットがあります。不具合を早い段階で検出できるため、後の工程で大規模なトラブルになることがなく、実装をシンプルにできる点もメリットといえるでしょう。
エクストリーム・プログラミング(XP)
エクストリーム・プログラミング(XP)とは、開発途中で仕様変更が必要なときに最も柔軟に対応できます。要件定義からテストまでの工程を繰り返すなかで、頻繁に顧客とコミュニケーションを取る手法です。スクラムが勢いよく製品を作る手法なのに対し、XPは継続的な成長に主眼を置いています。
アジャイル開発のメリット
アジャイル開発を選ぶ一番大きなメリットといえば、仕様変更にスムーズに対応できる点でしょう。
ウォーターフォール開発の場合は、最初に全機能の仕様を設計します。仕様変更があると開発工程を後戻りせねばならなくなり、膨大なコストがかかるのがデメリットです。その点でアジャイル開発は、不具合や問題が発生しても修正の際に検証すべき範囲が小さいため、仕様変更に対応するコストが少なくなります。
アジャイル開発は、開発の途中であっても仕様変更ができるのが大きな特徴です。柔軟に対応でき、結果的に開発スピードが速くなります。細かな顧客の要望でも対応しやすいため、顧客満足度を上げやすい手法でもあります。
アジャイル開発のデメリット
アジャイル開発は、多くのメリットがある一方でいくつかのデメリットもあります。最初に機能設計や開発スケジュールを厳密な設定しない手法のため、開発の方向性や目的がぶれやすいのはデメリットといえるでしょう。
また、全体的な進捗をコントロールしづらいのもデメリットです。チームごとに開発を進めるため、全体の状況を把握しづらくなり、結果的に納期が遅れる事態が発生することもあります。
まとめ
アジャイル開発は、開発工程を小さなサイクル(機能単位)で繰り返すため、短期間で開発が進められる手法です。仕様変更にスムーズに対応でき、開発スピードが速い、顧客満足度を上げやすいなどのメリットもあります。他の開発方法との違いや主な手法も含めて参考にしてください。
株式会社Sun Asteriskは、850を超える開発実績と1,500人規模の開発体制で、DXコンサル、設計から本格的な開発までをサポートできます。スタートアップから、成長企業、大企業まで高い柔軟性と拡張性の専属チームで徹底支援を行います。ぜひ、お気軽にお問い合わせください。
貴社の状況にあわせて最適なチームをご提案します。アジャイル開発のご相談やお見積りのご依頼は、お気軽にお問い合わせください。
Sun*アジャイル開発に関するソリューションやこれまでの開発実績をまとめた資料のダウンロードはこちらから。