Debounce (デバウンス)

プログラミングの文脈におけるデバウンスとは、特定の時間間隔でリクエストされたすべての演算を単一の呼び出しに「バッチ化」するということを意味しています。

デバウンス処理は、スロットリングとよく似ています。主な違いは、スロットリングが連続操作に制限を課すのに対し、デバウンス処理は、多くの無駄な呼び出しを単一の呼び出しにまとめるために、特定の時点での呼び出しの停止を待つという点です。

デバウンスの典型的な使用例は、ユーザー入力に応答する場合です。ユーザーが何かを入力しているときは、UIの動作が遅くなるのを避けるために、他の動作は行わないようにすべきです。ユーザーが入力の手を休めたときに、結果の絞り込みや候補の提案など、入力の処理を始めることができます。関数 search が 10 ミリ秒でデバウンスされている場合、それは次のことを意味しています。

  1. 最初の search への呼び出しは、先端 (leading edge) と呼ばれます。
  2. search に次に呼び出されるものは、前回呼び出されてから 10 ミリ秒以内であれば、前回と同じ「バッチ」に入ります。
  3. 最後の search 呼び出しから 10 ミリ秒が経過し、その後にもう呼び出されていない場合、指定された終端 (trailing edge) に達しました。

通常、search は終端で一度だけ実行されますが、特定の用途によっては、先端、または両端で実行される場合もあります。また、両端で実行される場合、デバウンスの実装は通常、次の先端エッジの呼び出しが、前回の終端エッジから少なくとも 10 ミリ秒後に発行されるように保証します。

関連情報