かんたんで複雑な、ウェブサービスの作り方を紐解くブログ

アジャイル開発の進め方とは?

Management
2021/08/11

要件定義→設計→実装と順々に工程を進んでいくウォーターフォールに対して、要件定義から実装までを短いスパンで行うアジャイル。 さまざまな場で取り入れられていますが、具体的にはどのように進めるべきなのでしょうか。 今回は、アジャイル開発の大枠をまとめています。 ※今回のブログでは、以下書籍・記事を参考にしています。 いちばんやさしいアジャイル開発の教本 https://www.visual-paradigm.com/scrum/what-is-sprint-review/

そもそもアジャイル開発とはなにか?

アジャイル開発とは「サービスやプロダクトを作る際に、短い一定期間のサイクルで開発とリリースを繰り返す開発手法のことを指します。 アジャイル開発が生まれた背景としては、IT技術の発達により急速な市場の変化が起こっていること、またサブスクリプションモデルの浸透によりサービスのスイッチングコストが下がっていることなどから、結果として常に素早く自社のサービスやプロダクトを変化・改善させていく必要が発生したことから生まれました。 アジャイル開発の方針としては、以下「アジャイルソフトウェア開発宣言 」にまとめられています。 https://agilemanifesto.org/iso/ja/manifesto.html 宣言の中で記載されているように、「変化を見据え」「対話を繰り返し」「動くソフトウェアを作る」ことが重要視されています。 なお、アジャイル開発と聞くと「早く安くできるのではないか」と誤解されがちですが、変化の早い市場において、柔軟に方針転換を行っていくことをメリットとして行われる開発手法のため、変化が大きければ当然のように通常のウォーターフォールよりも長く、そしてコストが高くなる場合もあります。 またアジャイル開発の進め方としては「チームで開発を行うこと」「インクリメンタル(少しずつ開発を行うこと)」「イテレーティブ(繰り返し開発を行うこと)」が進める上での前提方針となります。

アジャイル開発の具体的な進め方とは

アジャイル開発といっても「カンバン」「スクラム」など様々な実施手法が考案されており、少しずつその手法は異なります。そのため今回は、一般的な手法を抜粋し記載しています。 [スプリントによる期間を定めた開発] アジャイル開発はウォーターフォールと異なり、「スプリント」と呼ばれる一定期間のタイムボックスを定め、その一定期間の範囲内で「要件定義→設計→開発→テスト→リリース」までを全て実施します。 1スプリントの期間としては、以下「アジャイル宣言の背後にある原則」での記載では「2-3週間から2-3ヶ月」とありますが、開発の高速化により現在では1〜4週間程度の短い期間にて行います。 https://agilemanifesto.org/iso/ja/principles.html また、具体的なスプリント内でのコミュニケーションでは、以下4つのミーティングが実施されます。 【1】スプリントプランニング スプリント開始タイミングで行われ、まずはそのスプリントの「目的」「作る成果物」「作る方法」などを定めます。 【2】デイリースクラム スプリント中に毎朝行うミーティングです。昨日実施したことと今日実施すること、加えて進める上での障害やヘルプが必要な点があれば、15分ほどの短い時間で実施します。 【3】スプリントレビュー スプリントの最終日に行われ、スプリント内での成果物の確認、またスプリントで開発できたもの、次のスプリントに持ち越すものなどを確認します。 【4】スプリントレトロスペクティブ スプリントの最終日、スプリントレビューの後に行われます。成果物自体の確認をスプリントレビューで行った後、主にスプリント内部の活動、そのプロセスに関してよかった点、悪かった点を含めて振り返りを行っていきます。 [スプリントの見積もり] アジャイルでのタスクの見積もり方法としては、まずは全体の見積もりを行います。この段階では全てのスプリントを合算した見積もりを算出します。 次に、各スプリント毎に分解して見積もりを行っていきます。一つひとつのスプリント毎にどの程度の要件までが達成可能かを算出していきます。 各スプリントでは「ベロシティ」と呼ばれる、全メンバーにより達成できる最大値を予め数値で算出しておき、そのベロシティの範囲でスプリントで開発できる機能を決定します。 これら見積もりを行う上でよく使われるのが「フィボナッチ数列」ですフィボナッチ数列では、「1→2→3→5→8→13→21→34」のように、直前の2つの数の和を合計した数値のみを扱います。フィボナッチ数列では順々に数値の増加幅が大きくなっていくため、見積もりの精度を表しやすくなっています。 [プロダクトバックログとスプリントバックログ] では、各スプリントをどのように定義していくべきか。アジャイルでは開発機能として「プロダクトバックログ」と「プロジェクトバックログ」の2つを利用します。 「プロダクトバックログ」とは、プロダクト全体を考えた際に開発すべき全ての開発機能を記したものであり、「スプリントバックログ」とは、各スプリントで開発すべき内容のみを抜粋したものとなります。 通常流れとしては以下となります。 【1】「プロダクトバックログ」を作成 【2】「プロダクトバックログ」に対して優先順位を付与 【3】優先順位の高いものから、各スプリントで開発可能な内容を「スプリントバックログ」に移行 【4】「スプリントバックログ」の中で開発を実施 このようにアジャイルでは「スプリントにより細かく区切ったタイムラインで開発を繰り返すこと」「バックログ上でいまやるべきことに集中すること」が大きなポイントとなります。

各スプリント内でのメンバー

ウォーターフォールと異なり、アジャイルでは各メンバーが完全にスプリントの間フルコミットする形となります。 具体的なスプリントへの参加メンバーとしては以下です。 ■プロダクトオーナー 原則一人とし、プロダクトの価値を最大化する役割を担います。具体的にはプロダクトバックログの管理、またその優先順位付けなどを行います。 ■スクラムマスター スプリントを含め各プロセスを司る役割です。スクラムの促進と支援、またスクラム内部で発生する各種ミーティングなどのファシリテーション、開発チームに対するコーチングなどを行います。 ■開発メンバー スクラム内にて必要な設計、デザイン作成、プログラミングなどを行います。作成するサービスやプロダクトの規模に応じて、必要な人員がアサインされる形になります。 基本的には1チーム10人以下とし、できる限り必要なメンバーのみで最少人数にて動くことで、高速なアジャイルを実現することが可能となります。

最後に感想として

以上がアジャイル開発の基本要素です。 ただ、自分自身も長くプロジェクトに関わっている中で、規定どおり行うだけでは中々うまく進めることも難しかったりします。 そのため、それぞれの会社やプロジェクト、関わるメンバーのスキルセットなども踏まえつつ、柔軟にやり方を変え、試行錯誤を行っていく姿勢を持ち続けることが、結果的には成功の秘訣になるのだと思います。 読んでくださった方、ありがとうございます。