質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

322閲覧

FirebaseとSwiftでInstagramのストーリーズを実現する際のFirestoreのDB設計で困っています。

o___

総合スコア6

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

NoSQL

NoSQL(not only SQL)は、リレーショナルデータベース管理システムとは異なるデータベースシステムを指す言葉です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/05/29 03:18

編集2022/01/12 10:55

実現したいこと・前提

実現したいこと
FirebaseとSwiftでInstagramのストーリーズのようなものを実装したアプリを作りたいのですが、Firestoreのdb設計で悩んでおりましてご意見いただきたいです。(プログラミング初心者でして言葉足らずな点などありましたらご指摘いただけるとありがたいです…)

前提

  • Instagramのストーリーズのようなものを作りたい(仕様はインスタとほぼ同じ)
  • 利用頻度やユースケースもほぼインスタ同じ(1日1ユーザーあたり1~10件程度投稿)
  • ユーザー同士の関係はFFではなくフレンドでUserのサブコレクションにfriendsがある(/users/{uid}/friends/という感じ)フレンドの数は1人あたり10~100くらい
  • インスタのホームのコレクションビューのときに友だちのStoryを取得して、コレクションビューをタップしてストーリー見る画面で一つ一つの投稿Snapを取得する
  • モデルはユーザー毎のStoryドキュメントがありそのサブコレクションに一つ一つの投稿であるSnapsがある(ここは変更の余地あり)
  • メインのプロパティは以下のような感じ(ここは変更の余地あり)
  • Story

uid
createdAt
updatedAt

  • Snap

url
createdAt

現状思いついた設計

案①
/stories/{storyID(userのuidと同じ)}/snaps
Storyのドキュメントはルートに書き込み、上記のStoryモデルにsubscribers: {"uid":Bool}のマップを追加する
自分が友だちのStoryの取得時はdb.collection(“stories”)whereField(“subscribers.(user.uid)", isEqualTo: true)で取得

案②
/users/{uid}/mySnaps/
/users/{uid}/subscribingStories/{storyID}/snaps
友だち全員のUserドキュメントのサブコレクションに自分のStoryドキュメントを書き込む
自分が友だちのStoryの取得時はdb.users.document(user.uid).collection(“stories”)で取得

悩んでいること

クエリのしやすさで言えば①が良さそうなのですが、①の場合はストーリーの投稿のたびにフレンドの数分のドキュメントを書き込まなければいけないので悩んでおります。
①②以外に他によりよい案があるかどうか、見落としているトレードオフの観点があるかどうかなど知りたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問