NTT DATA TECH
🔰

初心者向けアジャイル講座~アジャイル開発とは~


はじめに

皆さんはアジャイル開発とは何かご存じでしょうか?
ソフトウェア開発の世界ではこれまでウォーターフォール型開発が主流でしたが、
2000年代以降、アジャイル開発という新たな開発手法が定義され、近年ではさまざまな現場でこのアジャイル開発が行われています。

本記事ではアジャイル開発についてあまり知らない方やこれから初めてアジャイル開発を実践する方に向けて、アジャイル開発の基礎を理解するための記事を連載していきます。
今回はアジャイル開発の理念や概要について説明します。

アジャイル開発のより詳細な手法などについては、別記事で順次紹介していきますので、是非そちらもご覧ください。
本連載を一通り読んだ後にはあなたもアジャイル開発の基礎が身についているはずです!


アジャイル開発が求められる背景

私たちが生活する現代は過去と比べて変化が激しく、物事の予測が困難かつ、
それらが複雑に関係しあっている複雑かつ不確実な世の中になっています。

そのような環境では、従来型の「計画→実行→完成」モデルでは市場や社会の変化に追随できず、プロダクトが完成した頃には当初期待していた価値と差が生まれてしまう場合もあります。そこでこれからは、柔軟に変化に対応して価値を生み出す仕組みが必要となっています。

アジャイル開発は、
「ビジネス価値の実現にむけて、ITとビジネスにおける複雑・不確実な問題を探索と適応を繰り返して解決するアプローチ」
であり、今の時代に適した開発プロセスであると言えます。

アジャイル開発の基本的考え方

アジャイル開発は、2001年に公開された「アジャイルソフトウェア開発宣言」に基づいています。
そこでは以下4つの価値が定義されています。

プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、

価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。

アジャイル開発での最終的な目標は、ビジネスの価値の最大化です。
開発者も常に顧客と同じ目線で、顧客にとっての価値が最大となるよう取り組む姿勢が必要です。

また、アジャイルソフトウェア開発宣言では
アジャイル開発を実施するうえでの12の原則も定義されています。
内容は省略しますが気になった方は「アジャイル宣言の背後にある原則」をご覧ください。

ウォーターフォール型開発とアジャイル開発の違い

従来のウォーターフォール型開発とアジャイル開発ではさまざまな点で違いがあります。
例えば、開発プロセスや要件の扱い方、ドキュメントの立ち位置についてなどです。
ウォーターフォール型開発とアジャイル開発の違いについて、簡単な表にまとめてみました。

ウォーターフォール アジャイル
開発プロセス 要件定義→設計→実装→テスト→運用・保守という順に前工程の完了をもって次工程に着手する。 短期間のサイクルで要件定義~テストを繰り返して開発を行う。
プロジェクト管理 初期段階に立てた計画に基づいて開発を進める。 短期間のサイクルで計画を立て直して開発を進める。
ドキュメント 設計書等の詳細なドキュメントを各工程で作成する。 動くソフトウェアを優先して、ドキュメントの作成は最小限にとどめる。
スコープ変更 後工程に進むにつれて変更の受け入れが難しくなる。 短期間のサイクルごとに変更を取り込むことが可能。
成果物 各工程が完了したタイミングで提供。 短期間のサイクルごとに動く成果物を提供。

上記はあくまで一例ですが、アジャイル開発は、開発中の計画変更に柔軟に対応できる点やその都度顧客に動くソフトウェアを提供できる点に利点があると言えます。


アジャイル開発の代表的手法

以下ではアジャイル開発で用いられる二つの代表的な手法について簡単に紹介します。

スクラム

アジャイル開発における代表的な手法の一つがスクラムです。
スクラムについて、スクラムガイドでは以下のように定義されています。

スクラムとは、複雑な問題に対応する適応型のソリューションを通じて、人々、チーム、組織が価値を生み出すための軽量級フレームワークである。

具体的には、1~4週間程度の短い期間(スプリント)ごとに成果物を作成し、レビューと振り返りを行います。
スクラムは以下のロール及びイベントで構成されます。

スクラムの基本ロール

スクラムチームは以下3つのロールで構成されています。

プロダクトオーナー(PO)

スクラムチームから生み出されるプロダクトの価値を最大化することの結果に責任を持ちます。

スクラムマスター(SM)

スクラムガイドで定義されたスクラムを確立させることの結果に責任を持ちます。

開発者(Dev)

各スプリントにおいて、利用可能なインクリメントのあらゆる側面を作成することを確約します。

代表的なスクラムイベント

スクラムでは以下のようなイベントを実施します。

スプリントプランニング

スプリントプランニングはスプリントの起点であり、ここではスプリントで実行する作業の計画を立てます。

デイリースクラム

デイリースクラムは、スクラムチームの開発者のための 15分のイベントです。

スプリントレビュー

スクラムチームは、主要なステークホルダーにスプリントの成果(動く成果物など)のデモを行い、プロダクトゴールに対する進捗について話し合います。

スプリントレトロスペクティブ

スクラムチームは、個人、相互作用、プロセス、ツール、完成の定義に関して、今回のスプリントがどのように進んだかを検査します。

エクストリームプログラミング(XP)

続いてもう一つの代表的手法であるエクストリームプログラミング(XP)について紹介します。
XPとは「アジャイルソフトウェア開発宣言」の提唱者の一人であるKent Beck氏が提唱した高品質なソフトウェアの開発およびチームの生産性向上を目的としたフレームワークです。
XPでは以下の5つの価値が重要視されています。

  • コミュニケーション(Communication)
  • シンプリシティ(Simplicity)
  • フィードバック(Feedback)
  • 勇気(Courage)
  • リスペクト(Respect)

XPの実践方法としては「ペアプログラミング」「テスト駆動開発(TDD)」「継続的インテグレーション」などが挙げられます。


まとめ

本記事ではアジャイル開発の概要について簡単にまとめてみました。
アジャイル開発にこれから触れる方にとって、少しでもイメージを掴むきっかけになっていれば幸いです。次回以降はスクラムおよびスクラムにおける各ロール・イベントなどについて、より詳細に説明していきますのでぜひそちらもご覧ください。最後までお読みいただきありがとうございました。

※関連記事は順次公開予定です。


参考リンク

NTT DATA TECH
NTT DATA TECH
設定によりコメント欄が無効化されています