ディレイ / スリープノード
Delay / Sleep Node
ワークフロー自動化で実行を一時停止する機能。APIレート制限の回避や外部プロセス完了の待機に使用します。
ディレイ / スリープノードとは?
ディレイ(遅延)またはスリープノードは、ワークフロー実行を一定期間止めるコンポーネントです。 ワークフロー自動化ツール(n8n、Make、AWS SSMなど)でビジュアルノードとして提供され、設定した秒数だけ処理を停止します。JavaScriptではPromiseやasync/awaitを使って同様の機能を実装します。
ひとことで言うと: レストランで「15分待ってから呼び出す」という仕組みと同じように、自動化ツールで「ここで○秒待機してから次に進む」と指示するものです。
ポイントまとめ:
- 何をするものか: ワークフロー内で実行を一時停止する機能
- なぜ必要か: APIレート制限回避や外部システムの処理完了を待つため
- 誰が使うか: ワークフロー設計者、自動化エンジニア
なぜ重要か
APIサーバーには呼び出し数の制限(レート制限)があります。短時間に大量のリクエストを送ると、サーバーはそれ以上のリクエストを拒否します。ディレイノードを使い、リクエスト間に遅延を挿入すれば、このような制限に引っかかるのを防げます。
また、ファイルアップロードや決済処理など、時間がかかる外部プロセスの完了を待つときにも使います。完了を待たずに次のステップに進むと、不完全なデータが渡されるリスクがあります。ディレイノードでポーリング(定期的な確認)を実装することで、確実に完了を待つことができます。
仕組みをわかりやすく解説
ディレイノードの動作は単純です。設定した時間だけ、次のステップへの処理を停止します。ワークフロー全体は停止せず、その特定のフローだけが待機状態になります。
典型的な使い方は固定遅延と条件付き遅延の2パターンです。固定遅延は「常に5秒待つ」というように、毎回同じ時間待機します。条件付き遅延は「ステータスが『完了』になるまで1分ごとにチェック」というように、特定の条件に達するまで定期的に確認を繰り返します。後者はポーリングと呼ばれ、外部API呼び出しの結果を待つときに多く使われます。
ワークフロー内で複数のディレイノードを組み合わせることもあります。例えば「メール送信→5秒待機→別のAPI呼び出し→10秒待機→最終確認」というように、段階的に処理を進める場合です。
実際の活用シーン
APIレート制限の回避
外部APIに1秒あたり10リクエストという制限があります。1000件のデータを一括処理する場合、0.1秒間隔で順次送信すると制限に引っかかります。リクエスト間に500ミリ秒のディレイを挿入することで、1秒あたり2リクエストに調整でき、制限内で安全に処理できます。
ファイルアップロード待機
クラウドストレージにファイルをアップロードして、その後ウイルススキャンの完了を待ちます。スキャン結果を確認するAPIを30秒ごとにポーリング(5回まで)することで、結果の確実な取得を実現します。
メール送信の間隔調整
大量のメール配信で相手先サーバーに負荷をかけないよう、メール送信と送信の間に2秒のディレイを挿入します。これにより、1通あたり確実に配信でき、スパム判定されるリスクも低下します。
メリットと注意点
ディレイノードのメリットは、複雑なエラーハンドリングなしにレート制限を回避できることです。APIのドキュメントを読んで制限値を確認し、適切なディレイを設定するだけで対応できます。
注意点としては、ディレイが長すぎるとワークフロー全体の実行時間が大幅に延びることです。1000件のデータを1件ごと2秒待機で処理すると、合計2000秒(33分以上)かかります。本当に必要な遅延かどうか、事前に確認することが大切です。また、外部システムが応答しない場合、永遠に待機し続けるリスクもあるため、タイムアウト設定と組み合わせることが重要です。
関連用語
- ワークフロー自動化 — ディレイノードは、ワークフロー自動化ツールの基本的なコンポーネント
- API — ディレイはAPIのレート制限に対応するために使用される
- ポーリング — ディレイと組み合わせて外部システムの状態を定期確認する手法
- 非同期処理 — JavaScriptでのディレイ実装は非同期パターンを使用
- タイムアウト — ディレイと一緒に使われ、無限待機を防ぐ機能
よくある質問
Q: ディレイはどのぐらいの長さに設定すればいいですか?
A: APIのドキュメントに「1分あたり60リクエスト」と書いてあれば、1秒待機すればOK(1リクエスト+1秒待機=約60リクエスト/分)です。データ量が多い場合は、テスト環境で実際に試して、エラーが出ない最短時間を見つけることをお勧めします。
Q: ポーリングでずっと待機し続けることはありませんか?
A: その通りです。そのため「最大5回まで、1分ごとにチェック」というように、試行回数と待機時間の上限を設定することが重要です。無制限にポーリングするとワークフローが永遠に停止する可能性があります。
Q: 複数のディレイを並行実行できますか?
A: はい。並行実行ツール(例:n8nのsplit)ノード)を使えば、複数フローを同時に処理でき、合計時間を短縮できます。ただしAPIの総リクエスト制限に注意が必要です。
関連用語
GitHub Actions
GitHub Actionsは、GitHubリポジトリ内でワークフローを自動化するCI/CDプラットフォームです。ビルド、テスト、デプロイメントを自動で実行し、開発の効率化を実現します。...