アジャイル開発とは?ウォーターフォール開発との違いやメリット・デメリットを紹介
システム開発の現場で働いていると、アジャイル開発という言葉を聞いたことがあるかもしれません。
アジャイル開発とは、システムの計画、設計から開発、テストまでを短い期間で区切って繰り返し行うシステム開発の手法です。
アジャイル開発はウォーターフォール開発とよく対比されます。
ここでは、アジャイル開発の概要やウォーターフォール開発との違いについて解説します。
アジャイル開発を行う際は、メリット・デメリットをよく理解して選ぶことが大切です。
HiPro Tech 会員のみ公開案件も多数。
アジャイル開発とは?
アジャイル(Agile)とは、日本語で「素早い」「活発な」という意味があります。
アジャイル開発とはシステム開発における開発手法の一つで、機能単位の小さなサイクルで計画、設計から開発、テストまでの工程を繰り返し行う開発手法のことを指します。
アジャイル開発とウォーターフォール開発の違い
アジャイル開発とよく比較される開発手法として、ウォーターフォール開発があります。
ウォーターフォール開発とは?
ウォーターフォール開発のウォーターフォールとは滝を意味します。
要求定義、基本設計、詳細設計、製造、テスト、運用といった工程を1つずつ終わらせていく開発手法で、長期にわたりシステム開発手法の主流でした。
ウォーターフォール開発の計画性
ウォーターフォール開発においては、前の工程を終わらせてから次の工程に進むという計画性を重要視します。
基本的には要求定義の段階でシステムの仕様を決定します。
もし、開発の途中で仕様に変更が入った場合には、 前の工程に戻ってやり直す必要があります。
例えば、製造工程で仕様に変更が必要だと判明した場合、設計工程へ戻って影響調査からやり直すのです。
設計書を書き直した上で製造工程に戻らなければなりません。
逆に、アジャイル開発では、仕様には変更が発生することを前提条件としています。
一つのサイクルごとに仕様を見直しながら開発を進めるため、仕様変更に柔軟に対応できます。
アジャイル開発では、設計から運用までを一つのチームで担当するのに対し、ウォーターフォール開発では、工程ごとに別の担当者を設けることもあります。
設計担当者と製造担当者が異なる場合があるということです。
両者の違いをまとめると以下のようになります。
アジャイル開発 | ウォーターフォール開発 | |
---|---|---|
前提 | 仕様には変更が必ず発生する。 | 初期フェーズに計画をしっかりしておくことで、変更が発生しない。 |
計画性と対応 | 一つのサイクルごとに仕様を見直しながら開発を進めるため、仕様変更に柔軟に対応できる。 |
前の工程を終わらせてから次の工程に進む。変更が入った際は、前の工程に戻ってやり直す。 |
歴史 | 近年よく使われるようになった。 | 長く使われてきた。 |
チーム編成 | 設計から運用までを一つのチームで担当。 | 工程ごとに別の担当者がいる。 |
HiPro Tech 会員のみ公開案件も多数。
アジャイル開発の流れ
アジャイル開発では以下の流れに沿って開発していきます。
リリース計画
まずはリリース計画を決めます。
リリース計画は次の流れに沿って決めていきます。
まず、ユーザーストーリーを洗い出します。
ユーザーストーリーとは、ウォーターフォール開発でいえば要求定義にあたります。
システムがユーザーに対してもたらす価値を定義します。
次に、ベロシティを算出します。
ベロシティとは、一つのチームが一回の開発期間(イテレーション)で完了できる機能を数値化したものです。
ベロシティを算出することでリリース計画が立てやすくなります。
洗い出したユーザーストーリーに優先順位を決め、算出したベロシティをもとに機能単位でイテレーションを決定します。
さらにプロジェクト全体のゴールも決めます。
イテレーション
イテレーションとは、設計からテスト、リリースまでの一つのサイクルのことを指します。
リリース計画にしたがってイテレーションを繰り返していきます。
イテレーションの期間は一般的に1〜2週間程度です。
結成したばかりのチームの場合、早めに成果物のレベルを共有する方がよいため、1週間とすることが望ましいでしょう。
開発項目の細分化が難しい場合は2週間とするなど、状況によってイテレーションの期間を検討します。
イテレーションごとに設計、開発、テスト、リリースを繰り返します。
HiPro Tech 会員のみ公開案件も多数。
アジャイル開発の三つの手法
アジャイル開発の代表的な手法として次にあげる三つのものがあります。
それぞれについて解説します。
スクラム開発
スクラムは、ラグビーのスクラムにその語源を持ちます。
dチームで開発することを重要視する考え方です。
チームには製品の全責任者であるプロダクトオーナーと、スクラムが正しく機能しているかを保証するスクラムマスターが存在します。
スクラム開発ではイテレーションのことをスプリントと呼びます。
スプリントは1週間から最長で4週間程度です。
スプリントの中では次の各手順を踏みます。
|
エクストリーム・プログラミング(XP)
アジャイル開発の先駆けとなった開発手法です。
2人1組で開発を行うペアプログラミング、テストコードを軸としてプログラミングを行うテスト駆動開発などのプラクティスがあります。
エクストリーム・プログラミングは、次の五つの価値に基づいて構成されています。
|
ユーザー機能駆動開発(FDD)
FDDとはFeature Driven Developmentの略です。
ユーザーにとっての機能価値(feature)を重視した開発手法で、動作するソフトウェアを定期的に提供することが主な目的です。
ユーザー機能駆動開発では五つの基本活動をもとに開発を進めます。
全体モデル開発:分野ごとにモデリングを行い、結合して全体モデルとします。
|
HiPro Tech 会員のみ公開案件も多数。
アジャイル開発のメリット・デメリット
アジャイル開発のメリットとデメリットを比較してみましょう。
アジャイル開発のメリット
トラブルが起きた際の対応工数が少ない
例えば、ウォーターフォール開発の場合、トラブルが発生した際には、前の工程にまで影響がおよびます。
テスト工程で大きなバグが見つかった場合には、設計工程まで戻って考え直す必要があるでしょう。
アジャイル開発では、バグが見つかっても、イテレーションを一つ戻れば動くソフトウェアが再現されます。
次のイテレーションでバグ改修を行うことができます。
アジャイル開発の方が、ウォーターフォールモデル開発に比べて、トラブル発生時の手戻りが少なく、結果的に対応工数も少なくなるといえます。
開発途中でも仕様変更や機能の追加に対応しやすい
仕様変更や機能の追加が入った場合も同様です。
アジャイル開発は仕様変更があることを前提とした開発手法です。
ウォーターフォール開発の場合、最初に仕様を決めて、それに従って設計、製造、テストと順番に進めていきます。
途中で仕様変更が入った場合には、変更による影響調査を行わなければいけません。
アジャイル開発では途中でユーザーからのフィードバックをもらいながら、イテレーションごとに微修正を繰り返すことでシステムを完成に近づけていきます。
したがってユーザーのニーズにも最大限応えることができるでしょう。
アジャイル開発のデメリット
スケジュールのコントロールが難しい
アジャイル開発では、短い期間のイテレーションを繰り返しながら開発を行うため、全体のスケジュールを把握しにくくなります。
全体のスケジュールをきちんと把握するためには、リリース計画を綿密に立てることが重要です。
また、プロジェクトマネージャーがリリース計画を厳密に管理する必要があります。
プロジェクト管理ツールやスケジュール管理ツールを上手に取り入れることも一つの方法でしょう。
開発の方向性が定まりにくい
アジャイル開発では、詳細な仕様を決めずにスタートします。
顧客のニーズに応えながら開発を行なっていくため、開発当初の方向性が次第にずれていく可能性があります。
そのため、アジャイル開発は大規模開発には向いていないといわれます。
さまざまな人の意見が出てくるからです。
大人数になればなるほどその特徴は顕著に表れます。
また、仕様の追加・変更が重なると改修の頻度が多くなっていき、コスト超過や納期超過が発生しやすくなる傾向にあります。
HiPro Tech 会員のみ公開案件も多数。
アジャイル開発がおすすめな場合
時代の流れは、ウォーターフォール開発からアジャイル開発に変わってきています。
理由として、DX推進とアジャイル開発の相性が良いことが挙げられます。
近年は、ビジネスに「DX(デジタルトランスフォーメーション)」の活用が注目されています。
デジタル化やDXによって、企業の経営課題を解決したり、ビジネスモデルを変革したりしようという流れが強まっているのです。
DXとは、進化し続けるテクノロジーに向き合う必要があります。
企業にとってより活用しやすい新しい技術やサービスが生まれた際には、そちらを活用するように、柔軟なな動きが求められます。
絶えまなく市場が変化していき、日々変化の多いDXの現場では、アジャイル開発は非常に相性が良いのです。
例えば、ユーザーニーズにマッチしたサービスを少しでも早くリリースすることが重要であり、アップデートやプラスアルファの機能は後々に追加していくようなサービスも増えました。
アジャイル開発は、開発途中でも企画ができたり、急な仕様変更や要件変更でも、対応できたりするチーム体制になっているため、今の時代に対応しやすい、強い組織になれるのです。
HiPro Tech 会員のみ公開案件も多数。
アジャイル開発が失敗してしまう原因
ウォーターフォール開発に慣れた組織では、すぐにアジャイル開発に移行することが難しいといえるでしょう。
このため、アジャイル開発に失敗してしまったプロジェクトなども、中にはあるのです。
アジャイル開発の現場で、よくある失敗の原因をいくつか紹介します。
権限や上下関係が定まりにくいため、失敗してしまう
変化への対応を重視するアジャイル開発は、現場の声が強くなりやすいという側面があります。
不確実性が高い開発の世界においては、全てを計画通りに進めるより、変化に対応することが重要視される場合があります。
このため、計画通りに進んでいなくても問題ないという判断に繋がったり、どのメンバーでも企画に携われてしまったりするために上下関係があやふやになってしまうケースもあります。
一般的には、プロジェクトオーナーが主導し、現場はそれに従うものですが、企画の権限を現場も持っている以上、どの権限に従えばいいのか、どちらの立場が上なのかは定まりにくいといえます。
アジャイル開発の経験者がいない
アジャイル開発は、現場のメンバーも流動的に動く必要があります。
自分の考えで正しい情報をキャッチアップし、それを行動に移していくのです。
今まで、ウォーターフォール開発で、役割を決められて動いていた人にとっては慣れない部分もあるでしょう。
そのため、アジャイル開発の経験者がいないとプロジェクトが適切に進行せず、失敗に終わってしまうということがあります。
このため、アジャイル開発の動き方には慣れも必要であり、自分の裁量で判断し、行動ができる優秀な人材が求められます。
なので、アジャイル開発を行う際は経験者をメンバーに加えると良いでしょう。
チームワークが機能せずコミュニケーションが不足する
アジャイル開発は、チームを編成して行うため、チームワークが必要不可欠です。
状況に合わせて各メンバーが動くため、コミュニケーションが円滑に取れていないとプロジェクトの進行に支障が出てしまうこともあります。
ウォーターフォール開発のように計画立てられているわけではないため、ときには、自分の役割を超えて組織に貢献する必要があります。
しかし、そのためには、チームワークや組織への貢献意識が必要です。
臨機応変に意思決定していくことが重要視される中で、他人を尊敬し、チームワークを尊重してゴールまで進むことができるかどうかは非常に重要だといえるでしょう。
HiPro Tech 会員のみ公開案件も多数。
アジャイル開発を成功させるには?成功事例に共通するポイント
日本ではまだ歴史が浅いものの、アジャイル開発での成功事例は多々あります。
共通するポイントや事例をまとめると以下のようになります。
- ・フロントエンドとバックエンドで分けずに企画し、開発した
- ・あえて期間を決めずに、まずは少人数制のチームを複数個作り、作業に着手してから同時進行で計画を立てた
- ・計画は一切立てず、代わりにビジョンだけを共有し、各人に裁量をもたせた
各々が現場で企画できる環境にし、計画をしっかり立ててはいないものの、チームビルディングやビジョンの共有を行っていたことがわかります。
HiPro Tech 会員のみ公開案件も多数。
まとめ
従来の主流な開発手法であったウォーターフォール開発では、システムの計画、設計、製造、テストまで一貫して行なっていたのに対して、アジャイル開発は各工程を短いサイクルにして繰り返します。
そうすることで高品質なシステムを開発することができます。
アジャイル開発が登場して20年近く経ちますが、アジャイル開発の経験者はまだ少ないのが現実です。
アジャイル開発の経験がある人は重宝されるため、フリーランスとしても多くのプロジェクトに参画できるでしょう。
フリーランスとして案件に参画し、スキルアップや経験の幅を広げたい人は、エージェントを利用することをおすすめします。
IT・テクノロジー領域特化型エージェントサービス「HiPro Tech」では、希望する案件の獲得に向けてさまざまなサポートを行っています。
また、扱う案件も多岐に渡り、アジャイル開発を行う案件も豊富に扱っています。
アジャイル開発を行う案件の中には月額報酬が80万円以上の高単価な案件や、自社サービスの開発を行う案件などがあります。
当サービスの利用は無料です。
アジャイル開発の経験を積み、フリーランスエンジニアとして活躍の場を広げたいという人は、ぜひ登録してみてはいかがでしょうか。
記事監修
2006年に株式会社インテリジェンス(パーソルキャリア株式会社)へに入社。 アルバイト領域の法人営業や新規求人広告サービスの立ち上げ、転職サービス「doda」の求人広告営業のゼネラルマネジャーを歴任。 2021年11月からIT・テクノロジー領域特化型エージェントサービス「HiPro Tech」に携わり、現在サービス責任者を務める。 「一人ひとりが求めるはたらき方や案件との出会いを増やし、キャリアをデザインできるインフラを提供する」ことを自らのミッションとして掲げ、サービス運営を行う。