この記事で分かること
setIntervalを使ったアニメーションの基本- 要素を動かすシンプルなアニメーションの作り方
- 開始・停止ボタンの実装方法
- アニメーションの速度調整の仕組み
requestAnimationFrameとの違いの理解
JavaScriptの setInterval() を使うと、一定間隔で処理を繰り返すことができるため、簡単なアニメーションを作ることができます。
例えば、要素を横に動かしたり、フェードイン・フェードアウトのような演出も実現できます。
この記事では、初心者でも理解しやすいように、setInterval を使ったアニメーションの基本を丁寧に解説します。
setInterval でアニメーションを作る仕組み
アニメーションの基本は「短い間隔で数値を少しずつ変化させる」ことです。
setInterval を使うと、一定時間ごとに処理を繰り返せるため、位置やサイズを少しずつ変えることで動きを表現できます。
基本のアニメーション例(横に移動)
let pos = 0;
let timer;
function moveBox() {
timer = setInterval(() => {
pos += 5; // 5pxずつ移動
document.getElementById("box").style.left = pos + "px";
if (pos > 300) {
clearInterval(timer);
}
}, 30); // 30msごとに実行
}
HTML側
<div id="box" style="position:absolute; width:50px; height:50px; background:red;"></div>
<button onclick="moveBox()">動かす</button>
ボタンを押すと赤い四角が右方向にスーッと動きます。
開始・停止ボタン付きアニメーション
次は、アニメーションを開始・停止できるようにしてみましょう。
JavaScriptコード
let pos = 0;
let timer;
function startAnim() {
clearInterval(timer); // 多重実行防止
timer = setInterval(() => {
pos += 3;
document.getElementById("box").style.left = pos + "px";
}, 20);
}
function stopAnim() {
clearInterval(timer);
}
HTMLコード
<div id="box" style="position:absolute; width:50px; height:50px; background:blue;"></div>
<button onclick="startAnim()">開始</button>
<button onclick="stopAnim()">停止</button>
開始ボタンで動き始め、停止ボタンで止めることができます。
アニメーション速度を調整する方法
速度は次の2つで調整できます。
- 移動量(px)を変える:大きくすると速く動く
setIntervalの間隔を変える:短くすると滑らかで速い
例えば、次のようにすると速くなります。
pos += 10; // 移動量を増やす
requestAnimationFrame との違い
setInterval でもアニメーションは作れますが、より滑らかで負荷の少ないアニメーションを作るには requestAnimationFrame が推奨されます。
- ブラウザの描画タイミングに合わせて実行される
- 無駄な処理が減り、カクつきが少ない
setIntervalよりも自然な動きになる
ただし、初心者がアニメーションの仕組みを理解するには、setInterval が分かりやすくておすすめです。
JavaScript 初心者におすすめの学習書籍
書籍で学ぶのが向いている人
- アニメーションの仕組みを基礎から理解したい
setIntervalの動きを体系的に学びたい- ネット記事だけだと理解が断片的に感じる
setInterval を使ったアニメーションは、JavaScript のDOM操作・イベント処理・タイマーの理解が必要なテーマです。
書籍ではこれらを順序立てて学べるため、アニメーションの仕組みを深く理解できます。
いちばんやさしい JavaScript の教本
図解が多く、アニメーションの基礎となる DOM 操作やイベント処理を視覚的に理解できる入門書です。
setInterval を使った動きのある UI を作るための基礎がしっかり身につきます。
この本で解決できること:
- アニメーションの基礎となる DOM 操作を理解できる
- イベントとタイマーの連携が分かる
- 実際に動くサンプルで理解が深まる
確かな力が身につく JavaScript「超」入門
setInterval を使ったアニメーションをより実践的に作りたい方に向いている入門書です。
タイマー処理・DOM操作・イベントループなど、動きのある UI を作るための知識が体系的に学べます。
この本で解決できること:
- アニメーションの動作原理を理解できる
- 実務レベルのコードが書けるようになる
- 現代的な JavaScript の書き方が身につく
動画で理解を深めたい方へ(Udemy講座)
アニメーションは「動き」を視覚的に理解するのが一番早い分野です。
動画で実際の動きを見ながら学ぶことで、setInterval の挙動や DOM の変化が直感的に理解できます。
初心者のためのJavaScript 完全入門
DOM操作・イベント処理・タイマーの基礎など、アニメーション作成に必要な知識を体系的に学べる人気講座です。
この講座で解決できること:
setIntervalを使ったアニメーションの流れを理解できる- DOM操作とイベントの連携が分かる
- 初心者がつまずきやすいポイントを丁寧に解説
→ 初心者のためのJavaScript 完全入門(Udemy)
超JavaScript 完全ガイド 2026
より高度なアニメーションや UI 演出を作りたい方に最適な講座です。
setInterval の応用や、requestAnimationFrame との違いも深く学べます。
この講座で解決できること:
- アニメーションの応用的な作り方を理解できる
- タイマー処理と描画タイミングの関係が分かる
- 実務レベルの UI 演出が作れるようになる
体系的に学びたい方へ(スクールという選択肢)
独学の限界を感じやすいポイント
- アニメーションのコード構造が理解しづらい
- DOM操作やイベント処理で混乱しやすい
setIntervalとrequestAnimationFrameの使い分けが難しい- コードレビューを受ける機会がない
スクールでは、プロの講師が学習ロードマップを作成し、アニメーションのような実践的なテーマも丁寧にサポートしてくれます。
無料相談で得られるメリット
- あなたのレベルに合わせた学習計画を作成
- DOM操作やアニメーションの理解を深めるアドバイスがもらえる
- 効率的な学習方法をプロが提案
- エンジニア転職を視野に入れたキャリア相談も可能
JavaScript を効率よく学びたい方には、未経験からエンジニアを目指せる
DMM WEBCAMP の学習コースも選択肢のひとつです。
アニメーションに関するよくある質問(FAQ)
setInterval でアニメーションがカクつくのはなぜ?
処理が重いとタイマーが遅れたり、描画タイミングとズレるためです。軽い処理にするか requestAnimationFrame を使うと改善します。
開始ボタンを連打すると動きが速くなるのはなぜ?
setInterval が複数回動いているためです。開始前に clearInterval でリセットすると防げます。
アニメーションを滑らかにするにはどうすればいい?
移動量を小さくし、間隔を短くすると滑らかになります。より自然にしたい場合は requestAnimationFrame が適しています。
スマホでも同じように動きますか?
基本的には動きますが、端末性能によってはカクつくことがあります。軽い処理にするのがポイントです。
まとめ
setIntervalを使うと簡単なアニメーションが作れる- 位置を少しずつ変えることで動きを表現できる
- 開始・停止ボタンを付けると実用的になる
- より滑らかな動きには
requestAnimationFrameが向いている