-
Firebase Cloud Functionsで関数をモジュール分割しつつ、Cold Start対策も行う
Sunday, July 12, 2020
FirebaseのCloud Functionsを使って開発する上で、関数をモジュール分割して管理する方法やCold Start対策の方法を見たことがある/実践している方が多いかなと思います。 一方で、この2つを組み合わせて導入しようとするととても大変で、重複したコードが大量発生したり、今後新しい関数を追加する毎に記述コストが高くなったりする可能性がでてきます。 今回はそれぞれのテクニックの簡単な紹介と、その2つを組み合わせつつ、できる限りコードをクリーンに保つ方法を紹介します。 …
-
開発/本番環境でCloud Functionsのregionを切り替える
Monday, May 11, 2020
何かしらの事情(※) があり、Firebaseの開発環境と本番環境でそれぞれ異なるリージョンでCloud Functionsをデプロイしたい場合は、 以下のようにするとうまく切り替えることができます。 ※: 例えば開発環境のFirestoreのリージョンをマルチリージョンで作成し、本番環境では東京リージョンで作成してしまった、という具合に環境毎のDBのリージョンが異なり、それとFunctionsのリージョンを揃えたい場合など。 …
-
FlutterでProgressButtonを自作する
Tuesday, April 7, 2020
ユーザーに何か情報を入力してもらい、保存ボタンを押したときにHUDを表示するのではなく、画面のインタラクションを制御しつつ、保存ボタンに進捗を表示して表現したいなと思いProgressButtonなるものを自作してみました。 …
-
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を使って、構成ファイルのダウンロードを行う方法を書き留めておきます。 …