Webサービスは、開発に入るといろんな機能を追加していくことになります。勘違いされやすいのですが、機能はたくさんあった方がいいかというとまったく逆で、プロダクトの本質はいかに機能をシンプルに保つか、いかにつくらない判断をするかが重要になってきます。
この記事では、なぜプロダクトに機能を追加するかどうかを判断する必要があるのか、判断のしかたについて書いていきます。
プロダクトに追加する機能をしっかり判断する理由はふたつあります。それはプロダクトをシンプルに保つため、開発スピードを保つためです。
まずひとつめ、プロダクトで重要なのはシンプルであることです。プロダクトが提供したい価値を、雑音なくユーザにストレートに届けることです。それでユーザに響かなければ、どんな機能をつけても響くことはありません。
たとえば『検索』という文脈でGoogleとYahoo!を比較してみるといいかもしれません。
プロダクトをシンプルに保つために、追加する機能を判断する必要があります。
また、プロダクトの開発スピードも重要です。とくにProduct/Market Fitを達成するまでは、開発スピードがなによりも重要な要素になってきます。
たくさんの機能を実装してしまうと、ソースコード上も、ユーザへの説明責任という意味でも身動きが取りづらくなってしまいます。BtoBのプロダクトならなおさらです。
機能はコストであると考え、コストをふやさないためにも追加する機能を判断する必要があるという認識が重要です。
では、具体的にどんな機能を追加すべきでしょうか。これはプロダクトのステージによって変わります。
まず、プロダクトがMVPであれば『その機能がないとプロダクトとして成り立たないもの』、PMF期であれば『プロダクトにあるべき機能』を追加します。
『プロダクトにあった方がいい(なくても問題ない)』というレベルの機能は決して追加してはいけません。この機能を追加してしまうと、プロダクトがシンプルでなくなり、開発スピードが一気に遅くなってしまいます。
ここで、機能の重要度について考えてみます。機能とはそもそもユーザのなにかしらの課題を解決するものです。この課題を重要度でレベルをつけると
に分けられます。
MVP期ではレベル3、PMF期でもレベル2の課題のみを解決する機能を提供し、レベル1の課題は決して解決しないようにします。
たとえばレシピ共有サービスを例にみてみます。ユーザはレシピの投稿や閲覧、検索がないとおそらくレシピ共有サービスは利用しないでしょう(レベル3)。
あとで見たいレシピは保存できるべきですが、できなくてもさいあく検索でなんとかなります(レベル2)。
レシピに必要な材料を購入できるEC機能はどうでしょうか。あった方がいいかもしれませんが、なくても問題ありません。むしろ、あると『レシピを見る』という本質的な価値がぶれてしまい、離脱するユーザが出てくるかもしれません。
まずは解決しないと成り立たない課題のみを機能として提供して、次に解決すべき課題にとりくみます。解決した方がいい、というレベルの課題は解決すべきではありません。
あるいは、ECなどの大きな課題は別のプロダクトとして提供する可能性もあるかもしれません。が、まずは今つくっているプロダクトを成功させることを目指すべきです。
前章では機能の重要度について書きました。では、とある機能があったとして、この機能を追加するかどうかはどうやって判断するのでしょうか。
これは4つのステップで判断していきます。
とある機能について、その機能が解決しようとするユーザの本質的な課題はなにか?を考えます。
たとえばブログサービスにコメント機能をつけるかどうか。このアイデアの本質は『ユーザは投稿者とコミュニケーションをとりたい』あるいは『記事に対して自分の意見を主張したい』などが考えられます。
前章で示した3つの重要度、つまり
で課題にレベルをつけます。ブログの例だと、ユーザと投稿者がコミュニケーションをとれないとプロダクトとして成り立たなければレベル3になりますが、たいていの場合そうではないでしょう。
これも前章で示しましたが、MVP期はレベル3の『解決しないと成り立たない課題』、PMF期は『解決すべき課題』に対して、追加する判断をします。
解決した方がいい、というレベルの課題は決して解決しないようにします。
『追加するかどうか判断する』という問いの答えにはなっていませんが、よりよい機能として実装するために必要なプロセスです。解決する課題を決めたら、その課題を解決する機能をゼロベースで、つまりそれまで出ていたアイデアを無視して考え直します。
たとえばブログの例では、機能のアイデアは『コメント機能をつけたい』でした。これに関するユーザの本質的な課題は『投稿者とコミュニケーションをとりたい』です。
たんにコミュニケーションをとるだけなら、べつにメールフォームでもいいでしょう。読んだことを伝えたいだけならリアクション機能があればいいかもしれません。あるいは『自分の意見を主張したい』ならTwitterでコメントつきシェアができればいいかもしれません。
『コメント機能を追加する』というアイデアひとつでも、ユーザの課題から見直すことでいろいろな解決策につながることがわかります。
解決しないと成り立たない機能かどうかは、どう判断すればいいのでしょうか。これは、プロダクトのミッション、あるいはフックモデルやグロースサイクルといったプロダクトについて定義している文書をもとに判断します。
万が一『あった方がいい』レベルの機能を追加してしまった、あるいはすでに存在している場合は、削除するよう計画に入れましょう。
ユーザから「こういう機能がほしい」という要望をもらったりします。よくある、開発者にとってはうれしい話だと思います。
こういった機能をそのまま実装してしまうケースが多く見受けられます。ただ、これはよくありません。『ユーザを大切にしたい』という気持ちでやっているのかもしれませんが、これではユーザにとって本当に価値のあるものは届けられません。
ユーザはたしかにほしいものを伝えているかもしれません。ただ、ユーザは自分にとって本当に価値のある機能がなにかをしりません。
ユーザが「こういう機能がほしい」といったときに、その機能の本質的な課題に目を向けるのが開発者の役目です。本質的な課題を抽出して、プロダクトが解決すべき課題であれば、よりすぐれた解決策を機能として提供する。
『解決した方がいい』レベルの機能であれば、なぜ採用しないのか?プロダクトの背景をもとにユーザに示すことで、ユーザの共感をつくり、プロダクトもシンプルに保てます。
ユーザからもらったアイデアをそのまま実装するのは、ユーザファーストではなくたんなる思考停止だということを認識する必要があります。よりよい機能として提供して、ユーザをおどろかせましょう。
プロダクトに追加する機能は慎重に選択し、できるだけシンプルに保つ必要があります。
判断基準としては、アイデアの中にあるユーザの本質的な課題を抽出して、解決しないとプロダクトが成り立たない、あるいは解決すべき課題にのみ焦点をあてます。
重要度の高い課題についてゼロベースで解決策を考えることで、シンプルな機能をユーザにストレートに提供することができます。