20-2. アジャイル開発
20-2-1. アジャイル開発の概要
現代は、人や組織を取り巻く環境が、複雑さを増し、将来の予測が困難なVUCA(ブーカ)(VUCA:Volatility(変動性)、Uncertainty(不確実性)、Complexity(複雑性)、Ambiguity(曖昧性))の時代」だといわれています。
複雑な問題を解決する論理的に導ける最適解はありません。従来のような問題を分析して解決する方法ではなく、観察とフィードバックによってあるべき姿に向けて改善、進化し続ける必要があります。こうした背景から「アジャイル開発」が注目されています。
当初アジャイル開発は、ソフトウェアエンジニア主体の開発手法でしたが、近年は不確実さに対応するビジネス戦略としても採用されています。つまり「アジャイル開発」の考え方は、ソフトウェア開発だけでなく、ビジネス戦略などにも活用できるものになっています。
アジャイル(Agile)とは、直訳すると「敏捷」「素早い」などの意味を持ちます。アジャイル開発は、新しい機能を短期間で継続的にリリースするソフトウェア開発のアプローチです。従来のアプローチ方法は、試行錯誤に向いていません。そのため、状況変化への対応を繰り返す適応するアプローチ方法であるアジャイル開発が有用であると考えられます。
アジャイル開発では、作成したアウトプットの基づき、情報システムの挙動がどうあるべきかを検討、判断し、その次に取り掛かる開発行為を最適化します。また、アジャイル開発は従来の開発スタイルとは異なり、すべての要求、仕様を言語化し、事前のドキュメントとして整備することなく開発を行うこともできます。ドキュメントで定義しなくとも、短期間のスプリントで得られるアウトプット(インクリメント)が、動くシステムそのものとなり得るためです。ドキュメントの作成にかける手間を最小限に留め、情報システムそのもので動作確認を行うことで、要求の確認から設計、開発、テストまで、情報システムの機能追加を短い期間で行うことができます。また、アジャイル開発には、下記のような意義があります。
➁ 形にすることで、関係者の認識を早期に揃えられる
➂ システム、プロセス、チームに関する問題に早く気づける
➃ チームの学習効果が高い
➄ 早く開発を始められる
➅ システムの機能同士の結合リスクを早期に解消できる
➆ 利用開始までの期間を短くできる
➇ 開発のリズムが整えられる
➈ 協働を育み、チームの機能性を高める
前述の9つの意義を十分発揮するためには、以下の前提をチームおよび関係者間で確認する必要があります。前提を理解して取り組むことでスムーズに進めることができます。
➁ 対話コミュニケーションの重視
➂ 情報システムの変更容易性を確保し続ける
➃ 利用者目線で開発を進める
詳細理解のため参考となる文献(参考文献)
20-2-2. アジャイル開発の実施ポイント
アジャイル開発を実践するに当たり、まずはプロセスを理解することが大切です。アジャイル開発の代表格であるスクラムを例に、アジャイル開発のプロセスを説明します。
ポイント
・ アジャイル開発は経験者が参画することを前提とします。アジャイル開発に関する資格を有している場合も、一定の知識を有していることは判断できますが、アジャイル開発を実践できるかを判断することができません。参画者がどのようなシステム開発において、どのような役割を果たしたのかを確認することが重要です。
・ アジャイル開発の進め方には厳格な決まりごとや規範はありません。本書で説明(例示)する進め方、メンバーの役割(ロール)など、実際のソフトウェア開発プロジェクトでそのまま適用するものではありません。アジャイル開発の基本を習得したのち、実際のプロジェクトや組織に適したやり方を取捨選択し、カスタマイズすることが必要となります。
・ 「唯一の正しい」アジャイル開発というものはありません。自分のいる組織に合ったやり方が、その組織のビジネスや活動、文化から自然と育っていくことがアジャイル開発の本質です。
詳細理解のため参考となる文献(参考文献)