基礎から実践まで!正しく覚える、理解する「アジャイル用語集」

今回は、利用頻度の高いアジャイル開発に関わる基本概念と混同しやすい用語を整理し、アジャイルを始めたばかりの方にもご理解いただけるように、わかりやすく解説します。

1.アジャイル用語

アジャイル開発(Agile Development)とは

アジャイルソフトウェア開発宣言を作成したメンバーより設立されたアジャイルアライアンスでは、アジャイル開発について下記のように記述しています:

「アジャイルとは、変化を生み出し、変化に対応する能力です。それは、不確実で激動の環境に対処し、最終的に成功する方法です。」

「アジャイルソフトウェア開発は、スクラム、エクストリームプログラミング、機能駆動型開発 (FDD)などのフレームワーク以上のものです。」

「アジャイルソフトウェア開発は、ペアプログラミング、テスト駆動型開発、スタンドアップ、計画セッション、スプリントなどのプラクティス以上のものです。」

「アジャイルソフトウェア開発は、アジャイルソフトウェア開発のマニフェストとその背後にある12の原則で表明された価値と原則に基づく、一連のフレームワークと実践の総称です。」

簡単に纏めるとアジャイル開発とは、アジャイルマニフェストとその12の原則(詳細は後続の節を参照)の価値観に基づき、システム(ソフトウェア)を変化に迅速かつ柔軟に対応できるよう開発する手法の総称です。
代表的なアジャイル開発手法はスクラム(Scrum)、エクストリームプログラミング(Extreme Programming)、カンバン(Kanban)、リーン(Lean)、SAFeなどがあります。

最初から要件定義や設計を細部まで厳密に確定してから一回の大きなサイクルで開発を進めるウォーターフォール開発に比べて、アジャイル開発の場合では一度ですべてを作ろうとせずに、優先度の高い重要な機能から着手し、設計・開発・デプロイというサイクルを短期間に繰り返してシステムをブラッシュアップしていくので、従来の開発手法に比べてアジャイル開発の場合はサービスインまでの期間を短縮できますし、途中に仕様変更が発生しても素早く対応可能です。

アジャイルソフトウェア開発宣言(アジャイルマニフェスト)/ アジャイルソフトウェアの12の原則

1990年代から、ウォーターフォールに代表される当時の開発手法はビジネス変化のスピードに対応できておらず、サービスインまでの期間をより短縮し、要件変更をより柔軟に対応できる開発モデルが求められるようになりました。こうした業界のフラストレーションから、「アジャイルソフトウェア開発宣言(アジャイルマニフェストとも呼ばれます)」と「アジャイルソフトウェアの12の原則」が生まれました。現在のアジャイル開発の指針となる存在です。

アジャイルソフトウェア開発宣言」では、ソフトウェア開発におけるアジャイルアプローチを導く下記4つの基本的な価値観を提唱しています。
 ①プロセスやツールよりも個人と対話を
 ②包括的なドキュメントよりも動くソフトウェアを
 ③契約交渉よりも顧客との協調を
 ④計画に従うことよりも変化への対応を

いずれも従来のウォーターフォール開発手法の弊害に対する改善策を提示しています。

アジャイルソフトウェアの12の原則」は、どのように変化へ積極的に対応し、顧客を中心に仕事を行うか、具体的な進め方を提示しています。要約して下記となります:

①顧客満足を最優先し、価値のあるソフトウェアを継続的に提供する
②要求の変更を歓迎し、変化を味方につけることによって、お客様の競争力を引き上げる
③動くソフトウェアをできるだけ短い期間でリリースする
④ビジネス側の人と開発者は一緒に働く
⑤意欲に満ちた人々を集めて、良い環境と支援を提供し、信頼する。
⑥フェイス・トゥ・フェイスで会話し、情報を伝える
⑦動くソフトウェアこそが進捗の尺度
⑧アジャイルプロセスは持続可能な開発を促進する。一定のペースを継続的に維持する
⑨技術的卓越性と優れた設計に対する注意を怠らない
⑩シンプルさ(無駄なく作業する)が本質
⑪最良のアーキテクチャ・要求・設計は自己組織的なチームから生み出される
⑫チーム効率をもっと高める方法を定期的に振り返り、最適なやり方を調整する

我々がアジャイル開発を採用するとき、方法論やプラクティスだけではなく、このような価値観や行動原則をしっかりと理解することが大事なこととなります。

ディシプリンド・アジャイル(Disciplined Agile)とは

ディシプリンド・アジャイル(以下はDA)は、もともとIBMで開発されたアジャイルのフレームワークで、その後ディシプリンド・アジャイル・コンソーシアムに譲渡され、2019年にPMIに買収されました。
The PMI Disciplined AgileのサイトでDAについて、以下のように説明しています。

「DAは様々なアジャイルプラクティスを利用して、チームや組織にとって最適な作業方法を導くツールキットです。」

「DAはベストプラクティスのコレクションを規定するのではなく、直面している状況を考慮して、目的に合った最適な方法を選択し、後で進化させる方法を教えてくれます。」

「DAは、既有のプラクティスと方法をいつどのように適用するかについてアドバイスを提供します。 ある意味では、スクラム、Kanban、PMBOK®ガイドなどのソースはプロセスのレンガを提供し、DAはレンガを効果的に組み合わせるモルタルを提供します。」

上述のように、DAは具体的な開発手法ではないし、どの開発手法にフォーカスしていることもなく、ハイブリッドのアジャイルアプローチを利用して、選択可能なオプションを提供し、状況や問題に応じてどのようなプラクティスが推奨されるか要約しています。開発者はDAを参照してスクラム、XP、Kanbanなどと組み合わせて使用しても可能です。

参考サイト:
https://www.pmi.org/disciplined-agile
https://www.pmi.org/disciplined-agile/introduction-to-disciplined-agile
https://www.pmi.org/disciplined-agile/ip-architecture/disciplined-agile-is-a-hybrid

DAについてより詳しく知りたい方は、当領域の専門家である藤井智弘氏の解説を読んでください。
ディシプリンド・アジャイルとは?エンタープライズ領域で失敗しないためのポイントを解説する

エンタープライズアジャイルとは

エンタープライズ領域のアジャイル開発を形容する言葉として、エンタープライズアジャイルという用語をよく聞くようになりましたが、明確な定義が定められていないようです。野村総合研究所のコラムでは、この言葉が用いられる文脈を分析して、以下の4つのいずれかを意図していることが多いと述べています。
 ①組織としてのアジャイル開発支援
 ②大規模なアジャイル開発
 ③基幹システムのアジャイル開発
 ④ウォーターフォールとの組合せ

④については多くのエンタープライズ企業における現状を表していますが、目指すべきアジャイル開発とは言えないので、①~③は「エンタープライズアジャイル」という言葉に持たれる意味に近いと思われます。

大企業の中に1つ、2つのアジャイルチームを立ち上げるだけではエンタープライズアジャイルとは言えません。エンタープライズ企業にアジャイルを導入するには、組織の変更として、ビジネス習慣、人材リソース、作業プロセスなどあらゆる面で従来のやり方と大きく変わりますので、その違いを明確に理解し、意識的に行動変革して、アジャイル開発へ取組むことが必要でしょう。

これからアジャイル開発を採用しようとしている企業の担当者は、以下の記事も読んでみてください。
多くの企業が知らない エンタープライズ・アジャイル開発 成功の要件

イテレーション(iteration)とは

イテレーションとは、反復、繰り返しという意味です。
アジャイルアライアンスでは、アジャイル開発におけるイテレーションについて、以下のように記述しています。

「アジャイルプロジェクトにおけるイテレーションはタイムボックスであり、その継続期間はプロジェクトによって異なりますが、通常は1~4週間です。ほとんどのプロジェクトではその期間が一度決まったら固定されます。

開発前の非常に短い『ビジョンと計画』フェーズと最後の『終了』フェーズを除いて、全プロジェクトが一連の反復で構成されることがアジャイルアプローチの重要な特徴です。

通常、イテレーションはカレンダーの週に合わせて調整されており、利便性を考慮して月曜日に開始し金曜日に終了すると設定しているプロジェクトが多いが、異なる規則を採用しても大丈夫です。

1イテレーションの期間が固定されているため、チームはスピードと残りの作業量に基づいて、プロジェクトの残りの期間を(100%正確ではありませんが)見積もることができます。」

設計、開発、テストなど一連の工程を短い期間にまとめ何度も繰り返すことで次第に完成度を高めていくアジャイルアプローチの中で、このサイクルの単位となるのがイテレーションです。スクラムに馴染みのある方は「スプリント」という用語を使用していますが、両者はほぼ同じ意味と考えてよいです。

2.アジャイル開発と混同しやすい用語

超高速開発・ローコード開発とは

近年、開発を効率化する手法として「超高速開発」という言葉をよく耳にするのではないでしょうか。時々アジャイル開発と混同されがちですが、両者は別の概念です。

また、「超高速開発」以外にも、「ローコード開発」という言葉も時々混ぜて使われている為、初めて触れる方は何が違うのか戸惑う時もあるようです。実は、「超高速開発」は日本で使われる言葉で、海外では「ローコード開発」(low-code development)と言われたりします。正確には両者に違いはありますが、基本的にほぼ同じ意味で使われています。

超高速開発(ローコード開発)とは、できる限りコードを書かずに短期間でシステムを開発する手法のことをいい、コードを書かない代わりに、事前に用意されたコンポーネントやツールを用いることで開発を進めます。ソースコードやテストケースの自動作成・実行や業務要件から設計の自動生成などにより、工程を簡略化したり自動化したりすることができ、システム開発の生産性向上とコスト削減に繋がります。

超高速開発はツールを利用してシステムを短期間で開発する手法であり、開発プロセス自体は変わりありません。ウォーターフォール型の開発でもそのツールを利用すれば、超高速開発になります。

超高速開発ではプラットフォーム側が事前に用意したコンポーネントやツールを使いながら積み木を組み立てるようにシステムやアプリを開発できるので、開発期間やコストを削減しやすいというメリットがありますが、実装機能が制限されてしまうことも多いため、複雑な機能や個別仕様対応がむしろ難しくなり、柔軟性を重視するアジャイル開発に馴染まない側面があることに要注意です。

参考サイト:
https://www.magicsoftware.com/ja/enterprise-dev-columns/whats-xrad/
https://www.salesforce.com/jp/hub/business/what-is-low-code/

プロトタイピング(prototyping)とは

プロトタイピング(prototyping)とは試作品を製作することです。
ソフトウェア開発におけるプロトタイピングとは、まだ仕様を正確に把握していない段階で開発中の機能を示すための試作品の構築を指し、開発の初期段階で顧客要件を理解するための開発手法です。試作品により顧客からフィードバックを得られ、設計者と開発者は開発中のプロダクトに何が期待されているかを正確に理解するのに役に立ちます。
プロトタイピングはシステム設計工程の一部として組み込まれることも多く、それによってプロジェクトのリスクと費用を低減させると考えられます。

よく使われているプロトタイピングは下記4種類あります:
 ①使い捨て/ラピッドプロトタイピング
 ②進化的プロトタイピング
 ③インクリメンタルプロトタイピング
 ④エクストリームプロトタイピング

プロダクトを試作し仕様に関する欠陥や問題を発見、解決していくプロセスがあるため、プロトタイピングは時々アジャイル開発と混同されますが、動くソフトウェアの早期提供を目指し「設計、開発、デプロイ」というサイクルにて開発を進めるアジャイル開発手法とは全く異なる概念です。

参考サイト:
https://www.tutorialspoint.com/sdlc/sdlc_software_prototyping.htm
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0

おすすめ記事