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

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

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

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

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

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

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

Continue reading

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

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

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

Continue reading

この記事はQiitaの「Firebase Advent Calendar 2019」の2日目の記事になります。
1日目はSuguruOokiさんの「Firebaseとスタートアップが考える料金のバランスと使い方の話」という記事でした。

今回は実用的なFirebaseのDeploy Scriptを作るというタイトルで、FirebaseのデプロイについてTipsを話しつつ、普段僕が携わっている開発の現場でも実際に使っているFirebaseのデプロイ用のスクリプトの紹介をしてみます。

Continue reading

Firestoreで array-contains-anyin のクエリが登場し、条件に合致するドキュメントの一覧取得がより便利になりました。
今までOR検索的なものはなかったので、上記のようなクエリと同等のことをしようとするとその分並列に条件を変えて取る、といった具合に非効率だったりもしました。
今回は、新たに登場したクエリを使う際に セキュリティルールをどう書けば良いのか 、簡単にご紹介します。

Continue reading

XcodeのUnitTestでCloud FirestoreのRead,Writeのテストをしたい場合に、
Firestore Emulatorを使うと実際のプロジェクトを使わずに読み書きのテストができるので非常に便利です。
またこの方法を使うと、テスト用にFirebase Projectを作成する必要もなくなります。
記事の続きで導入方法を紹介します。
(2019/09/29: セキュリティルール周りに関して記事を修正をしました。)

Continue reading

firebase-tools v7.2.3以降で、apps:create, apps:list, apps:sdkconfig が搭載され、firebase-tools経由で、指定のプロジェクトに対して

  • iOS/Android Appの作成
  • Appリストの表示
  • iOS/Androidで使う構成ファイル(Google-Service-Info.plist/google-services.json)のダウンロード

が出来るようになりました。今回はfirebase-toolsを使って、構成ファイルのダウンロードを行う方法を書き留めておきます。

Continue reading

Author's picture

su-

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

iOS Enginner

Tokyo, Japan