リーンソフトウェア開発でのオプション思考とは何か?仕様の決定を遅らせるための思考ツール

2020年11月20日

オプション思考の概要

オプション思考とは、リーンソフトウェア開発で用いられる場合、ソフトウェア開発にオプションを導入し、仕様の意思決定を遅らせようとする思考です。
リーンソフトウェア開発の22の思考ツールの1つとして数えられるオプション思考は、リーンソフトウェア開発の7つの原則の中の「決定をできるだけ遅らせる」という原則で用いられます[1] … Continue reading

「オプション思考」という言葉はリーンソフトウェア開発以外でも使われ、「原因を1つに特定せず、あらゆる可能性を考慮しながら問題にあたることで、より適切な対応を行うことができる」というアイデアとして紹介されることもあります[2]オプション思考とは何? Weblio辞書
しかし、リーンソフトウェア開発では、金融商品で使われる「オプション」のように、時間と労力を使ってリスクを低減させる選択肢を用意しておこうというアイデアとしてオプション思考は使われます[3]『リーンソフトウェア開発』、92頁。

決定を遅らせて、最良の仕様を選ぶ

リーンソフトウェア開発におけるオプション思考のイメージ
リーンソフトウェア開発におけるオプション思考

ウォーターフォール型に代表される、予測型の開発手法を採用したプロジェクトは、設計のフェーズで仕様を確定させ、開発を行い、展開(リリース)をするという流れになるのが一般的です。
しかし、どれだけ詳細に仕様を詰めたとしても、展開前に「思ったようなものではなかった」「状況が変化したので、機能に修正が必要になった」という場面に遭遇するのはよくある話です。
こうした状況になるのは、プロジェクト・マネジャーの管理が悪いわけでも、エンジニアの力量が足りないわけでもありません。そもそも、プロジェクトの初期段階で全ての物事を予測し、仕様の決定を下すという予測型の開発手法に限界があると言えるでしょう[4]『リーンソフトウェア開発』、93頁。

こうした中、オプション思考では、予測できない将来に対して、オプションを用意しておくことで、開発の柔軟な対応を実現していこうとします。
例えば、ソフトウェアをリリースする直前の段階でユーザーに体験版を試してもらった後に、ユーザーからのフィードバックをもとに画面デザインを決定できるよう画面デザインを複数案作成しておくという対応がオプション思考の実践として挙げられます。

このようにオプションを用意しておくと、開発の初期段階で仕様を決定する必要がなく、様々な情報が明らかになってきたプロジェクトの最終段階で仕様を決定することができます。

オプション思考の注意点

このように、オプションを用意しておくと、ソフトウェア開発のプロジェクトに柔軟さを持たせることができ、プロジェクトの失敗やリリース直前の仕様変更による混乱を防ぐことができます。
しかし、このオプションは金融商品の場合と同じであり、コストを支払ってリスクを低減させようというものであるため、オプションを増やせば、その分必要とされるコストも高まります。

オプション思考を採り入れる場合は、リスクとコストを天秤にかけ、どの程度オプションを用意しておくのかを考えていく必要があります。

1メアリー・ポッペンディーク(著)、トム・ポッペンディーク(著)、平鍋健児(訳),高嶋優子(訳)、佐野建樹(訳)『リーンソフトウェア開発~アジャイル開発を実践する22の方法~』日経BP、2004年。以下、『リーンソフトウェア開発』と略記。
2オプション思考とは何? Weblio辞書
3『リーンソフトウェア開発』、92頁。
4『リーンソフトウェア開発』、93頁。