【アジャイル開発の基礎知識とメリデメ】 デメリットの緩和方法

新しいソフトウェアを開発することになった際にはクライアントからスピード感を求められることが多々あります。
スピード感が重視されるときにはアジャイル開発という手法が用いられることがあります。
今回はアジャイル開発の基礎知識として従来からのウォーターフォール開発の違いをご説明していきます。
そのうえで、3つの具体的開発手法とアジャイル開発のメリデメとデメリットの緩和方法についてお伝えしていきます。

アジャイル開発はどのようにして生まれたのか

アジャイル開発が生まれた背景を知るとアジャイル開発の特徴が見えてきます。どのような背景からアジャイル開発は生まれたのでしょうか。

素早さが求められる時代の要求

アジャイル開発はソフトウェア開発に求められることが変わってきた90年代後半頃からニーズが高まり始めました。

従来のクライアントの意向は、作業の一部を機械に代替させるようなものや、人が見てわかりにくいものを調整するといったような効率性を高めるためのものでした。

しかし徐々にソフトウェア自体が新しいサービスを展開するための商品として用いられるようになると、ソフトウェア開発のスピードが売り上げを出し始めるまでの時間に直結するようになりました。

そのため、従来のプロジェクトの進め方から脱却し、素早いプロジェクトシステムが求められるようになり、アジャイル開発は発明されました。

ユーザーのニードはあるが、仕様がわからないケースへの対応

ソフトウェア自体が新しいサービス展開となる場合には、世の中に全くない新しいものを創造しなければならない場合があります。

従来の開発で用いられていたウォーターフォール開発と呼ばれる開発手法では最初に業務設計者がクライアントのニードを吸い上げます。その後システム設計者に設計を依頼し、設計を行います。

その後にプログラマーが設計を形にし、初めてテスト・リリースとなります。この手順の場合には最初にある程度仕様が決まっており、出てくる形を明確にわかっている必要がありますが、実際のところ新規事業で仕様がすべて決まっていることなどありません。

そのため、新しい事業を生み出すためにトライアンドエラーを繰り返しながらシステム開発を行うアジャイル開発が生まれたのです

アジャイル開発とウォーターフォール開発の違い

アジャイル開発は従来のウォーターフォール開発とは仕組みがまるで異なります。どのような手順で進められるのでしょうか。

計画が流動的

アジャイル開発は非常に流動的な流れで仕事が進んでいきます。まずクライアントからの依頼を受けたメンバーはヒアリングで求められることを拾い上げます。

拾い上げた課題をもとに設計→開発→テスト→リリース・課題抽出(ヒアリング)→設計..のようにサイクルを回します。

このサイクルを大体1週間から1か月のスパンで繰り返し回転させるため、全体計画が立った状態で作業をすることはあまりありません。

顧客の意向に合わせられるよう柔軟に対応をすることができるといえます。

ユーザーとの対話頻度の多さ

サービスを利用するクライアントからのフィードバックを定期的に入れることができるため、ニードとずれたソフトウェアになることは少なくなります。

クライアントと委託側が進捗状況を把握しつつ開発を進めていくことができます。

一人のエンジニアがユーザーとの対話から作成までを行う

従来のウォーターフォール開発での場合はクライアントのニーズを吸い上げる営業部門、開発担当、設計担当と複数の担当者が出てくることになります。

しかし、アジャイル開発はそのすべてをエンジニアが担当することになります。そのため、エンジニア一人一人の力量が非常に大切になってきます。

 

アジャイル開発で用いられる単語の紹介

アジャイル開発は新しい開発方法なので、用語を覚えることが非常に大切になります。

プロジェクトチームで共通認識を持つためにも用語をご紹介していきます。

ユーザーストーリー

ユーザーストーリーとはクライアントの要求や実現を目指していることを簡単に書き表した文章です。

要件とは異なりふわっとした文章になっていることが多いのが特徴です。理念や理想といった考え方に近いです。

イテレーション(スプリント)

「計画」→「設計」→「実装」→「テスト」といった一つのリリースまでの流れをイテレーションと言います。ひとスパンといってもよいでしょう短いものだと1~2週間、長いものでも1か月ほどの場合が多くなっています。

ベロシティ

ベロシティとは1つのイテレーションに対してどの程度のユーザーストーリーを達成したかを表すものです。

1イテレーション中に完了する平均作業量を時間かストーリーポイントで表したものです。

作業スピードの予測をするために用いります。最初は精度が低いですが、イテレーションを経るにしたがって予測精度が向上していきます。

 

リリース計画

リリース計画は下記の3つの要素を決め、作業に取り掛かるための計画です。

・プロジェクトのゴール設定

・イテレーションの長さ

・ユーザーストーリーの優先順位

リリース計画はウォーターフォール開発に比べてざっくりした流動的なものになります。

その分、イテレーションの際に再検証を行う必要性が高くなっています。

アジャイル開発の3つの開発手法

アジャイル開発の用語や背景に関して学んだところで、次に実際の開発手法についてみていきましょう。

主だった開発手法は3種類に分けられます。

スクラム

スクラムはもっともポピュラーなアジャイル開発の手法です。その名の通り集団でコミュニケーションをとりながら作業を進めていく手法です。

各自が工数見積もりを自身で当てたうえで期限を切って活動します。

一人一人がチームのマネジメントとセルフマネジメントを行うことになるため、自立したチーム作りが促進されます。

エクストリーム・プログラミング

エクストリーム・プログラミングは当初予定計画よりも途中での仕様変更を優先する等、柔軟性を重視した手法です。
プロジェクトチームでは「コミュニケーション」「シンプル」「フィードバック」「勇気」「尊重」の5つの重視すべきポイントがあります。

エクストリーム・プログラミングはプログラマー1人1人を信頼して行うプロジェクト形態です。

プログラマー自身が能動的に動き、プロジェクトを継続的に大きくする思考が必要です。

ユーザー機能駆動開発

ユ-ザー機能駆動開発は大規模な案件に対応しやすいのが特徴の手法です。

ユーザーの希望をある程度最初に固めたうえで必要となる仕様の選定を行い開発を進めていきます。

機能の面に視点を置いている開発のため、他の開発手法に比べて価値の高い機能の実装を実現しやすい点がポイントです。

 

アジャイル開発のメリットデメリット

アジャイル開発のにもメリットとデメリットがあります。

メリットを生かしながらデメリットを少しでも消すことができれば強いチーム作りをすることが可能です。

ここでアジャイル開発のメリットデメリットをまとめてみましょう。

アジャイル開発のメリデメ

アジャイル開発のメリットはリリースのタイミングが早いことです。

作業工程が分けられているおかげで不具合が発生した場合に検証しやすく、修正が早くなります。

サービスの導入の際に早く収益を上げ始めることができるため、スタートアップのサービスでは効果的に作用する側面もあります。

顧客のニーズにしっかりと答えきれることで成果物がより良いものになりやすいのも特徴です。

一方でクライアントの要求次第では、なかなか仕様が決まらず全体の進捗やスケジュールがぶれてしまうことも多いです。

複数回の仕様変更で方向性がぶれることも多いのでその点での注意が必要です。

デメリットの緩和方法

スケジュール感の調整や方向性のブレといったデメリットの緩和策としては経験が比較的豊富なプロジェクトマネージャーを中心に配置する必要があります。

仕様変更に対しての作業量が肌感でわかることや、全体の統括をしっかりとできる人材を真ん中に据えることによってデメリットの部分を緩和することができます。

 

いかがだったでしょうか。アジャイル開発ではスピード感を生かし、成果物をより良いものにする効果があることを認識いただけたでしょうか。

ぜひ参考にしてみてくださいね。