Power Automate のクラウドフローを作成していると、だんだんとトリガーがどのタイミングで実行されているのかが気になってきますよね。

特に、フローボタンなどのユーザー操作によって手動実行されるトリガー以外の、連携対象アプリのイベントにより自動実行されるトリガーは、実行間隔によって一度に処理される件数も多くなったりするので、いつ実行されるのかを知っておくのはフローの設計にも役立ちますよね。それを知るために必要なのが、利用しているトリガーが「ポーリング」と「Webhook」のどちらの仕組みで動作しているかを把握することです。

というわけで、Power Automate クラウドフローで利用しているトリガーが、ポーリングなのか Webhook なのかの見分け方などをメモしておきます。

ポーリングと Webhook

と、その前に、ポーリングと Webhook の違いを簡単に知っておきましょう。

ポーリングとは、連携対象のアプリで、何かしら更新がなかったを定期的に確認する連携手法です。例えば、気になるブログに新しい記事が投稿されていないかなと、定期的にアクセスして確認するような動作です。このアクセス間隔が短ければ短いほど、リアルタイムに近い形で更新情報を知ることができます。

一方の Webhook は、連携対象のアプリが何かしら更新があったときに、アプリ側から通知を送ってもらうことで、更新があったことを確認できる連携手法です。こちらもブログに例えると、ブログに新しい記事が投稿されたら、メールやら何かしらの方法で更新通知が自動的に手元に届くようなイメージです。この手法のメリットは、アプリ側の更新情報をほぼリアルタイムで知ることができる点です。

トリガーの見分け方

それでは、Power Automate で利用しようとしているトリガーが、ポーリングなのか Webhook なのか、どちらの手法で動いているのかを確認してみます。

そのためには、まずはフローに好きなトリガーを追加し、トリガーのメニューから [コードのプレビュー] を開いてみましょう。

このとき、recurrence の項目が存在するものは、ポーリングで動作しているトリガーです。一方で、Webhook で動作するトリガーには、この項目が存在しません。見分け方は簡単ですね。

ポーリングトリガーの例としては、私もよく利用する Twitter コネクタの「新しいツイートが投稿されたら」トリガーなどがあります。Webhook トリガーの例としては、Microsoft Forms コネクタの「新しい応答が送信されるとき」トリガーなどがあります。

ポーリングトリガーの実行間隔

さて、さきほど確認した recurrence には Interval などの値があり、一見するとこれがポーリングの更新チェック間隔なのかと思うのですが、必ずしもそうではありません。どうやらここの値は、利用しているライセンスなどで許可されている最小チェック間隔を示しているようで、トリガーの実際の更新チェック間隔とは異なることがあります。

例えば、SharePoint コネクタの「項目が作成されたとき」トリガーなどは、この recurrence 値の間隔に従って更新チェックが動作するようですが、Twitter コネクタのトリガーには、独自の更新チェック間隔が設けられているようです。

では、実際の更新チェック間隔を知るにはどうしたら良いのかというと、まずは、公式ドキュメントをチェックする方法があります。例えば「Power Automate Twitter コネクタ」などでググると、次のようなページを見つけることができます。

Twitter - Connectors | Microsoft Docs
https://docs.microsoft.com/ja-jp/connectors/twitter/

このページをじーっと読んでいくと、制限という項目に次のように記載されています。

トリガー ポーリングの頻度: 1 時間

つまりは、この Twitter コネクタのトリガーでは、1 時間おきに新しいツイートがないかをチェックしている動作になっているようです。

本当にそうなのか、読み解くのも難しいドキュメントを読まずに、実際の動作からポーリングのチェック間隔を知るためには、フローの実行履歴を確認する方法があります。

ポーリング トリガーを含むフローを作成し、十分な時間だけ放置しておきます。程よいころ合いを見て、フローの実行履歴を確認してみましょう。

右上の [すべての実行] が選択されている状態では、実行履歴には新しい更新情報があった場合に、そのフローが成功したのか、失敗したのかが表示されます。さらにここを [チェック (新しいデータなし)] に切り替えることで、更新情報がなかった場合のチェック動作の履歴も確かめることができ、それによって実際の更新チェック間隔を確かめることができます。

すると、例えば Twitter のトリガーの場合には、ドキュメント通り 1 時間おきに更新情報のチェックが行われていることが確認できます。

ポーリングトリガーの罠

運用上、操作を失敗して痛い目を見てしまうこともある引っ掛かりがちなポーリングトリガーの罠があります。それは、無効化されたフローを再度有効化した場合、無効化している間に発生した更新データも処理されてしまうことがある点です。

たとえば、ポーリングトリガーによってフローを起動し、更新情報をメールで送るといったフローを作成していたとします。なんらかの理由によってそのフローを無効化しており、必要に応じて再度有効化したとすると、有効化されたタイミングで無効化されている間に発生した更新情報がメールで一斉送信されてしまうといった事象が起きることがあります。この事象は Webhook トリガーでは発生しないため、トリガーの種類を知っておくことが重要になります。

ポーリングトリガーを含むフローを長期間無効化していた場合には、フローを複製して新たなフローを作り、そちらを有効化するなどの方法を取るのが良いと思いました。

さいごに

ポーリングや Webhook という手法自体は、技術的な話しになってしまいますが、誰でも簡単に作成できる Power Automate のフローをより自在に使いこなすには、こうした知識を少し知っておくのが良さそうです。

詳しくは公式ドキュメントにも記載がありましたので、こちらもご参照ください。

トリガーでの一般的な問題のトラブルシューティング - Power Automate | Microsoft Docs
https://docs.microsoft.com/ja-jp/power-automate/triggers-troubleshoot

と、最近知ったことを書き留めておきました。