「アジャイルを採用した開発プロジェクトの失敗率はその他の手法と比べて268%も高い」
「ウォーターフォールは一切メリットがないので避けるべき」
こんな一見すると相反する見解が一部SNS上で広まり議論を呼んでいる。システム開発の現場において、アジャイルもしくはウォーターフォールを採用するとプロジェクトが失敗・難航するリスクが高まるという実態はあるのか。専門家の見解を交えて追ってみたい。
江崎グリコやユニ・チャームなどで大規模なシステム障害が相次ぎ、その背景・原因に世間の関心が寄せられるなか、開発プロジェクトで採用する開発手法が成否を左右するという見解をめぐり議論がわいている。
ウォーターフォールとは、要件定義・基本設計・詳細設計・開発・テストとフェーズごとに作業を完了させ、システム全体を開発していく手法。日本ではもっとも一般的な手法だとされている。データアナリストで鶴見教育工学研究所の田中健太氏はいう。
「製造業の生産プロセスをベースにした手法で、一つのフェーズの完了を確認してから次のフェーズに移るため、理屈上は手戻りが発生しないとされています。大規模システムの開発や、ユーザ企業が外部の開発会社に発注する形態では一般的な手法となっており、IPA(独立行政法人情報処理推進機構)が2022年に国内ベンダを対象に行った調査によれば、全プロジェクトの97.2%で採用されており、圧倒的に多いといえます」
アジャイルとは、実装するシステム全体のうちの一機能、もしくは複数の機能単位で小さなプロジェクト(イテレーション、スプリント)を形成し、数週間から1カ月くらいの期間で要件定義から開発、テストまでを完了してリリースしていく手法。素早くかつ機動的な開発が可能となる。
「とりあえず小さくシステムをリリースして、徐々に機能を追加していくというイメージ。グーグルやマイクロソフトをはじめ自社開発がメインの企業ではアジャイル的な手法が採用されるケースが多いです」(田中氏)
<優秀層だけかき集めて作ったチームならウォーターフォールなんていらない>
そんな2つの開発手法をめぐって今、SNS上ではあるテーマがちょっとした話題となっている。ニュースサイト「Gigazine」は今月7日、『アジャイルを採用したソフトウェアプロジェクトの失敗率はその他の手法と比べて268%も高いことが判明』と題する記事を配信。ほぼ同じタイミングで6日には、X(旧Twitter)ユーザであるプログラマーが「Microsoftの専門家「ウォーターフォールは一切メリットがないのでやめておきなさい」> アメリカでは、アジャイルやスクラムの進め方が「常識」としてソフトウェア開発の場で浸透している これマジ??」とポストし、以下のようにさまざまな反応が寄せられている。
<そりゃマイクロソフトみたいに世の中の優秀層だけかき集めて作ったチームならウォーターフォールなんていらない>
<ソフトウェアの最大の力は「変化への即応」なので、それができないウォーターフォールにメリットがあるわけがない>
<なぜ日本はウォーターフォールから脱せないのかと言えば、ソフトウェア開発を外注で「委託契約」で開発しているからです>
<アジャイルの失敗理由って、基本的に無知な人が失敗への道を選択→放置されることなので、無知な人の出現や行動をマネジメントできないなら選択できない>
<自社製品の開発と改善がメインの企業 そりゃアジャイルの方が向いてるよ>
<完璧なドキュメントが揃ってて完璧な設計ができる前提ならウォーターフォールの方が安定するとはいえる。ただ、今どきいろいろ複雑すぎて、そんな完璧なんぞどこにある>
<アジャイルで困るのは計画がすげー立てずらい>
日本でウォーターフォールが多い理由
まず、日本ではウォーターフォールが多い理由はなんなのか。
「ユーザ企業がSIerに発注する際、各フェーズごとにSIerがユーザ企業にドキュメントを納品して、ユーザ企業がそれを検収するかたちで完了となり、『何をもって完了となるのか』が明確になりやすいです。そして、双方ともにゴールが見えやすく、工数と費用、スケジュールの見積もりを立てやすいというメリットがあります。またSIer側の都合として、社内では複数の案件が同時に進行しているので、特定の開発フェーズ・分野に強い自社のエンジニアを『こっちの案件が終わったら、こっちに回す』といったように人のやりくりをしやすくなります。
もっとも、先ほど理論的には手戻りは発生しないと申しましたが、完璧な要件定義などは不可能なので、現実的には手戻りというのは発生してしまうものでであり、その点はデメリットといえるでしょう」(田中氏)
ウォーターフォールとアジャイルで失敗が生じる理由
自社開発でアジャイルが多く採用されている理由は何か。
「ウェブサービスは社会の動きに応じて迅速に新しい機能をリリースしたりして変化していく必要があり、短い期間でスピーディーに開発していくにはアジャイルが向いています」(田中氏)
そんなアジャイルの開発では、前述のとおり失敗も少なくないとのことだが、その原因はなんなのか。
「アジャイルはさらに細かい流派に分かれており、流派ごとに具体的な手法やツールが異なりますが、正しい作法で行われていないことで失敗に至るケースもあると思います。また、一人ひとりのエンジニアが高いスキルを求められますが、プロジェクトのメンバーが一定のレベルを満たしていない場合もあるでしょう。日本のSIerや中小SES企業ではアジャイルに精通した人材が少ないため、必要なスキルを満たすエンジニアをきちんとアサインできるかは重要になってきます」(田中氏)
ウォーターフォールで失敗が生じる原因としては何が考えられるのか。大手SIerのSEはいう。
「大きなプロジェクトになればなるほど、実際に開発を始めてみたら当初見積もった工数やスケジュールでは収まらないというケースが多いです。最初の段階でユーザ企業としては、できるだけ短期間かつ低い費用でやろうとし、コンペではSIerは受注するために、できるだけ顧客の要求に沿った費用見積もりと提案を行い、受注したものの“やっぱりキツかった”というのはお決まりのパターンです。当然ながら、追加の費用やスケジュールの後ろ倒しをすんなりと受け入れてくれるユーザ企業など、ほとんどないので、終わってみればSIer側のそのプロジェクトの損益が大赤字になったというのは珍しくありません。
ちなみに日本ではSIer側もユーザ企業側もウォーターフォールが前提となっているので、おそらくSIerがコンペなどでアジャイルでの開発を提案すると受注できないので、おのずと数が少なくなっているのではないでしょうか。SIer側にもユーザ企業側にもアジャイルができるエンジニアはほとんどいないと思いますし、そもそもアジャイル開発ができる優秀なエンジニアを抱えている企業は外部に開発を委託せずに自社で開発しているでしょう」
結局のところ、ウォーターフォールとアジャイルのどちらを選択すべきなのか。
「どちらかのほうが優れているとか、どちらかのほうが失敗率が高いといったことは、ないでしょう。向き不向きがあるので、個別のプロジェクトでどのようなシステムを開発するのかによって、どの手法がもっとも適しているのかを十分に検討して選択することが重要です」(田中氏)
(文=Business Journal編集部、協力=田中健太/データアナリスト・鶴見教育工学研究所)