目的リーンの本質を理解し、リーン開発に取り組むことで、ムダのない効率的な開発が可能になります。本記事では、そのための基本的な知識と概念をお伝えします。リーンとはここでいうリーンとは、トヨタ生産方式を原点とし、ソフトウェア開発に応用された価値観や考え方を指します。リーンの重要な考え方リーンの重要な考え方は大きく4つあります。1. バッチサイズを小さくするバッチサイズを小さくすることで、必要なものを必要なときに必要な量だけ作ることができます。これにより、無駄な開発を削減し、効率的な開発が可能となります。出典: https://hkashima.github.io/algorithm2019_4.pdf2. WIPの制限(仕掛り制限)タスクが多すぎる場合、複数のタスクを同時に進めることになります。これが原因でタスク完了までに時間がかかり、リリース時のリスクも増加します。WIPの数を制限することで、タスクの掛け持ちを防ぎ、効率的に進めることが重要です。出典:https://www.agilesherpas.com/blog/agile-project-management-marketers3. 自働化自働化とは、異常検知とプロセスの標準化です。標準的なプロセスを定義し、異常を検知するとプロセスを停止し、原因を特定して再発防止を行います。これにより、標準プロセスの品質が向上します。テストの自動化やCI/CD、DevOpsの原則、SREの考え方にも通じます。出典: https://global.toyota/jp/company/vision-and-philosophy/production-system/4. 変動を小さくする品質のムラをなくすためには、作り方のムラをなくすことが必要です。プロセスを標準化することで自動化が進み、変動を小さくすることで品質とスピードが向上します。キングマンの法則によれば、変動が小さくなると待ち時間が減少します。これらの考え方は相互に関連しており、開発現場の「ムリ・ムダ・ムラ」を取り除き、高品質で効率的な開発を実現します。大きな変更や大きなリリースの問題リーンで繰り返し言及される「小さなバッチサイズ」は、品質にも大きく影響します。大きな変更やリリースは、以下の「3つの困難さ」によって、変更失敗率の増加と品質の低下をもたらします。1. 変更把握の困難さ開発者やレビュワーが把握すべきコードの量や範囲が増えるため、認知負荷が高まり、影響範囲を正確に把握するのが難しくなります。コードレビューのコストも高まり、品質が低下します。2. テストの困難さテストの範囲が広がり、全体の品質を確保するのが難しくなります。変更が密に結合していると複雑になり、問題の特定にも時間がかかります。3. デプロイの困難さ大規模リリースでは、新しいバージョンの導入に伴う予期しない問題やバグが発生しやすくなります。ロールバックが難しく、ダウンタイムが増加するリスクもあります。大規模リリースの準備や実施には多くのリソースが必要となり、他の重要な開発の品質低下や遅延のリスクがあります。これらの困難さは、開発、レビュー、QA、リリースの全プロセスの品質とスピードの低下を招きます。リーンを支える理論リトルの法則リトルの法則は、スループット、サイクルタイム、WIPの関係を示す式です。平均WIPが増加すると、平均サイクルタイムと平均スループットのどちらか(または両方)が変化します。出典: https://www.plutora.com/blog/agile-metrics制約条件理論 (Theory of Constraints; TOC)制約条件理論は、システムの性能を最大化するためには最も制約の強い部分、すなわち「ボトルネック」に焦点を当てるべきだという考え方です。ボトルネックを特定し、解消することで全体の流れをスムーズにします。出典: https://medium.com/praxis-blog/theory-of-constraints-106-the-five-focusing-steps-741f1b770bf1キングマンの法則キングマンの法則は、システムやプロセスの利用率と変動が待ち時間に与える影響を示す法則です。変動が増加すると待ち時間も増加するため、変動を最小化することでプロセス全体の効率が向上します。出典: http://www.leancompetency.org/lcs-articles/the-equation-of-lean/最後に開発に銀の弾丸はありません。遠回りに見えても、地道に継続的に改善をチームで積み重ねていくことが開発速度の最大化と品質の向上につながります。本記事の内容が開発速度の加速の一助になれば幸いです。Hi-Outcomeでは成果が実証されたメソッドにもとづき、「開発スピードの向上や予測精度向上」を支援しています。プロダクト開発で課題を感じている方はお気軽にご相談ください。