-
Firebase Cloud Functionsで関数をモジュール分割しつつ、Cold Start対策も行う
Sunday, July 12, 2020
FirebaseのCloud Functionsを使って開発する上で、関数をモジュール分割して管理する方法やCold Start対策の方法を見たことがある/実践している方が多いかなと思います。 一方で、この2つを組み合わせて導入しようとするととても大変で、重複したコードが大量発生したり、今後新しい関数を追加する毎に記述コストが高くなったりする可能性がでてきます。 今回はそれぞれのテクニックの簡単な紹介と、その2つを組み合わせつつ、できる限りコードをクリーンに保つ方法を紹介します。 …
-
Cloud Firestoreで「いいね」機能を実装するときの勘所
Tuesday, December 31, 2019
何かしらのサービスを作る際に、ユーザー同士のコミュニケーションを促進させる機能の一つに、 TwitterやInstagramなどのサービスでおなじみの「いいね」機能があります。 機能としては 投稿等に「いいね」をつけることができる(♡だったり☆だったりシンボルは様々) 「いいね」がどれだけついたか、その数がわかる (最近だとInstagramがいいねの数の表示をなくしましたね🤔) 投稿等に「いいね」をしたユーザーの一覧が見れる 自分が「いいね」をした投稿等の一覧が見れる といったものが挙げられます。 このような機能ををFirebase、Cloud Firestore(以下Firestore) を使って実装する場合、 どのように実装するのか、どのような設計が良いのか、 逆にどのような設計だとまずいのか、セキュリティルールをどう書くべきか、、 深堀りして書いてみようと思います。やや長めの記事になります。 また、記事の後半でも改めてお伝えしますが、この記事で触れている内容は フォロー・フォロワー機能 友達機能 といった機能にも応用可能です。 …
-
Cloud FunctionsのCloud Firestoreトリガーの重複発火を防ぐ、より良いアプローチ
Monday, December 16, 2019
Cloud Functionsで、Cloud Firestoreトリガーを使う場合、「重複発火」に気をつけないといけません。 本来であれば、記述したCloud Functionsの処理は1回のトリガーで1回だけ実行されてほしいのですが…どういうわけか複数回呼び出されることがたまに起こります。 ちなみに、「少なくとも1回以上実行される可能性がある」ことと、「実行する関数自体は冪等性を担保して実装してね」とドキュメントには記載があります。 Cloud Firestore triggers#Limitations and guarantees 今回は重複発火が起こると困る例や、防ぐためのより良い方法を書いてみようと思います。 …
-
実用的なFirebaseのDeploy Scriptを作る
Monday, December 2, 2019
この記事はQiitaの「Firebase Advent Calendar 2019」の2日目の記事になります。 1日目はSuguruOokiさんの「Firebaseとスタートアップが考える料金のバランスと使い方の話」という記事でした。 今回は実用的なFirebaseのDeploy Scriptを作るというタイトルで、FirebaseのデプロイについてTipsを話しつつ、普段僕が携わっている開発の現場でも実際に使っているFirebaseのデプロイ用のスクリプトの紹介をしてみます。 …
-
Firestoreのarray-contains-any,inのクエリのセキュリティルールを書く
Wednesday, November 13, 2019
Firestoreで array-contains-any と in のクエリが登場し、条件に合致するドキュメントの一覧取得がより便利になりました。 今までOR検索的なものはなかったので、上記のようなクエリと同等のことをしようとするとその分並列に条件を変えて取る、といった具合に非効率だったりもしました。 今回は、新たに登場したクエリを使う際に セキュリティルールをどう書けば良いのか 、簡単にご紹介します。 …
-
CI環境でFirestoreのEmulatorをキャッシュする
Wednesday, November 6, 2019
FirestoreのエミュレータをCI環境下でキャッシュするための方法や、ローカル環境でも無駄なエミュレータのインストールを走らせるのを抑制するための方法を書いてみます。 …
-
XcodeのUnitTestでFirestore Emulatorと接続してテストを書く
Saturday, September 28, 2019
XcodeのUnitTestでCloud FirestoreのRead,Writeのテストをしたい場合に、 Firestore Emulatorを使うと実際のプロジェクトを使わずに読み書きのテストができるので非常に便利です。 またこの方法を使うと、テスト用にFirebase Projectを作成する必要もなくなります。 記事の続きで導入方法を紹介します。 (2019/09/29: セキュリティルール周りに関して記事を修正をしました。) …
-
firebase-toolsでiOS/AndroidのconfigファイルをCLIからダウンロードする
Wednesday, August 28, 2019
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を使って、構成ファイルのダウンロードを行う方法を書き留めておきます。 …
-
concurrentlyを使う時に並列コマンドに引数を渡す
Sunday, July 7, 2019
npmのコマンドを同時実行することができるconcurrentlyというmoduleを使った時に、サブコマンドにコマンドライン引数を渡す場合にちょっとハマったのでメモ。 …
-
【改訂版】 Firebase Cloud Firestore rules tips
Tuesday, December 11, 2018
この記事はFirebase Advent Calendar 2018の12日目の記事です。 以前にCloud Firestore rules tipsを書いてから時間が経過したことと、その記事を書いてから僕自信もより理解を深めることができたので、改訂版としてこの記事を書きます。 …