アジャイル開発

アジャイル開発のメリット3つとデメリット。自社で導入すべきか解説

  • このエントリーをはてなブックマークに追加

「システム開発を頼みたいけど、アジャイル開発のメリットってなんだろう」

こんな悩みはないだろうか。

普段システム開発をしていない人からしたら、アジャイルやウォーターフォールなどと言われても、それぞれにどういったメリットがあるのかピンとこないのは仕方ないことだ。

そこで、この記事ではアジャイル開発を5年間経験した筆者が、アジャイル開発ならではのメリット、デメリット、アジャイル開発が向いている事例について解説していく。

それではみていこう。

メリット4つ

まずはアジャイル開発のメリットを4つ紹介する。

それでは詳しく見ていこう。

プロジェクトの途中でも仕様変更に対応できる

アジャイル開発の一つ目のメリットとしてあげられるのは「プロジェクトの途中でも仕様変更に対応できる」点だ。

従来型のウォーターフォール開発では、プロジェクトの前半で全ての要件を固めて、後半で一気にそれを実現するという流れだった。そのため、途中で要件を変更することは難しい。

しかし、アジャイル開発ではそれが可能だ。なぜなら、アジャイル開発においては、要件を最初に全部固めるのではなく、その都度必要な要件を固めていくという進め方をするからだ。

例えば、開発プロジェクトでよくあるのが以下のパターンだ。
・完成したシステムをユーザーに提供したら、想定した使われ方と異なっていたためにシステムが使えなかった。

実際にこんなことがあった。上場企業がサステナビリティレポートを作成するツールを開発するプロジェクトに参加していた時のことだ。

そのツールの機能の一つに次のようなものがあった。企業の電気使用量を一年単位で保存し、経年の変化を確認できる機能だ。

しかし、開発が終わって潜在顧客にテスト利用してもらったところ、企業が困っていたのは「経年でデータを確認できないこと」ではなかった。実際に困っていたのは、「工場や支店などの拠点を複数持っている企業の場合は、本社のサステナビリティレポート作成担当者が、それら複数の拠点責任者から電気使用量のデータをエビデンスとともに収集すること」だった。

このように開発前に想定していた課題が、実は真の課題ではなかったということはよく起きる。そのため、ウォーターフォールのように最初に全ての要件と開発内容を固めてしまうのではなく、アジャイル開発のように仕様の変更を前提とした開発フローの方が作ったシステムがユーザーの課題解決に寄与する確率は格段に上がる。

ユーザビリティが向上する

アジャイル開発の2つ目のメリットとして挙げられるのは「ユーザビリティが向上する」点だ。

アジャイル開発では継続的に改善フローを回すことが前提になっている。そのため小さく作って、どんどんユーザーにテスト利用してもらい、そのフィードバックをもとに作るものを変更することができる。

例えば1章でも紹介したサステナビリティレポートの作成ツールが良い例だ。

もしウォーターフォール的なやり方をしていたら、プロジェクト終了後になって初めてユーザが抱える課題とシステムのソリューションがミスマッチであることに気づくことになる。

もしくは、ユーザの抱える課題とシステムの提供するソリューションがミスマッチであるとわかっても、開発内容を変えることができない可能性が高い。

しかし、アジャイル開発であれば仕様の変更は当然のこととして捉えているため、早い段階でシステムのソリューションがユーザーに受け入れられるかを検証するために開発を進めていくことになる。また、変更されることを前提にシステムの設計を行うため、変更されることを想定していないシステムよりも変更が容易になる。

実際に、サステナビリティレポートの作成ツールのプロジェクトでも「電気使用量の年次データの管理」がこのシステムの要だとプロジェクト全体で認識していた。そのため、その部分から開発を終わらせ、プロジェクトの早い段階でシステムの価値を検証することができた。また、変更を前提に設計を行っていたため、大きな問題なくシステムの変更を行うことができた。

開発スピードが早い

アジャイル開発の3つ目のメリットとして挙げられるのは「開発スピードが速い」点だ。

アジャイル開発ではドキュメント作成自体を重視せず、動くシステムを作ることに注力している。そのため文書作成にかける時間を最低限に抑えることができ、より開発に時間を使えるからだ。

たとえば、アジャイル開発では設計書の作成にかける時間を圧倒的に短縮できる。ウォーターフォールでは設計書などのドキュメント自体も納品対象であるため、システム開発そのものと同じくらいドキュメントの作成が重視されている。そのため、以下のような設計書を作成することになる。

しかし、アジャイル開発においては必要な設計書だけを作れば良い。そのため、作成するドキュメントの数は半分くらいになるイメージだ。

短いスパンで期限が切られているため、締切効果で開発生産性が高まる

アジャイル開発の4つ目のメリットとして挙げられるのは「短いスパンで期限が切られているため、締切効果で開発生産性が高まる」点だ。

アジャイル開発ではスプリントという2〜4週間程度の短い開発サイクルを回していく。

実際、前職で2週間のスプリント(開発期間)運用をしていたチームとスプリント運用をしていないチームがあった。この時、スプリント運用をしているチームは納期に対する感覚が高く、開発工数の遅延をするメンバーがほとんどいなかった。しかし、スプリント運用をしていないチームのメンバーは遅延をするメンバーが結構いた。

完全にスプリント運用による原因ではない部分もあるかもしれないが、明確なタイムスパンが決まっていないと緊張感が出にくいということはあるように思う。

デメリット

ここではアジャイル開発でのデメリットについて解説する。主なものは以下の点が挙げられる。

それでは見ていこう。

クライアントの時間を固定で使うことになる

最大のデメリットはクライアントにウォーターフォールでは発生しない追加の工数をさいてもらう必要がある点だ。

アジャイル開発の主眼の一つは、なんと言ってもクライアントのフィードバックを頻繁に得ることができることだ。そのため、スプリントレビューというスプリントの後半に行われるスプリントでの成果発表の会議にはクライアントの参加が必須だ。この定期的な会議への参加工数を捻出してもらう必要がある。

ただし、デメリットとは言っても以下の2点から完全にそうとも言い切れないとは思っている。
・最終的に納品された段階で良いものができる可能性が上がる
・納品間近に受け入れテストで大量のバグを見つけて修正依頼を出し、また再テストをするという急激な工数の増加が起きない可能性が上がる

アジャイル開発が向いている事例

アジャイル開発は基本的には全てのプロジェクトにおいて実施するべきだ。

アジャイル開発とは、システム開発における不確実性を低減させて、価値あるシステムを素早く届けるための方法論だ。

そして、システム開発において不確実性が0であるプロジェクトはまずありえない。そのため、基本的には全てのプロジェクトでアジャイル開発を行うべきだ。

しかし、開発規模が大きかったりする場合はウォーターフォールの方がうまくいく場合もあるのかもしれない。

まとめ

アジャイル開発のメリット、デメリット、アジャイル開発を適用するべき事例を解説してきた。

アジャイル開発は、ウォーターフォールに比べてクライアント側のコミットメントを必要とする反面、変更を受け入れやすく、素早くいいものを作るための開発体制であることがわかっていただけたと思う。そのため、不確実性の高いシステムを作る時は是非ともアジャイル開発を取り入れることを検討して欲しい。

この記事がアジャイル開発の恩恵を受けるシステム開発プロジェクトが増え流ことに貢献できたら嬉しい。

  • このエントリーをはてなブックマークに追加