リーンソフトウェア開発における最終責任時点とは?なぜ決定を遅らせるのか?

2020年11月16日

リーンソフトウェア開発と最終責任時点

リーンソフトウェア開発とは

リーンソフトウェア開発とは、コストを抑え、ユーザーへ素早くサービスを提供するためのソフトウェア開発手法です。
リーンソフトウェア開発の提唱者であるメアリー・ポッペンディークとトム・ポッペンディークの著書『リーンソフトウエア開発 ~アジャイル開発を実践する22の方法~』では、リーンソフトウェア開発は「7つの原則」と「22の思考ツール」から成るとしています[1] … Continue reading

今回は『リーンソフトウェア開発』で紹介されている最終責任時点について解説していきます。

最終責任時点と「決定をできるだけ遅らせる」という原則

リーンソフトウェア開発とは内容が定まった実践手段ではなく、アイデア創出の手助けをする思考方法です。最終責任時点も同様であり、具体的に「何をするか」は各チームが見つけ出す必要があります。
明確な指針が示されないと不安になってしまいがちですが、最終責任時点を難しく考える必要はありません。

最終責任時点(last responsible moment:LRM)とは、リーンソフトウェア開発の「22の思考ツール」のうちの1つで、決定を下しそこねると、重要な代替策がなくなる時点を意味しています[2]『リーンソフトウェア開発』、94頁。。あるいは、決定を下さないコストが決定を下すコストよりも大きくなる時点とも表現することができます。
最終責任時点はリーンソフトウェア開発の22の思考ツールの1つですが、もともとはリーンコンストラクション研究所の造語です。

リーンソフトウェア開発の7つの原則の中で、「決定をできるだけ遅らせる」という原則があります。この原則で用いられるのがこの最終責任時点です。

決定を遅らせることの利点とは

ソフトウェア開発における決定とは、「この機能を本当に実装するのか」「どのような機能を開発するのか」などの仕様の確定を指します。
しかし孫子の言葉に「兵は拙速を聞くも、未だ巧遅を覩ざるなり」という言葉があるように、一般的に物事の決定は早いほうがよいとされています。
では、リーンソフトウェア開発で仕様の決定を遅らせるのはなぜなのでしょうか。

仕様の決定を遅らせる利点は、仕様変更のコストを抑えるためです。
ソフトウェア開発では、設計段階で考えていた機能が予想通りの効果を上げず、「この機能はこっちの仕様のほうがよかった」「やっぱりこの機能は要らなかった」ということが起こります。
こうした仕様変更がプロダクトのリリース直前で発生してしまうと、修正にかかるコストは膨大な金額になってしまいます。
そのため、早く決定を下して大幅な修正をするよりも、決定を遅らせるほうがコストを低く抑えられるというのが、リーンソフトウェア開発の「決定をできるだけ遅らせる」というアイデアです。
リーンソフトウェア開発では、最終責任時点までに様々なプロトタイプを作成し、時間が許す限り何が最良なのかを考えてから仕様を決定します。

最終責任時点の注意点

最終責任時点 は「いつまでも期日を先延ばしにして良い」と言っているわけではありません。上述の通り、最終責任時点とは重要な代替策がなくなる時点であるため、この時点を過ぎてから意思決定をしても、採用できない策が出てくる可能性があります。
例えば、リリースまで残り3カ月なのに、その時点で開発に5カ月必要な機能を求めることはできません。
そのため、候補に挙がっている代替策がそれぞれどのくらいの所要時間なのかを見積り、最終責任時点を定め、そこまでに意思決定を行うようにしていきましょう。

1メアリー・ポッペンディーク(著)、トム・ポッペンディーク(著)、平鍋健児(訳),高嶋優子(訳)、佐野建樹(訳)『リーンソフトウエア開発~アジャイル開発を実践する22の方法~』日経BP、2004年。以下、『リーンソフトウェア開発』と略記。
2『リーンソフトウェア開発』、94頁。