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

はじめに

この記事では、「リーンソフトウェア開発と7つの原則」について書いています。

より良いソフトウェア開発が出来るよう開発手法について学んでいるのですが、その中で「リーンソフトウェア開発」という言葉が目に留まり学んでみたいとなったのが記事を書いたきっかけでした。

自分に向けた備忘録でもありますが、「リーンソフトウェア開発とは何かを知りたい」な人の一助になれば嬉しいです。

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

  • トヨタ生産方式(TPS)を参考に考案された開発手法のひとつです。
  • 徹底してムダを減らし、必要とするプロダクトを素早く、そして効率的に開発することを目指します。
  • リーン(lean)とは、「脂肪やぜい肉がない」「均整のとれた」といった意味があります。
    • そこから「無駄がない」「無駄をなくす」という意味で使われるようになった。

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

  1. ムダをなくす
    • ムダとは、顧客に価値を提供しないもの、および顧客が必要としていないものを指す
    • ソフトウェア開発におけるムダの例は以下のとおり
      • 未完成の作業(仕掛かり)
      • 使われないコードや余分な機能
      • 余分なプロセス
      • 作業の引き継ぎ
      • 作業の切り替え
      • 開発の遅れ
      • 欠陥(バグなど)
    • 顧客に価値を提供しない「ムダ」を徹底して無くしていく
  2. 知識を作り出す
    • 不確実性の高いプロジェクトでは道中で学び知識を生み出すことが重要になってくる
    • 個人だけでなく、チーム・組織として学習をしていくことが重要
  3. 品質を作りこむ
    • 不具合は発見が遅れるほど、修正するコストが増大していく
    • 不良を後工程へ流さないようにすることでコストを抑える
  4. 決定を遅らせる
    • 市場は変化が速く、決定した時点からもどんどんと市場は変化していく
    • 市場の変化に対応するためにはギリギリまで決定を遅らせた方が良い
      • ギリギリまで遅らせた方がより多くの情報が得やすい
    • 決定が遅らせられるような仕組み(変更に柔軟なシステム、体制)を作ることが重要
  5. 早く提供する
    • 価値あるものを作りためには顧客からのフィードバックが欠かせない
    • 製品を作り終わってからフィードバックをもらうのでは本当に価値あるものを作るのは難しい
    • 早く提供し、そして早く顧客からフィードバックをもらうことが重要
  6. 権限を与える
    • 情報を一番持っている現場の人たちに権限を与えることが重要
    • そうすることでソフトウェアの設計が良くなる効果が見込める
  7. 全体を最適化する
    • 開発の最終目標をソフトウェアの完成ではなく価値を生むこと
    • 局所最適ではなく全体でのパフォーマンスを重視する

所感

  • DevOpsもリーン生産の原理をソフトウェア開発に応用したものなので、リーンソフトウェア開発とDevOpsはかなり近いものかなと感じた。
  • どれも「なるほど」と思わせるものが多かったです。

おわりに

「リーンソフトウェア開発と7つの原則」について解説しました。

リーンソフトウェア開発の知恵を自分のソフト開発にも取り入れ、更に良いソフトウェア開発が出来るようになりたいです

さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。

https://tracpath.com/works/development/lean_software_development/

https://ssaits.jp/promapedia/method/lean-software-development.html

https://codelab.website/lean/

http://www.e-ainet.com/LeanSoftwareDevelopmentPrinciples.html