はじめに

プロジェクトでどんな開発手法を採用していますか?
日本ではまだウォーターフォール型の開発手法を採用している現場が多く、あまりアジャイル開発は普及していないといわれています。
なぜ日本ではアジャイル開発の導入が遅れているのでしょうか?
そして、ウォーターフォールとアジャイルの違いはどのようなものなのでしょうか?
この記事では、アジャイル開発手法を知りたいエンジニアの方のために、ウォーターフォール開発とアジャイル開発についてお伝えしていきます。

基本となるウォーターフォール型開発とは?

ウォーターフォール型開発は、「要求定義→設計→プログラミング→テスト→リリース→運用・保守」といった流れで進めていきます。
基本的に後戻りがないことが前提とされており、前工程が完了してから次の工程に進みます。
直感的でシンプルな流れであり、順調に進めば効率よくプロジェクトを完遂させられますが、実際のところ事はそう単純ではありません。

ウォーターフォール型開発で起きがちな問題

ウォーターフォール型開発では、開発の終盤まで顧客は動くソフトウェアを見ることができません。
そのため、完成したものが実際には顧客が欲しいものではないこともしばしばあります。
そうなれば当然のことながら大きな手戻りが発生し、プロジェクトは遅延してしまうでしょう。
また、上記の流れの通り、テストは開発終盤にまとめて行われます。
つまり、それまで多くの不具合を抱えたまま開発が進められるということです。
多くの場合、溜まった不具合がテストで噴出し、リリースにこぎつけるまでに大きな労力を必要とするでしょう。
このように、開発プロジェクトはなかなか思うようには進みません。
アジャイル開発では、このような不確実性を考えてプロジェクトを進めていきます。

アジャイル開発の進め方

アジャイル開発では、ウォーターフォール開発とは違い、一気に計画を立てません。
開発する機能を小さく分けて、少しずつ開発を進めていきます。
開発とテストをインクリメンタルに繰り返し、定期的に顧客に動くソフトウェアを見せてフィードバックを求めるのです。
そのため、開発の早い段階から一通り動作するように開発を進めます。
このように、早い段階でのテストと顧客からのフィードバックをもらうことで、大きな手戻りを防ぎ開発コストの削減をします。
アジャイル開発では、変化や不確実性を受け入れた上で柔軟に開発を進めるわけです。
大きく進めるよりも小さく進めたほうが変化に対応しやすいといえます。

なぜ日本ではアジャイル開発の普及が遅れているのか?

日本でも徐々にアジャイル開発は普及してきていますが、やはりアメリカなどの海外と比べると導入している現場は少ないようです。
これは日本のソフトウェア開発に下請けが多いことが原因ではないかと考えます。
下請けを使う開発では、上流工程を完了させてから下請けに流すなど、ウォーターフォール開発を採用したほうがやりやすい場合が多いからです。
一方、自社開発の企業はアジャイル開発を導入しやすい環境だといえます。

アジャイル開発にはツールの力も必要

アジャイル開発には、開発をサポートするツールが必要不可欠でしょう。
GitやDocker、Ansible、Slackなど、最近では多種多様のツールが提供されており、開発作業をサポートしてくれます。
現場に合わせて適切なツールを導入し、使いこなすことがアジャイル開発を成功させる秘訣です。

まとめ

ウォーターフォール型開発は弱点こそありますが、長年使い続けられてきた実績もあり、プロジェクトによっては悪い選択肢ではありません。
しかし、近年の変化の早いビジネス環境にはアジャイル開発が適していることも多く、開発コストを削減できる場合も少なくないでしょう。
プロジェクトの特性を考え、どの開発手法が最適なのか検討してみましょう。