-
Cloud Firestoreで「いいね」機能を実装するときの勘所
Tuesday, December 31, 2019
何かしらのサービスを作る際に、ユーザー同士のコミュニケーションを促進させる機能の一つに、 TwitterやInstagramなどのサービスでおなじみの「いいね」機能があります。 機能としては 投稿等に「いいね」をつけることができる(♡だったり☆だったりシンボルは様々) 「いいね」がどれだけついたか、その数がわかる (最近だとInstagramがいいねの数の表示をなくしましたね🤔) 投稿等に「いいね」をしたユーザーの一覧が見れる 自分が「いいね」をした投稿等の一覧が見れる といったものが挙げられます。 このような機能ををFirebase、Cloud Firestore(以下Firestore) を使って実装する場合、 どのように実装するのか、どのような設計が良いのか、 逆にどのような設計だとまずいのか、セキュリティルールをどう書くべきか、、 深堀りして書いてみようと思います。やや長めの記事になります。 また、記事の後半でも改めてお伝えしますが、この記事で触れている内容は フォロー・フォロワー機能 友達機能 といった機能にも応用可能です。 …
-
Firestoreのarray-contains-any,inのクエリのセキュリティルールを書く
Wednesday, November 13, 2019
Firestoreで array-contains-any と in のクエリが登場し、条件に合致するドキュメントの一覧取得がより便利になりました。 今までOR検索的なものはなかったので、上記のようなクエリと同等のことをしようとするとその分並列に条件を変えて取る、といった具合に非効率だったりもしました。 今回は、新たに登場したクエリを使う際に セキュリティルールをどう書けば良いのか 、簡単にご紹介します。 …
-
Cloud Firestoreのセキュリティルールは2018年でどう進歩したか
Monday, December 24, 2018
この記事はFirebase#2 Advent Calendar 2018の24日目の記事です。 この1年の間にFirestoreのセキュリティールールに関してどのような変化や関心事があったのか、振り返ってみようと思います。 …
-
【改訂版】 Firebase Cloud Firestore rules tips
Tuesday, December 11, 2018
この記事はFirebase Advent Calendar 2018の12日目の記事です。 以前にCloud Firestore rules tipsを書いてから時間が経過したことと、その記事を書いてから僕自信もより理解を深めることができたので、改訂版としてこの記事を書きます。 …
-
【Firestore rules】readでarray-containsのクエリをチェックする
Sunday, August 12, 2018
firebase JavaScript SDK v5.3.0以降で、Firestoreでのarray(list)の扱いが劇的に向上し、 where句での検索(array-contains の使用) 要素の追加削除の向上(array union/remove) が提供された。これに伴って、Firestoreのrulesでも、read時にarray-containsのクエリのチェックができるようになったので試してみた。 …
-
【Firestore rules】listのルールでorderByのクエリをチェックする
Saturday, July 21, 2018
Firestoreのルールで、listのオペレーションに対してクエリの条件が正しいかどうか確かめることができるのだが、 orderBy を使おうと思った時にリファレンスを見ても詳しく書かれていなかったので調べてみた。 …
-
【Firestore rules】documentのpathを生成する便利関数
Friday, July 6, 2018
Firestoreのruleでdocumentのpathを記述するとき、毎回 /databases/$(database)/documents/... って書くの大変…。なのでこれをなるべく楽に、安全に記述できる便利関数を紹介する。 …
-
【Firestore rules】fieldがnullかundefinedか判定する
Thursday, July 5, 2018
Firestoreのruleを記述する時に、documentのfieldがnullなのかundefinedを判定する方法を。 …
-
【Firestore rules】fieldの値の型をチェックする
Monday, July 2, 2018
Cloud FirestoreはNoSQLでスキーマレスなので、任意のフィールドに対して任意の値を入れることができるのだが、 セキュリティルール的には、書き込み時にどのフィールドにどの型の値が入るのかしっかりチェックしたほうが良いのでその方法を。 …
-
【Firestore rules】get関数などの制限が緩和されたので調査してみた
Saturday, June 23, 2018
Announcing the Firestore Security Rules Simulator!のアナウンスで、Firestoreのルールでget()``exists()``getAfter()の呼び出し回数が大幅に増加したようなので実際に試してみた。 …