【Firebase】Firestoreの検索に詰まったらAlgolia!爆速全文検索を実装してみた

どうも3号です!
最近インスタグラムで異常に広告が出てくる財布を買いました。※財布探してたせいだと思いますが
RE:FORM RE:01というやつで小銭とカードと鍵が全部入るのにめちゃくちゃコンパクトです。
以前は大きな小銭入れ使ってたのですごく快適かつ小さなストレスが減りました。
ただ、海外から買ったので届くまで2,3週間かかりました。
届かないのでは?と途中思いましたが届いてよかったです。

さて、本題ですがFirebaseとFirestoreを使って、サクッとアプリ開発。とっても便利ですよね!

でも、開発を進めていくと、多くの人がぶつかる壁があります。

それが…「検索機能」の実装です。

「特定のキーワードを含む投稿を一覧表示したい」「商品名で部分一致検索をしたい」

こうした、多くのアプリで当たり前に求められる機能が、Firestore単体では意外と難しいことに気づき、頭を抱えていませんか?

この記事は、Firestoreの検索問題をAlgoliaを使って解決した事例を紹介します。

なぜFirestoreだけでは高度な検索が難しいのか?
「そもそも、なんでデータベースなのに検索が自由にできないの?」と疑問に思いますよね。

その理由は、Firestoreの設計思想にあります。Firebaseの公式ドキュメントには、以下のように書かれています。

(引用元:Cloud Firestore ドキュメント

Cloud Firestore は、ネイティブ インデックスの作成やドキュメント内のテキスト フィールドの検索をサポートしていません。さらに、コレクション全体をダウンロードして、クライアントサイドでフィールドを検索することは現実的ではありません。

簡単に言うと、Firestoreは「特定のドキュメントをキーで高速に取得する」のは得意ですが、「たくさんのドキュメントの中から、特定の文字列を含むものを探す(全文検索)」のは苦手なんです。

全データをアプリにダウンロードして、アプリ側で力技で検索する方法も考えられますが、データ量が増えれば増えるほど、動作が重くなり、通信量も膨大になるため、現実的ではありません。

救世主は「Algolia」!Firebase公式も推奨する検索サービス
そこで登場するのが、サードパーティの検索サービスです。中でもFirebase公式が推奨しているのが「Algolia(アルゴリア)」です。

Algoliaは、超高速な検索機能を提供することに特化したサービスです。

文章で説明すると、以下のような流れで連携させます。

1.データ本体の保管庫:Firestore

ユーザーの投稿や商品情報などのデータは、これまで通りFirestoreに保存します。

2.検索用の索引(インデックス)置き場:Algolia

Firestoreにデータが追加・更新されたら、そのデータの中から検索対象にしたい部分だけをAlgoliaに送って、検索用の索引を作っておきます。(この連携はFirebase Functionsを使うと自動化できます)

3.ユーザーが検索するとき

ユーザーがアプリで検索をかけると、FirestoreではなくAlgoliaに問い合わせます。

Algoliaが超高速で検索結果を返し、その結果をもとにFirestoreから必要なデータを取得して画面に表示します。

このように役割分担をすることで、Firestoreの得意なこととAlgoliaの得意なことを両立させ、快適なアプリ体験を実現できるのです。

Algoliaを導入する3つの大きなメリット
「外部サービスを導入するのは、なんだか難しそう…」と感じるかもしれませんが、Algoliaにはそれを上回るメリットがあります。

1.とにかく爆速!ユーザー体験が劇的に向上
Algoliaの最大の魅力は、その圧倒的な検索スピードです。
ユーザーが文字を入力するたびに、リアルタイムで検索結果が絞り込まれていく「インクリメンタルサーチ」も簡単に実装でき、まるで魔法のような検索体験をユーザーに提供できます。このスムーズさは、アプリの継続利用率にも大きく貢献するはずです。

2.無料枠が豊富!
「高機能なサービスって、お高いんでしょう?」と心配になりますよね。
しかし、Algoliaには非常に寛大な無料枠が用意されています。

    個人開発や社内向けの小規模なアプリであれば、無料枠の範囲内で十分に運用できるケースが多いです。コストを気にせず高機能な検索を試せるのは、開発者にとって大きな魅力です。
    (※最新の料金プランは公式サイトをご確認ください)

    3.APIで実現する、パワフルで柔軟な直接連携
    FirebaseとAlgoliaは、APIを介して直接連携させることで、その真価を発揮します。

    この連携の要となるのが「Firebase Functions」です。Firestoreのデータが作成・更新されたのをきっかけ(トリガー)としてFunctionを自動で実行し、その中でAlgoliaが提供するAPIを呼び出してデータを送信します。

    この仕組みを一度構築してしまえば、「Firestoreにデータを書き込む」というアプリの基本的な操作だけで、自動的かつリアルタイムにAlgoliaの検索インデックスが更新される、パワフルなデータパイプラインが完成します。

    まとめ
    今回FirebaseとFirestoreを使って完成させたのは、社内の「市民開発」を活性化させるための「開発環境管理アプリ」です。

    AIの発達で現場の担当者が作るアプリは増える一方、「どんなアプリが既にあるのか」「あの便利なアプリは誰が作ったのか」を探し出す手間が、大きな課題となりつつありました。

    この管理アプリに、Firebase技術による高速な検索機能を搭載したことで、その課題を一気に解決。今では、全社員がアプリ名や概要といった情報をストレスなく一瞬で検索できます。

    快適な検索体験が、部門の壁を越えたナレッジ共有を力強く後押ししています。

    もしあなたがFirestoreの検索機能で悩んでいるなら、Algoliaの導入を検討してみてはいかがでしょうか。最初は難しく感じるかもしれませんが、その価値は十分にあります。

    まずは公式サイトを覗いて、無料枠でその爆速検索を体験してみてください!

    あなたのアプリ開発が、もっと快適で楽しいものになることを願っています。

    木下 慶太郎
    木下 慶太郎KINOSHITA KEITAROU
    記事一覧

    ヒカリシステム株式会社 アシスタントマネジャー

    法政大学経済学部を卒業後、2012年にヒカリシステム株式会社へ入社。

    7年間にわたりパチンコホールの現場業務に従事。2019年よりDXチームへ異動し、AppSheetやLooker Studioを活用した勤怠管理システム、SFA(営業支援システム)、請求管理システムなどの内製化を主導。

    現場の課題解決への貢献が評価され、2021年度に社長賞を受賞。

    現場で培った経験を基に、テクノロジーを活用して業務効率化や課題解決を実現することに情熱を注いでいます。休日は音楽フェスに参加したり、ゲームをしたりしてリフレッシュしています。

    保有資格:

    Google AI Essentials
    Google Prompting Essentials
    ITパスポート

    ※この記事は、リサーチの一部に生成AIを活用し、最終的な分析・執筆・編集は木下慶太郎が責任を持って行っています。

    関連記事