
JavaScript 時間になったら表示: タイマー処理を使いこなす完全ガイド
JavaScriptで時間になったら特定の処理を実行したいと思ったことはありませんか?この記事では、 setTimeout、setInterval、requestAnimationFrameといったタイマー処理の方法を、初心者にも分かりやすく、豊富なコード例とともに解説します。基本的な使い方から、アニメーションの実装、パフォーマンスの最適化まで、網羅的に学んでいきましょう!
JavaScriptタイマー処理の基本
- 
    setTimeout指定時間後に一度だけ処理を実行する方法。 構文と使い方setTimeout(function, milliseconds, arg1, arg2, ...);- function: 実行する関数
- milliseconds: 遅延時間(ミリ秒単位)
- arg1, arg2, ...: 関数に渡す引数(オプション)
 実例:指定時間後にアラートを表示setTimeout(() => { alert("3秒経ちました!"); }, 3000);setTimeoutのキャンセル方法 (clearTimeout)let timerId = setTimeout(() => { // ...処理... }, 5000); clearTimeout(timerId); // タイマーをキャンセル
- 
    setInterval指定時間ごとに繰り返し処理を実行する方法。 構文と使い方setInterval(function, milliseconds, arg1, arg2, ...);- function: 実行する関数
- milliseconds: 間隔時間(ミリ秒単位)
- arg1, arg2, ...: 関数に渡す引数(オプション)
 実例:カウントダウンタイマーの作成let count = 10; let timerId = setInterval(() => { console.log(count); count--; if (count < 0) { clearInterval(timerId); console.log("時間切れ!"); } }, 1000);setIntervalのキャンセル方法 (clearInterval)clearInterval(timerId);
実践!アニメーションで理解を深める
- 
    requestAnimationFrameブラウザの描画タイミングと同期した滑らかなアニメーションを実現する方法。 setTimeout/setIntervalとの違いsetTimeoutやsetIntervalは、ブラウザの描画タイミングとは独立して動作するため、アニメーションがぎこちなくなる可能性があります。一方、requestAnimationFrameはブラウザの描画タイミングと同期して処理を実行するため、より滑らかなアニメーションを実現できます。基本的な使い方function animate() { // ...アニメーション処理... requestAnimationFrame(animate); // 次のフレームを要求 } requestAnimationFrame(animate); // アニメーション開始実例:要素を滑らかに移動させるアニメーションlet element = document.getElementById("myElement"); let position = 0; function animate() { position += 5; element.style.left = position + "px"; if (position < 200) { requestAnimationFrame(animate); } } requestAnimationFrame(animate);アニメーションの停止方法 (cancelAnimationFrame)let animationId = requestAnimationFrame(animate); cancelAnimationFrame(animationId);
パフォーマンスと精度を向上させるテクニック
- 
    タイマー処理の注意点タイマー処理は正確な時間管理には不向きです。 時間のずれが発生する原因- JavaScriptエンジンはシングルスレッドで動作するため、他の処理が実行中だとタイマー処理が遅延する可能性があります。
- ブラウザのタブが非アクティブ状態になると、タイマー処理の精度が低下することがあります。
 正確な時間計測にはDateオブジェクトの活用を推奨正確な時間計測が必要な場合は、 Dateオブジェクトを利用して経過時間を計算する方法が推奨されます。
- 
    パフォーマンス最適化無駄な処理を減らし、スムーズな動作を実現します。 - 
        メモリリークを防ぐためのclearTimeout/clearIntervalの活用不要になったタイマーは、 clearTimeoutやclearIntervalを使用して必ずキャンセルしましょう。キャンセルを怠ると、メモリリークが発生する可能性があります。
- 
        requestAnimationFrameによる描画負荷の軽減アニメーションを実装する際は、 requestAnimationFrameを使用することで、ブラウザの描画タイミングと同期した処理が可能となり、描画負荷を軽減できます。
- 
        高負荷な処理の分割実行タイマー処理内で高負荷な処理を行う場合は、処理を分割して複数回に分けて実行することで、ブラウザの動作がブロックされることを防ぎ、スムーズな動作を実現できます。 
 
- 
        
まとめ
この記事では、JavaScriptで時間になったら処理を実行するためのタイマー処理について、基本から応用、パフォーマンスの最適化まで解説しました。これらの知識を活かして、より表現力豊かなWebアプリケーションを開発しましょう。
参考資料
- Window.setTimeout - Web API | MDN
- Window.setInterval - Web API | MDN
- window.requestAnimationFrame - Web API | MDN
よくある質問
- Q1: setTimeoutとsetIntervalの違いは何ですか?
- A1: setTimeoutは指定時間後に一度だけ処理を実行しますが、setIntervalは指定時間ごとに繰り返し処理を実行します。
- Q2: requestAnimationFrameはどのような場合に使うべきですか?
- A2: ブラウザの描画タイミングと同期した滑らかなアニメーションを実装したい場合に、requestAnimationFrameを使用します。
- Q3: タイマー処理で正確な時間管理はできますか?
- A3: JavaScriptのタイマー処理は正確な時間管理には不向きです。正確な時間計測が必要な場合は、Dateオブジェクトを利用して経過時間を計算する方法が推奨されます。
その他の参考記事:jquery 時間 指定