今、アジャイル型の開発がベンチャー企業のみならず古株の企業でも取り入れられています。
なぜ、これまで主流であったウォーターフォール開発ではなく、アジャイル開発を採用する企業、プロジェクトが増えているのでしょうか。ここでは、それぞれの開発手法の特徴をふまえながら、なぜアジャイル開発が増えてきたのか、そして、どうすればアジャイル開発を成功に導けるのか解説していきます。
アジャイル開発とは
Agile(アジャイル)とは、日本語で「俊敏な、機敏な」と訳されます。
アジャイル開発はユーザーが満足するシステムを開発するために、短い間隔で、動くソフトウェアをリリースし、ユーザーからのフィードバックをもとに開発を繰り返してシステムをよりよくしていく手法です。アジャイル開発とは、俊敏に(機敏に)、利用者であるユーザーを満足させるシステムを開発することと言えます。
ただし、アジャイル開発にはさまざまな手法が存在します。本記事ではアジャイル開発における代表的な手法の一つスクラム開発を例にとって説明していきます。
アジャイル開発は少数チーム
アジャイル開発では少数精鋭でチームを編成し、チーム内で意思決定を迅速に行い、開発を進めていきます。
例えばスクラム開発では、7人前後でチームが編成され、下記3つの役割を割り当てます。
1つ目の役割はプロダクトオーナーです。仕様や機能の優先順位を決定します。プロダクトである開発システムに対して、明確なビジョンを持つ人がアサインされ、収益性、投資収益率を最大化する責任を持ちます。システムよりビジネスに近い役割です。
2つ目はスクラムマスターです。スクラムチームの推進役となります。後述の開発チームが効率よく活動できるように支援します。システムとビジネスの間に立ち、アジャイル開発の知識と経験が求められます。
そして3つ目の役割が開発チームです。自律的に改善を続けるメンバーの集団です。チーム内でのコミュニケーションを十分にとるために少人数で構成されます。また、チーム内の役割を定めていないため、各メンバーの自由度は高いですが、その分考えることを止めず、常に改善していく姿勢が求められます。
ウォーターフォール開発の課題から見えるアジャイル開発が台頭してきたワケ
2019年2月21日にガートナージャパンが発表した調査結果によると、ウォーターフォール開発を「採用中」と回答した企業は43%でしたが、「未採用:採用予定あり」はわずか2%でした。
それに対して、アジャイル開発を「採用中」と回答した企業は17%と少ないですが、「未採用:採用予定あり」は13%で、アジャイル開発を採用する企業が増えていくことが予想されています。
なぜウォーターフォール開発に代わってアジャイル開発が台頭してきたのでしょうか。その理由は、ウォーターフォールの開発手法と現在のビジネス環境のギャップにあります。
ウォーターフォール開発は名前の通り、水が下に向かって流れ落ちていくように、要件定義、外部設計、内部設計、といった各工程を手戻りしないよう開発を進めていく開発手法です。ウォーターフォール開発のメリットとして、システムのゴールや各工程の成果物が明確で、進捗状況が把握しやすいことが挙げられます。
デメリットとしては、前工程が確実に完了していないままに進め、どこかで手戻りが発生すると、多くのコストが必要となることです。
例えば、要件定義の大前提が誤ったまま開発を進め、テスト工程になって気づいてしまうと、すべての工程が無駄になってしまい、ゼロから作り直しということが実際にあります。途中で要件や仕様の変更が発生した場合も同様に、コストをかけて各工程をやり直さなければなりません。
また、システムとして動作を確認できるのは、コーディングが完了する開発の中盤以降となるので、ユーザーからの意見がそれ以降のテスト工程の段階で出てくることも多々あります。
そのため、システム利用者の意見を、要件定義や設計工程の段階ですべて洗い出さなければ手戻りが発生してしまうのです。
ウォーターフォール開発の特徴に対して、現在のビジネス環境はどうでしょうか。
企業の方針も、取り巻く状況もどんどん変化が速くなり、予測できない未来が次々に訪れています。スピードが必要な事業や、トライ&エラーを繰り返しながら未来に向かっていくような領域では、ウォーターフォール開発では対応しきれなくなってきたのです。
このような経緯もあり、厳格な規律をもったウォーターフォール開発に代わって、アジャイル開発が発展してきました。「重量ソフトウェア開発手法」と呼ばれていたウォーターフォール開発が、1990年代に「軽量ソフトウェア開発手法」として発展し、それが現在のアジャイル開発につながっています。
参考:ガートナー、アプリケーション開発 (AD) に関する調査結果を発表
https://www.gartner.com/jp/newsroom/press-releases/pr-20190221
アジャイル開発が向いている分野、向いていない分野
アジャイル開発を採用する企業が増えているものの、どの分野にも向いている万能な開発手法というわけではありません。ここで向いている分野、向いていない分野について解説していきます。
向いている分野
向いている分野の特徴として、要件・仕様の確定が困難な分野、リリースの速さが求められる分野が挙げられます。
ビジネス要求の変化が激しい分野や研究開発、新規参入分野では、要件・仕様がなかなか固められず、ウォーターフォール開発を採用することは難しいでしょう。アジャイル開発であれば、手探りながらもトライ&エラーを繰り返し、システムを利用しながらどんどんブラッシュアップしていくことができます。
リリースの速さが求められる分野にも、アジャイル開発は最適です。例えば、まずは利用してもらえるサービスを市場に投入して、先行者利益を獲得するような事業です。このような分野では、初めから完璧なシステムを作るよりも、完成度は低くともまずはリリースすることが重要になります。
向いていない分野
アジャイル開発が向いていない分野の特徴として、大規模開発であること、開発メンバー間の距離が遠いことが挙げられます。
アジャイル開発は少人数のチームでメンバー同士が密にコミュニケーションをとりながら開発を進めていくことが重要です。大規模なプロジェクトでもアジャイル開発は可能ですが、チーム構成や機能分解を適切に行えなければたちまち立ち行かなくなってしまいます。
また、オフショア開発や、組織間をまたがる座組など、開発メンバー間の距離が遠い場合もアジャイル開発の難易度は高くなります。チーム内で要件定義、設計、実装、テスト、品質保証などすべての役割を共有する必要があるため、対面でのコミュニケーションがなければ開発の効率は落ちてしまいます。
アジャイル開発が失敗する理由、成功する理由
アジャイル開発が失敗するパターンとしてよくあるのが、「とりあえずアジャイル開発してみよう」という動機で、アジャイルの性質や向き不向き、ベストプラクティスを理解しないまま採用することです。
IT部門の上層部が流行のアジャイル開発を取り入れようと部下に指示したものの、部下はアジャイル開発の知識、経験を持ち合わせておらず、適切なメンバーも招集されないまま失敗に終わるというパターンが少なくありません。アジャイル開発を導入する目的を明確にしたうえで、十分な計画をたてて実行しましょう。
アジャイル開発を成功に導く要因もさまざまありますが、最も重要なことは絶えず改善を続けることです。
経験豊富なメンバーであれ、アジャイル開発に適した案件であれ、改善なくスムーズに進む開発はほぼありません。日々現れる多くの問題にメンバー全員で向き合い、改善を続けること。短期間で繰り返される開発フェーズを改善しながら進めていくことでプロジェクトを成功に導くことができます。
アジャイル開発ではイテレーション と呼ばれる設計、開発、テスト、リリースのサイクルが繰り返されます。イテレーションを重ねるごとにチームが成長し、よりよいアジャイル開発が行われることが理想ではないでしょうか。