はじめに
当記事ではCloudFunctionの定期実行及び定時実行について紹介していきたいと思います。導入やデプロイについては、こちらの記事をご覧ください。
CloudFunctionとは?
サーバーレスフレームワークで、Firebase の機能と HTTPS リクエストによってトリガーされたイベントに応じて、バックエンド コードを自動的に実行できます(公式より)
定期実行
こちらのコードでは例えば3分ごと、1時間ごとなど指定した時間ごとに関数を実行する処理となります。
exports.scheduledFunction=functions.pubsub.schedule('every 5 minutes').onRun((context)=>{console.log('5分ごとに実行してるよ!');returnnull;});
上記のコード内で、.schedule('every 5 minutes')
となっている部分の内部を変更することによって、実行する間隔を指定することが出来ます。
即ち、一時間ごとならば、.schedule('every 1 hours')
、
一日ごとならば、.schedule('every 1 days')
、
一週間ごとならば、.schedule('every 1 weeks')
、
(以下省略・・・)となります。
定時実行
こちらのコードではタイムゾーンを指定した上で、関数を実行したい時間を具体的に指定することが出来ます。
exports.scheduledFunctionCrontab=functions.pubsub.schedule('5 11 * * *').timeZone('America/New_York')// 必ずタイムゾーンを指定します。.onRun((context)=>{console.log('毎日、ニューヨークが午前11:05になった時に実行するよ!');returnnull;});
タイムゾーンに関しては、tz databaseに準じた記法になります。もちろん上記のコードのようにニューヨークを指定して、時差を計算して実装しても良いのですが、サマータイムなど色々な事情を考慮すると、素直にサービスを展開したい土地のtimezoneを調べて記載した方が良いかと思います。
ちなみに日本時間はAsia/Tokyo
となります。
おわりに
以上の定期実行や定時実行を行うことで、例えば毎日同じ時間にFirestore内のデータを更新したり、CloudMessagingを呼び出してユーザーに通知を行うなどの処理が出来ます。
非常に便利な機能なので、是非是非導入を検討してみてください!!
それでは、また😊
★こちらの記事を参考にしました
公式ドキュメント