0
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?

Make(旧Integromat)のオペレーション数が一瞬で枯渇 — 犯人は15分ポーリングだった。設定見直しで消費を1/4以下にする

0
Posted at

Make(旧Integromat)でシナリオを組んで運用していると、こんな経験はないでしょうか。

  • シナリオは数本しか動かしていないのに、月の途中でオペレーション数が上限に達してしまう
  • 実行履歴を見ると、データを1件も処理していない「空振り」の実行がずらっと並んでいる
  • どのシナリオが消費の主犯なのか分からず、とりあえず全部OFFにしてしのいでいる

筆者もまさにこれでした。月初には余裕があったはずのオペレーション数が想定よりずっと早く枯渇し、原因を調べたところ、**犯人は「15分間隔のポーリングトリガー」**でした。本処理ではなく、新着チェックの空振りが静かにクォータを食い潰していたのです。

この記事で分かること

  • ポーリング型トリガーが「新着ゼロでも」オペレーションを消費する仕組み
  • 間隔と稼働時間の見直しだけで、消費が単純計算で1/4〜1/8になること(計算表つき)
  • 根本対策としてのWebhook(instantトリガー)化と、対応可否の確認方法
  • シナリオ棚卸しのときに「どこを真実源にするか」という運用の教訓

なお、Makeの仕様やプラン体系に関する記述は執筆時点のものです。プランごとのオペレーション上限や課金ルールの細部は変わる可能性があるため、最新情報は必ず公式ドキュメント・料金ページで確認してください。


なぜ「何もしていないのに」枯渇するのか

Makeのトリガーは、大きく2種類に分かれます。

種類 起動方式 新着ゼロのときの消費
ポーリング型(スケジュール起動) スケジュールのたびにMake側からデータを見に行く 消費する
instant型(Webhook) データ発生側からMakeへ通知が飛んできて起動する 消費しない(イベントが無ければそもそも実行されない)

見落としやすいのが太字の部分です。ポーリング型トリガーは、スケジュールが来るたびに「新着データはあるか?」を確認しに行きます。そして新着がゼロでも、この確認のための実行がスケジュールのたびに発生し、オペレーションを消費します

つまり「シナリオが本処理を1件もしていない=消費ゼロ」ではありません。デフォルト感覚で短い間隔を設定したまま放置すると、誰も見ていない深夜も休日も、Makeは律儀に空振りし続けます。「何もしていないのに枯渇した」の正体は、たいていこの空振りです。筆者の環境で枯渇の主犯だったのも、まさにこの分でした。


算数してみる: 15分ポーリングは月2,880回の「固定費」

ここからは単純な掛け算だけで話をします。15分間隔なら、1時間に4回、1日で 4 × 24 = 96回。30日なら 96 × 30 = 2,880回です。新着がゼロの月でも、この回数分のチェック実行が積み上がります。

ポーリング間隔 稼働時間 回/日 月間(30日) 15分・終日を1とした比
15分 終日 96回 2,880回 1(基準)
30分 終日 48回 1,440回 1/2
1時間 終日 24回 720回 1/4(75%減)
1時間 日中のみ(8〜20時) 12回 360回 1/8

この表の数字はすべて算術的な事実です。15分→1時間にするだけで75%減、さらに稼働を日中(例: 8時〜20時)に限定すれば、単純計算で消費は1/8になります。

読み方の注意を2つ。

  • これはシナリオ1本あたりの数字です。同じ設定のポーリングシナリオが3本あれば3倍になります。
  • 表の回数は「スケジュール実行の回数」です。1回の実行で消費されるオペレーション数はシナリオの構成(モジュール数や新着があったときの処理分)によって上乗せされるため、正確なカウント方法は公式ドキュメントを参照してください。ただ「空振りでもスケジュールのたびに消費が発生する」構造自体は変わりません。

まずやる設定見直し: 間隔を伸ばす + 稼働時間を絞る

シナリオのスケジュール設定を触るだけで、上の表の削減がそのまま手に入ります。

1. 間隔を「業務要件」から逆算する

15分間隔は、なんとなく選びがちな設定です。しかし一度立ち止まって「このデータ、本当に15分以内に処理しないと困るのか?」と問うてみてください。通知・集計・同期系の多くは、1時間遅れても実害がないはずです。1時間で困らないなら、それだけで75%減です。

2. 稼働時間帯を絞る

Makeのスケジュール設定では、実行する時間帯や曜日を指定できます(執筆時点)。人間が日中にしか見ない通知やレポートのために、深夜3時にポーリングする必要はありません。「1時間間隔 + 8〜20時のみ」にすれば、表のとおり1日12回まで下がります。

筆者の環境では、15分間隔・終日で回していたポーリングを「1時間間隔 + 日中のみ」へ変更したことで、オペレーション数の枯渇が解消しました。削減率は上の表のとおりの単純計算(1/8)で、特別なテクニックは何も使っていません。


根本対策: Webhook(instantトリガー)に置き換える

設定見直しよりさらに効くのが、ポーリングをやめてWebhookで受けることです。

instantトリガーはイベント駆動です。データが発生した側(送信元のサービス)がMakeに通知を送ってきたときだけシナリオが動くため、空振りによる消費がゼロになります。新着が1日に数件しかないのに96回見に行く、という無駄が構造ごと消えます。副次効果として、ポーリング間隔ぶんの遅延もなくなり、処理の即時性も上がります。

対応しているかの確認方法

  • Makeのモジュール選択画面で、そのアプリのトリガーに 「INSTANT」のラベルが付いているかを確認します(執筆時点のUI表記)。付いていればイベント駆動で使えます。
  • アプリ専用のinstantトリガーが無くても、送信元サービス側にWebhook送信機能があれば、Makeの汎用「Webhooks」モジュール(Custom webhook)で受けられます。送信元の管理画面やAPIドキュメントで「Webhook」の項目を探してみてください。

注意点

Webhook化しても、イベントが来てシナリオが実行されれば当然オペレーションは消費します。ゼロになるのはあくまで「空振り」の分です。イベントが大量に飛んでくるサービスでは、instant化によって逆に実行回数が読みにくくなることもあるため、イベント量を把握したうえで切り替えるのが安全です。


棚卸しの罠: ローカルに保存したblueprintを信じない

消費を見直すには、まず全シナリオの現状を棚卸しする必要があります。ここで筆者がハマった教訓を1つ。

Makeのシナリオはblueprint(エクスポートJSON)としてローカルに保存できますが、このファイルは当てになりません。エクスポート後にMake上でシナリオを編集すれば、手元のJSONはその瞬間から古くなります。筆者もローカルのblueprintを見て「間隔は問題ない」と思い込んでいたところ、ライブ環境では別の設定で動いていた、という経験をしました。

**真実源はMakeのライブ環境です。**棚卸しは必ず、

  • Makeのシナリオ一覧・各シナリオのスケジュール設定画面を直接見る
  • もしくはMake APIでシナリオ一覧とスケジュール設定を取得する(執筆時点でシナリオ情報を取得するAPIが提供されています。詳細は公式のAPIドキュメントを参照)

のどちらかで、今動いている設定を確認してください。ローカルのJSONは「過去のある時点のスナップショット」として扱うのが正解です。


見直しチェックリスト

最後に、実際に手を動かす順番をチェックリストにまとめます。

  1. ライブ環境で全シナリオを一覧化する
    シナリオ名/トリガー種別(polling or instant)/ポーリング間隔/稼働時間帯を表にする。情報源はMakeの画面かAPI。ローカルのblueprintは使わない。
  2. シナリオごとの月間空振り回数を計算する
    上の消費計算表に当てはめるだけです(15分・終日なら月2,880回)。
  3. 空振り消費の多い順に対処する
    優先順位は「instant化できるか → できなければ間隔を伸ばす → さらに稼働時間帯を絞る」の順。
  4. 変更後、実行履歴で効果を確認する
    空振り実行の件数が実際に減っているか、ライブ環境の履歴で確かめて完了です。

まとめ

  • Makeのポーリング型トリガーは、新着データがゼロでもスケジュールのたびにオペレーションを消費する。「何もしていないのに枯渇」の正体はこれ。
  • 15分間隔・終日は、シナリオ1本あたり月2,880回の固定費。1時間間隔にするだけで1/4(75%減)、日中限定を併用すれば1/8(いずれも単純計算)。
  • 根本対策はWebhook(instantトリガー)への置き換え。イベント駆動なら空振り消費はゼロになる。対応可否はモジュール選択画面の「INSTANT」ラベルと、送信元サービスのWebhook対応で確認する。
  • 棚卸しの真実源はMakeのライブ環境。ローカルに保存したblueprintは編集で古くなるため信用しない。
  • プランごとのオペレーション上限や課金ルールの細部は執筆時点から変わる可能性があるため、公式ドキュメントで最新を確認する。

クォータの枯渇は「使いすぎ」ではなく「設定の初期値のまま空振りさせ続けたこと」が原因であるケースが少なくありません。まずはライブ環境の棚卸しから始めてみてください。

0
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
0
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?