目次
近年、ソフトウェア開発ではアジャイル開発が採用されるケースが増えてきています。従来は、ウォーターフォールでの開発がほとんどでしたが、ビジネスの変化やユーザーの要望を反映しやすいアジャイル開発は多くのプロダクトでメリットを生み出します。 本記事では、アジャイル開発の進め方やメリット・デメリットについてご紹介します。
アジャイル開発とは
アジャイル開発はソフトウェアを開発する手法の1つです。アジャイルとは「素早い」「俊敏な」という意味です。短い期間で実装とテストを繰り返していく手法で、従来のウォーターフォールと比較すると開発期間が大幅に短縮されます。アジャイル開発が向いているのは、開発中での仕様変更や機能追加の可能性が高いプロジェクトです。例えば、開発しながらユーザーの声を機能として反映させるといったこともアジャイル開発であれば比較的簡単に対応することができます。アジャイル開発は開発期間が短いため、ビジネスサイドでは機能を小さく区切り、短い期間で価値を提供できるようにする必要があります。また、開発者側はタスクを小さく均一化した上で優先順位を付ける必要があります。
アジャイル開発とウォーターフォール開発の違い
ウォーターフォールの場合、要件定義やシステムの設計を詰めてから1度のサイクルで開発を行います。そのため、要件定義 → 基本設計 → 詳細設計 … のように上流から下流にかけて順番に開発を行います。
要件をしっかり固めてから開発をするのでスケジュールの見通しを立てやすい開発手法ではありますが、開発途中の修正や改修にはあまり向いていません。
アジャイル開発の手法
アジャイル開発の中にも何種類かの手法があります。
スクラム
アジャイル開発で代表的なのはスクラムです。スクラム開発についてはスクラムガイド」で詳細を確認することができます。
スクラム開発ではプロダクトオーナー、スクラムマスター 、開発メンバーという役割があり、1 〜 4週間のスプリントで開発を進めていきます。
エクストリーム・プログラミング(XP)
エクストリーム・プログラミングは、他のアジャイル開発同様にスプリントに分割した開発手法です。コミュニケーションとシンプルさを重要視している手法でスクラムよりも厳密なルールを設けます。
また、エクストリーム・プログラミングではペアプログラミングを行います。ペアプログラミングは1つのプログラムを2人で開発する方法で、作業ミスの軽減が見込めます。開発の進め方は、他のアジャイル開発手法と同様にテスト駆動開発(TDD)で開発を行います
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発は、開発機能が多い大規模なプロジェクトにも対応可能なアジャイル手法で、2週間未満という短いサイクルで開発を進めていきます。サイクルが短いため、実現したい機能を短いサイクルで対応できる大きさまで細分化します。この細分化した機能を フィーチャー(feature)と呼び、フィーチャーをリスト化したものをフィーチャーリストと呼びます。
アジャイル開発のステップ
本記事ではアジャイル開発の中のスクラムを例にして、開発のステップを紹介します。
成果物
スクラム開発では、3つの成果物が定義されています。
- プロダクトバックログ
- スプリントバックログ
- インペディメントリスト
1.プロダクトバックログ
プロダクトバックログは、プロダクトオーナーが管理を行い、プロダクトに必要な機能や改善要望をリスト化したものです。スプリントで対応する内容は、プロダクトオーナーがプロダクトバックログから決定します。
プロダクトバックログの粒度が荒い場合は、プロダクトオーナーと開発チームで具体的な作業に落とし込めるように詳細化します。この作業をリファインメントと呼びます。
プロダクトバックログの作成には DEEP という法則があります。DEEP はプロダクト管理の専門家でああ流Roman Pichler 氏が推奨している方法です。
2.スプリントバックログ
スプリントバックログは、スプリント内で対応する作業をリスト化したものです。スプリントバックログはスプリントプランニングというミーティングで作成します。
スプリントバックログには下記のようなものが含まれます。
- 実現したい機能
- タスク名・タスクの説明
- 優先度
- 各タスクにかかる時間的コスト
- バーンダウンチャート
3.インペディメントリスト
インペディメントリストは、プロジェクトの進捗において障害となるもの、なりそうなものを可視化したものです。インペディメントリストを用意することで開発チームは障害に対して素早く対応することができるため、円滑にスクラムを進めることができます。
役割
スクラム開発には3つの役割があります。
- プロダクトオーナー
- スクラムマスター
- 開発メンバー
1.プロダクトオーナー
プロダクトオーナーは、ステークホルダーとスクラムチームの間に立つポジションです。ROI(=投資利益率)を意識してプロダクトに必要な機能の定義やプロダクトバックログの作成を行います。また、ビジネスのビジョンや戦略をスクラムチームに共有し、価値の高いソフトウエアの開発をしてもらうために必要なことを行います。
2.スクラムマスター
スクラムマスターは、スクラムチームにおけるファシリテーターのような役割を担います。スクラムマスターは開発の指示を出すのではなく、自律した開発チームを組織して生産性を上げることを目指します。
3.開発メンバー
開発メンバーは、デザイン、実装、テストのように明確な役割分担は行わずに横断的に開発を行います。
ウォーターフォールの場合は、デザイナー、SE、PG、テスターのように役割を分けて開発を行いますが、スクラム開発の場合はすべてのメンバーがどの工程のタスクも担当する可能性があります。
イベント
- スプリントプランニング
- スプリント
- スプリントレトロスペクティブ
- プロダクトバックログリファイメント
スプリントプランニング
スプリントプランニングは、直近のスプリントのゴールとそれに伴うコストを計画するミーティングです。スプリントで対応する内容はプロダクトオーナーがプロダクトバックログから抽出します。開発チームは、プロダクトオーナーが抽出したバックログに対して詳細化を行い項数を見積もります。
スプリント
スプリントでは、デイリースクラムと呼ばれるミーティングとスプリントレビューと呼ばれるスプリント終了時のデモンストレーションを行う場があります。デイリースクラムでは、「昨日対応したタスク」「今日対応するタスク」「障害になっていること」をスクラムチーム、プロダクトオーナーと共有します。スプリントレビューでは、スプリントで作成したプロダクトのデモンストレーションを行い完成度を確認します。
スクラムの場合、スプリント内の開発は分業化されることなく設計、実装、テスト、UIなど幅広く対応します。また、基本的にはテスト駆動(TDD)に基づく開発を行います。テスト駆動開発とは、実装前にテストコードを書き、テストコードに適合するように実装やリファクタリングを進めていく手法です。テスト駆動開発を行うことで迅速かつ効率的に開発を進めることができます。
スプリントレトロスペクティブ
スプリントレトロスペクティブはスプリントの振り返りを行うミーティングです。スプリントの良かった点、悪かった点を洗い出し、次回以降のスプリントをより良くするための話し合いが行われます。
プロダクトバックログリファイメント
プロダクトバックログリファイメントでは、バックログアイテムの見直しや優先順位の確認を行います。プロダクトバックログリファイメントを行うことで、次回のスプリントの優先順位を明確にすることができます。
アジャイル開発のメリット・デメリット
メリット
ウォーターフォールの場合、不具合が発生した場合の改修や開発途中でユーザーやクライアントの意見を取り入れることは簡単ではありません。しかし、アジャイル開発の場合はリリースが頻繁に発生するため改修や新しい要件の追加が行いやすいというメリットがあります。ユーザビリティの高いシステムを開発できるのは、アジャイル開発の大きなメリットです。
デメリット
変更を受け入れやすいアジャイル開発ですが、全体の方向性がぶれやすいという側面もあります。変更が多すぎるとスプリントを繰り返しても意味のある結果が生み出せなくなってしまうかもしれません。そのため、スプリントの目的を明確に定義する必要があります。
アジャイル開発の案件ならFAworks
FAworksでは、PG〜SE、PM、コンサルまで幅広い層のフリーランスIT人材を支援しており、ベンチャー企業から大企業まで豊富な案件を取り揃えています。 また、案件紹介だけではなく10,000人以上のキャリア支援を行った実績によるスキルシートの添削やフリーランス独立支援なども可能です。
フリーランスへの転向を検討している方や案件探しにお困りの際はぜひお気軽にお問い合わせください!