こんにちは。クライアント企業のデジタル・トランスフォーメーション(DX)を全方位で支援するスパイスファクトリー株式会社です。
変化の速い現代のビジネス環境において、多くの企業で採用されているアジャイル開発ですが、一口にアジャイル開発といってもその手法は様々です。それぞれの手法にはどのような違いがあり、どのように手法を選択するべきなのでしょうか。
この記事では、多数のアジャイル開発プロジェクトを手掛けてきた当社の経験やノウハウ、事例なども含めて、アジャイル開発の手法について詳しくご紹介します。
Contents
アジャイル開発とは?
はじめに、アジャイル開発について簡単に説明します。
アジャイル開発とは、短いスパンで開発を繰り返し、機敏にシステムを構築する手法です。ウォーターフォール型がプロジェクトの終盤で動作確認を行うのに対し、アジャイルでは逐次開発とテストを行うため、開発中に実際のソフトウェアを確認しながら方向性を検討できます。
現代のビジネス環境では、外部環境やユーザーニーズの急速な変化があり、柔軟な対応が求められます。実際に動作するソフトウェアをリリースしてユーザーの反応を見ながら改善していくことも重要です。アジャイル開発は、このようなニーズに応えるための適した方法論といえるでしょう。
さらに詳しく知りたい方は、日本や世界でのアジャイル開発事例を取り上げた以下の記事をご覧ください。具体的なイメージがつかめるはずです。
アジャイル開発のメリットとデメリット
以下では、アジャイル開発のメリット・デメリットを整理します。
メリット
柔軟性が高い
短いスパンで開発を繰り返し、小さな機能を積み上げてソフトウェアを作り上げていくアジャイル開発は、開発内容を変更しやすいというメリットがあります。たとえば、競合他社のサービスに新たな機能が追加され、その機能がユーザーのニーズをうまく捉えているようであれば、ぜひ自社のサービスにもその機能を取り込みたいと考えるはずです。
ウォーターフォール型開発で同じようなことをすると、変更管理プロセスに則り一定の時間をかけ、要件やスケジュールを見直すこととなり、オーバーヘッドが大きくなります。
このように、外部環境の変化に対応しやすいのがアジャイル開発の特徴です。
チーム一体となって開発を進められる
ウォーターフォール型開発では、請負契約によって発注側と開発側が明確に分けられ、発注側は開発側のプロジェクトマネージャーのみを通してコミュニケーションすることとなります。
一方で、アジャイル開発では発注側と開発側は一つのチームとしてプロジェクトを運営していきます。発注者側の要望を深く理解したエンジニアが専門的な知見で開発する機能について検討したり、エンジニアの意見を踏まえて発注者側が意思決定をしたりといったことが行いやすくなります。
このようにチーム一体となって開発を進めることで、ソフトウェアの品質を高めやすくなる点もアジャイル開発のメリットといえるでしょう。
早期にユーザーの反応を見て開発を進められる
実際に動作するソフトウェアを早期に作り、ユーザーに利用してもらうことで、ユーザーのニーズを確認することができます。これはアジャイル開発の大きなメリットです。
新規事業開発においては、事前に市場調査やユーザー調査などを行い一定の仮説をもってプロダクトを開発しますが、そのプロダクトが本当に市場やユーザーにマッチしているのかは、実際の市場やユーザーの反応を見てみないとわかりません。
このようないわゆる「PMF(プロダクト・マーケット・フィット)」を判断するためにも、アジャイル開発で必要最小限の機能を構築したうえで、本番リリースを目指すアプローチが有効です。
デメリット
「丸投げ」はできない
ウォーターフォール型開発では発注者は要件さえ決めれば、あとはベンダーにお任せして開発を進めてもらうこともできます。
一方で、アジャイル開発ではこのような「丸投げ」はできません。発注者側にも、一定の負荷がかかる手法です。
しかしながら、本来システム開発は発注者側が主体的にコントロールし、自身が求めるソフトウェアを作り上げていくものです。発注者側が積極的にプロジェクトに参画していくことで、品質の高いソフトウェアを作り上げることができます。
必ずしも開発スピードは速くならない
アジャイル開発はアジリティ(機敏さ)に優れた手法ですが、開発スピードは必ずしも速くならないこともあります。
先述の通り、アジャイル開発は柔軟性に長けていますが、たとえば事前に明確に要件が定まっていて変更の可能性が無い場合、要件定義から設計、開発、テストと流れるように開発を進めていくウォーターフォール型開発の方が素早く開発を行えることもあります。
一概にアジャイル開発だから高速に開発できるわけではないという点は理解しておくべきです。
開発の方針がブレるリスクがある
柔軟性が高いというアジャイル開発のメリットは、方向性が定まりにくいというデメリットに化けてしまうこともあります。
一度開発した機能を何度も変更してしまえば、当然コストも開発期間も必要となります。アジャイル開発だからと言って事前に要件を決めなくてよい、というのは危険です。少なくともプロジェクトの開始時点では、事前に開発すべきものを定めたうえでプロジェクトに取り組み、ユーザーの反応や環境の変化に応じてそれを見直していくというスタンスが重要です。
このように、アジャイル開発はメリットの多い手法ですが、もちろんデメリットもあります。目的や開発するソフトウェアの特性に応じて使い分けが必要です。
以下の記事では、アジャイル開発とウォーターフォール型開発の比較を行っております。アジャイル開発手法を採用すべきか悩んでいる方は、以下の記事も併せてご覧ください。
アジャイル開発の種類を解説
以下では、アジャイル開発として分類される様々な手法についてご紹介します。
スクラム
スクラムとは、少人数のチームで「スプリント」と呼ばれる1~4週間程度の開発期間を繰り返すことでシステムを作り上げていく手法のことです。
スクラムという言葉は、ラグビーのスクラムに由来しています。ラグビーのスクラムでは、チームメンバーが肩を組んでワンチームとして力を発揮しますが、アジャイル開発のスクラムでも同様にチームが一丸となって開発を行います。
スクラムには以下の3つの役割が存在します。各メンバーが自身の役割を通して、チームを作り上げていきます。
- プロダクトオーナー:開発するプロダクトに責任を持ち、プロダクトの方向性を決める責任者。スクラムチームから⽣み出されるプロダクトの価値を最⼤化する役割を担う。
- スクラムマスター:スクラムの手法に精通し、スクラムを確立させる責任者。スクラムの理論と実践を全員に理解してもらえるよう、手助けを行う。
- 開発チーム:プロダクトの開発を担当するメンバー。プロダクトオーナーが示した要求に対して、実際にコーディングを行いプロダクトを作り上げる。
スクラムはアジャイル開発の中でも採用されるケースが多い代表的な手法といえます。スクラムについては以下の記事で詳しく解説しております。ぜひ、併せてこちらの記事もご覧ください。
エクストリームプログラミング
アジャイル開発手法の一つであるエクストリームプログラミングは、変化するニーズに柔軟に対応しつつ、ソフトウェアの品質を高めるアジャイル開発におけるベストプラクティスです。エクストリームプログラミングもスクラムと同様に、数あるアジャイル開発手法の中でも代表的なものであり、広く普及しています。
エクストリームプログラミングでは「コミュニケーション」「シンプル」「フィードバック」「勇気」「尊重」という5つの価値を重要視しつつ、開発を進めます。また、19のプラクティスとして、開発の進め方が指南されています。
特徴的なプラクティスとしては、実装の前にまずテストを作成し、実装にあたってはテストを通すことを目標とする「テスト駆動開発」や、機能を追加したらすぐに既存のコードとマージして結合テストを行い、検証する「継続的インテグレーション」といったものが挙げられます。
プロジェクト管理・運営手法の色が強いスクラムと比較して、より開発現場に近いプラクティスが提唱されているのがエクストリームプログラミングの特徴といえるでしょう。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(Feature Driven Development:FDD)は、ユーザー目線をスタート地点として、ユーザーにとって価値のある機能を中心に開発を進める手法です。
ユーザー機能駆動開発はフィーチャー駆動開発と呼ばれるケースもあります。フィーチャーとは、顧客にとって価値のある小さな機能単位を指す言葉です。
ユーザー機能駆動開発においては、このフィーチャーをリストに整理し、顧客にとって重要度の高いものから順々に短期間で開発を行っていきます。
動的システム開発手法(DSDM)
動的システム開発手法(Dynamic Systems Development Method:DSDM)は、ビジネス戦略を意識してプロジェクトのライフサイクルを進めるためのアジャイル開発手法です。
動的システム開発手法の特徴は、ソフトウェア開発フェーズだけでなく、その前段階である企画段階やリリース後の運用段階までを定義していることです。ソフトウェア開発においてはビジネスゴールを理解し、実現可能なゴールを設定することが重要です。また、納期通りにソフトウェアを開発する必要もあります。
動的システム開発手法では、これらのビジネス的な側面を意識した開発を実現するために「タイムボックス:プロジェクトを期限と予算を割り当てた小さなタスクに分割する手法」や「MoSCoW:ビジネスやプロジェクトの優先順位を付けて整理する手法」、「プロトタイピング」「テスト」といった技術を重視します。
カンバン
「カンバン」もアジャイル開発手法の一つとして知られています。
カンバンと聞くと、トヨタ自動車の生産管理方式を思い浮かべる方も多いかもしれません。生産管理方式におけるカンバンとは、必要なものを必要な時に必要なだけ供給する「ジャストインタイム」を実現する、優れた生産方式です。
この生産方式が「カンバン」と呼ばれる理由は、ジャストインタイムを実現するために看板が用いられるためです。必要最小限の在庫量を確保するために、部品に看板をつけ、部品の数量を管理します。
アジャイル開発方式においては、このカンバンをタスク管理の手段として利用します。プロジェクトの進捗状況を視覚的に把握するために、カンバンボードにやるべきタスク、進行中のタスク、完了したタスクを一覧化します。これにより、チーム全体の作業状況を素早く把握できます。
アジャイル開発においてチームが一体となってプロジェクトを進めるためには、情報共有がポイントとなります。カンバンの活用により、タスクの進捗状況を誰でも簡単に把握できるようになります。
最適なアジャイル開発の種類を選ぶためのポイント
それでは、最適なアジャイル開発手法を選ぶためにはどのような観点を意識すればよいのでしょうか。以下では、いくつかのポイントをご紹介します。
前提として、複数の手法を組み合わせてもよい
スクラムやエクストリームプログラミング、カンバンなどいくつかのアジャイル開発手法をご紹介しましたが、これらはどれか一つを選ぶべきものではありません。複数の手法のプラクティスを組み合わせて開発を行うこともできます。
たとえば、プロジェクト体制や運営方法はスクラムに沿って実施しつつ、ソフトウェアの品質を高めるためにエクストリームプログラミングのプラクティスであるペアプログラミングやテスト駆動開発などを用いることもできます。また、タスク管理においてはカンバンを利用することもできるでしょう。
このように、各アジャイル開発手法の良いところを組み合わせることができます。
プロジェクトメンバーの規模を考慮する
スクラムのガイドラインともいえる「スクラムガイド」によれば、以下のとおりチームは10名以下とすることが推奨されています。
スクラムチームは、敏捷性を維持するための⼗分な⼩ささと、スプリント内で重要な作業を完了するための⼗分な⼤きさがあり、通常は10⼈以下である。⼀般的に⼩さなチームのほうがコミュニケーションがうまく、⽣産性が⾼いことがわかっている。
※引用:スクラムガイド P6より
このように、スクラムは比較的小規模のプロジェクトにおいて採用すべき手法です。より規模が大きいプロジェクトにアジャイル開発を適用したい場合、ユーザー機能駆動開発や動的システム開発手法の活用を検討します。
変更頻度によって手法を選択する
スクラムとエクストリームプログラミングのプロジェクトの推進方法は近しいですが、両者には若干の違いがあります。
たとえば、より柔軟に開発内容を変更できるのはエクストリームプログラミングです。エクストリームプログラミングでは、開発するソフトウェアの機能を決定する「顧客(スクラムのプロダクトオーナーに該当)」により、作業にまだ着手していないことを前提に、随時要件の変更を行うことができます。
一方で、スクラム開発においてはスプリント期間中に開発内容を変更することはできません。
求める変更頻度によって開発手法を選択することも一案となります。
アジャイル開発の成功事例を紹介
最後に、当社が実際に携わったアジャイル開発の具体的な事例をご紹介します。
東京都デジタルサービス局 | アジャイル型方式によるプロトタイプ開発委託
東京都は、デジタルの力を活用した行政を総合的に推進し、都政の QOS を飛躍的に向上させるため、2021年にデジタルサービス局を設置。同局では、国際競争力の強化や都民の生活の質・利便性向上を進めるため、迅速かつ柔軟に新しい価値を創出するためのアジャイル型開発を推進しています。
当社は、同局が企画する4件のアジャイル型方式によるプロトタイプ開発プロジェクトを受託しました。
株式会社トムス・エンタテインメント | アニメーションの制作管理システム「ProGrace」の開発
「ルパン三世」シリーズや「それいけ!アンパンマン」シリーズ、「名探偵コナン」シリーズなど、数多くの著名アニメ作品を手掛ける株式会社トムス・エンタテインメント。同社では、日本のアニメーション制作業界を取り巻く制作面、ビジネス面、人材育成などの様々な課題を念頭に「アニメSDGs -2030年までに持続可能な日本アニメ産業の未来を創る-」という構想を掲げられています。
当社では、アニメーション業界のDXの先駆けとなる「ProGrace(プログレース)」の開発を継続的にご支援させていただいております。以下の記事では、本システムの開発をご担当されている河瀬様にインタビューを行い、開発プロジェクトの背景や今後の展望について詳しく記載しています。
株式会社ネクスウェイ | 薬局向けDI (薬剤情報) ポータルサービス「アスヤク薬局ポータル」の開発
株式会社ネクスウェイ様の薬局向け DI (薬剤情報) ポータルサービスである「アスヤク薬局ポータル」の新規開発を担当いたしました。 アスヤク薬局ポータルは DI (薬剤情報) をまとめて閲覧・管理を行うことができるポータルサービスです。
これまでメールや郵送、FAX、Webなどでバラバラに公開がされていたDIを一本化して掲載しています。また、製薬会社がこのサービスを通してDIの配信を行うこともできます。
アジャイル開発を成功させるために
この記事では、主なアジャイル開発手法の種類についてご紹介しました。
アジャイル開発と一口に言ってもそのアプローチは様々です。各手法がどの様な場面で有効となるか、各手法にはどのような良し悪しがあるかを踏まえ、プロジェクトを運営し開発を進めていく必要があります。
よって、アジャイル開発型でソフトウェア開発を行う際には、アジャイル開発のスキルや経験を保有したパートナーを選ぶことが重要です。
これまで多くのアジャイル開発プロジェクトを実施してきた当社では、プロジェクトの特性や目標に合わせ、様々なアプローチでお客さまのソフトウェア開発を支援いたします。アジャイル型でのソフトウェア開発にご興味のある方は、ぜひお気軽にお問い合わせください。
About The Author
スパイスファクトリー公式
スパイスファクトリーは世界がより良い⽅向に向かうよう、変化を加速させる “触媒”(スパイス)としての役割を全うすることをミッションとしたDXエージェンシーです。最新テクノロジー、UIUX、アート、マーケティングなどの技術・メソッドを⽤いて、モノゴトを素早く、美しく、本質的に再定義し、幅広いクライアントのデジタルトランスフォーメーションを⽀援しています。