20-2. アジャイル開発

20-2-1. アジャイル開発の概要

アジャイル開発の必要性

 現代は、人や組織を取り巻く環境が、複雑さを増し、将来の予測が困難なVUCA(ブーカ)(VUCA:Volatility(変動性)、Uncertainty(不確実性)、Complexity(複雑性)、Ambiguity(曖昧性))の時代」だといわれています。
複雑な問題を解決する論理的に導ける最適解はありません。従来のような問題を分析して解決する方法ではなく、観察とフィードバックによってあるべき姿に向けて改善、進化し続ける必要があります。こうした背景から「アジャイル開発」が注目されています。
当初アジャイル開発は、ソフトウェアエンジニア主体の開発手法でしたが、近年は不確実さに対応するビジネス戦略としても採用されています。つまり「アジャイル開発」の考え方は、ソフトウェア開発だけでなく、ビジネス戦略などにも活用できるものになっています。

アジャイル開発とは

 アジャイル(Agile)とは、直訳すると「敏捷」「素早い」などの意味を持ちます。アジャイル開発は、新しい機能を短期間で継続的にリリースするソフトウェア開発のアプローチです。従来のアプローチ方法は、試行錯誤に向いていません。そのため、状況変化への対応を繰り返す適応するアプローチ方法であるアジャイル開発が有用であると考えられます。

非アジャイル開発とアジャイル開発の違い

図81. 非アジャイル開発とアジャイル開発の違い

 アジャイル開発では、作成したアウトプットの基づき、情報システムの挙動がどうあるべきかを検討、判断し、その次に取り掛かる開発行為を最適化します。また、アジャイル開発は従来の開発スタイルとは異なり、すべての要求、仕様を言語化し、事前のドキュメントとして整備することなく開発を行うこともできます。ドキュメントで定義しなくとも、短期間のスプリントで得られるアウトプット(インクリメント)が、動くシステムそのものとなり得るためです。ドキュメントの作成にかける手間を最小限に留め、情報システムそのもので動作確認を行うことで、要求の確認から設計、開発、テストまで、情報システムの機能追加を短い期間で行うことができます。また、アジャイル開発には、下記のような意義があります。

アジャイル開発の9つの意義 ➀ フィードバックに基づく開発で、目的に適したシステムに近づけていく
➁ 形にすることで、関係者の認識を早期に揃えられる
➂ システム、プロセス、チームに関する問題に早く気づける
➃ チームの学習効果が高い
➄ 早く開発を始められる
➅ システムの機能同士の結合リスクを早期に解消できる
➆ 利用開始までの期間を短くできる
➇ 開発のリズムが整えられる
➈ 協働を育み、チームの機能性を高める

 前述の9つの意義を十分発揮するためには、以下の前提をチームおよび関係者間で確認する必要があります。前提を理解して取り組むことでスムーズに進めることができます。

9つの意義を十分に発揮するための前提 ➀ 常にカイゼンを指向すること
➁ 対話コミュニケーションの重視
➂ 情報システムの変更容易性を確保し続ける
➃ 利用者目線で開発を進める

詳細理解のため参考となる文献(参考文献)

  • DS-121 アジャイル開発実践ガイドブック
  • 20-2-2. アジャイル開発の実施ポイント

     アジャイル開発を実践するに当たり、まずはプロセスを理解することが大切です。アジャイル開発の代表格であるスクラムを例に、アジャイル開発のプロセスを説明します。

    ポイント
    ・ アジャイル開発は経験者が参画することを前提とします。アジャイル開発に関する資格を有している場合も、一定の知識を有していることは判断できますが、アジャイル開発を実践できるかを判断することができません。参画者がどのようなシステム開発において、どのような役割を果たしたのかを確認することが重要です。

    ・ アジャイル開発の進め方には厳格な決まりごとや規範はありません。本書で説明(例示)する進め方、メンバーの役割(ロール)など、実際のソフトウェア開発プロジェクトでそのまま適用するものではありません。アジャイル開発の基本を習得したのち、実際のプロジェクトや組織に適したやり方を取捨選択し、カスタマイズすることが必要となります。

    ・ 「唯一の正しい」アジャイル開発というものはありません。自分のいる組織に合ったやり方が、その組織のビジネスや活動、文化から自然と育っていくことがアジャイル開発の本質です。

    アジャイル開発のプロセス(スクラムの例)

    図82. アジャイル開発のプロセス(スクラムの例)

    スクラムのプロセス:1.プロダクトバックログの作成
    特徴 プロダクトオーナーがプロジェクトの全体的な要件や機能をリストアップします。このリストは「プロダクトバックログ」と呼ばれ、優先順位がつけられます。
    スクラムのプロセス:2.スプリントプランニング
    特徴 チームはスプリント(通常1〜2週間、長くても4週間)ごとに作業する項目を選びます。この選ばれた項目のリストは「スプリントバックログ」と呼ばれます。
    スクラムのプロセス:3.デイリースクラム(デイリースタンドアップ)
    特徴 毎日、チームは短いミーティングを行い、進捗状況を共有し、問題点を解決します。このミーティングは通常15分以内で行われます。
    スクラムのプロセス:4.スプリントの実行
    特徴 チームはスプリントバックログに基づいて作業を進めます。各メンバーは自分のタスクに集中し、協力して目標を達成します。
    スクラムのプロセス:5.スプリントレビュー
    特徴 スプリントの終わりに、チームは完成した作業をプロダクトオーナーやステークホルダーにデモンストレーションします。フィードバックを受け取り、次のスプリントに反映させます。スプリントごとにリリースを行うことが理想ですが、業務向けアプリケーションの場合には、エンドユーザーの混乱を避けるため、ある程度まとまった成果物ができた段階でリリースする(複数回のスプリント後にリリースする)ことが多いようです。
    スクラムのプロセス:6.スプリントレトロスペクティブ
    特徴 チームはスプリントの振り返りを行い、何がうまくいったか、何が改善できるかを話し合います。このフィードバックをもとに、次のスプリントでの改善策を考えます。
    役割(ロール)の名称:プロダクトオーナー
    役割 プロダクトのビジョンを持ち、バックログの優先順位を決定します。
    役割(ロール)の名称:スクラムマスター
    役割 チームがスクラムのプロセスを正しく実行できるようサポートし、障害を取り除きます。
    役割(ロール)の名称:開発チーム
    役割 実際に開発作業を行うメンバーです。
    役割(ロール)の名称:ステークホルダー
    役割 エンドユーザー、経営者、総務・経理・法務部門などです。

    詳細理解のため参考となる文献(参考文献)

  • アジャイル領域へのスキル変革の指針 アジャイル開発の進め方
  • 中小企業向けサイバーセキュリティ対策の極意
    ページトップへ戻る