製造業において、作業を効率化し無駄を減らしていくことは重要です。円滑な生産方式を確立させるために、製造業界ではリーン思考という考え方が用いられてきました。「リーンソフトウェア開発」とは、リーン思考をソフトウェア製品に適用させた開発手法を指します。
では、リーンソフトウェア開発のメリットとはどのようなものなのでしょうか。この記事では、無駄を排除しつつ、低コストかつ顧客ニーズを満たす製品開発を行うために、リーンソフトウェア開発のメリットのほか、リーンソフトウェア開発の「7つの原則」そして「22の思考ツール」について解説します。
リーンソフトウェア開発とは
リーンソフトウェア開発とは、「製造の工程から無駄を省き必要なものだけを残す」という考え方を、ソフトウェア製品に適用した開発手法です。「リーン(lean)」という言葉には、「痩せた」「無駄のない」といった意味があります。
1980年代、トヨタの工場では必要な製品を適量だけ生産し、部品も必要になる分だけ発注するという製造体制を敷いていました。その生産方式が注目され、ソフトウェア開発にも取り入れられたのが始まりです。経営上重要な資源であるヒトやカネ、モノを効率良くバランスの取れた使い方をしていく、という考え方がリーンソフトウェア開発の根本にあります。また、顧客のニーズに対応しつつ無駄を省いた高品質な製品を生産し、提供していくこともリーンソフトウェア開発であれば可能です。
小さいサイクルで開発工程を繰り返す「アジャイル開発」。内容については後述しますが、この開発手法はリーンソフトウェア開発の一部で、より正確な表現をすれば、リーンソフトウェア開発の抽象的なアイデアを、より具体的にしたものがアジャイル型ソフトウェア開発です。
リーンソフトウェア開発のメリット
無駄を省いた生産が可能になるリーンソフトウェア開発には、生産効率の向上や品質アップといった製品に関わるメリットがいくつかあります。ここでは、製品製造におけるリーンソフトウェア開発のメリットを3つ紹介します。
製造過程の無駄を省き生産効率を向上させる
リーンソフトウェア開発において、最も大きいメリットといえるのが生産の効率アップです。製造過程を必要最低限まで抑えた場合、費用や時間、人件費などを削減できます。製造過程の無駄を省くことで、開発速度も上昇し短期間での販売も可能となるでしょう。製品の販売を早めることは、市場で優位に立つために必要不可欠です。競合他社よりも先行してリリースできることは、大きなメリットといえます。
品質が上がる
生産効率が向上すると製品の販売も早まり、顧客に対して素早い対応が可能になります。また、製造過程で発生する無駄が削減できるため、時間や費用などに余裕ができ、製品の調整を行いやすくなる点もメリットです。製品の微調整を繰り返すことで、より顧客のニーズに合った高品質な製品が作れるほか、顧客サービスの質も向上していくでしょう。
新規事業に挑戦しやすくなる
新しい製品で、はじめから顧客のニーズに合うものを作るのは困難です。しかし、リーンソフトウェア開発を行う際は、何度も製品の調整や計測、学習を繰り返すため、顧客のニーズに適した製品を開発しやすくなります。つまり、無駄を省いた効率の良い状態かつ顧客の声が聞きやすいリーンソフトウェア開発は、新規事業に取り入れやすい手法であり、新しいビジネスモデルにもつながる機会が得やすいのです。
リーンソフトウェア開発における「7つの原則」
リーンソフトウェア開発には、具体的な手順やフレームワークはありません。提唱者であるトム・ポッペンディークとメアリー・ポッペンディークは、著書の「リーンソフトウエア開発 : アジャイル開発を実践する22の方法」にて、開発の手助けとなる7つの原則を記しています。ここでは、行動指針である7つの原則について見ていきましょう。
ムダをなくす
「ムダ」を省くことは、リーンソフトウェア開発において非常に重要です。開発のムダには、余分な機能やタスクの切り替え作業、必要性の薄い会議などが含まれており、製品の価値にならないムダは徹底して省いていく必要があります。
ソフトウェア開発では、顧客とのやり取り不足で必要ない機能を作ってしまうケースが多くあります。他にも、プログラムの再学習や過度なタスクの切り替えなどでムダが発生してしまうこともあります。ムダは排除しつつ、ムダが発生した場合の対処が重要です。
知識を作り出す
開発は予定通りに進められるとは限りません。そのため、開発の知識やノウハウを身に付けておく必要があります。製品や顧客などからフィードバックを得た上で、チーム全体で的確な判断ができるよう知識と経験を蓄えていきます。ムダを省きながら、開発チームの学習を強化していくことも大切なのです。
決定をできるだけ遅らせる
ソフトウェア開発では、何らかの決定の判断を下す際に情報が不足している場合があります。そのため、プロジェクト全体に影響があるような決定や、リスクが高い部分の決定はできるだけ遅らせた方が良いです。リーンソフトウェア開発において、「決定を遅らせる」というのは全ての物事を先延ばしにするということではありません。第1原則の「ムダをなくす」ことにより、必要のない作業は排除されるため、重要な意思決定に時間を割けるようになります。
できるだけ早く提供する
「できるだけ早く提供する」というのは、開発を早期に終わらせてリリースまでの期間を短縮するということです。開発を早め素早くリリースすることで、顧客の気が変わる前に提供できます。徹底してムダを省くには、顧客からのフィードバックが必要です。フィードバックが得られないと、さらにムダが発生してしまうおそれがあります。ムダを抑えるためにも、早めに提供することは大切です。
権限を移譲する
リーンソフトウェア開発では、ソフトウェアに関して詳しい知識を持つ人に権限を与えることが重要です。詳しい人が決定権を持つことで、ソフトウェアの設計がより良いものになるでしょう。移譲する権限には、開発プロセス改善の権限や発言権も含まれます。
開発の権限は、個人だけでなくチームに対しての移譲も可能です。しかし、開発メンバーの知識が不十分では決定事項に誤りが起きるおそれがあります。そのため、チームリーダーがメンバーの育成を行わなければなりません。
全体を最適化する
部分的な最適化ではなく、パフォーマンス全体の最適化を目指しましょう。ソフトウェアを開発して終わりというわけではありません。開発したソフトウェアによって、顧客の目的が達成されるかがポイントです。例えば、目的として「売上アップ」を挙げていた場合、成果物がその「売上アップ」につながらなければ最適化しているとはいえません。
顧客のビジネスに役立つソフトウェアを開発するには、改善すべき点を見つけ出す必要があります。仕事の現状を分析し、働き方を可視化できる「バリューストリームマッピング (VSM)」を利用してみるのも効果的です。
品質を作り込む
ソフトウェアの不具合を発見するのが遅れると、修正コストが増加します。不具合を見つけたら早急に対処し、時間のムダを避けましょう。具体的には、実装前にテストコードを書くテスト駆動開発やCI(Continuous Integration:継続的インテグレーション)を行い、バグを減らし不具合の早期発見を目指します。不具合を少なくすることで高い品質を維持でき、修正にかかるコストも抑えることが可能です。
リーンソフトウェア開発における22の思考ツール
リーンソフトウェア開発の22の思考ツールとは、書籍「リーンソフトウエア開発 : アジャイル開発を実践する22の方法」にて、章ごとに分類された7つの原則とともに記されている項目です。各思考ツールの内容は以下の通りです。
- 1.ムダを認識する
- 2.バリューストリームマッピング(VSMとも呼ばれる。より効率的な状態を作るために、仕事の現状を分析するフローチャート)
- 3.フィードバック
- 4.イテレーション(アジャイル開発の中にある開発サイクルの単位。「設計」「開発」「テスト」「改善」 の4つから構成される)
関連記事:イテレーションとは?必要性やスプリントとの違い、開発の流れを解説 - 5.同期
- 6.集合ベース開発
- 7.オプション思考
- 8.最終責任時点
- 9.意思決定
- 10.プルシステム
- 11.待ち行列理論(顧客が列を作った場合の待ち時間や混雑状況を数学的に分析する理論)
- 12.遅れのコスト
- 13.自発的決定
- 14.モチベーション
- 15.リーダーシップ
- 16.専門知識
- 17.認知統一性(製品のユーザビリティや経済性などのバランスが取れている)
- 18.コンセプト統一性(コンセプトに適した機能がまとまっている)
- 19.リファクタリング(外側の挙動は変更せず、内部のプログラムを再設計する)
関連記事:リファクタリングとは?定義やメリット・デメリットを解説20.テスティング - 21.計測
- 22.契約
「11.待ち行列理論」の数学的な理論に加え、「1.ムダを認識する」や「14.モチベーション」など、個人やチームの意識が重要になる項目があります。
思考ツールをはじめから全て認識することは難しいかもしれません。しかし、これらの思考ツールの理解が深まることで、より効果的にリーンソフトウェア開発が行えるようになるのです。
リーン開発のおもな流れ
リーンソフトウェア開発は、トヨタの生産方式を応用したリーン思考から派生した開発手法です。リーン開発を実践するには、「仮説」「構築」「計測」「学習」「意思決定」という5つの順番で進めます。「仮説」から「学習」までの流れを繰り返し行うのが、リーンソフトウェア開発のポイントです。
(1)仮説
まずは、売れる製品を作るために顧客が何を望んでいるのか仮説を立てます。顧客のニーズに合わない製品を作ってしまったら、それは「ムダ」になります。「こういう機能があれば便利だな」など、仮説は人によって異なるため、製品の特徴や目的が顧客のニーズに適しているかをよく検討しましょう。製造業においては、最適な製品・サービスを顧客に提供するのが最終的な目標です。目的やターゲットを絞らずに、漠然とした仮説を立ててしまわないようにしましょう。
(2)構築
仮説を立てられたら、次に「MVP」を構築します。MVP(Minimum Viable Product)とは、必要最低限の機能が付いた仮説を検証するための試作品のことです。MVPは立てた仮説を検証できれば良いため、低コストかつ短期間で作成したもので構いません。例えば、誰にでも作れるPowerPointのスライドや簡単なWebサイト、動画などです。お金や時間をかけてMVPを作成しても、仮説が間違っていた場合ムダになってしまいます。MVPを早めにリリースできれば、顧客の反応も早い段階で確認できます。
(3)計測
MVPを作成後、構築したMVPがどのように使われるのか、顧客に使用してもらいフィードバックを獲得します。計測段階では、大勢ではなく少人数の顧客に絞って提供しても問題ありません。より細かく顧客ニーズを計測するには、流行に敏感な顧客にターゲットを絞るのも方法の一つです。また、実際に足を運んで使われ方を確認するのも有効といえます。WebサイトのMVPであれば、GoogleAnalyticsといったツールもおすすめです。
(4)学習
計測で得たデータやフィードバックを検証して学習を行います。学習方法として、トヨタが実施している「5回のなぜ」がおすすめです。「5回のなぜ」は、MVPの良くない部分について「なぜ良くないのか」と考え、さらに「なぜなのか」を繰り返し、良くない原因を探す方法です。この「5回のなぜ」を使って、計測したデータやフィードバックを元に学習していきます。学習が終わったら、仮説が正しいものはそのまま継続し、間違っているものは方向転換を行います。
(5)意思決定
本格的な開発に入る前に、「仮説」「構築」「計測」「学習」の繰り返しが必要になります。いかに製品をブラッシュアップしていくべきかが重要です。これらの流れを繰り返し、充分に顧客のニーズが満たせる状態になった時に開発の意思決定を行いましょう。
アジャイル型ソフトウェア開発との違い
開発手法の中で、リーンソフトウェア開発と混同しやすい「アジャイル型ソフトウェア開発」というものがあります。アジャイル型ソフトウェア開発はリーンソフトウェア開発の一部とされますが、最終的な目的に違いがあるため、それらの違いを認識することが大切です。
アジャイル型ソフトウェア開発については、こちらの記事もご覧ください。
アジャイル開発とは?特徴やウォーターフォールとの違いなど徹底解説
アジャイル型ソフトウェア開発とは
「アジャイル(agile)」には、「素早い」「機敏な」といった意味があります。アジャイル型では、小さなサイクルで「開発」「設計」「要求」の工程を繰り返し、短期間での完成・提供を目指します。顧客への提供を早めることで、ビジネスでのスタートを早められるでしょう。
開発の原則から見る違い
アジャイル型ソフトウェア開発もリーンソフトウェア開発と同じように、独自の原則を持っています。例えば、リーンソフトウェア開発の原則は、「ムダをなくす」「できるだけ早く提供する」というように抽象的な項目がほとんどです。反対にアジャイル型ソフトウェア開発では、「顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供する」「動くソフトウェアを、2~3週間から2~3か月というできるだけ短い時間間隔でリリースする」といった具体的な項目となっています。
原則を比較すると、概念的な意味合いになるのがリーンソフトウェア開発、具体的に行うべき行動を示しているのがアジャイル型ソフトウェア開発といえるでしょう。
まとめ
リーンソフトウェア開発は、「無駄を省き必要なものだけを残す」ことを目的とした開発手法で、製造業において近年注目されています。さまざまな開発手法がある中で、混同されやすいアジャイル型ソフトウェア開発がありますが、リーンソフトウェア開発はアジャイル型ソフトウェア開発の抽象的な位置づけといえます。リーンソフトウェア開発を活用することで、生産性や品質の向上だけでなく、新しいビジネスモデルにつなげられるでしょう。
なお、アジャイル開発のプロジェクト管理については、過去に実施したウェビナーのの講演資料を公開していますのでこちらもぜひご覧ください。
- カテゴリ:
- アジャイル開発
- キーワード:
- アジャイル開発