Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
〇〇みたいな検索作ってと言われたときに考えること / thinking before dev...
Search
ryokato
July 29, 2022
Technology
6
3.7k
〇〇みたいな検索作ってと言われたときに考えること / thinking before developing search system like that one
ryokato
July 29, 2022
Tweet
Share
More Decks by ryokato
See All by ryokato
The first step self made full text search
ryook
8
6.8k
Other Decks in Technology
See All in Technology
クラウド関連のインシデントケースを収集して見えてきたもの
lhazy
5
420
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
210
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
140
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
Goで作って学ぶWebSocket
ryuichi1208
3
2.7k
PHPで印刷所に入稿できる名札データを作る / Generating Print-Ready Name Tag Data with PHP
tomzoh
0
180
OSS構成管理ツールCMDBuildを使ったAWSリソース管理の自動化
satorufunai
0
640
脳波を用いた嗜好マッチングシステム
hokkey621
0
290
手を動かしてレベルアップしよう!
maruto
0
200
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
260
Ruby on Railsで持続可能な開発を行うために取り組んでいること
am1157154
3
140
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
It's Worth the Effort
3n
184
28k
How to Ace a Technical Interview
jacobian
276
23k
Embracing the Ebb and Flow
colly
84
4.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
GitHub's CSS Performance
jonrohan
1030
460k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
© VisasQ Inc. All Rights Reserved. 〇〇みたいな検索作って と言われたときに考えること
© VisasQ Inc. / Confidential 自己紹介 ▪ 加藤遼 ▪ 株式会社ビザスク
◦ 検索チーム ▪ 最近好きなビールのスタイル ◦ スムージーサワーエール(高いけど
© VisasQ Inc. / Confidential こういうことよくありますね 〇〇みたい検 索作ってよ 検索よくしたい よね〜
とりあえず 〇〇参考にし てみるか〜
© VisasQ Inc. / Confidential 他サービスを参考にするのはいいことだけど... ▪ 安易に採用するとうまくいかない可能性があります。 ▪ 今回は、「なぜうまくいかないかもしれないの?」の説明をします
© VisasQ Inc. / Confidential 大前提にあるべき大事なこと ▪ 検索機能はサービスの一部 ▪ 機能やロジック・精度以前に、ユーザーにどういう体験を提供するかが重要
▪ ユーザーによりよい体験を提供するために、「よい検索機能」や「よい検索精 度」というものが必要という順番
© VisasQ Inc. / Confidential 検索システム全体像 ▪ 検索機能は単純に見えて、考える要素は意外と多い ▪ 最低限の検索機能を実現するだけでも以下の要素が必要
検索エンジン 検索ロジック 検索機能/UI データ ユーザー
© VisasQ Inc. / Confidential 検索機能を考えるときの視点 検索エンジン 検索ロジック 検索UI データ
ユーザー ▪ 検索機能の考えるときに青枠部分だけに意識が向きすぎる ◦ 不幸な結果になる ▪ オレンジ枠から考えることが重要 ◦ 青枠部分はオレンジ枠の内容次第で変わる
© VisasQ Inc. / Confidential ユーザーってどんな人?? ▪ その検索機能を使うユーザーがどんな人か理解する必要がある ▪ 検索観点だと
◦ 何を検索したいのか ◦ どういう観点で検索したいのか ◦ 検索する対象について詳しいのか ◦ 検索することになれているのか ◦ 何を求めて検索するのか ◦ どういう動機なのか
© VisasQ Inc. / Confidential 検索と行動は一つじゃない ▪ 「検索する人は何かを探したい」という認識は雑 ▪ 検索という行為は、動機やそれに基づく検索行動は複数ある
▪ 例えば、ランチのお店を探すときにどういう動機でどういう検索するかを考え てください
© VisasQ Inc. / Confidential ランチのお店探す時の動機の一例 ▪ 「今日お昼何たべよ」 ◦ 探したいものを認識できていない状態
▪ 「暑いからさっぱりしたやつ...」 ◦ 方針はある程度見えているが具体性はない状態 ▪ 「会社から近い麺にしよ」 ◦ 具体的な条件が明確で、条件を満たすものを探す状態 ▪ 「〇〇に行こう。場所どこだっけ?」 ◦ 既知の特定の情報を探す状態 探したいものが明確 探したいものが不明確
© VisasQ Inc. / Confidential 誰がどういう動機・目的で何を探している(ニーズ)によって 「検索する」という行為も様々
© VisasQ Inc. / Confidential ニーズや動機による違い例 ▪ よくみるこの機能も誰でも使えるわけではない 検索 探したいものが不明確な人
探したいものに詳しくない人 何で検索した らいいの... 必要な情報 見つけた!! 探したいものが明確な人 探したいものに詳しい人
© VisasQ Inc. / Confidential ニーズや動機による違い例 ▪ もしこういう結果になったら発狂したくなりますね? 近くのサイゼリヤを探したい時 渋谷のイタリアンを探したい時
サイゼリヤ デートにおすすめ!渋谷イタリアン10選 家族連れもOK 気楽にいけるイタリアン ・ ・ ・ 渋谷 イタリアン サイゼリヤ渋谷東急ハンズ前店 サイゼリヤ恵比寿駅東口店 ・ ・ ・
© VisasQ Inc. / Confidential どんな機能が必要か、どんなロジックがいいのかは ユーザーのニーズによって異なる 他サービスの機能がそのまま自サービスの ユーザーニーズに一致するとはいえない
© VisasQ Inc. / Confidential うちのサービスのユーザーのニーズもバッチリ理解した! その上で参考になる機能を見つけた! よしこれ実装しよ!
© VisasQ Inc. / Confidential そうは問屋が卸さないのが検索システム
© VisasQ Inc. / Confidential 検索(システム)はそもそも... ▪ DBに存在する情報しか検索できない ▪ 完璧な機能(UI)とロジックでも、ないものを探すことはできない
© VisasQ Inc. / Confidential こういうのあるあるですね いや、そういうデータう ちにはなくて... この条件で検索した い!!!
その項目ほとんど入力 されてないんで... この項目で検索しても 全然ヒットしないんだ けど!!!!
© VisasQ Inc. / Confidential データ品質は検索体験に大きく影響する ▪ データの欠損 ◦ 一部入力されてない、入力されていても短くて十分な情報量がない、等
◦ 検索してもうまくヒットしない... ▪ データの信頼性が低い ◦ 入力内容が間違っている、形式がバラバラ、古くて更新されていない、等 ◦ 期待通りにヒットしない。間違った内容がヒットする。 ▪ 各社データの品質をあげるために、データを買ったり機械学習的なこと頑張っ たり、人手で整備する専任部隊を作ったり、様々工夫している
© VisasQ Inc. / Confidential その機能はそもそも... ▪ 他サービスの検索機能が実現できているのは、持っているデータに依存してい る可能性がある こういうのもカテゴリデータであったり、検索ログだったりといったものがあるからできる
© VisasQ Inc. / Confidential データの準備方法はサービスによって異なる ▪ データをどうやって準備されているかは様々 ◦ ユーザーが入力する、(信頼できる)特定の人が作成する、整備されたデータベース
を購入する、など ◦ 独自でデータを作っていたり ▪ サービスや準備方法が異なれば、データの特性も違う ◦ 表記ゆれが多いとか、入力が少ないとか、テキストより数値が多いとか ▪ 同じ事業ドメイン、似たようなサービス、似たようユーザーニーズであって も、持っているデータの違いから、同じ検索機能を提供できるとは限らない
© VisasQ Inc. / Confidential データの特性と品質を理解しておくのはとても大事
© VisasQ Inc. / Confidential 検索機能を考えるときは ▪ ユーザーに提供すべき体験、解くべき課題を明確にする ▪ 前提となるユーザーニーズやデータについて理解する
▪ 前提をもとにどういう手段が適切なのかを考える ◦ この段階で他サービスを参考にするとよい 検索機能はあくまでも手段なので目的をまちがえないように
© VisasQ Inc. / Confidential まとめ ▪ 検索機能やロジックは、ニーズやデータ特性によって何が適切かは異なる ▪ いい感じの検索機能やロジックを作るよりも、解決したい問題は何か、提供し
たい価値は何かという目的を明確にして最適な手段を選ぶことが大事 ◦ 実際は今回の話以外にも技術的難易度やコスト、ROI等色々なことを考慮する必要 がある
© VisasQ Inc. / Confidential Appendix ▪ もっと詳しく知りたい人は、ペンギン本こと「検索システムー実務者のための 開発改善ガイドブック」を読んでください。