1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CloudFunctionの定期実行と定時実行

Last updated at Posted at 2020-07-17

はじめに

当記事ではCloudFunctionの定期実行及び定時実行について紹介していきたいと思います。導入やデプロイについては、こちらの記事をご覧ください。

CloudFunctionとは?

サーバーレスフレームワークで、Firebase の機能と HTTPS リクエストによってトリガーされたイベントに応じて、バックエンド コードを自動的に実行できます(公式より)

定期実行

こちらのコードでは例えば3分ごと、1時間ごとなど指定した時間ごとに関数を実行する処理となります。

index.js
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
  console.log('5分ごとに実行してるよ!');
  return null;
});

上記のコード内で、.schedule('every 5 minutes')となっている部分の内部を変更することによって、実行する間隔を指定することが出来ます。
即ち、一時間ごとならば、.schedule('every 1 hours')
一日ごとならば、.schedule('every 1 days')
一週間ごとならば、.schedule('every 1 weeks')
(以下省略・・・)となります。

定時実行

こちらのコードではタイムゾーンを指定した上で、関数を実行したい時間を具体的に指定することが出来ます。

index.js
exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // 必ずタイムゾーンを指定します。
  .onRun((context) => {
  console.log('毎日、ニューヨークが午前11:05になった時に実行するよ!');
  return null;
});

タイムゾーンに関しては、tz databaseに準じた記法になります。もちろん上記のコードのようにニューヨークを指定して、時差を計算して実装しても良いのですが、サマータイムなど色々な事情を考慮すると、素直にサービスを展開したい土地のtimezoneを調べて記載した方が良いかと思います。
ちなみに日本時間はAsia/Tokyoとなります。

おわりに

以上の定期実行や定時実行を行うことで、例えば毎日同じ時間にFirestore内のデータを更新したり、CloudMessagingを呼び出してユーザーに通知を行うなどの処理が出来ます。
非常に便利な機能なので、是非是非導入を検討してみてください!!

それでは、また😊

★こちらの記事を参考にしました
公式ドキュメント

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?