2.開発準備

プロジェクトの開発方針を決める

アジャイル開発の向き・不向きを踏まえ、どのような開発方針を採用するか検討します。
開発方針の決定は、プロジェクト全体に大きな影響を及ぼすため、有識者と十分な協議を行い判断することを推奨します。

  • プロジェクトの初期計画の緻密さ
    プロジェクトの初期で緻密に計画を立て、大きな変更は認めず、計画どおりに開発を進めていくケースや、まずは全体計画を大まかに決めておき、詳細化は次に開発に取り掛かる範囲だけを対象とするケースがあります。
  • 開発の反復頻度
    反復を行わずに要件定義、基本設計などのフェーズを順に進めていくケースや、これまでに完了した作業を踏まえて次にとりかかる開発範囲の計画を立て、開発し、振り返るという一連の手順を反復して開発するケースがあります。

参考:政府CIOポータルアジャイル開発実践ガイドブック

その他にも、ラボでは「コミュニケーション計画(会議体)」や、「テスト方針書」などを開発方針の一部として検討していました。以下リンクより実例を参照することができます。

方針はあくまでも現時点での方針であり、変更を許容する。またメンバー全員が理解して納得することを重視します。

ユーザーストーリーの洗い出し、優先順位付け

手順概要
ユーザーストーリーの洗い出しプロダクトバックログを作成するにあたっては、関係者がいつでも『誰のために、何のために、それを実現するのか』という内容を思い出せるようユーザーストーリー形式がよく用いられます。
ビジネス価値を整理し、複数の中から良いものを選ぶ際にペルソナを設定しユーザーを明確化したうえでリーンキャンバス仮説キャンバスなどの手法を用いることが有効とされています。
また、ユーザーストーリー・マッピングにより、開発からフィードバックまでの要素をサイクルを回す際の手がかりとして活用することもできます。
ユーザーストーリーの優先順位付けユーザーストーリーが生み出すユーザー価値を基準に優先順位を付与します。(この時点では開発の難易度や効率は加味しません)
優先順位の高いものはすぐに着手する可能性が高いため粒度を小さくしておきますが、優先順位の低いものは着手しない可能性もあるため、詳細化せずにそのままにしておきます。

プロダクトバックログ
:ウォーターフォール開発の「要件一覧」とは異なり、ソフトウェアの要件だけでなく、ソフトウェアの開発に必要なものすべてを記載します。

ユーザーストーリーの優先順位付け】
:ウォーターフォール開発の「機能一覧」にあたるものですが、対応優先度によってユーザーストーリーの詳細化レベルが異なります。

ユーザーストーリーの見積もり

優先順位付けされた各ユーザーストーリーに対して、実現性を踏まえた相対見積りを実施し、ストーリー単位の開発規模を可視化します。

  • 見積もりにあたっては、ストーリーを実現するために必要な(環境整備など)周辺作業も含めてストーリーポイントの付与を行います。
  • 1つのストーリーが1スプリント内に入らないほど大きい場合には分割を行い、チーム全体で合意します。
  • 要件にも環境にも不確定要素が多く、開発の進んでいない段階で精度の高い見積もりを行うことは困難であるため、スプリント開始時のスプリントプランニングプロダクトバックログからスプリントバックログに移行した際)にて詳細や課題が明らかになった時点で確定させます。

代表的な相対見積りのやり方のひとつにプランニングポーカーがあります。

相対見積り
:ウォーターフォール型開発でよく使用されるKStep数や人月、FP法などによる見積りは絶対見積り(見積りの数値がそのままコストに換算されます)

プロジェクト全体計画(リリースプランニング)

  • ユーザーストーリーをビジネス価値や費用対効果、ソフトウェアの作りやすさなどを考慮し優先順位を決め、プロダクトバックを作成します。(最終決定はプロダクトオーナーが行います)
  • 1スプリントの期間やスプリントの回数、優先順位に従ってどのスプリントでどのストーリーのリリースを行うかという計画を策定し、リリースバーンダウンチャートを作成します。(ソフトウェアの価値を計測できるMVP(Minimum Viable Product)の単位でリリースします)
  • プロダクトオーナーを含む関係者全員で、「何ができていれば完成か」という完成(Done)の定義やユーザーの受け入れ条件を共有・合意し常に認識できる場所に記載しておきます。(必要に応じて見直します)

【MVP(Minimum Viable Product)】
:ユーザーに必要最小限の価値を提供できるプロダクトのことです。
プロトタイプと意味は似ているが、プロトタイプはデモンストレーションや量産前の問題点の洗い出しなどの目的のために作られたプロダクトであり、必ずしも必要最低限の機能を搭載しているというわけではありません。

スプリントゼロ(開発をスタートできる状態にする)

  • プロダクトバックログの準備、開発環境の準備、スクラムチームの作業準備、完成の定義の再確認、技術的な検証などを行います。
  • 純粋なアジャイル開発では環境準備もバックログ化するため不要とされるものの、初めてアジャイル開発を実施する場合に省略するとスプリント、ひいてはプロダクトオーナーやステークホルダーに大きな影響を与えるため、可能であれば1スプリントと同期間を設定します。