『特集 アジャイルの視点』では、アジャイルの考え方を様々な切り口でお伝えしていきます。

不確実性の高い状況下において「探索」と「適応」のためのすべとなるアジャイルの取り組みは、困難な道のりの連続です。行き詰まったときや、なかなか越えられない壁に直面したとき、「原点」に立ち戻ることで新たな景色が見えてくることがあります。
いつでも立ち戻ることのできるアジャイルの「道しるべ」として、この記事をご活用いただければ幸いです。

今回のテーマは、「ソフトウェア開発とプロダクト開発」です。
いずれも「作る」という点で、時に同じような意味を持つ言葉として何気なく使われがちですが、それぞれの目的や背景を紐解いてみると、微妙な濃淡があることに気づきます。
その違いから見えてくるものを、レッドジャーニー代表の市谷聡啓が綴ってきたコラム(note)を通して探ってみたいと思います。

「ソフトウェア開発」と「プロダクト開発」は違う

「ソフトウェア開発」と「プロダクト開発」、なぜこれら言葉を使い分ける必要があるのでしょうか。また、この2つの言葉の違いはどこにあるのでしょうか。

 何げなく使っている言葉であっても、突き詰めて捉えていくと違いに気づくことができる。言葉を丸めたまま扱うと、それ以上理解が深まることはない。大事なテーマであるほど、使う言葉に気を払うようにしたい。

「ソフトウェア開発」と「プロダクト開発」は違う|市谷 聡啓 (papanda)|note

言葉を丸めて使うことの弊害は理解できました。次は「ソフトウェア開発」と「プロダクト開発」の2つの言葉の違いを、「目的」から捉えてみましょう。多くの場合、「プロダクト開発」の一環として「ソフトウェア開発」も行われるため、一見すると同じことを表しているように思えます。
しかし、両者の「目的」を比較してみると、その違いは次のようになります。

 ソフトウェア開発の目的とは、ソフトウェアを作ることにある。
ソフトウェア開発と称して「作らない」ということは稀だろう。どのようにソフトウェアを作るか、という観点に焦点があたりやすい。ときとして、ソフトウェア作りそのものが「こだわり」へと昇華していく。

 一方、プロダクト開発の目的とは、プロダクトを利用してもらうことにある。
プロダクトを提供し、そこで何らかの価値を見出していけるかが焦点になる。
提供のためにたいていはやはり(ソフトウェアを)作ることになるため、開発自体が上手くいかなければ話にならない。

「ソフトウェア開発」と「プロダクト開発」は違う|市谷 聡啓 (papanda)|note

目的が違えば当然見える景色は異なります。言葉を使い分け、その意味の違いを理解しなければならない理由はここにあります。

 このように目的の置き方に濃淡が生まれやすい。もちろん、ソフトウェア開発でも使う側のことを想定して作るものだ(そういう観点を持つことを開発者には期待したい)。プロダクト開発も作ることはどうでも良いとかそんな極端な話にはならない。地と図の関係のように、目的の置き方で重きが異なりやすいということだ。

「ソフトウェア開発」と「プロダクト開発」は違う|市谷 聡啓 (papanda)|note
図と地の関係を象徴的に表す「ルビンの壺」。白地の部分と黒地の背景、どちらに焦点を合わせるかでまったく違うものが見えてくる。
出典:ルビンの壺 – Wikipedia

また、「ソフトウェア開発」と「プロダクト開発」は、それぞれの目的を果たす上で、「作る」と「使う」という2つの言葉をどのように扱うべきでしょうか。

 ソフトウェア開発とプロダクト開発では、その目的からそもそもの世界観が異なっており、やろうとしていることとメンタリティがずれていると、まず成果にたどり着けない。

ソフトウェア開発:「作る」→「使う」
プロダクト開発 :「使う」→「作る」

 ソフトウェア開発は 「作る」から始まり、その後「使う」を迎える。 プロダクト開発は逆に 「使う」から始まり、「作る」に本腰を入れていく。

「ソフトウェア開発」と「プロダクト開発」は違う|市谷 聡啓 (papanda)|note

「ソフトウェア開発」という言葉は、日本では受託開発の文脈のもとで使われるのが主だった頃が長く、開発者=「作る側」の言葉として育まれてきたという経緯があります。
一方、「プロダクト開発」という言葉は、「利用価値があるかどうか」にフォーカスすることから、「作る側」と「使う側」、両者で共有する言葉として成り立っています。

プロダクト開発がうまくいかないと感じたら、この2つの言葉について深掘り、メンバー間であらためて認識を合わせてみると良いでしょう。

 以上を踏まえると、「経験深いソフトウェア開発者を集めたのに、プロダクト開発がうまくいかない(期待されたリリースまで辿り着かない)」という問題が起きるのも合点が行く。「プロダクト作り」でありながら、「ソフトウェア作り」に固執するとコミットメントの対象が噛み合っておらず、ちぐはぐになる。

「ソフトウェア開発」と「プロダクト開発」は違う|市谷 聡啓 (papanda)|note

「ソフトウェア」と「プロダクト」の違いと共通点

「ソフトウェア開発」と「プロダクト開発」の違いから見えてくるのは、「ソフトウェア」と「プロダクト」の違いです。
両者の違いを整理してみましょう。

「プロダクト」作りがうまくいかないとき、どのような状況が考えられるでしょうか。
上図で確認した「プロダクト」という言葉の定義に立ち返り、「プロダクト」作りに適した状況とは何なのかについて捉え直してみましょう。

前回の記事でお伝えした通り、「正しいものを正しくつくる」とは、「整合を取る」ということです。

プロダクト作りにおいて、皆さんのチームが目指していることは何ですか?
作ろうとする「プロダクト」と整合する先に何を置くか、まずはその特定から始めてみましょう。

整合先の特定は「プロダクト」に限った話ではありません。「プロダクト」と「ソフトウェア」では目的の置き方や取り組み方の方向性は異なるものの、ユーザーが期待している、使える「ソフトウェア」を考える際にも、整合先を特定する「価値探索」が必要となるということが下図からわかるでしょう。

「手持ちの武器による誤謬」を起こさない

「実現したいこと」とそのための「手段」の「整合を取る」ことについて、「テニスの試合に野球バットを手にしていくようなことがないように」と市谷は例えています。

 「実現したいこと」と、そのために手にする「手段」の整合を取らねば、まず期待するような成果は現れない。

 プロダクト作りにあたってもこのことを念頭に置く必要がある。テニスの試合に臨むにあたって、野球バットを手にしていくようなことが無いように。手にする手段が違っていては、話にならない。たとえ、これまでどんなにバットを振っていて、スイングには自信があったとしてもだ。

「手持ちの武器による誤謬」を起こさない|市谷 聡啓 (papanda)|note

既に手中にあり、使い慣れた「手段」であるほど、「実現したいこと」との整合性を問う必要があります。
その指標の一つとして、チームで使われる言葉に着目してみましょう。

「プロダクト開発」に臨むチームで、「要件」「仕様」という言葉が頻出しているとしたら、「手持ちの武器による誤謬」に陥っている可能性が高い、と市谷は指摘します。

プロダクトチームでありながら、「要件」「仕様」という言葉を耳にすることが多い場合、「手持ちの武器による誤謬」に陥っている可能性が高い。

プロダクト作りにおける「要件」とは何か? いつ、だれが、それを決めるのか。まさか、プロダクトオーナー?
 「何をつくるべきか?」この問いにプロダクトオーナーも、開発者も、デザイナーも、プロダクトチームのメンバーは全員向き合わなければならない。そこに「要件」という言葉をあてはめているようだと、作ろうとしているのは「プロダクト」ではなく「ソフトウェア」になっているかもしれない

「手持ちの武器による誤謬」を起こさない|市谷 聡啓 (papanda)|note

不確実性の高い「プロダクト作り」において、何を作るべきか?を捉える言葉は、「要件」「ストーリー」「仮説」など、メンバーによって違っているかもしれません。
使われる言葉に着目し整理することで、誤謬あるいは詭弁を浮き彫りにすることができるでしょう。
また、メンバー間の相互理解を深めることにもつながります。

 言葉は、それを用いる人のこれまでの経験の影響を受ける。「何かよくわからないもの(プロダクトとして作るべきもの)」を捉える言葉として、「要件」をあてる人、「ストーリー」をあてる人、あるいは「仮説」をあてる人。そこでどういう言葉を使うかで、どんな歩みが色濃かったのか想像することもできる。

「手持ちの武器による誤謬」を起こさない|市谷 聡啓 (papanda)|note

「プロダクト作り」に必要なのは、何を作るべきか?を明らかにするための「仮説検証」です。
テニスの試合に野球バットを持っていくようなことのないように、自分たちが目的地へ向かうのに今何を手にしているのか、言葉を通して再確認するようにしましょう。

書籍『正しいものを正しくつくる』 プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について