株式会社アンドエーアイ：Supabaseだから柔軟にデータをクエリーでき、自社アプリのユーザー体験を向上させられた

[株式会社アンドエーアイ](https://driglo.net/)（旧株式会社ドリグロ）は東京・大阪にオフィスを構え、Flutterアプリの開発を中心に行っている開発会社です。2023年の9月30日から二日間かけて行われた[Flutter東京ハッカソン](https://hackathon.flutteruniv.com/)では限られた時間の中、最終的に「[テストの時間](https://www.youtube.com/live/Aj0nyow1Ybg?si=3HDZN-Gvb1samgX3&t=2900)」と言うデザイン・機能とともに群を抜いたクオリティーのアプリを完成させ、見事Supabase賞に輝きました。アンドエーアイ社は今現在自社で運営している２つのサービスでSupabaseを活用しており、今後もSupabaseを活用したアプリ開発を積極的に行っていくとのことです。そんなアンドエーアイ社のCEOの西さんとエンジニアの宮本さんのお二人に今回はSupabaseを導入することになった決め手と今後の展望を伺ってみました。

## SNS機能を実装する上でRDBの柔軟性が必要だった

![Fu-Cosme_cover.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187071/6765b05d-c0ff-d4ea-acd2-1e7975117fc6.png)

[Fu-Cosme](https://fu-cosme.app/)はアンドエーアイ社が運営するコスメ管理アプリです。ユーザー一人ひとりが自分の持つコスメを把握・管理することができるアプリで、ユーザーによっては何百個という数のコスメを登録している人もいます。開発当初はFirebaseのauth, Firestore, storageをアプリのバックエンドとして使っていました。ここで課題だったのが、登録コスメの多いユーザーのユーザビリティです。数百個ものコスメアイテムを登録しているユーザーは、目的のコスメを探すために、色・ブランドや日付など複数の条件でフィルタリングをする必要がありました。しかし、これらはFirestoreでは実装が難しく、ベストなユーザー体験を提供できない状態でした。さらに、ユーザーからの要望でSNS機能を実装する提案が社内で出たのですが、これもNoSQLのデータベースでは一苦労。

> 「SNS機能の実装にあたってNoSQLデータベースだとデータの重複や欠落なく整合性が保てるか不安があり、リレイショナルデータベースの方がいいなと思っていました。」（宮本氏）
> 

そこで高度なフィルタリング、検索機能、そしてSNS機能を実装するために他のバックエンドソリューションを検討することになります。様々な候補を比較する中で開発メンバーの一人がSupabaseを提案しました。SupabaseはデータベースにPostgresを使っているので、クエリーに制限なくフィルターをかけられます。また[PGroonga](https://supabase.com/docs/guides/database/extensions/pgroonga)を通して無料で日本語の全文検索にも対応している点から実際にアプリのバックエンドとして採用することとなります。また、AuthやStorage機能も備わっていることから、認証と画像ファイルの管理もSupabaseで置き換えようとなりました。

実際にSupabaseの採用決定後、Fu-Cosmeはすでに稼働中のサービスだったこともあり、既存のデータをFirebaseからSupabaseに移管する必要がありました。移管には少し苦労したものの、[FirebaseからSupabaseへの公式のマイグレーションツール](https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-auth)と自社で書いた独自のスクリプトを駆使してAuth, Database, Storageを移管することに成功しました。現在はAuth, Database, StorageでSupabaseを使い、プッシュ通知やFunctionsではFirebaseを使っている形での運用となっております。

![システム構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187071/455217bc-be0d-1280-0644-8bc9ef3e3bef.png)

Supabaseは裏側がPostgresになっているので普通のRDBと同じデータベース構造を持つことができます。なのでデータを正規化することができ、SNSに必要なタイムラインの表示やいいね・コメント機能など機能の拡張がとても楽にできます。移管後は予定されていたSNS機能の実装も程なくして完了し、現在に至るまで新機能を続々と開発しています。

> 「Firebaseに慣れ親しんだメンバーと共にFu-Cosmeで初めてSupabaseを使ったにも関わらず、抵抗感なく導入できました。」（西氏）

## 自社アプリでのSupabase活用からクライアントワークへ

続いてアンドエーアイ社ではLineでAIチャットbotに家族や友人へプレゼントするお花選びの相談ができる[花選アイ](https://hanaerabi-ai.studio.site/)を手がけます。ユーザーが例えば「8月の結婚記念日に奥さんにお祝いの花を贈りたいんだけどどんなものを送ったらいい？」と質問をすると「8月のおすすめフラワーはひまわりです。」といった形で写真付きでおすすめの花を教えてくれます。ささやかなお花のプレゼントをしたいときに嬉しいサービスです。

こちらのサービスは開発当初からバックエンドにSupabaseを採用しています。サービス運営のために必要なユーザーデータやチャットデータをデータベースに、そしてOpenAI APIとのやり取りのために[Edge Functions](https://supabase.com/docs/guides/functions)を使いサーバーレスな環境でチャットbotの実装を完成させた形です。

![hanaerabiai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187071/662a8547-a792-5b0d-c9a8-67f957351e1c.png)

現在２つの自社アプリをSupabaseを使って運営しているアンドエーアイ社では自社アプリの開発だけでなく、クライアントワークも行っています。それに際して、新しいツールを使う際はまず自社アプリで導入してみて、使い心地を確かめてからクライアントワークへの導入を検討するそうです。

> Fu-Cosmeと花選アイでSupabaseを使った開発にも慣れてきたので、今後はクライアントワークにも導入できるかなと考えています。（西氏）
> 

株式会社アンドエーアイは2023年10月に日本で初めての[Supabaseのエキスパートパートナー](https://supabase.com/partners/experts/driglo)になりました。今後は自社アプリとクライアントアプリの両方でSupabaseを活用して効率よく開発を進めていけたらとのことです。

## インタビュイー

![株式会社アンドエーアイのCEO西さん（右）とエンジニアの宮本さん（左）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187071/419ef17c-a956-8f0e-2f0b-dba7033cc716.jpeg)

株式会社アンドエーアイのCEO西さん（右）とエンジニアの宮本さん（左）