現在のシステム開発とアジャイル手法

Page content

現在のシステム開発とアジャイル手法

本書では、変化の激しい市場環境に対応する現代のシステム開発手法に焦点を当て、リーンスタートアップ、アジャイル開発について解説します。これらの手法がどのようにしてプロダクトの価値を最大化し、顧客のニーズに応えるかを詳述します。従来型の固定スコープ開発については、別資料を参照してください。

システム開発の進化と現状

プロダクト開発とシステム開発の関係

プロダクトは顧客の課題を解決するための成果物です。プロダクトを構成する要素として、デジタル技術を利用したシステムは非常に重要です。現在のプロダクト開発では、迅速な対応が求められているため、システム開発にも同様のスピード感と柔軟性が必要とされています。

従来のシステム開発

従来型のシステム開発では、計画段階の企画が正しいことを前提に、予定の予算と期間内で成果物を作成することを重視していました。計画を重視することから、予測型とも呼ばれます。

事前に定めた要件に基づく開発が行われ、変更や調整が必要な場合でも、予算やスケジュールの範囲内で対応することが求められていました。このアプローチは、明確な要件が存在し、変更が少ないプロジェクトにおいては効果的でしたが、技術の進化や市場の変化に対応することが難しいという課題がありました。

システム開発に求められる進化

現在は市場の変化が激しく、技術の進化も早くなっています。企画段階で予測できる状況は限定的であり、開発中にも大きく環境が変化することから、より柔軟で適応的なアプローチが求められています。このような背景から、経験型の開発手法が注目されるようになりました。経験型開発では、以下のサイクルを重視します。

  • 仮説の立案: 顧客のニーズや市場の変化に基づいて仮説を立てます。
  • 迅速な検証: MVP(Minimum Viable Product)を用いて、仮説を迅速に検証します。
  • フィードバックと改善: 得られたフィードバックを基に、継続的な改善を繰り返します。

リーンスタートアップの基本概念とMVP

リーンスタートアップの基本概念

リーンスタートアップは、資源を最小限に抑えながら迅速に市場投入を行い、実際の顧客からのフィードバックを基にプロダクトを改善するための方法論です。以下の仮説検証プロセスを通じて、企業はリスクを低減し、顧客に真に価値あるプロダクトを提供することができます。

  • 構築(Build): 最小限の機能を持つプロダクト(MVP)を構築し、迅速に市場に投入します。
  • 計測(Measure): MVPを使って収集されたデータや顧客からのフィードバックを計測します。
  • 学習(Learn): 得られたデータを分析し、仮説の有効性を評価し、次のステップに反映します。

MVP

MVP(Minimum Viable Product)は、必要最小限の機能を持つプロダクトであり、迅速に市場に投入するためのものです。MVPの目的は、リソースを抑えつつ、仮説を実際の顧客の反応を通じて検証することにあります。MVPは実際に顧客に価値を提供するプロダクトであり、プロトタイプやβ版のように開発中であることを意味しません。逆に、全てをシステムとして実装する必要はなく、顧客が必要な体験を得られるのであれば、内部が手動になっているなど、実装方式は問いません。

アジャイル手法

リーンスタートアップを支えるアジャイル手法

リーンスタートアップの成功には、アジャイル手法が不可欠です。アジャイル手法は、変化に柔軟に対応し、迅速に仮説を検証するためのフレームワークを提供します。これにより、スタートアップは市場の変化に即応し、リソースを最適に活用することが可能となります。アジャイル手法を取り入れることで、開発チームは小さなサイクルで作業を進め、継続的にフィードバックを得てプロダクトを改善していきます。

アジャイルソフトウェア開発宣言

アジャイルソフトウェア開発宣言は、2001年にソフトウェア開発の専門家たちによって提唱され、アジャイル開発の基本的な価値観と原則を定義しています。アジャイルマニフェストは以下の4つの価値を強調しています:

  1. 個人と対話: プロセスやツールよりも、人々の相互作用を重視します。
  2. 動くソフトウェア: 包括的なドキュメントよりも、実際に動作するソフトウェアを重視します。
  3. 顧客との協調: 契約交渉よりも、顧客との協調を重視します。
  4. 変化への対応: 計画に従うことよりも、変化に対応することを重視します。

スクラム

スクラムは、アジャイル手法の一つで、チームが複雑なプロジェクトを管理しやすくするためのフレームワークです。スクラムは以下の要素で構成されます。

  • スプリント: 1〜4週間の短期間で開発サイクルを回し、各スプリントの終了時に動作するプロダクトを提供します。
  • 役割: スクラムマスター、プロダクトオーナー、開発チームなどの明確な役割を持ち、それぞれの責任を明確にします。
  • イベント: スプリントプランニング、デイリースクラム、スプリントレビュー、スプリントレトロスペクティブといった定期的なミーティングを実施し、チームの協力を促進します。
  • アーティファクト: プロダクトバックログ、スプリントバックログ、バーンダウンチャートなどのツールを使って、進捗状況を視覚化します。
https://techblog.yahoo.co.jp/entry/2021051030146469/

https://techblog.yahoo.co.jp/entry/2021051030146469/

カンバン

カンバンは、作業の進捗を視覚化し、効率的に管理するためのアジャイル手法です。カンバンの起源は、日本のトヨタ生産方式(TPS)にあります。TPSでは、生産ラインの効率を最大化するために、作業の流れを視覚化し、在庫管理を最適化するための「看板(かんばん)」システムを使用しました。カンバンは以下の要素で構成されます。

  • カンバンボード: 作業の流れを視覚化するためのボードで、各タスクをカードとして表示します。ボードは、タスクの状態(例:To Do、In Progress、Done)に分かれています。これにより、チームは作業の進捗状況を一目で把握できます。
  • WIP(Work In Process)制限: 各ステージで同時に進行できる作業の数を制限することで、ボトルネックを防ぎ、作業効率を向上させます。これにより、チームは過負荷を避け、作業の流れをスムーズに維持します。
  • 継続的な改善: 定期的にプロセスを見直し、改善することを重視します。これにより、チームは常に最適なパフォーマンスを維持できます。

カンバンは、スクラムにおいても大きな影響を与えました。スクラムの一部としてカンバンボードが使用されることが多く、タスクの視覚化と進捗管理に役立っています。また、WIP制限の概念は、スクラムのスプリント計画やバックログ管理においても活用されています。

https://ja.wikipedia.org/wiki/かんばん_(ソフトウェア開発)

https://ja.wikipedia.org/wiki/かんばん_(ソフトウェア開発)

その他の手法

アジャイル開発には、スクラムやカンバン以外にも多くの手法があります。以下にいくつかの代表的な手法を紹介します:

  • XP(エクストリームプログラミング): 高品質なソフトウェアを迅速に開発するための手法で、ペアプログラミング、テスト駆動開発(TDD)、継続的インテグレーションなどのプラクティスを重視します。
  • DSDM(Dynamic Systems Development Method): ビジネスニーズに基づいて迅速にシステムを開発するためのフレームワークで、プロジェクト全体の管理とガバナンスを強化します。
  • 大規模スクラム(LeSS: Large Scale Scrum): 複数のスクラムチームが協力して大規模なプロダクトを開発するためのフレームワークです。LeSSは、スクラムの原則を拡張し、大規模なプロジェクトでも一貫性と効率性を維持することを目指します。

アジャイル開発実践

インショプションデッキ

インセプションデッキは、プロジェクトの初期段階において、全チームメンバーが共通の理解を持つためのツールです。これは、プロジェクトの目的、ビジョン、成功基準を明確にし、全員が一貫した方向性で作業を進めるための基盤を提供します。インセプションデッキは、以下の質問に答える形式で構成されています。

  • 我われはなぜここにいるのか?
  • エレベーターピッチを作る
  • パッケージデザインを作る
  • やらないことリストを作る
  • 「ご近所さん」を探せ(プロジェクトコミュニティ)
  • 解決案を描く(技術的な解決策)
  • 夜も眠れなくなるような問題は何だろう?
  • 俺たちの”Aチーム”
  • 期間を見極める
  • 何を諦めるのかをはっきりさせる(トレードオフ・スライダー)
  • 何がどれだけ必要なのか?(初回のリリースに必要なもの)
https://blog.nextscape.net/research/agile/inceptiondeck

https://blog.nextscape.net/research/agile/inceptiondeck

チームビルディング

アジャイル開発において、強固なチームビルディングは成功の鍵です。効果的なチームビルディングには以下の要素が含まれます。

  • 明確な役割(ロール)の定義: 各メンバーの役割と責任を明確にし、全員が自分の貢献を理解します。これにより、役割の重複や欠落を防ぎ、効率的なコラボレーションが促進されます。
  • 心理的安全性: メンバーが自由に意見を出し合い、失敗を恐れずに挑戦できる環境を作ります。心理的安全性は、チーム内での信頼関係を構築し、イノベーションと問題解決を促進します。
  • 自己組織化: チームが自主的にタスクを管理し、効率的に作業を進めることを支援します。自己組織化されたチームは、メンバーが自律的に役割を果たし、迅速に意思決定を行うことができます。
  • 多様性の尊重: 多様なバックグラウンドやスキルを持つメンバーを含めることで、創造的な問題解決を促進します。多様性は、異なる視点やアイデアを生み出し、革新的なアプローチを支援します。
  • 継続的改善: 定期的にプロセスを見直し、改善することで、チームのパフォーマンスを向上させます。継続的改善は、チームが常に最適なパフォーマンスを発揮できるようにするための重要な要素です。
  • 体制の維持: チームの構成メンバーを安定させることも重要です。メンバーの変更は非常に高コストであり、チームのベロシティに大きな影響を与えます。体制の維持はアジャイル開発において最も重要な要素です。

DevOps

DevOpsはソフトウェア開発(Development)とIT運用(Operations)を統合することで、迅速かつ効率的なソフトウェアデリバリーを実現するための文化やプラクティス集です。アジャイル開発と密接に関連し、システム開発ライフサイクル全体を通じて継続的な改善と迅速なリリースを目指します。DevOpsの主な目的は、開発と運用のギャップを埋め、品質の高いソフトウェアを頻繁かつ確実に提供することです。

https://ja.wikipedia.org/wiki/DevOps

https://ja.wikipedia.org/wiki/DevOps

さらにITシステムとして最も重要であるセキュリティに関する考慮を含め、DevSecOpsと定義することもあります。

https://www.atlassian.com/ja/devops/devops-tools/devsecops-tools

https://www.atlassian.com/ja/devops/devops-tools/devsecops-tools

ユーザーストーリー

ユーザーストーリーは、アジャイル開発における要求仕様の一形式で、ユーザー視点からシステムの機能を簡潔に記述します。従来のシステム開発では、要件定義は詳細かつ包括的なドキュメントとしてシステム中心に記述されることが多く、後からの変更が難しい固定的なアプローチが採られていました。

従来の要件定義との違い

  • システム中心 vs ユーザー中心: 従来の要件定義はシステムが何をすべきかを詳細に記述し、技術的な仕様が強調されます。一方、ユーザーストーリーは「ユーザーが何を達成したいか」を中心に据え、ユーザーのニーズや行動に焦点を当てます。
  • 固定的 vs 柔軟なアプローチ: 従来の要件定義は初期段階で全ての要件を決定し、変更が困難です。ユーザーストーリーは小さな単位で反復的に要件を定義し、変化に柔軟に対応できます。
  • 包括的ドキュメント vs 簡潔な記述: 従来の要件定義は詳細なドキュメントが必要ですが、ユーザーストーリーは簡潔に記述され、迅速な開発サイクルに適しています。

MVPとの関係

ユーザーストーリーはMVP(Minimum Viable Product)と密接に関連しています。MVPは、ユーザーストーリーに基づいて最小限の機能を持つプロダクトを迅速に市場に投入し、ユーザーからのフィードバックを得るためのものです。これにより、実際のユーザーの反応を基にプロダクトを改善し、ユーザーストーリーで定義されたニーズを満たしていきます。

ユーザーストーリーの例

  • ショッピングサイトの客として、価格帯とカテゴリーで商品をフィルターしたい。そうすることで、自分の予算と好みに合った商品をすぐに見つけられるようにするため。
  • プロジェクトマネージャーとして、チームメンバーにタスクを割り当て、締め切りを設定したい。そうすることで、すべてのタスクが期限内に適切な人によって完了されることを確実にするため。
  • ユーザーとして、誰かが私の投稿に「いいね」やコメントをしたときに通知を受け取りたい。そうすることで、フォロワーと積極的に関わり、迅速に返信するため。
  • 学生として、各コースの進捗状況を追跡したい。そうすることで、どのトピックに集中する必要があるかを把握し、理解を深めるため。
  • 患者として、オンラインで医師の予約を取りたい。そうすることで、オフィスに電話することなく、自分の都合の良い時間に予約を取るため。

まとめ

  • 従来のシステム開発は予測型で、計画重視の固定スコープ開発を行っていました。
  • 現在のシステム開発は経験型で、迅速に市場の変化に対応することが求められています。
  • アジャイル手法は、変化に対応するために必要となる、チームの機能性と柔軟性を高めるためのフレームワークを提供します。
  • MVPとアジャイル手法により、短期間での仮説検証と継続的な改善が可能になります。
  • チームビルディングの要素として、明確な役割定義、心理的安全性、自己組織化、多様性の尊重、継続的改善、体制の維持が重要です。

用語解説

用語 解説
リーンスタートアップ 資源を最小限に抑えながら迅速に市場投入を行い、実際の顧客からのフィードバックを基にプロダクトを改善するための方法論。
アジャイル開発 変化に柔軟に対応し、迅速に仮説を検証するためのソフトウェア開発手法。
スクラム アジャイル手法の一つで、チームが複雑なプロジェクトを管理しやすくするためのフレームワーク。
カンバン 作業の進捗を視覚化し、効率的に管理するためのアジャイル手法。
MVP Minimum Viable Productの略で、最小限の機能を持つプロダクトを迅速に市場に投入するためのもの。
WIP Work In Processの略で、各ステージで同時に進行できる作業の数を制限すること。
フィードバックサイクル 仮説を立て、迅速に検証し、得られたフィードバックを基に継続的に改善するサイクル。
アジャイルマニフェスト アジャイルソフトウェア開発の基本的な価値観と原則を定義した宣言。
エクストリームプログラミング (XP) 高品質なソフトウェアを迅速に開発するための手法で、ペアプログラミングやテスト駆動開発(TDD)を重視する。
DSDM Dynamic Systems Development Methodの略で、ビジネスニーズに基づいて迅速にシステムを開発するためのフレームワーク。
LeSS Large Scale Scrumの略で、複数のスクラムチームが協力して大規模なプロダクトを開発するためのフレームワーク。
インセプションデッキ プロジェクトの初期段階において全チームメンバーが共通の理解を持つためのツール。
DevOps ソフトウェア開発(Development)とIT運用(Operations)を統合することで、迅速かつ効率的なソフトウェアデリバリーを実現する文化やプラクティス集。
DevSecOps DevOpsにセキュリティを統合したもので、開発プロセスの中でセキュリティを考慮すること。
ユーザーストーリー ユーザー視点からシステムの機能を簡潔に記述した要求仕様。
バックログ プロジェクトやプロダクトに必要な作業や機能の一覧で、優先順位が付けられているもの。
ベロシティ スクラムにおけるベロシティは、1スプリント(通常1〜4週間)でチームが完了できる作業量を示す指標。過去のスプリントで完了したストーリーポイントの合計を基に計算され、チームのパフォーマンスや進捗を評価・予測するために使用される。

参考文献