Search&Discoveryとは結局何か
こんにちは。
IT企業でデータ活用プロダクトの開発に従事しているrilmayerです。
この記事はアドベントカレンダー「Search&Discovery 全部俺」24日目の記事となります。
アドベントカレンダーで見てきた内容を踏まえて、Search&Discoveryについて自分なりの考えをまとめて見ようと思います。
このノートでは、Search&Dsicoveryという概念について「だいたいこういうものね!」という輪郭を与えて、色んな人に叩いてもらったり議論してもらったりするための土台を作りたいと思います。(ひどく脆い土台ですが・・・)
新しい概念を作るときのアプローチ
新しい概念について考える方法は色々ありますが、今回は今まで書いてきた記事を元に、その「構成要素」や「どのような捉え方ができるか」、「重要な観点」等をつらつら書いていき、最後にそれらをまとめて「だいたいこんな感じ」という方法をとりたいと思います。
事象を拾いながら組み上げていくので帰納的なアプローチとなります。
Search&Discoveryの構成要素
まずは、Search&Discoveryの学問分野的な要素を考えたいと思います。
今まで見てきたように、そして名前の通り「検索(情報検索)」と「推薦(推薦システム)」は欠かせません。これら2つの要素は学問領域として確立されてきているものとなっています。
また「より良いシステムを作ること(ソフトウェア工学?)」や「ユーザーの行動を考えること(ヒューマンコンピューターインタラクション?)」などの考え方も重要です。
その他職業としてのSearch&Discoveryの構成要素も考えてみたいと思います。アドベントカレンダー1日目の記事で少し触れましたが、リードやシニアなエンジニア職としてのSearch&Discoveryは「検索システム」や「推薦システム」の構築や改善を通してユーザーがアイテムを見つけるのを助けるといった職業でした。
最後にSearch&Discoveryをやっていくためにどのような観点が必要かを考えてみたいと思います。
Search&Discoveryを追求する4視点
Search&Discoveryで重要だと考える要素として以下の3つがあると思っています。
・ユーザー(システムを通してSearchやDiscoveryをしたいユーザー)
・アイテム(ユーザーにより発見される可能性のあるアイテム)
・システム(ユーザーがアイテムと出会う場所)
またそれぞれの要素を繋げるための横断的な視点(ユーザーが満足するようにアイテムを繋げるシステムを作っていくか)も必要になってくると思います。
以上を踏まえて、以下にSearch&Discoveryをやっていくために重要だと思う4つの視点について触れてみます。
1. ユーザーを深く理解しモデル化する視点
ユーザーの行動を理解して仮説を立てながらどのようなユーザーがどのように考えているかについて深く考えていく必要があります。
今回のアドベントカレンダーで言及できませんでしたが、例えば以下の記事が参考になります。
1つはEコマースなど「アイテム購買」に重きをおいたユーザーのモデリングで、もう1つは情報を得てユーザーが満足する過程をモデル化するという話です。
2. アイテムを深く理解しモデル化する視点
Search&Discoveryで扱うアイテムについて深く理解し、どのような情報が扱えるかやシステムでどのように扱うかなどを考える必要があります。
古くはデータモデリング問題でもありますが、現在はより様々なタイプのアイテムを扱うようになってきているように思います。
その他例えば、情報検索分野のメタデータや、自然言語処理の情報抽出、画像認識の物体検出など多彩な研究が行われています。
3. 継続的に改善可能なシステムを構築する視点
Search&Discoveryでは人が直接扱うことのできない量や質のアイテムとユーザーを扱っていく必要があります。(と思ってます。)
そのためにそれを実現するシステムを実現していくことが必要です。
基本的なシステム構築の知識やスキルに加えて、検索や推薦に特化した特殊な知識が必要となる場面があるかと思われます。
4. ユーザーによるアイテムのより良い発見を追求する視点
そして最後がユーザー、アイテム、システムをつなぐ視点です。
ユーザーとアイテムについて深く理解しうまくモデル化できたら、どのようにすればより良いSearchやDiscoveryが実現できるのかを考えていきます。
そうしてその考えをうまく実現するためにシステムとして構築していく必要があります。
具体的にはアルゴリズムを考えたり、マッチング問題を解いてみたり、必要なあらゆることをするのがこの視点となります。
結局Search&Discoveryって何だ?
ここまでつらつらと書いてきましたが、使われ方としては以下のように整理できるかもしれません。
例えば、学際的な「学問分野」と考えることもできます。
新しいエンジニアの「職業」と考えることもできるかと思います。
また「IT系プロダクトのジャンル」としても考えることができます。
とはいえ、結局のところカチッとした定義もないですし、そうした定義も作る必要はないかなと思っています。
個人的にはDevOpsという用語の説明で用いられる
文化であり、哲学であり、ムーブメント
という感覚がしっくりきます。
そんな感じにしていけたらいいなと思っています。
ここまでお読みいただきありがとうございました。