システム開発をする際には、アジャイル開発、ウォーターフォール開発など様々な手法があります。
事業を始めるためにシステム開発が必要になった際には、こういった様々な開発手法から、目的に沿った最適な手法を選択することが極めて重要です。
手法が適切でなければ手戻りが多く発生し、時間や人件費を無駄にしてしまうことになります。
こういった開発手法の中で、近年特に注目されているのがリーンソフトウェア開発です。
今回は、システム開発を進めたいと考えている企業の方向けに、リーンソフトウェア開発の詳細と、その開発を支える原則や思考ツールについて詳しく解説します。
目次
リーンソフトウェア開発とは何か?
そもそも、リーンソフトウェア開発とは何を指すのでしょうか。
まず、リーン生産方式とは1980年代にマサチューセッツ工科大学の技術者によって名付けられた、トヨタの生産方式を参考に定義された生産方式のことです。
当時の日本の自動車メーカーの競争力の源泉を探るべく調査が重ねられた結果、大量生産ではなく適量生産、必要な分だけの部分発注など、トヨタの無駄のない生産方式が評価され、「痩せた」「贅肉のない」という意味を持つ「リーン」という名称が採用されました。
リーンソフトウェア開発とは、このリーン生産方式の概念をソフトウェア開発に取り入れたもので、無駄なく短期間で高品質なソフトウェア開発を行うための手法、考え方のことを指します。
リーンソフトウェア開発の7つの原則とは?
リーンソフトウェア開発には、その手法を支える7つの原則というものが存在します。
全体を最適化する
一つ目の原則は、「全体を最適化する」です。
これは部分的、局所的な場面での開発の最適化、スピードアップを目指すのではなく、全体の開発工程を俯瞰した上で全体が最適化され、最も良いアウトプットが短期間で出来上がることを意識する、という原則です。
当然のことではありますが、特に規模の大きい開発だと分業化されることが多く、忘れられてしまいがちな原則であるといえます。
ムダをなくす
二つ目の原則は、「ムダをなくす」です。
これは、リーンソフトウェア開発の原則の中でも最も核となる考え方です。
リーンソフトウェア開発の元となったトヨタの生産方式では、「必要なものを、必要なときに、必要なだけ作る」というカンバンという手法が採用されていましたが、まさにそれと同様、徹底的に必要なものだけにこだわるというのがこの原則です。
リーンソフトウェア開発では、開発の直接的な工程はもちろん、一部の人しか話さない会議など、開発の全てのフローにおいて不要なものは排除していきます。
チームに権限委譲する
三つ目の原則は、「チームに権限移譲する」です。
開発の一つ一つの工程で上層部の意思決定を仰ぐような開発体制だと、スピード感が著しく下がるだけでなく、現場から離れている上層部が判断することで、現場メンバーとの意見の相違や温度差が生まれてしまうことがあるため、チームに権限移譲をするべきだというのがリーンソフトウェア開発の考え方です。
ただし、権限移譲をするためには、権限移譲をされる側のメンバーが十分なスキルやマインドセットを持っていることが必須となるため、この権限移譲の原則は人材育成とセットで考えられることが多いです。
学習を強化する
四つ目の原則は、「学習を強化する」です。
ここでいう学習は、個人の学びではなく、開発を行う組織としての集合知のことを指します。
開発過程で出た課題やトラブルを適切にフィードバックし、開発メンバー全員が見られる環境に整理し、共有していくことで組織としてのノウハウが蓄積しやすくなり、開発の効率化に繋がります。
早く提供する
五つ目の原則は、「早く提供する」です。
これは、一般的に早く提供するものは質が悪い、という従来のソフトウェア開発の考え方とは大きく異なる考え方です。
リーンソフトウェア開発では、「早く提供するからこそ、良いものができる」と考えられています。
また、当然完成されたものを早く開発する、という意味合いを持ちつつも、一刻も早く市場に出すことで、改善ポイントを見つけ次なる開発につなげるという意味合いも大きいです。
品質を作り込む
六つ目の原則は、「品質を作り込む」です。
ここでいう品質は具体的には製品の統一性であり、「認知の統一性」と「コンセプトの統一性」に分けて考えられています。
認知の統一性は、製品としての魅力、ユーザビリティ、ビジネスとしての経済性などがバランスを保っており、製品として市場に出すべきものになっているということを指します。
また、コンセプトの統一性は、製品の細部に至るまで、一つのコンセプトに紐づいてまとまっていることを指します。
リーンソフトウェア開発では、この認知の統一性とコンセプトの統一性を保ったソフトウェア開発を強く意識しています。
決定を遅らせる
最後となる七つ目の原則は、「決定を遅らせる」です。
リーンソフトウェア開発では、プロジェクト全体に影響を与えるような決定は、できる限り遅らせるような開発体制を組みます。
これは一見「早く提供する」という原則と矛盾するように思えるかもしれませんが、遅らせるのはあくまでプロジェクト全体に影響を与えるような意思決定のみです。
プロジェクト全体に影響を与える意思決定を早期に行うと、軌道修正が難しくなり後から大幅な手戻りが発生するリスクが大きくなります。
そのため、小さい意思決定をできる限りスピーディーに済ませ、手戻りのリスクを最小限に抑えた上で最後に大きな決定を行います。
そうすることで、最終的なアウトプットまでのスピードを最大化します。
これが「決定を遅らせる」という原則に込められた考え方です。
リーンソフトウェア開発の22の思考ツールとは?
上述した7つの原則を支える考え方が、「22の思考ツール」と呼ばれるものです。
具体的には、以下になります。
それぞれの思考ツールは7つの原則と密接に紐づいており、例えば「フィードバック」「イテレーション」「同期」「集合ベース開発」といった思考ツールは、「学習を強化する」という原則を支えるという構図になっています。
1.ムダを認識する
2.バリューストリームマッピング
3.フィードバック
4.イテレーション
5.同期
6.集合ベース開発
7.オプション思考
8.最終責任時点
9.意思決定
10.プルシステム
11.待ち行列理論
12.遅れのコスト
13.自発的決定
14.モチベーション
15.リーダーシップ
16.専門知識
17.認知統一性
18.コンセプト統一性
19.リファクタリング
20.テスティング
21.計測
22.契約
※参考:リーンソフトウェア開発の7つの原則と22の思考ツールについて解説
その他の開発手法との違い
ここまでリーンソフトウェア開発について紹介してきました。
しかし、一般的には「ウォーターフォール開発」「アジャイル開発」といった開発手法に耳馴染みがあるのではないでしょうか。
ここではそれらの開発手法とリーンソフトウェア開発の違いを解説します。
ウォーターフォール開発との違い
ウォーターフォール開発とは、水が流れるように上流から下流まで一つ一つ開発フェーズを消化していくような開発手法です。
ウォーターフォール開発はスケジュール管理がしやすく安定した開発をするのに向いていますが、一方で上流から一つずつ意思決定をしていくため、下流で方針の変更を余儀なくされた時に、再度上流の開発からやり直さなければならないというリスクが存在します。
このため、ウォーターフォール開発は比較的複雑ではなく大規模な開発には向いていますが、不確定事項が多く手戻りのリスクがある場合には不向きです。
一方、リーンソフトウェア開発はできる限り大きな意思決定は遅らせつつも、無駄を排除してスピーディーな開発を行うことができるため、こうした不確定事項が多いケースにも向いている開発手法であるといえます。
アジャイル開発との違い
アジャイル開発とは、ウォーターフォール型の欠点である手戻りを防ぐべく、初めから厳密な仕様を決めずに、設計とリリースを繰り返してPDCAを回しながら徐々に開発を進めていくやり方です。
リーンソフトウェア開発はこのアジャイル開発の一種であり、より無駄をなくしスピードを意識したアジャイル開発であると位置付けることができます。
リーンソフトウェア開発の主なメリット
リーンソフトウェア開発の主なメリットは、以下の通りです。
要望に合った開発を行える
アジャイル開発の一種であるリーンソフトウェア開発は、スピードを重視しPDCAを回す開発手法です。
このため外注する際も定期的にフィードバックを行うことになるため、要望したものから方向性がズレにくく、出来上がってみたら要望と全く異なったアウトプットになってしまった、というリスクを最小限に抑えることができます。
生産性を上げることができる
リーンソフトウェア開発は、無駄を省きスピードを向上させることを意識した開発手法です。
このため、リーンソフトウェア開発を採用するだけで、より生産性を意識した開発を行うことができます。
短期間でサイトを開発するならパッケージ開発がおすすめ
リーンソフトウェア開発は、要望にあった開発を、短期間で実現することができる可能性を秘めた非常に有用な手法です。
ただし、ゼロから開発を行うためには、それなりのエンジニアリソースが必要になってくるため、新規事業など人員不足の際には必ずしも適切な開発手法ではないかもしれません。
一方で、人員不足の際は既存のパッケージを利用する「パッケージ開発」がおすすめです。
既存の仕組みを利用して組み合わせる開発手法であるため、人員不足でもクオリティを落とすことなく低コストでサイト開発を行うことができます。
まとめ
無駄なく必要なアウトプットを開発することを主眼としたリーンソフトウェア開発は、短期間で高いクオリティの開発を行う際には非常に重要となる開発手法です。
しかし、開発にはそれなりのエンジニアリソースを必要とするため、「人員不足だけど新規事業のためにサイトを作りたい」というようなケースではパッケージ開発がオススメです。
特に、マッチングプラットフォームを提供するサイトを作る際には、マッチングクラウドを活用するのがよいでしょう。
興味のある方はぜひ一度お問い合わせ下さい。