こんにちは。ファンリピートの徳丸です。
今回はより安全性の増した繰り返し処理の実装方法について紹介してきます!
bubbleとは?
URL:https://bubble.io/blog/content/images/2020/09/Logo-with-clearspace.png
・コードを書かずにアプリを作ることができる
一般的なWebサービスやWebアプリの開発では、プログラミングコードを書くといったイメージがありますが、ノーコードツールBubbleでは名前の通り、ノーコードで開発できるサービスとなっています。また、クラウドプラットフォームというサイト上でアプリケーションを構築することができるので、インターネットがあればいつでもどこでもアクセスすることができるため、チームで連携してアプリを作ることができます。
Bubbleでの繰り返し処理について
過去にも一度、繰り返し処理に関する内容の記事を扱いました。前回の実装方法はAPIワークフローの最後に同じAPIワークフローを呼び出して実装する方法でした。
しかし、この実装方法には実装の際に手順を誤ってしまうと無限ループに陥ってしてしまう、という致命的な欠点がありました。
今回は、この問題に対処するためにBubbleで新たに提供されたアクション「Schedule API Workflow on a list」の活用方法を紹介していきます!
Schedule API Workflow on a list とは
Schedule API Workflow on a listは、設定したリスト内のデータのそれぞれのパラメータを参照してリストのデータ数だけSchedule API Workflowを動かすアクションです。
例として、下図のようにUserテーブルのパラメータで呼び出せるAPI workflowに対してこれを使用していきます。
これに対して、Schedule API Workflow on a listは下図のように設定して使用します。
「Type of things」と「List to run on」にはまとめて処理を行いたいデータのリストを設定します。
「API Workflow」と「Schedule date」はSchedule API Workflowを呼び出す処理と同様に、呼び出したいワークフロー名と開始時間を設定します。
「Interval(second)」には、リストのそれぞれの処理の間隔を設定します。これは公式ドキュメントで5秒以上に設定する事が推奨されています。
API Workflowを呼び出すために必要なパラメータは「This User」を設定します。
これで、「List to run on」で設定した全てのユーザーに対して「send_message」の処理を実行する事が出来ます。
メリット・デメリット
このアクションを使用するメリットは、大きく以下の二つが挙げられます。
- 無限ループに陥るリスクがなくなる
- タイムアウトや中断されるリスクがなくなる
誤った実装をしていた場合や、エラーが起こった場合などを気にせず安定した動作を期待する事ができます。
対して、デメリットは以下の二つが挙げられます。
- 処理にかなりの時間を要する
- 処理の途中でエラーが起こった場合に気付きにくい
保証されている設定時間が最低5秒の為、例えば5000件のリストを設定した場合、処理が終了するまで約7時間掛かることになります。
また、どこかのデータでエラーが起こってしまった場合も次のデータの処理を開始してしまう為、見かけ上全ての処理が成功しているように見えてしまいます。
まとめ
今回はSchedule API Workflow on a listの使い方や、そのメリット・デメリットについて紹介していきました。
現状では以前紹介させて頂いた記事での実装方法と、それぞれ一長一短、といった印象です。
しかし、Bubbleは開発者のフィードバックを常に取り入れて機能を更新し続けています。その為、将来的には再帰的な処理を実装しなくても、前述したデメリットを解消して利用できる日も来るかもしれません。
今後のBubbleのアップデートに期待しましょう!