アジャイル開発と聞くと「詳細を決めず、開発しながら詳細を詰めるから細かい要件定義は必要ではない」と思われる方がいますが、実際にはたとえアジャイル開発だとしても、要件定義はしておいた方が良いです。確かにウォーターフォールよりは具体的に詰めなくても良い部分はありますが、基本的に検討すべき項目は大差ありません。
「アジャイル開発で要件定義をする理由が分からない」
「アジャイル開発の要件定義で検討すべき項目が分からない」
「具体的な検討手順を知りたい」
この記事では、アジャイル開発の要件定義について解説しておりますので、上記の悩みをお持ちの方あぜひ参考にしてください。
アジャイル開発の概要・効果
まず初めに、アジャイル開発の基本をおさらいします。ここでは、アジャイル開発の概要と効果について解説します。
アジャイル開発の概要
アジャイル開発とは、プロジェクトを細かく分けて開発を進める手法です。短期間で開発を繰り返すイテレーションで区切り、それぞれで計画、設計、実装、テストの手順で開発を進めます。
アジャイル開発の効果
アジャイル開発では、細かい単位で何度も改善を繰り返します。そのため、品質や生産性の向上を期待できます。また、開発は機能ごとに行うため、仕様変更が必要になった際も柔軟な対応が可能です。
アジャイル開発における要件定義の必要性
アジャイル開発では、要件定義はどのように扱われているのでしょうか。要件定義の必要性について解説します。
要件定義とは
要件定義は、プロジェクトについて具体的な目標を設定し、方向性を定めることです。要件とは、顧客の要望を実現するために必要となる仕様を表しています。顧客が求めているシステムを開発するには、顧客の要望を把握したうえで要件定義としてまとめる必要があります。
要件定義の重要性
要件定義は、プロジェクトの方向性を明らかにし、目標に向けて適切にプロジェクトを進行するために重要です。要件定義で齟齬が発生していると、プロジェクト全体に影響を与える恐れがあります。ただし、開発を進める中顧客の要望が変化し、プロジェクトの方針が変わるパターンもあります。その場合、要件定義も見直しが必要です。
アジャイル開発における要件定義
アジャイル開発では要件定義が不要とされる場合もありますが、冒頭で触れたように実際はアジャイル開発でも要件定義が必要です。ただし、アジャイル開発はプロジェクトの細分化を前提としているため、最初から詳細な要件定義はできません。よって、プロジェクト全体ではなく、各イテレーションで開発する機能やタスクについて要件定義を行うことになります。
アジャイル開発において要件定義をする際のポイント
アジャイル開発で要件定義をする場合は、特に意識したいことがあります。以下で具体的なポイントを解説します。
要件定義書の作成
要件定義書とは、成果物の最終的なイメージを顧客とすり合わせるために作成する書類です。顧客のイメージを聞き取って文書でまとめ、双方の認識のズレを可能な限り抑えます。また、アジャイル開発では、ユーザーストーリーを基本とする要件定義書を作成するケースが一般的です。
併せて読みたい:アジャイル開発に設計書は必要?
要件定義の種類
アジャイル開発における要件定義は、2つに大別できます。1つ目は、制作するシステムの全体像を明らかにする要件定義です。プロジェクトの進め方を決めるためのキックオフで確認が行われます。2つ目は、個別の機能に関する要件定義です。機能について細かい定義が可能になった段階で実施します。
要件定義の優先順位
アジャイル開発では開発が進むにつれてシステムの要件が変わるため、機能ごとに優先順位を設けて要件定義を行いましょう。最初に全体の要件定義をしても、システムの要件が変わると無駄になる可能性が高くなります。優先順位の高さに応じて要件定義の工数を割けば、余計な手間をかけずに済みます。
併せて読みたい:アジャイル開発の成功事例5選
アジャイル開発における要件定義の流れ・手順
アジャイル開発で要件定義をする際は、どのように進めるのでしょうか。ここでは、流れや手順について解説します。
実施計画を作成する
まずは顧客の要望をヒアリングし、プロジェクトの目的や優先順位などを決定しましょう。また、ステークホルダーの洗い出しや分析も進める必要があります。
機能要件を定義する
開発を予定しているプロダクトにどのような機能が必要か検討し、リスト化してまとめます。開発を進めるなかで新たに必要な機能が生じた場合は、その都度反映しましょう。
データ要件を定義する
各種データについてデータ要件を定義します。具体的には、他のプロダクトから移行するインプットデータ、外部プロダクトに移行するアウトプットデータ、開発プロダクトの内部に蓄積する内部データの3つです。
画面要件を定義する
データの参照や登録を行う画面についても要件を定義します。画面要件には、証拠や履歴を残すための帳票要件も含まれています。帳票要件とは、統計のレポートや印刷用の画面などの表示に関する定義です。
パッチ要件を定義する
パッチとは、一定期間で蓄積されたデータの一括処理を意味します。パッチ要件では、データ処理の方法やタイミングなどを定めます。
外部I/F要件を定義する
外部I/F要件として、外部のプロダクトと連携するために必要なデータをまとめます。定義後の変更は難しいため、慎重に検討する必要があります。
例外処理要件を定義する
トラブルによる例外が発生した場合、プログラムを中止して別の処理を行う必要があります。たとえば、入力ミスやハードウェアの故障など、さまざまなトラブルが想定されます。例外として想定される状況を具体的に洗い出し、処理方法を例外処理要件としてまとめましょう。
セキュリティ要件を定義する
開発を進めるうえでは、情報漏洩を防止するための対策も必要です。プロダクトには、重要度が高いさまざまなデータを保存する可能性があります。セキュリティ要件として、ユーザー認証やアンチウィルスソフトなどの詳細を定めましょう。
完全性要件を定義する
完全性要件では、開発段階のテスト、本番における変更の管理、完全性に関する機能、モニタリングの4つについて定義します。明確な要件を定め、出力結果の正確性を保つ必要があります。
耐障害性要件(可用性要件)を定義する
安定的に稼働できるプロダクトを作るには、トラブルが発生しても停止や中断が発生しにくい機能を搭載しなければなりません。耐障害性要件を定義し、障害に強いプロダクトを目指しましょう。なお、耐障害性要件は、可用性要件とよばれる場合もあります。
性能要件を定義する
性能とは、顧客が必要としているプロダクトの能力です。たとえば、プログラムを実行する際の応答時間などが該当します。性能要件を定義し、プロダクトが要件通りに動作しているか確認する必要があります。
拡張性要件を定義する
拡張性とは、プロダクトの運用を始めてから機能を追加したり性能を向上させたりする能力です。拡張性によりプロダクトの中核に大きな変化が生じないよう、拡張性要件を定めておきましょう。
ハードウェア要件を定義する
ハードウェア要件では、プロダクトで利用するハードウェアを指定します。また、サーバーやストレージなどにも指定があれば、あわせて記載しましょう。
ソフトウェア要件を定義する
ソフトウェア要件では、開発に使用するOSや言語などを定義します。開発を進めるための基本となる要件です。
運用要件を定義する
運用要件とは、何らかの問題が発生してもサービスを停止せず運用を継続するための要件です。適切な環境についてだけでなく、運用時間や異常を通知するためのプロセスなども定義します。
保守性要件を定義する
保守性とは、プロダクトの維持や管理のしやすさのことです。保守性要件では、ハードウェアやOSの刷新への対応について定義します。明確な保守性要件の定義により、トレーサビリティを実現できます。
ログ要件を定義する
ログ要件は、情報の編集や消去などの履歴の管理に関する定義です。過去の変更点について追跡するために必要なログを洗い出します。
要件定義書をレビューする
必要な要件をすべて定義したら要件定義書にまとめます。関係者間でレビューを実施し、要望がすべて反映されているかチェックしましょう。
併せて読みたい:アジャイル開発にドキュメントは必要?
アジャイル開発の要件管理に便利なツール
アジャイル開発の要件管理には、さまざまなツールを活用できます。ここでは、便利なツールを紹介します。
JIRA
JIRAは、プロジェクトの進捗状況についてロードマップ形式で可視化できるツールです。開発の状況がリアルタイムで反映されるため、作業の追跡や進捗の共有がしやすくなっています。
https://www.atlassian.com/ja/software/jira
Lychee Redmine
Lychee Redmineは、さまざまなプロジェクトを管理に対応しているツールです。便利な機能が多く搭載されています。有料プランでは、ガンチャートやリソースマネジメントなども利用可能です。
https://lychee-redmine.jp/
Trello
Trelloは、シンプルでわかりやすく、直感的にタスクの整理や把握ができるツールです。対応済みのタスクと未対応のタスクを一目で把握できます。
https://trello.com/ja
Asana
Asanaは、プロジェクトの全体像から日々のタスクまで管理できるツールです。情報の可視化や整理がしやすいです。さまざまなアプリケーションと連携させて幅広く活用できます。
https://asana.com/ja
Wrike
Wrikeは、業務内容や進捗状況な度を可視化するためのツールです。それぞれのメンバー専用のダッシュボードがあり、タスクの漏れを防止できます。チームの作業状況を簡単に把握でき、チーム全体で進捗の共有が可能です。
https://www.wrike.com/ja/
併せて読みたい:アジャイル開発を学ぶためのおすすめ書籍13選
まとめ
アジャイル開発においても、要件定義は重要です。ただし、最初は全体像について定義し、プロジェクトを進めながら詳細について定義していく必要があります。さまざまな要件について定義する必要があるため、顧客のニーズを正確に把握して反映しましょう。
株式会社Sun Asteriskは、Webシステムやモバイル開発を得意としています。DXコンサルや設計から本格的な開発まで一気通貫でサポート可能です。圧倒的に柔軟な開発リソースを誇り、顧客のさまざまなニーズに対応してきました。求めるプロダクトをスムーズに開発するために、ぜひご相談ください。
貴社の状況にあわせて最適なチームをご提案します。アジャイル開発のご相談やお見積りのご依頼は、お気軽にお問い合わせください。
Sun*アジャイル開発に関するソリューションやこれまでの開発実績をまとめた資料のダウンロードはこちらから。