何かしらのサービスを作る際に、ユーザー同士のコミュニケーションを促進させる機能の一つに、
TwitterやInstagramなどのサービスでおなじみの「いいね」機能があります。 機能としては

  • 投稿等に「いいね」をつけることができる(♡だったり☆だったりシンボルは様々)
  • 「いいね」がどれだけついたか、その数がわかる
    • (最近だとInstagramがいいねの数の表示をなくしましたね🤔)
  • 投稿等に「いいね」をしたユーザーの一覧が見れる
  • 自分が「いいね」をした投稿等の一覧が見れる

といったものが挙げられます。

このような機能ををFirebaseCloud Firestore(以下Firestore) を使って実装する場合、
どのように実装するのか、どのような設計が良いのか、
逆にどのような設計だとまずいのか、セキュリティルールをどう書くべきか、、 深堀りして書いてみようと思います。やや長めの記事になります。

また、記事の後半でも改めてお伝えしますが、この記事で触れている内容は

  • フォロー・フォロワー機能
  • 友達機能

といった機能にも応用可能です。

Continue reading

Cloud Functionsで、Cloud Firestoreトリガーを使う場合、「重複発火」に気をつけないといけません。
本来であれば、記述したCloud Functionsの処理は1回のトリガーで1回だけ実行されてほしいのですが…どういうわけか複数回呼び出されることがたまに起こります。

ちなみに、「少なくとも1回以上実行される可能性がある」ことと、「実行する関数自体は冪等性を担保して実装してね」とドキュメントには記載があります。

今回は重複発火が起こると困る例や、防ぐためのより良い方法を書いてみようと思います。

Continue reading

Author's picture

su-

iOS/Firebaesなひとの技術ブログ

iOS Enginner

Tokyo, Japan