IT用語

リーンソフトウェア開発とは?7つの原則やアジャイルとの違いをわかりやすく解説

クマノくらげ

はじめに

システム開発手法について調べていると、リーンソフトウェア開発(Lean Software Development)という言葉を見かけることがあります。

「アジャイル開発とは何が違うの?」「スクラムとの関係は?」と疑問に思う方も多いでしょう。

リーンソフトウェア開発は、簡単に言うと、

「ムダをなくし、本当に価値のあるソフトウェアを素早く届けることを目指す開発手法」です。

実は、アジャイル開発やスクラムにも大きな影響を与えた考え方として知られています。

この記事では、リーンソフトウェア開発について、会話形式でわかりやすく解説します。

リーンソフトウェア開発って何?

リーンソフトウェア開発は、
簡単に言うと、「ムダを減らして、お客様に価値を早く届ける開発手法」だよ。

ムダっていうのはどんなのを指しているの?

お客様に価値を生まない作業のことだね。

価値を生まない作業・・・?
製品のためにつかわれない作業とかかな。ほら、無駄に長いだけの会議とかさ。

そうだね。必要以上に長い会議、誰も読まない大量の資料、使われない機能の開発なんかが代表例だよ。

なるほど。そういう無駄をなくそうとするんだね。

「リーン」の意味

そもそもリーンってどういう意味?

英語の「Lean」には「無駄がない」「引き締まった」という意味があるよ。

ダイエットみたいな感じ?

そうそう。
開発でも余分な作業を減らして、本当に必要なことだけに集中する考え方なんだ。

リーンソフトウェア開発はどこから生まれた?

最初からIT向けだったの?

もともとは製造業、特にトヨタ生産方式(TPS:Toyota Production System)の考え方がベースなんだ。

車を作る考え方がソフトウェア開発に?

そう。「ムダをなくす」「必要なものを必要なだけ作る」という考え方をソフトウェア開発にも応用したんだよ。

レストランで例えてみよう

レストランで考えてみよう。

もし、お客さんが来る前から100人分の料理を全部作っていたらどうなる?

作りすぎて売れ残るかもしれないね。

それに料理は出来立ての方がいいよね。

リーンの考え方では、必要になった料理を、必要なタイミングで作るんだ。

作りすぎはなくなるね。

ソフトウェアでも、使われない機能を大量に作るより、本当に必要な機能から作ろうという考え方なんだ。

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

リーンには代表的な7つの原則があるよ。

原則内容
ムダをなくす価値を生まない作業を減らす
学習を促進する開発しながら学び改善する
決定をできるだけ遅らせる情報が集まってから判断する
できるだけ早く届ける早くリリースして価値を提供する
チームを尊重する現場を信頼し、自律性を重視する
品質を作り込む後から直すのではなく最初から品質を意識する
全体を最適化する部分最適ではなく全体最適を目指す

わぁたくさんあるんだね。ムダをなくすっていうだけじゃないんだ。

どれも最終的にはムダをなくすに繋がるんだけどね。一つひとつ見ていこうか。

① ムダをなくす

リーンでは最も重要な考え方だね。

例えばどんなムダがリーンではよく考えられるの?

例えばこんなものだよ。

  • 誰も使わない機能
  • 承認待ち
  • 長すぎる会議
  • 不要な資料作成
  • バグ修正の繰り返し
  • 作業待ち時間

会議や不要な資料作成ならイメージつくけど、開発は開発で意外と待ち時間があるんだね。

② 学習を促進する

開発で学習?

全部を最初から完璧に決めるのは難しいからね。

実際に作って、お客様の反応を見ながら改善していくことが大切なんだ。

あぁそういう意味なんだ。
どういう製品がいいのか、市場に受ける商品は何か情報を得て、どんどん学習するってことだね。

そうそう。
知識を創り出すともいうね。小さく作って、試して最終的な製品にしていくんだよ。

あぁレストランで、新しい味の商品を出すとき。いきなり100個とか大量に売るとムダになる。

そう、だから馴染みのお客さんにちょっと食べてもらって学習するんだ。

③ 決定をできるだけ遅らせる

早く決めた方がいいんじゃないの?

そう思うよね。

でも、情報が少ない段階で決めると失敗することもある。

さっきのレストランもそうか。1人だけに試食してもらっても売れるとは限らない。

そう、だから、たとえば10人の意見がもらえるまで、判断を遅らせるんだよ。

④ できるだけ早く届ける

早く作るってこと?

正確には、価値を早く届けること。

完成するまで待たない?

全部完成してからではなく、小さくリリースして改善していくことが多いね。

うーんと、レストランだと・・・?

そうだなぁ。全部新メニューで固めたコース料理を作っているとしよう。
・前菜
・スープ
・メイン
・デザート
って感じで。

あぁ。デザート(プリン)だけ、すでに売れるとわかるだけの情報が集まったときか。

そう、事前調査で、メインが大不評だと、コースとして売れないからね。
リリースできる機能。この場合ではデザート(プリン)を単品で販売するんだ。

⑤ チームを尊重する

開発者を大事にするってこと?

そう。現場が一番よく知っているからね。

上から全部指示するより?

現場が自分たちで改善できる組織を目指すんだ。

これはレストランで言うと、オーナーとか店長じゃなくて実際に料理している料理人を大事にする感じ?

そうだね。たとえば、お店で決まった調理手順があっても、現場の料理人からすると、「プリンのカラメルは先に作っておいた方が早く作れる」などの意見がある。

そこで「いいから手順通りにやれ!」ではなく、ちゃんと意見を聞いてあげることでムダが減るんだね。

⑥ 品質を作り込む

品質って最後にテストすればいいんじゃない?

リーンでは違うよ。品質は最後に確認するものではなく、最初から作り込むものなんだ。

後から修正するムダをなくすんだね。

レストランだと・・・
コース料理の品質を見ようとして、全部の試作が出来上がるのを待つより、できたやつから品質をチェックした方がいい。

あぁ、全部できるのを待ってから、あれもこれもやり直してだと待っている時間がムダだね。

開発でも全部できてからじゃなくて、細かく品質チェックをして修正のムダを減らすんだよ。

⑦ 全体を最適化する

全体を最適化・・?

これはチーム全体で、成果が最大になるように人員を振り分けることだよ。

こんな感じで得意なことを担当にする感じ?
Aさん:パスタが得意  → パスタ担当
Bさん:デザートが得意  →デザート担当
Cさん:接客が得意   →接客担当

かなり近いよ。でも必ずしも得意=最適化じゃないよ。
ある日デザートの注文しかなかったら?

あぁAさんも、Bさんより得意じゃないかもだけどデザート作ってほしいね。

そうそう。個人の得意分野だけを見るのではなく、店全体の状況を見て判断することが大切なんだ。

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

リーンソフトウェア開発はアジャイルと混同されがちなんだ。

アジャイル?

違うところはこんな感じ。

項目リーンアジャイル
重視することムダをなくす変化への対応
発祥トヨタ生産方式ソフトウェア開発
考え方効率化・価値提供短期間で改善を繰り返す
共通点顧客価値を重視する顧客価値を重視する

うーん。確かにほとんど似ている。
どっちも少しずつ作っているってこと?

そうだなぁ。「見ている部分が違う」って考えるとわかりやすいかもね。

リーンは「お店全体」で考える

たとえばレストランの店長はこんなことを考えるよね。

  • 売れない料理を大量に作っていないか?
  • 注文から提供まで時間がかかっていないか?
  • 厨房だけ速くても、会計で行列になっていないか?
  • 料理人やウェイターの意見を活かせているか?

料理そのものじゃなくて、お店全体を良くしようとしているんだね。

そう。つまりリーンは、

「どうすればお客様に価値をムダなく、早く届けられるか」

という考え方なんだ。

アジャイルは「料理の作り方」を考える

今度は料理人の立場で考えてみよう。
春限定コースを作るとする。
でも、最初から完璧なコースは分からない。
そこで・・・

  1. まずプリンだけ試作する。
  2. 常連さんに食べてもらう。
  3. 「もう少し甘い方がいいね。」
  4. 改良する。
  5. 次はスープを試作する。
  6. また感想を聞いて改善する。

完成してから見せるんじゃなくて、少しずつ試して改善するんだ。さっきのリーンでの説明でも聞いたよ?

リーンとアジャイルは重なる部分があるんだ。
「試して改善する」だけで説明すると混ざる。
一言で分けると
リーン=店全体のムダ取り
アジャイル=週ごとにメニュー開発を進める方法
という観点が違うよ。

同じプリンでも考え方が違う

プリンを例にして、それぞれの考え方をやってみようか。

えぇとリーンはお店全体の流れだったね。
というと、作り方だけじゃなくて、配膳方法とか待ち時間とかきにするのかな?

そう。お店全体の流れを改善して、ムダをなくすのがリーン

次はアジャイルだね。これはさっきもやったから、
プリンという商品の開発を考えるんだよね。

そう。だから、試作品を作る→試食してもらう→感想を聞く→改良する→試作品を作るってやっていくんだ。

そうやって、料理を少しずつ改善していくんだね。

最後に整理

最後に整理するとこう。

  • リーン:お店全体の運営・仕組みを改善する考え方
  • アジャイル:料理(ソフトウェア)を少しずつ作って改善する進め方

だから、リーンという運営方針のレストランで、アジャイルという料理の開発方法を採用することもできるんだよ。

バリューストリームマップとの関係

バリューストリームマップも押さえておこうか。

バリューストリームマップ?

開発の流れを図にして、どこにムダや待ち時間があるかを見つけるための図なんだ。

ムダ探しの地図なんだね。

たとえばこんな感じのだね。

流れ作業内容作業時間待ち時間ムダの例
① 注文お客さんが料理を注文する1分2分注文を取りに行くのが遅い
② 伝達注文を厨房に伝える1分5分紙の伝票待ち・伝達ミス
③ 調理料理を作る10分0分作り直しがあるとムダ
④ 盛り付け皿に盛り付ける2分3分配膳担当待ち
⑤ 配膳お客さんに料理を運ぶ1分0分動線が悪い

なるほど、ムダを見える化しているんだね。これならどうムダを減らすかがわかりやすい。

リーンソフトウェア開発のメリット

開発スピードが向上する

不要な作業を減らすことで、価値のある機能を早く提供できます。

コストを削減できる

使われない機能や不要な作業が減るため、開発コストの削減につながります。

顧客満足度が向上する

小さく改善を繰り返すため、利用者の要望を反映しやすくなります。

デメリット

組織全体の理解が必要

リーンは開発チームだけでは実現できません。

営業、企画、管理部門なども含めた改善が必要です。

最初は運用を変える負担がある

従来のウォーターフォール開発から移行する場合、考え方や進め方を変える必要があります。

試験対策としてのポイント

ITパスポートや基本情報技術者試験、応用情報技術者試験では、アジャイル開発やプロジェクトマネジメントの分野で出題されることがあります。

用語試験対策ポイント
リーンソフトウェア開発ムダをなくし価値を早く届ける開発手法
アジャイル短期間で改善を繰り返す開発
スクラムアジャイルを実践する代表的なフレームワーク
バリューストリームマップムダを見える化する図
スプリントバックログスプリントで実施する作業一覧
バーンダウンチャート残作業量を可視化するグラフ

試験では「ムダをなくす」「価値を早く届ける」を覚えればよさそうだね。

よくある誤解

リーンは「人を減らすこと」ではない

ムダをなくすっていうからリストラとかしてコストカットするのかと思った。

あくまでなくすのは「価値を生まない作業」なんだ。

リーンはアジャイルと同じではない

リーンとアジャイルは似ていたね。

似ているけれど同じではない。リーンは開発全体の考え方、アジャイルは開発手法の考え方という違いがあるんだったね。

早く作るだけが目的ではない

ムダをなくすってことは早く作れればいいんだよね。

目的は「価値を早く届ける」ことであって、品質を犠牲にして速度だけを求めることではないんだよ。

まとめ

リーンソフトウェア開発とは、ムダをなくし、顧客に価値をできるだけ早く届けることを目的とした開発手法です。

トヨタ生産方式の考え方をソフトウェア開発に応用したもので、アジャイル開発やスクラムにも大きな影響を与えています。

最後にポイントを整理します。

項目内容
用語リーンソフトウェア開発
一言でいうとムダをなくして価値を早く届ける開発
発祥トヨタ生産方式
重視することムダの排除、品質、顧客価値、継続的改善
関連用語アジャイル、スクラム、バリューストリームマップ、スプリントバックログ、バーンダウンチャート
覚え方「必要なものを、必要なときに、価値ある形で届ける」

リーンソフトウェア開発は、ムダをなくして、お客様に価値を早く届けることを目指す開発なんだね。

その理解でバッチリ。「速く作る」ことよりも、『ムダを減らして価値を届ける』ことがリーンソフトウェア開発の本質なんだよ。

ABOUT ME
クマノくらげ
クマノくらげ
難しいIT用語やビジネス用語を、できるだけ身近な例えで解説するブログです。 「専門用語を見ると眠くなる人」でも読めるように、画像や会話形式を多めにしています。 AWS12冠達成済み。
記事URLをコピーしました