pixiv insideは移転しました! ≫ https://inside.pixiv.blog/

BOOTHでおすすめ機能を実現するということ

ピクシブ株式会社 Advent Calendar 2015の17日目の記事になります。

qiita.com


こんばんは、新卒の @RinKeiHotman です。 BOOTH・pixivFACTORYチームでRailsエンジニアやっています。

今日はBOOTHのアイテムをユーザに推薦する方法について話をしようと思います。推薦システムに触れますが実装にはいたらなかったため、他サービスの事例の調査や、先月開催されたイベント「APOLLO」を通して得られた知見について紹介します。

推薦システムの目的

推薦システムの目的はユーザのその時の好みにあったアイテムを届けることです。ユーザの好みに合ったアイテムを推薦できたとしても、それがユーザにとって既知のものであったり、その時に探しているコンテキストを汲んだものでなかった場合は、意味のある推薦とはいえません。たとえば、「普段はアクション映画が好きだけど、今日は泣ける映画が観たいな」というユーザに一度見たことがある作品や普段の好みに合うアクション映画をおすすめすることに価値はありません。

推薦システムの仕組み

推薦システムがユーザが好むと思われるアイテムを決める仕組みは、大きく分けて次の2つが考えられます。

  • 好みの似ている別のユーザを参考に、おすすめするアイテムを決定する
  • ユーザの好みのプロファイルを構築しておすすめアイテムを検索する

いずれの手法もデータベース設計が重要になるため、既存のサービスに組み込もうとする場合にはサービスのデータベースに適合するか確認が必要です。

BOOTHのおすすめ機能

筆者は開発に携わっているBOOTHに推薦システムを組み込みたかったのですが、入社してから数ヶ月、とある制約に阻まれ効果的な実装ができませんでした。

決済の制約

BOOTHはショップ作成サービスであり、各ショップはサブドメイン名(https://*.booth.pm)で分断され、ショップオーナーには独立したサイトとしてショップ機能を提供しています。そのためトップドメイン名(https://booth.pm)のページにしか複数のショップのアイテムを表示しておらず、SNSなどからショップに飛んできたユーザが他のショップに移ることが難しくサービス全体での回遊性が低いことが問題でした。

f:id:devpixiv:20151217170453p:plain

その問題に対して推薦システムは有効だと思われたのですが、BOOTHではショップごとに決済を行う必要があります。そのため、複数ショップのアイテムを一括して購入できない欠点※1を抱えています。この問題が非常にネックで、たとえユーザの好みにあったアイテムを推薦しても発送元ごとに送料がかかるため購入してもらいにくくなっています。そういった理由からまずは他の課題を解決することが優先されました。

※1 11月2日からは新実装の「倉庫おまとめ発送」により倉庫にある商品であればまとめて発送できるようになっています。

とはいえ、推薦システムは個人的に気になるテーマだったので他のサービスについて調査していたのをいくつか紹介します。

pixivの「おすすめユーザー」はブックマークから

身近なサービスであるpixivでは、「おすすめユーザー」機能(http://www.pixiv.net/search_user.php)でユーザが好むイラストを描いていると推測された投稿者を推薦しています。この機能を実現する推薦システムでは、ユーザのブックマークやフォローといったデータを用いておすすめするユーザを決定しています。それらのデータはpixivのコンテキストに合っており、その機能から投稿者がフォローされることも見られ、フォロー数の増加に一役を買っています。

f:id:devpixiv:20151216085726p:plain

Netflixは家族それぞれが使うことを想定している

他社のサービスの例として、今秋日本でもサービスを開始した動画配信サービスのNetflixを紹介します。Netflixはひとつのアカウントで複数のユーザが利用することを想定したサービスなので、あるユーザへおすすめ作品を表示する際に他ユーザのデータを利用しない、といった工夫がなされています。たとえば家族でサービスを利用する場合、それぞれの好みに合わせた作品をおすすめすることができるので、このようなサービス設計はノイズのない推薦をするのに効果的です。

他にも複数のサービスを調べましたが、BOOTHへの推薦システムの組み込み方は思いつけずにいました。そんな折、先月開催されたBOOTHをベースとした第2回ネット同人音楽即売会「APOLLO」が、筆者にヒントをもたらしました。

ネット同人音楽即売会「APOLLO」の開催で気づいたこと

APOLLOはBOOTH上に出店された音楽作品を即売会のように作者と交流しながら買うことができるイベントです。ユーザは好みの音楽ジャンルを指定し、連続して再生される数十秒の音源を聞きながら好みの音楽を見つけることができます。また「注目の作品」が定期的に切り替わることで常に新しい音楽を見つけられるようになっています。さらにダウンロード販売のアイテムが豊富なおかげで、ユーザの送料負担が軽減されています。

f:id:devpixiv:20151216092416p:plain

APOLLOは推薦システムを備えていたわけではありませんが、イベントに並ぶ商品を音楽に集中させることで、推薦システムが果たしたい目的である「ユーザのその時の好みにあったアイテムを届ける」ことを実現していました。

BOOTHのこれから

APOLLOによって、送料などの問題を無視できるようなコンテキストにおいてユーザの好みにあったアイテムを届けるイベントや別サービスを考えれば、BOOTHでも推薦システムの目的を達成できるということがわかりました。現在、筆者はこれをどうやって別の形にするかというところで悪戦苦闘を続けていますが、近いうちにその成果をお目にかけたいと思います。ご期待ください。

最後までお読みいただきありがとうございました。 それでは明日は tadsan です。よろしくお願いします!