KNOWLEDGE & INSIGHTS

近年重要視されてきたアジャイル開発という手法

システム・ソフトウェアの様々な開発手法

近年アジャイル開発という言葉を耳にすることが多くなったと思います。そこで本記事では、現在どのような開発方法を採用すればよいか検討している方向けに開発手法に関してご紹介します。

まず開発手法に関しては昔からあるウォーターフォール開発と、比較的新しいアジャイル開発が存在します。

https://ciandt.com/jp/ja/article/agile-vs-waterfall-what-is-lean-agile

 

ウォーターフォール開発の特徴

上流工程から下流工程へと順番に開発が進められていく開発手法です。

 

・手戻りがないことが前提

基本的には前の工程に戻らないのが前提となります。そのため工程ごとに開発担当者やユーザーなど関係者が成果物を確認し合意を得て次の工程に進みます。

仮に仕様変更など手戻りが発生する場合現在のフェーズだけをやり直すという手法が使えず各工程を遡ってやり直す必要があります。

 

・全ての工程が完了するまで開発システムを利用することができない

各工程は「要件定義→設計→開発→テスト→UAT→リリース」

と進んでいく仕組みになっており、大きな特徴として前工程が完了しないと次の工程に進めないことがあります。

 

アジャイル開発の特徴

 

これに対してアジャイル開発においては「要件定義→設計→開発→テスト→UAT→リリース」の各工程を短く区切り、この工程を繰り返し何度も修正や改善を繰り返しながら完成に近づけるという方法をとります。

 

・要求の変化に対応出来る

アジャイル開発は、プロジェクトにおける当初の要求をそのまま実現することではなく、開発を通して得たナレッジや、リリース後のユーザーのフィードバックから得られた結果をもとに、改善を繰り返していくことが出来ます。

 

 

・アジャイル開発が向いているケース

では、アジャイル開発が向いている分野の特徴としてどのようなものが挙げられるでしょうか。大まかにいえば、要件・仕様の確定が困難な分野、リリースの速さが求められる分野でその強みを生かすことができるということになります。

ビジネス要求の変化が激しい分野や研究開発、新規参入分野では、要件・仕様がなかなか固められず、ウォーターフォール開発を採用することは難しいです。。アジャイル開発であれば、手探りながらもトライ&エラーを繰り返し、システムを利用しながらどんどんブラッシュアップしていくことができます。

リリースの速さが求められる分野にも、アジャイル開発は最適です。例えば、まずは利用してもらえるサービスを市場に投入して、先行者利益を獲得するような事業です。このような分野では、初めから完璧なシステムを作るよりも、完成度は低くともまずはリリースすることが重要になります。

下記がアジャイル開発に向いている代表的な要件になります

  • 途中での仕様変更が想定されるもの
  • ユーザーファーストで進めていくもの

 

・ウォーターフォール開発が向いているケース

ウォーターフォール型開発は、最も伝統的で基本的なシステム開発・ソフトウェア工学の手法です。基本的にどんな開発にも対応できるよう、個別性や具体性を排除した仕組みになっているので、さまざまな種類の開発に応用できます。

下記がウォーターフォール開発に向いている代表的な要件になります

ERPシステムの導入

・大規模なソフトウェア開発

・オペレーションシステムの新バージョンの開発

 

何故今アジャイル開発が必要になったのか?

ITプロジェクトの成功率とし下記のようなデータがあります。

2003年 (回答者数1746件)

プロジェクト成功率26.7%

2018年 (回答者数1201件)

プロジェクト成功率52.8%

成功率が上がったものの、「半数が失敗」している現状がある。2018年の調査で日経コンピュータは失敗したプロジェクトの失敗理由を調べている。それによると、満足を得られなかった理由の筆頭は「要件定義が不十分」、コストを順守できなかった理由の筆頭は「追加の開発作業が発生」、スケジュールを順守できなかった理由の筆頭は「システムの仕様変更が相次いだ」だった。スケジュールを守れなかったプロジェクトで最も苦労した工程を尋ねると「要件定義」が筆頭に来た。

この満足度を得られなかったという結果は下記のようにまとめられます

 

要件定義が不十分:最初から全ての要件を洗い出すことは不可能

追加の開発作業が発生:未来がどうなるかは誰も保証できない

システムの仕様変更が相次いだ:最初から全てを見通すことは不可能、ユーザーニーズは絶えず変化する

都合のよい理想を前提に計画を立てるのではなく、真実を受け止めて、それを前提にいかに価値の高いソフトウェアを無駄なく開発するのかを考えていくことがアジャイル開発です。

つまり従来のウォーターフォール型が目指す、「プロジェクトのキックオフからリリースまでの作業を漏れなく全て洗い出し、正確に作業を見積もる」ということは不可能に近く今まで失敗していたPJともアジャイル開発であれば成功する可能性はあったと言えます。

アジャイルの成功事例

株式会社デンソー

デンソーは「フリートオペレーションサービス mobi-Crews」をアジャイル開発によって開発しました。サービスは2019年にリリースされ、開発自体は2018年の事例です。

フリートオペレーションサービス mobi-Crewsは、ライブレコーダーをベースとした車載端末を用いて、車両位置や運転状況を管理者に送信して安全性を高める仕組みです。たとえば急ブレーキを押してしまうような危険な場面が発生すると、リアルタイムで管理者に動画が送られ、今後の安全改善に役立ちます。

デンソーではスクラム開発を取り入れ、顧客も巻き込んで開発を進めていきました。特に注意したのは、開発を複雑化させないことです。通常バックエンドとフロントエンドで分けて開発するところを、デンソーでは分けずに開発を進めました。そうすることでより開発期間の削減へとつなげています。

最後に

アジャイル開発の良いところをメインにご紹介してきましたが上記でもふれたようにどちらの開発が向いているか別々のケースが存在します。要件に応じて開発法も取捨選択していくことがPJの成功率に関わってくると考えられます。

 

また、アジャイル開発についてはこちらも参考にしてみてくださいね

アジャイル開発ツールでプロジェクトの生産性をアップミロジャパン

【参考】

日経ビジネス「プロジェクト失敗の理由、15年前から変わらず」

アジャイル開発のメリットと成功事例3選

山口 圭介

アーツアンドクラフツエンジニア/ITコンサルタント。6年間インフラ業務、RPA開発、導入業務を経験。Uipath、SynchRoid、WinActor、Automation Anywhereなど主流のRPAツールをマスター。現在はRPA開発、ITコンサルタントを担当