한국어 | English | 日本語
Webアプリケーションエンジニア (経験8.8年)
技術・開発
engineering
ウェブフロントエンドと バックエンド開発を扱います

「スロットリングとデバウンスの違い」

Difference between throttling and debouncing
スロットリングとデバウンスは、マウススクロールイベントが適用されているウェブページでユーザーがスクロールする際に発生する、数百から数千もの呼び出しによるブラウザのメモリ過負荷やパフォーマンス低下を防ぐための解決策です。呼び出し数を減らすことで性能劣化を回避します。呼び出し間の間隔を制御するのがスロットリング、多数の呼び出しを少数の呼び出しにグループ化するのがデバウンスです。

多数の呼び出しによるパフォーマンス低下問題

スロットリングとデバウンスは、多数の呼び出しによるパフォーマンス低下問題を解決するため、呼び出しの数を少なくする手法です。JavaScriptでマウススクロールに何の制約もなくイベントを適用した場合、スクロール時にそのイベントが非常に多数呼び出されるでしょう。もしそのイベント内に重い処理があれば、メモリに大きな負担をかけることになります。このような状況で呼び出し数を減らすために考案されたソリューションが、スロットリングとデバウンスです。JavaScriptだけでなく、他の言語や開発環境においても、短期間に多数の呼び出しが発生する状況であれば、どのようなものでも少ない量の呼び出しに変換するためにこの手法が使用でき、汎用的な概念と言えます。

過剰な呼び出しを適切な量に減らす方法

単位時間あたりの呼び出し量を減らすという点で、スロットリングとデバウンスは共通点を持っていますが、その方式が異なります。

「間隔」 = スロットリング (Throttling)

スロットリングは、フロントエンド開発時にページロード時間を遅いネットワーク環境で測定するためにChrome開発者ツールが提供するネットワークスロットリングを考えると理解しやすいでしょう。スロットリングという用語の意味自体が、呼び出しの間に遅延を設けて周波数を下げる = 呼び出し間隔を長くすることを意味します。スロットリングの本来の定義は、携帯電話で発熱がひどくなった際に、デバイス保護のためCPUのクロック数を急激に下げることを指します。ゲームや動画を好む人であれば、動画がスムーズに再生されていたのに、カクカクと途切れるようになるフレームドロップを想像すると良いでしょう。

Network Throttling

スロットリングは、「個々の行動」に対する処理が必要なときに使用します。例としては、

「グループ化」 = デバウンス (Debouncing)

デバウンスは、回路工学に由来すると考えられます。スイッチをOn/Offする際、電流の流れが[ On → Off ]と綺麗に切り替わるのではなく、[ On → Off → On → Off → On → Off ]のように短時間で細かく振動する現象が存在します。これを「バウンス」と呼び、このバウンスを綺麗に[ On → Off ]の単一の切り替えに変換することを「デバウンス」と言います。これは、数多くの呼び出しを少数の呼び出しにまとめるものです。

デバウンスは、「行動をしたか否か」という単一の事実が重要なときに使用します。例としては、

まとめ

まとめると、特定の行動をしたかどうかを判断したい場合はデバウンスでまとめ、行動をすべて認識したいがイベントが多すぎるため数を減らしたい場合はスロットリングで適切な遅延(間隔)を設定すれば良い、ということになります。


  1. The difference between throttling and debouncing
  2. How to optimize web app with debounce and throttle
「スロットリングとデバウンスの違い」
Author
Aaron
Posted on
Licensed Under
CC BY-NC-SA 4.0
CC BY-NC-SA 4.0
同じカテゴリーの関連記事
最新記事
LLMフィルターが奪う会話の筋肉とコミュニケーション様式
会話における無礼さを濾過し、洗練された回答を生成するLLMツールが日常化した現代において、私たちは本当に思慮深い会話をしているのだろうか?リアルタイムのコミュニケーションにおける数多くの失敗を通じて磨かれるべき会話能力が、外部ツールに依存することで退化している現象と、それがもたらす社会的な不安や世代間の行動様式の変化について考察する。
シニア採用における年俸交渉の最適なタイミングと戦略
年俸交渉は単なる数字の交換ではなく、心理的な駆け引きとタイミングが重要です。本稿では、企業側にとって、候補者が計算的な態度を取りがちな最終合格後よりも、採用プロセスの初期段階から段階的に交渉を進めることが、なぜより効率的であり、率直な情報の共有に繋がるのかを考察します。
法治主義の限界と人間の多様性
全ての人間の行為を単一の法体系で規制できるという信念は、傲慢であるかもしれない。この記事は、中世の階層的な統制から脱却し、現代の無限の自由を手に入れた人類が直面する法治主義の逆説と、多様性という名のもとに深化する社会的強制力と他者への悪魔化現象を鋭く分析する。
토스트 예시 메세지