Algolia Searchの速さに鳥肌が立った話
「Algolia Community Party in 京都 - 2019年5月10日」に参加し、LTしてきました!
発表資料
ストーリー
業務でAlgoliaのスパイクをうつ機会があったので、そのときに経験した 圧倒的な爆速っぷり について完全なる自己満でそのときの気持ちを伝えました!
SPA(Single Page Application)の入門チュートリアルで「検索バーでフィルタリング」する簡単なアプリを作った記憶は無いでしょうか?
下のCodePenのような簡単なフィルタリングアプリです。
ここで検索バーに文字を入力すると、リアルタイムにフィルタリングが適用されます。 とても速いのですが、Amazon、楽天市場、価格.comで使うような「大量のデータから検索」する機能で同じようなUXを実現しようとすると かなり難しい です。
なぜなら、上のフィルタリングアプリは 最初から ブラウザがインメモリに持っている情報に対してフィルタリングしているのに対して、「大量のデータから検索」する場合には外部のAPIにリクエストして、さらにそのAPIが外部のデータベース内のデータを取得しにいったりするからです。これをどうにか高速化するにはインデックスを頑張ったり、キャッシュを頑張ったりと、涙ぐましい努力が必要になります。そしてその努力をしたとしても、上のフィルタリングアプリのようなスピードを実現するのはかなり難しいと思います。
なので、大量のデータから検索するときに、 ちょっと時間がかかる っていうのは「ある程度は仕方ないかな」と妥協することが多いはずです。
ただし! 外部にデータがあったとしても爆速で検索できてしまうのがAlgoliaなんです!
下のデモサイトで体験ができるのでぜひ体感してみてください。
今まで様々な技術スパイクをうってきましたが、隣の同僚にまで「これ、やばいっすよ」って感動を伝えたのはAlgoliaが初めてです。
13万件のサンプルデータを入れてみて、多少パフォーマンスが変わるかと思いきや検索には 3ms しかかかりませんでした!(ただし、ネットワークの時間を含めると20~40ms)
イベントレポート
下のイベントレポートが両者とも非常にわかりやすくまとまっています!
Algoliaの @shinodogg さんのイベントレポート
@silver_birder さん のイベントレポート
silverbirder180.hatenablog.com
まとめ
まだAlgoliaのさわりの部分しか使えていないので
- Query Rules(「cheap camera」って検索したら「cheap」が「< 10,000」に変換できて、10,000円以内のカメラに絞れたりする)
- Personalization(検索で行った行動などから、ユーザー毎にサジェストをパーソナライズできたりする)
- Internationalization(多言語に対する検索インデックスの管理方法)
- Multi-tenancy(マルチテナントなデータの管理方法)
あたりのトピックを今後は深掘りしていきたいです!
幸運な巡り合わせのおかげで突如3日前に参加&LTが決まったイベントでしたが、Algoliaの中のEiji Shinohara( @shinodogg )さんやフランスからかけつけて下さったMichaël Sokol( @_ms123 )さんともお話できて本当によかったです!