基礎から実践まで!正しく覚える、理解するアジャイル用語集③:代表的なアジャイル開発手法とは

アジャイル開発には多くの手法がありますが、今回は最もよく利用されている開発手法をいくつかご紹介します。

連載記事:
アジャイル用語集①:よく使うアジャイル用語
アジャイル用語集②:アジャイル開発と混同しやすい用語
アジャイル用語集③:代表的なアジャイル開発手法とは

1.スクラム(Scrum)

スクラムは世界で最も主流のアジャイル開発手法として、ベンチャー企業からエンタープライズ企業まで多くの開発プロジェクトで利用されています。ルールもシンプルなため、アジャイル開発入門ではほとんどスクラムを採用しています。

スクラム(Scrum)は、もともとラグビーの用語で、両チームが姿勢を低くして押し合うものという意味で、IT用語としてはチーム一体となってシステム開発を行うフレームワークを指しています。
具体的にどのようなフレームワークなのか、スクラムガイドでは、下記のように定義されています。

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

「スクラムでは、予測可能性を最適化してリスクを制御するために、イテレーティブ(反復的)でインクリメンタル(漸進的)なアプローチを採⽤している。スクラムを構成するのは、作業に必要なすべてのスキルや専⾨知識をグループ全体として備える⼈たちである。また、必要に応じてそうしたスキルを共有または習得できる⼈たちである。」

スクラムマスターやプロダクトオーナー資格の認定団体「ScrumAlliance」では、スクラムの本質についてこのように纏めています。

「スクラムは、短いサイクルで製品とサービスを提供するために、クロスファンクショナルチーム(Cross Functional Team)を通じて、以下の効果を発揮する。」
 ・素早いフィードバック
 ・ より迅速なイノベーション
 ・ 継続的改善
 ・ 変化への迅速な適応
 ・ お客様をもっと喜ばせる
 ・ アイデアから納品までのペースの加速
「スクラムは、大規模な製品やサービスを小さな断片に分割し、部門横断的なチームが短期間でリリースすることで機能する。
スクラムチームは、機能の各バッチが完成したときに検査し、学習とフィードバックに基づいて次に作成されるものを適応させ、リスクを最小限に抑え、無駄を削減する。このサイクルは、完全な製品またはサービスが提供されるまで繰り返される。ビジネスは各時間枠の終わりにフィットを調整する機会があるため、顧客のニーズを満たせる。」

一言で纏めてみると、スクラムは少人数のチームで短いサイクルにて迅速に製品を開発し、継続的に改善していく開発手法です。一定の期間毎に、システムやプロダクトの実装の優先順位が高いものから動くソフトウェアを開発し、作られたものを評価しながら開発を行うため、結果的にニーズの変化に即したプロダクトやシステムをすばやく開発することを可能にしました。

初めてスクラム手法を使用してアジャイル開発に取り組まれるスクラムマスターやプロダクトオーナーは、「アジャイルコーチが見た開発現場~初めてのアジャイルでつまづく12のポイント~」から、失敗を回避するヒントを得られるかもしれません。

2.エクストリームプログラミング(Extreme Programming)

エクストリームプログラミングはアジャイル開発手法の一つで、略してXPと呼ばれることが多いです。

アジャイルソフトウェア開発宣言を作成したアジャイル団体「AgileAlliance」では下記のように定義しています。

「エクストリームプログラミング(XP)は、ソフトウェア開発の品質とチームメンバーの生活の質を高めることを目的としたアジャイルソフトウェア開発フレームワークであり、最も具体的なエンジニアリングプラクティスを持っている。」

「XPは一般的に下記のような状況に適応される:
 ・ソフトウェア要件が動的に変化
 ・ 新技術を利用かつ開発期間が限定されたプロジェクトによるリスクが存在
 ・ 開発メンバーが少人数でかつ同じ場所にいる拡張開発チーム
 ・ 自動化の単体・機能テストができる
状況によってXPフレームワーク全体を適応することはできないが、必要なプラクティスだけを利用しても問題ない。」

上述のように、エクストリームプログラミングは効率的な開発プロセスを実現するために、高度な小規模チームで協調して開発する特徴を持っていると見られます。透明性や継続的なフィードバックを取り入れることで、品質の高い製品をスピーディーに開発することができるようになります。

エクストリームプログラミングとスクラムは、両方とも小規模チームで効率的な開発プロセスを実現しようとする開発手法ですが、目的に少し違いがあります。スクラムでは、顧客からのフィードバックを取り入れることでニーズの変化に沿ったプロダクトを開発していくことを重視する一方、エクストリームプログラミングでは、いかに高品質な製品をスピーディーに開発するかをより重視しています。

3.カンバン(Kanban)

カンバン方式は、元々トヨタが開発した生産管理システムに取り入れた手法です。生産ラインに掛けられた看板を用いて生産現場の情報を共有することで、生産ラインの無駄を減らし生産性向上とコスト削減に役立つと考えられました。その後、製造業にとどまらず、ソフトウェア開発業界にも取り入れられました。

アジャイルプロジェクト管理ツール「JIRA」を開発したAtlassian社は、ソフトウェア開発領域の「カンバン」について、下記のように述べています。

「カンバンは、アジャイルとDevOps開発の実装に使用される一般的なフレームワークです。作業内容は看板ボード上で視覚的に示されているため、チームメンバーはいつでもすべての作業状態を確認でき、作業進捗の透明性や効率的なコミュニケーションを実現できます。」

「カンバンは作業視覚化によって、進行中の作業を限定し、効率の最大化を図れます。カンバンチームは、看板ボードを使用してワークフローを継続的に改善することで、プロジェクト(もしくはユーザーストーリー)の開発期間を短縮させることができます。」
(https://www.atlassian.com/agile/kanban/kanban-vs-scrum)

このように、カンバン方式は開発者がタスクを効率的に管理するためのツールとして用いられ、無駄なタスクを削減し、生産性の向上と開発期間の短縮にフォーカスしてます。

カンバン方式と前述のスクラムやエクストリームプログラミングを組合せて利用することも可能です。例えば、スクラムのスプリントにカンバンを使ってタスクの状況を可視化して、作業進捗の管理を行えます。

複数の手法を組み合わせることでより効率な開発を実現できる一方、それぞれのアプローチに対する適切な理解と一定の実践経験が必要なため、アジャイル開発経験がまだ浅い方は、まず1つの手法を徹底して、その成功パターンを確立しノウハウを身につけることが大切です。

 

おすすめ記事