リーンソフトウェア開発とアジャイル型ソフトウェア開発の関係と違いを解説

2020年11月25日

従来使われていたウォーターフォール型ソフトウェア開発は、状況の変化に対応できず、望まれたものを開発しにくいことから、その限界がささやかれています。
その代わりの開発手法として、リーンソフトウェア開発やアジャイル型開発という名前が挙がりますが、これらの違いはどこにあるのでしょうか?
今回はリーンソフトウェア開発とアジャイル型ソフトウェア開発の関係と違いについて解説していきます。

リーンソフトウェア開発とは何か?

「リーン(lean)」とは、直訳すると贅肉のない様子を意味しています。リーンソフトウェア開発とは、徹底してムダを排除し、必要とするプロダクトを素早く、そして効率的に開発していこうとするアイデアです。

もともとリーンソフトウェア開発はリーン生産方式から派生したものです。
さらに、このリーン生産方式は日本のトヨタの生産管理技術であり「トヨタ生産方式」から派生しています。

トヨタ生産方式は、海外の少品種大量生産に対抗すべく、多品種大量生産を実現するために、徹底したムダの排除を行い、生産の合理化を進め、世界の注目を浴びました。
今日「リーンスタートアップ」など、「リーン」という名前を冠したアイデアを少なからず目にしますが、いずれもトヨタ生産方式を源流に持っているといっても過言ではありません。

リーンソフトウェア開発も、徹底したムダの排除をはじめ、トヨタ生産方式にならった様々な思考ツールで、ソフトウェア開発を成功に導こうとしています。

アジャイル型ソフトウェア開発とは何か?

「アジャイル(agile)」とは、素早さを意味する言葉です。この名を冠したアジャイル型ソフトウェア開発は、機能するソフトウェアをできるだけ早く提供することを目指した開発手法です。
ウォーターフォール型ソフトウェア開発が「予測型」と呼ばれるのに対して、アジャイル型ソフトウェア開発は「適応型」と呼ばれます。
その名の通り、状況にあわせて柔軟に対応することをアジャイル型ソフトウェア開発では重視しています。

リーンソフトウェア開発とアジャイルソフトウェア開発の関係と違い

リーンソフトウェア開発とアジャイルソフトウェア開発の関係

リーンとアジャイルの関係
図1:リーンとアジャイルの関係

これまではリーンソフトウェア開発とアジャイルソフトウェア開発の概要を見てきました。
では、この2つの開発手法はどのような関係にあるのでしょうか?
それは図1が示すように、アジャイルソフトウェア開発はリーンソフトウェア開発の一部であるということです。
より正確な表現をすれば、リーンソフトウェア開発の抽象的なアイデアを、より具体的にしたものがアジャイル型ソフトウェア開発です。
まさにこの「抽象的」か「具体的」かが、リーンソフトウェア開発とアジャイル型ソフトウェア開発の違いであると言えます。

リーンソフトウェア開発とアジャイルソフトウェア開発の違い

リーンソフトウェア開発もアジャイル型ソフトウェア開発も、それぞれ独自の原則を掲げていますが、両者の関係性は掲げている原則を比較してみると、より鮮明になります。
以下、それらの原則を掲載いたします。

リーンソフトウェア開発の7つの原則

リーンソフトウェア開発の7つの原則は以下の通りです[1] … Continue reading

  1. ムダを排除する
  2. 学習効果を高める
  3. 決定をできるだけ遅らせる
  4. できるだけ早く提供する
  5. チームに権限を与える
  6. 統一性を作りこむ
  7. 全体を見る

アジャイル型ソフトウェア開発の12の原則

アジャイル型ソフトウェア開発の12の原則は以下の通りです[2]Project Management Institute『アジャイル実務ガイド(日本語版)』Project Management Inst、2018年、9頁。

  1. 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。
  2. 要求の変更はたとえ開発の後期であっても歓迎します。変化を味方につけることによって、お客様の競争力を引き上げます。
  3. 動くソフトウェアを、2~3週間から2~3ヶ月というできるだけ短い時間間隔でリリースします。
  4. ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働かなければなりません。
  5. 意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与え仕事が無事終わるまで彼らを信頼します。
  6. 情報を伝える最も効率的で効果的な方法はフェイス・トゥ・フェイスで話をすることです。
  7. 動くソフトウェアこそが進捗の最も重要な尺度です。
  8. アジャイル・プロセスは持続可能な開発を促進します。一定のペースを継続的に維持できるようにしなければなりません。
  9. 技術的卓越性と優れた設計に対する不断の注意が機敏さを高めます。
  10. シンプルさ(ムダなく作れる量を最大限にすること)が本質です。
  11. 最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます。
  12. チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整します。

概念的なリーンソフトウェア開発、具体的なアジャイル型ソフトウェア開発

以上のように、リーンソフトウェア開発とアジャイル型ソフトウェア開発の原則を比較してみると、リーンソフトウェア開発の原則が概念的なものであるのに対して、アジャイル型ソフトウェア開発の原則は「動くソフトウェアを、2~3週間から2~3ヶ月というできるだけ短い時間間隔でリリースします」というように、具体的にどのような行動をとるのかを示していることが分かります。

一方で、リーンソフトウェア開発にある「全体を最適化する」という原則のように、全体を最適化しようという意思はアジャイル型ソフトウェア開発ではあまり見られません。

このように、アジャイル型ソフトウェア開発はリーンソフトウェア開発から派生し、より速度を重視して進化したものであると言えるでしょう。

参考

書籍・文献

  • Project Management Institute『アジャイル実務ガイド(日本語版)』Project Management Inst、2018年。
  • メアリー・ポッペンディーク(著)、トム・ポッペンディーク(著)、平鍋健児(訳)、高嶋優子(訳)、佐野建樹(訳)『リーンソフトウエア開発~アジャイル開発を実践する22の方法~』日経BP、2004年。

Webサイト

1メアリー・ポッペンディーク(著)、トム・ポッペンディーク(著)、平鍋健児(訳)、高嶋優子(訳)、佐野建樹(訳)『リーンソフトウェア開発~アジャイル開発を実践する22の方法~』日経BP、2004年、7~11頁。
2Project Management Institute『アジャイル実務ガイド(日本語版)』Project Management Inst、2018年、9頁。