定番メニューを提案して検索体験をより良くする

クックパッド検索・編成部の須藤耕平です。

先日、「定番提案」(と呼んでいる)機能をスマートフォン版のクックパッドにリリースしました。
本エントリでは、この機能を開発するにあたって考えたことや、形にする上で工夫した点などを紹介させて頂きます。

f:id:sudokohey:20150907185918p:plain

ひき肉の検索結果に表示される定番メニュー

検索成功率を追う

検索チームでは、サービスの満足度を図る指標として検索成功率という数値を追っています。 検索成功率とは、特定の条件を満たして終了する「検索成功セッション」が全セッションに占める割合を示したもので、この数値が高いほど、目的のレシピに到達し易い検索体験を提供できていると考えています。

レシピが決まりにくいキーワードから利用シーンを推測する

クックパッドの検索窓に入力されるキーワードは、食材名、料理名、その他の3つに大別されます。 その他に分類されるキーワードの多くは、「ダイエット」「ランチ」「誕生日」といった目的を示す言葉であり、これらは他と比較して検索される頻度こそ少ないものの、検索成功率が著しく低いことが分かっていました。

f:id:sudokohey:20150908091803p:plain

目的系のキーワードで成功率が低い理由としては、探している本人がそもそも「正解」を理解していなかったり、誕生日パーティをするので食卓全体をコーディネートしたいといった、ぼんやりとした気持ちで検索に臨んでいるためと推測できます。

そこで、すでに検索を開始しているユーザーの動線上にどのようなサポートがあれば、ぼんやりした状態を解消できるかを考えました。

検索モードと機能をマッピングする

人が情報を探し出す状況に於いて、複数のモードが存在するという考え方があります。 *1 分かりやすくレシピを探し出す状況を例として添えると、以下のようになるでしょうか。

  • 認識不足モード (例:ダイエットに関心があるが、何が有効かなど、全く知識の無い状態で探している)
  • 調査探索モード (例:冷めても美味しく食べることができるお弁当のおかずを探している)
  • 既知項目検索モード (例:簡単な回鍋肉の作り方を探している)
  • 再探索 (例:以前に作ったxxさんのyyというレシピを探している)

一口に検索するといっても背景には様々な文脈がありますが、このような分類に当てはめるて考えると、先の「ぼんやりした状態」は認識不足モードに該当すると言えそうです。

また、既に提供している機能の面から、上記の各モードに対してどのようなサポートができているかを考えてみました。

f:id:sudokohey:20150907190316p:plain

例えば 再探索モードであれば、 MYフォルダという機能を使ってお気に入りのレシピを保存することができますし、既知項目検索モード であれば、「簡単 回鍋肉」の1番人気のレシピを見ることで、ぴったりのレシピに辿り着くことができるかもしれません。
一方で、対象に対して明らかに認識が不足しているような状況を想定すると、すでに検索を開始してしまったユーザーの動線上には、それを解決するための十分な機能がありませんでした。

検索対象の概要を俯瞰して認識不足を解消する

例えば、「ランチ」と検索すると、約26,000品のレシピが検索結果に返るのですが、この状況から自分にぴったりのランチメニューを探し出すのは容易ではありません。 そこで、ぼんやりと「ランチ」向けのメニューを探したいと考えている状況に対して「ランチ」の定番メニューを提案し、その認識を補完することで検索をサポートできないかと考えました。

この機能を利用した場合の想定される遷移は以下の通りです。

f:id:sudokohey:20150907190346p:plain

  1. 「ランチ」と検索する(26,000品のランチ向けレシピが返る)
  2. 提案されたチャーハン、おにぎらず、どんぶり...といったメニュー候補の中から、「パスタ」を選択
  3. 提案されたペペロンチーノ、クリームパスタ、和風パスタ...といったメニュー候補の中から「冷たいパスタ」を選択
  4. 提案されたトマト、生ハム、アボガド...といった冷たいパスタ向けの食材候補の中から「トマト」を選択
  5. 食べたいものが具体化し、検索対象が当初の1/10(2,500品)にまで絞り込まれる

こような遷移を辿ることで、「ランチ何にしよう?」というぼんやりした認識から、「トマトを使った冷製パスタが食べたかったんだ!」という具体的な状況に到達させることができれば成功です。

ちなみに、2,500品でも多くて決めきれないとは思いますが、この機能の役割はモードの移行を起こすことであり、絞り込まれた特定のメニューのリストから最後の1品を選ぶにあたってのサポートは前述した別の機能が担います。
検索セッションのような流れのある体験を改善する場合には、単一の機能で全てを賄うのではなく、状況に応じて段階的に手を差し伸べるようなコミュニケーションをデザインすることが大事だと考えています。

ユーザーの期待を先回りして提案する

提案の種類にはメニュー名を返すケースと、食材名を返すケースの2パターンを用意していますが、その判定には関連キーワードという既存の機能を利用しています。
関連キーワードは、あるキーワードで検索を始めたユーザーが、次にどんな言葉に書き換えて検索したかを集計したもので、例えば、「カレー」で検索した場合の関連キーワードは以下のようになります。

f:id:sudokohey:20150907190438p:plain

「隠し味」「リメイク」とった単語もありますが、全体に占める割合としてはメニュー名が高いことから、提案として期待される内容はメニューであると判断し、以下のようなメニュー群を候補として返しています。

f:id:sudokohey:20150907190505p:plain

「アヒージョ」と検索した場合は、関連キーワードに食材が多く含まれるため、提案の候補として食材を返します。

f:id:sudokohey:20150907190536p:plain

これを動的に判定することで、「パスタ」であればメニュー名、「冷たいパスタ」であれば食材名といったように、キーワードに応じてユーザーが期待する提案を先回りして返せるように工夫しています。

ちなみに、面白い提案の例としては以下のようなものがあります。

f:id:sudokohey:20150907190608p:plain

冷蔵庫にありそうな食材と、副菜っぽい小鉢のサムネイルが並びます

副菜に困っても、冷蔵庫のよくある食材でちょっとした何かを作れそうです。
変わり種としては地名が面白いです。

f:id:sudokohey:20150907190748p:plain

名古屋名物いろいろ

f:id:sudokohey:20150907190815p:plain

沖縄の定番料理

沖縄旅行に行って食べたレシピを家で再現したいけど、あれ何ていう料理なんだろ?なんていうときに便利かもしれません。

成功率は向上したか?

技術的な詳細は長くなるので割愛しますが、数多くのプロトタイプとABテストによる検証を繰り返した結果、特定の状況(クエリ)に於いては有意な成果を確認できたものの、残念ながら全セッションを対象とした全体の検索成功率に対して大きなインパクトをもたらすことはできませんでした。
が、そんなことは日常茶飯事で、この程度で肩を落としていてはクックパッドのサービス開発は務まりませんし、ここから得られた知見で、明日の料理をもっと楽しくできる!という内なる炎を燃やし続ける能力が何より大事です。

目下、提案内容の質を高めるべく継続してプロジェクトは進んでいますし、検索成功率そのものを算出するロジックもより精緻なものへ改善を図っています。
また、より多くのユーザーにこの体験を提供すべく、アプリ(ios, android共に)を含めた全プラットフォームへの横展開も絶賛進行中ですので、このエントリを読んで少しでも興味を持って頂けたエンジニア・デザイナーの方がいらっしゃいましたら、ご応募お待ちしております!

*1:オーストラリアのインフォメーションアーキテクトDonna Maurerによって提案された4つの情報探索モード。UX系の本とかを紐解くと時々出てきます。

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('http://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('http://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/