Scrum Inc.認定スクラムマスターの局です。
一般的なアジャイル方法論やスクラム開発のプラクティスをベースとしつつ、NCDCのこれまでの経験を取り入れた独自の方法論「NCDC Agile Development Process」の概要を全6回に分けて説明します。
(2024年2月 一部変更を加えました)
NCDC Agile Development Process(NADP)解説記事
キックオフ(Kick-off)
要求(Requirements)
デザイン(Design)←本記事
スプリント計画(Sprint Planning)
開発(Development)
総合テスト(System Testing)
今回はデザインについてです。
デザインといってもビジュアルデザインだけの話ではなく、アーキテクチャ設計なども含まれます。「設計」という意味でのdesignと捉えてください。
よくアジャイル開発は「とりあえずメンバーを確保して、よーいどん!で始めればいいものだ」と誤解されますが、実際のところは、先々のストーリーを見越して基本となる設計をしておくことが大切です。
例えば、直近のスプリントで対応する機能と先々のスプリントで出てくる機能が競合すると、無駄な開発をしてしまう可能性があります。そのため、ストーリーがある程度見えているのであれば、まず全体像の設計をするフェーズを設けるのが得策です。
「デザイン」確認の要点
システム全体の設計・デザインを実施します。スプリントに入る前の準備をするフェーズです。スプリント1の前という意味で、スプリント0と呼ぶこともあります。
スプリント途中で想定外のタスクが出てこないように全体的にブラックボックスをなくす取り組みです。まずブラックボックスがあること自体を認識するのが大切だといえます。
NCDCで行っているスプリント前の準備
次にNCDCがスプリントに入る前に行っている準備を解説していきます。
アーキテクチャ設計(全体)
下記のようにデータモデル設計や採用技術の定義をします。
こちらも、アジャイルなのでここで決めた設計通りにスプリントが進んでいく必要はありません。
「後から出てくるストーリーで想定していなかったものがあり、インフラ設計に手戻りしなければならない」という事態を回避するために行います。
API設計(全体)
APIの仕様を設計します。
必ずしもここで決めた設計通りにスプリントが進んでいく必要はありません。
想定していなかった手戻りを回避するために行います。
デザインの基本ルール・運用方針
一貫したデザイン制作を実現するための基本ルールと運用方針を作成します。
プロジェクトによっては複数のデザイナーが関わっていたり、プロジェクト途中でデザイナーが代わったりする場合があります。そうしたケースでも、早期にデザインのルールを決めておくことでデザインテイストが大幅にずれることを防ぎます。
また大規模アジャイルの場合は、プロダクトコンセプトを合わせるためにもデザインの基本ルール・運用方針を早期に定めておくことが必要です。
プロジェクトによっては、MaterialUIやApple Design Guidelineなど既存のデザインルールを参考にして、ユーザビリティーを高めます。
スプリント1,2のデザイン指示書作成
先に決めたデザイン方針に沿ったUIを実装できるようにする為に、デザイナーから実装者への指示書を作成します。
最低限、最初のスプリントに必要なデザイン指示書を本フェーズで作成します。この段階で完全なガイドラインにする必要はなく、sketchなどのデザインツールから書き出せる簡単なデザイン指示書を作成します。
スプリント1,2開始に向けた準備
技術調査など、スプリントを開始するために必要な準備を実施します。
新しい技術の採用をする場合や、あまり前例のない新規サービスのプロジェクトに取り組む場合、スプリント途中でつまずくことがあります。
つまずきはスプリント中のチームのベロシティーを下げ、安定したインクリメントを妨げる要因となるため、スプリント準備段階でブラックボックスを無くしておくことが必要です。
ブラックボックスがあるストーリーは調査が終わるまで優先順位を下げるか、または別の方法でストーリーを達成できるかを考えます。
ベロシティーとはアジャイルでよく用いられる作業の測定基準。1スプリントにチームが消化したポイントを評価する指標。インクリメントとはプロダクトゴールに向けた具体的な踏み石。インクリメントをまとめたものをスプリントレビューで提示する。
テスト計画
スプリント内で実施するテスト、その後の結合テスト、総合テスト、ユーザー受入などを定義します。
非機能要件と照らし合わせながら、リリースに必要なテストを考えます。自動テストの導入や、外部からのセキュリティーチェックを入れる必要性などを検討します。
ステークホルダーの受け入れ条件があるプロジェクトであれば、受け入れのテストと開発チームで行うテストはどういった切り分けになるかも認識を合わせておくことが必要です。
開発環境構築
開発者がスプリントに入れるように開発環境を構築します(下にいくつか例を挙げます)。
基本的にスプリント中はストーリーを達成するための機能の開発に取り組みます。そのため、こうした開発環境の準備は事前に済ませておくことが推奨されます。
- 開発標準の定義(GitHub flow、Lintの設定 等)
- 開発時のDeploy方法の定義・マニュアル化
- テスト方法・自動化の設定
- CI/CDの設定
特に重要だと感じるポイント
スプリントに入る前にしっかり準備をしたら、必要な情報はドキュメントとして残します。
アジャイル開発というと、ドキュメントを作成しないものと誤解されがちです。しかし「ドキュメントで情報共有してはいけない」というわけではありません。
全メンバーのデスクが隣り合っていて、いつでも質問できて、お互いのタスク状況が確認し合えるような環境でない限り、最低限のドキュメントは作成・更新して情報共有に活用するほうが良いです。
発注者との認識の相違を防止することや、プロジェクト途中からアサインされるメンバーへのスムーズな情報共有などのためにも、最低限のドキュメントは管理ルールを定めて運用することが大切です。
アジャイル開発に取り組みたい方、改善したい方へ
今回の記事では「NCDC Agile Development Process」に関して「デザイン」フェーズの説明をさせていただきました。
NCDCでは「NCDC Agile Development Process」をベースに、これからアジャイル開発に取り組みたい方や、既存のやり方を改善したい方へのご支援を行なっています。
アジャイルを用いた開発案件の依頼先をお探しの方、または自社でアジャイル開発体制を構築したい、改善したいといったご相談がある方は、お問い合わせフォームからご連絡ください。
また、ご希望の方には資料も配布しております。
NCDC Agile Development Processを取り入れてみたい方は下記フォームからお申し込みください。
資料請求「アジャイル開発方法論」
NCDC Agile Development Process解説記事
キックオフ(Kick-off)
要求(Requirements)
デザイン(Design)←本記事
スプリント計画(Sprint Planning)
開発(Development)
総合テスト(System Testing)