micomia

Blog

技術記事

FirestoreでSNSアプリのDB設計|FlutterFlow徹底解説

FirestoreでSNSアプリのDB設計|FlutterFlow徹底解説

micomia株式会社のエンジニア 西村です。


今回は、FlutterFlowで簡単なSNSアプリを作るための、Firestoreでのデータベース設計について解説します。


以下の機能を備えたSNSアプリを実装するためのデータベースを設計していきます。


・ユーザー登録


・投稿(タイトル、詳細、画像2枚、日付)


・投稿への「いいね」


・投稿へのコメント

1.作成するコレクション

機能を実現するために、



・usersコレクション(ユーザーの情報を保存)


・postsコレクション(投稿の情報を保存)


・favorite_postsコレクション(「いいね」の情報を保存)


・commentsコレクション(コメントの情報を保存)


の4つのコレクションを作成します。


2.usersコレクション



FlutterFlowのプロジェクトを開いて、左のメニューからFirestoreをクリックします。


ここから、「Create Collection」、もしくは左上のプラスマークをクリックしましょう。



この画面では、コレクション名を入力して、コレクションを作成します。


まずは、ユーザーの情報を保存するコレクション、「users」を作ります。



usersという名前のコレクションを作ろうとすると、この画面が出てきます。


Flutterflowでは、デフォルトのユーザーコレクションがあり、ここで「Yes」を選択するとそれを自動的に入力してくれます。



これで、usersコレクションが作成できます。


3.postsコレクション



次に、投稿の情報を保存するコレクション、「posts」を作ります。



コレクション作成では、用意されたテンプレートから選んで作成する方法もありますが、今回は自分で入力して作成していくので、「Start from scratch」をクリックします。



この画面から、フィールドの名前とデータ型を決めていきます。Field Nameにフィールド名を入力し、Data Typeからデータの型を選択します。複数のデータを保存したい場合はis Listをオンにしましょう。


入力し終えたら、右端の緑色のチェックマークをクリックして、そのフィールドを追加できます。



postsのフィールドは、画像のように作成しました。


・user_ref — 投稿者のユーザー情報を参照するための情報を保存します。これがあることで、投稿から投稿者の情報が取得できます。


・title — 投稿のタイトルを保存します。


・detail — 投稿の詳細文を保存します。


・images — 画像の保存されたURLを保存します。今回は、画像を2枚投稿できるようにしたいので、Listにしています。


・created_time — データが作成された時間、つまり投稿された時間を保存します。


4.favorite_postsコレクション



次に、投稿の「いいね」情報を保存するコレクション、「favorite_posts」を作ります。


同じように「Start from scratch」で作成していきましょう。



favorite_postsのフィールドは、画像のように作成しました。


・user_ref — いいねしたユーザーのユーザー情報を参照するための情報を保存します。


・post_ref — いいねされた投稿の情報を参照するための情報を保存します。


・created_time — いいねした時間を保存します。


「いいね」をする→favorite_postsのドキュメントを作る、「いいね」を解除する→favorite_postsのドキュメントを削除するという風に使うことで、誰がどの投稿に「いいね」をしているかの管理ができます。


5.commentsコレクション



最後に、投稿へのコメント情報を保存するコレクション、「comments」を作ります。



commentsのフィールドは、画像のように作成しました。


・user_ref — コメントしたユーザーのユーザー情報を参照するための情報を保存します。


・post_ref — コメントされた投稿の情報を参照するための情報を保存します。


・content — コメント内容を保存します。


・created_time — コメントした時間を保存します。


これで、必要な4つのコレクションが作成できました。


6.まとめ


今回はFlutterFlowで簡単なSNSアプリを作るための、Firestoreでのデータベース設計について解説しました。


micomia株式会社では他にもFlutterFlowの解説を行なっていますのでぜひ他の記事もご覧ください。




動画でもっと知りたい方はこちら


西村穂伽

micomia株式会社のエンジニアです。 FlutterFlow・Bubbleを用いたアプリ開発を担当し、実務ベースの知見を発信しています

関連記事

建設業界向けアプリ開発で見えた、ニッチ業界特化サービスの設計原則

建設業界向けアプリ開発で見えた、ニッチ業界特化サービスの設計原則

ニッチ業界向けアプリ開発で大切な設計原則とは。Mate-Re:の開発経験から得た、業界理解・用語設計・現場導線の最適化など、汎用アプリとは異なる設計の考え方を紹介します。

建設現場でまだ使える廃材が捨てられる。その課題に向き合った建材特化フリマアプリ「Mate-Re:」の開発

建設現場でまだ使える廃材が捨てられる。その課題に向き合った建材特化フリマアプリ「Mate-Re:」の開発

建設現場で余った建材が捨てられる課題に向き合い開発した建材特化フリマアプリ「Mate-Re:」の概要と、業界特有の取引文脈に合わせた設計思想を紹介します。

欲しい商品をすぐ見つけるには何が必要か。Mate-Re: の検索設計と近場表示の考え方

欲しい商品をすぐ見つけるには何が必要か。Mate-Re: の検索設計と近場表示の考え方

建材フリマで「近くの出品」を探せる検索設計とは。Mate-Re:が実装した位置情報ベースの検索UIと、建設現場の物流コストを意識した近隣出品表示の工夫を紹介します。

廃材再利用だけで終わらせない。Mate-Re: が経済活動として成立させた循環設計

廃材再利用だけで終わらせない。Mate-Re: が経済活動として成立させた循環設計

廃材再利用だけで終わらせないためにMate-Re:が経済合理性を持たせた循環設計の仕組みと、建設業界で実際に回る循環モデルの考え方を紹介します。

フリマアプリで売上分配をどう実装するか。Mate-Re: で向き合った決済設計とStripe Connect

フリマアプリで売上分配をどう実装するか。Mate-Re: で向き合った決済設計とStripe Connect

フリマアプリで売上分配をどう実装するか。Mate-Re:がStripe Connectを活用して設計した決済フローと、業者間取引における手数料・振込設計の考え方を紹介します。

建材特化フリマアプリのUI/UXはどう設計するべきか。Mate-Re: で重視した現場目線

建材特化フリマアプリのUI/UXはどう設計するべきか。Mate-Re: で重視した現場目線

建設業界の人が迷わず使えるUI/UXとは。Mate-Re:のデザイン設計で意識した、現場目線の操作性と業界特有の情報設計について紹介します。

なぜ一般的なフリマアプリでは建設業界に合わないのか。Mate-Re: が業界特化で設計された理由

なぜ一般的なフリマアプリでは建設業界に合わないのか。Mate-Re: が業界特化で設計された理由

一般的なフリマアプリが建設業界に合わない理由と、Mate-Re:が業界特化で設計された背景を解説。インボイス対応や業者間取引など業界固有の要件について紹介します。

忙しい現場担当者でも使える出品導線とは。Mate-Re: の1画面完結設計

忙しい現場担当者でも使える出品導線とは。Mate-Re: の1画面完結設計

出品を1画面で完結させる設計がなぜ重要か。Mate-Re:が採用した最小入力・写真中心の出品UIと、現場担当者の負担を減らす導線設計の工夫を紹介します。

【2026年最新】Androidアプリ開発の依頼費用・相場!個人からの外注や安く抑える開発サービス

【2026年最新】Androidアプリ開発の依頼費用・相場!個人からの外注や安く抑える開発サービス

個人でもAndroidアプリ開発を依頼できます。パッケージ開発(30〜80万円)とオーダーメイド開発(150万円〜)の2種類を解説し、費用・納期・注意点をわかりやすく紹介します。

AIを自社サービスにどう組み込む?画像認識・生成AI・実装設計の考え方

AIを自社サービスにどう組み込む?画像認識・生成AI・実装設計の考え方

AIを自社アプリや業務システムに組み込みたい方向けに、画像認識から生成AIまでの全体像を解説します。AIでできること、向いている業務、設計時の注意点を分かりやすくまとめた入門ガイドです。

【AI×野球】練習前と練習後に価値が高い振り返りと改善をサポート

【AI×野球】練習前と練習後に価値が高い振り返りと改善をサポート

どんなAIアプリでも、使う場面が曖昧だと定着しにくくなります。 NEOLAB AI は、いつでも使えるアプリでありながら、特に価値が高いタイミングが明確です。 それが、練習前と練習後です。

【スポーツ×AI】スポーツAIで本当に難しいのは、回答の信頼性

【スポーツ×AI】スポーツAIで本当に難しいのは、回答の信頼性

AIアプリを開発するとき、外から見ると大事なのは回答の精度に見えます。 実際それは正しいのですが、さらに重要なのは、その回答が誰の知見として返っているかです。 NEOLAB AI の場合、求められていたのは“野球一般論”ではなく、“NEOLABらしい答え”でした。

アプリ開発手法の選び方を解説|スクラッチ開発とFlutterFlowの違いとは

アプリ開発手法の選び方を解説|スクラッチ開発とFlutterFlowの違いとは

アプリ開発を検討している方向けに、スクラッチ開発とFlutterFlowを中心としたローコード開発の違いを解説します。費用、スピード、柔軟性、保守性、向いているケースを整理し、自社に合った開発手法の選び方がわかる内容です。

使われ続けるアプリの作り方|UI/UXとコミュニティ設計で定着率を高める方法

使われ続けるアプリの作り方|UI/UXとコミュニティ設計で定着率を高める方法

ユーザーが使い続けるアプリには、見やすい画面だけでなく、投稿しやすさや参加しやすさを支えるコミュニティ設計が必要です。UI/UXとコミュニティ運営を一体で考えるための実践ガイドをまとめました。

【NEOLAB AIのUI/UX】なぜチャットUIだったのか? AIアプリで“質問しやすさ”が重要になる理由

【NEOLAB AIのUI/UX】なぜチャットUIだったのか? AIアプリで“質問しやすさ”が重要になる理由

AIアプリを設計するうえで、回答の中身と同じくらい大切なのが、質問しやすさです。 どれだけ良い答えを返せても、ユーザーが気軽に使えなければ価値は十分に伝わりません。 NEOLAB AI は、その入口設計にもかなり力を入れたアプリです。

【リアル指導×AI】NEOLAB AIが示す“リアル指導とAIの補完関係”という考え方

【リアル指導×AI】NEOLAB AIが示す“リアル指導とAIの補完関係”という考え方

AIスポーツアプリについて語るとき、よく話題になるのが「リアルの指導は不要になるのか」という点です。 NEOLAB AI の場合、その答えは明確で、リアル指導とは競合ではなく補完関係にあります。

【NEOLAB AIが目指した価値】AI野球コーチに求められるのは、答えの多さではなく“個別最適な助言”

【NEOLAB AIが目指した価値】AI野球コーチに求められるのは、答えの多さではなく“個別最適な助言”

スポーツ指導において、全員に同じ言葉がそのまま当てはまるとは限りません。 身体の特徴も、悩みも、経験値も異なるからです。 そのため、今後のAIスポーツアプリで重要になるのは、知識量よりも個別最適化された助言だと考えています。

【でぃぐりーん開発背景】「この植物、どこで買えるの?」を解決する位置情報UXのつくり方

【でぃぐりーん開発背景】「この植物、どこで買えるの?」を解決する位置情報UXのつくり方

「この植物、どこで買えるの?」を解決する位置情報UXの設計について解説。でぃぐりーんが実装した、植物の投稿と購入場所を結びつける体験設計を紹介します。

【でぃぐりーん開発背景】植物初心者が最初の一鉢を買えない理由を、アプリでどう変えたのか

【でぃぐりーん開発背景】植物初心者が最初の一鉢を買えない理由を、アプリでどう変えたのか

植物初心者が最初の一鉢を買えない理由と、その課題をアプリでどう解決したかを解説。でぃぐりーんが設計した購入体験の導線改善と初心者向けUXを紹介します。

【でぃぐりーん開発背景】専門SNSを作るなら、まず現場を体験するべきだと感じた理由

【でぃぐりーん開発背景】専門SNSを作るなら、まず現場を体験するべきだと感じた理由

専門SNSを作るなら、まず現場を体験すべきだと感じた理由を解説。でぃぐりーんの開発で得た、植物の購入場所や初心者の行動文脈を理解することの重要性について紹介します。