以前、Firebase Functionsを定期実行するには、Googleの他のクラウドサービスや外部サービスと連携する必要がありました。
さて、
- firebase-functions NodeJS モジュールバージョン : 2.3.0
- Firebase CLIバージョン : 6.7.0
を使うことで、Firebase Functions中の設定・実装のみで、Firebase Functionsの定期実行が行えるようになりました。(これらは、2019年4月時点では利用可能です。)
- Firebase公式ブログ : 「Scheduling Cloud Functions for Firebase (cron)」(2019年4月18日)
- Firebase公式ドキュメント : 「Schedule functions」
以下に、公式ドキュメントを参考に試したこと、確認した事項をまとめます。最新のドキュメントを確認してください。
- 従量課金プランである「Blaze Plan」が必要
- 内部的には、Google Cloud Pub/SubとGoogle Cloud Schedulerを利用
- そのためFirebaseプロジェクトが↑の機能が有効である必要がある
- Google Cloud Schedulerは2018年11月に正式リリースされた新しいサービス
- Google Cloud Pub/SubとFirebase Functionsの連携は以前からサポートしていた。
- デプロイすると自動的に↓ができる。これらはGoogle Cloud Consoleから確認できる。
- Google Cloud Scheduler
- Google Cloud Pub/Sub
- 「Unix Crontab」と「AppEngine cron.yaml syntax」という形式で定期実行のタイミングを指定。(AppEngine cron.yaml syntaxはこちらを参照)
- 該当のFirebase Functionsの関数を消すと、それと連動するCloud SchedulerとCloud Pub/Subも消えた(投稿者が記事執筆時に確認した挙動)
この機能追加、非常に嬉しく思います。
以前もGoogleの他のクラウドサービスや外部サービスと連携することで、Firebase Functionsの定期実行は可能でした。可能ではありましたが、Firebase Functions以外にも把握・実装・管理することが増え、面倒でした。(私もGoogle Cloud Pub/Subなど慣れていないクラウドサービス使い、四苦八苦しながらFirebase Functionsの定期実行を実装した覚えがあります。)
この機能追加により、ゲーム開発者/モバイル開発者/ウェブフロント開発者にとって、(表向きはとりあえず)Firebase Functionsを利用するだけで、定期実行処理が利用できるようになりました。(内部的には、Google Cloud SchedulerとGoogle Cloud Pub/Subを使っているので、把握していた方がベターではありますが。)
趣味開発や少人数でのプロトタイプ開発に、心強い味方になるのではないでしょうか?