リーンソフトウェア開発の7つの原則と22の思考ツールについて解説
リーンソフトウェア開発とは何か?
リーンソフトウェア開発とは、1980年代の日本でトヨタやホンダが短期間で高品質の製品を生産した手法を、ソフトウェア開発にも取り入れたものです。
変化に柔軟に対応する開発方法としてアジャイル開発が人気を集めていますが、このアジャイル開発はリーンソフトウェア開発の1種だとも言えます。
アジャイル開発に12の原則があるように、リーンソフトウェア開発にも守るべき原則があります。
今回は『リーンソフトウエア開発~アジャイル開発を実践する22の方法~』[1] … Continue readingをもとに、リーンソフトウェア開発の7つの原則と22の思考ツールについて解説していきます。
リーンソフトウェア開発の22の思考ツール
リーンソフトウェア開発には、これから紹介する7つの原則を支える22の思考ツールがあります。
ここで、22の思考ツールを列記していきます。
- ムダを認識する
- バリューストリームマッピング
- フィードバック
- イテレーション
- 同期
- 集合ベース開発
- オプション思考
- 最終責任時点
- 意思決定
- プルシステム
- 待ち行列理論
- 遅れのコスト
- 自発的決定
- モチベーション
- リーダーシップ
- 専門知識
- 認知統一性
- コンセプト統一性
- リファクタリング
- テスティング
- 計測
- 契約
これら22の思考ツールには、「ムダを排除する」というような意識しておくだけで効果があるものもあれば、「待ち行列理論」のようにすでに系統だった理論もあり、「リーダーシップ」のような大きなテーマもあります。
これらの思考ツールを一気に理解することは難しいことですが、その理解が深まれば、さらにリーンソフトウェア開発の理解が深まり、より効果的なソフトウェア開発ができるようになるでしょう。
リーンソフトウェア開発の7つの原則
リーンソフトウェア開発の7つの原則は以下の通りです。
- ムダを排除する
- 学習効果を高める
- 決定をできるだけ遅らせる
- できるだけ速く提供する
- チームに権限を与える
- 統一性を作りこむ
- 全体を見る
ここからはリーンソフトウェア開発の7つの原則と、その原則で使われる思考ツールを紹介していきます。
ムダを排除する
「ムダを排除する」という原則はリーンソフトウェア開発の核になるものです。
冒頭で述べたように、リーンソフトウェア開発というのは、トヨタやホンダなどの日本企業をお手本にしています。「トヨタ生産方式」と呼ばれるまでに生産管理を洗練化させたトヨタの大野耐一は徹底的に生産のムダを排除していきました[2]『リーンソフトウェア開発』、13頁。。
徹底したムダの排除の結果、トヨタでは「ジャストインタイム」や「かんばん」と呼ばれる仕組みが誕生しましたが、こうしたアイデアをソフトウェア開発に取り入れたのがリーンソフトウェア開発です。
リーンソフトウェア開発では、誰も読まない書類や一部の人しか話さない会議など、開発プロジェクトに不要なものは、どんどん排除していきます。
この原則で使われる思考ツールは以下の通りです。
- ムダを認識する
- バリューストリームマッピング
学習効果を高める
リーンソフトウェア開発では、ムダを排除する一方で、プロジェクト・チームや開発チームの学習を厚くしていきます。
重要なのは、個人の学習よりも、チーム・組織としての学習効果を高めていくことです。
この原則で使われる思考ツールは以下の通りです。
- フィードバック
- イテレーション
- 同期
- 集合ベース開発
決定をできるだけ遅らせる
リーンソフトウェア開発では決定をできるだけ遅らせるのもポイントです。
次に紹介する原則が「できるだけ速く提供する」という原則であるため、「決定をできるだけ遅らせる」という原則は一見矛盾しているようにも見えます。
しかし、この「決定をできるだけ遅らせる」というのは、仕様変更によってプロジェクト全体に影響が及ぶような重要な意思決定を可能な限り遅らせるというもので、すべての物事の決定を遅くするということではありません。
また、「ムダを排除する」という第1の原則により、プロジェクトに必要のない事柄が排除されているため、重要な決定事項に時間が割けるということでもあります。
そして、「決定をできるだけ遅らせる」とはいえ、最終的に決定するべき場面では、しっかりと意思決定をしていきます。
この原則で使われる思考ツールは以下の通りです。
- オプション思考
- 最終責任時点
- 意思決定
また、22の思考ツールには含まれていませんが、「コンカレント開発」について知っておくと、「決定をできるだけ遅らせる」の原則をより深く理解できるでしょう。
できるだけ速く提供する
リーンソフトウェア開発の第4の原則は「できるだけ速く提供する」です。
ソフトウェア開発の世界では一般的に速くできたものは品質が劣るものだという認識がありました。しかしリーンソフトウェア開発では、「速く提供するからこそ品質の高いものが提供できる」と考えます。
この「速く提供する」という言葉には、チームの学習効果を高めて開発を早期に終わらせるという意味と、仕様が決定してからリリースまでの期間を短くするという意味があります。
この原則で使われる思考ツールは以下の通りです。
- プルシステム
- 待ち行列理論
- 遅れのコスト
チームに権限を与える
リーンソフトウェア開発を成功させるためには、チームを育成し、彼らに権限を与えることも大切です。
とくに重要なことは、情報を一番持っている現場の人たちに権限を与えることです。
しかし、権限を与えるプロジェクト・メンバーの知識が浅い場合、その判断に誤りが出る確率が高くなってしまいます。
そのため、リーンソフトウェア開発におけるリーダーの大きな仕事として、直面している問題に対して各自で判断できるようメンバーを育成することが挙げられます。
この原則で使われる思考ツールは以下の通りです。
- 自発的決定
- モチベーション
- リーダーシップ
- 専門知識
統一性を作りこむ
リーンソフトウェア開発の「統一性」とは、「認知統一性」と「コンセプト統一性」で成り立つ、製品の一貫性です。
認知統一性とは、製品全体が顧客を喜ばせる機能、ユーザビリティ、信頼性、経済性がバランスを保っていることを意味し、コンセプト統一性とは、システムの中心にあるコンセプトによって、すべての機能がスムーズにしかもぴったりとまとまることを意味しています[3]『リーンソフトウェア開発』、189~190頁。。
この認知統一性とコンセプト統一性が備わってこそ、ユーザーから求められる製品が出来上がります。
この原則で使われる思考ツールは以下の通りです。
- 認知統一性
- コンセプト統一性
- テスティング
全体を見る
リーンソフトウェア開発の最後の原則は「全体を見る」です。
その名の通り、部分的・局所的な最適化を目指すのではなく、全体でのパフォーマンスを重視しようというものです。
この原則で使われる思考ツールは以下の通りです。
- 計測
- 契約