現役システムエンジニアの備忘録

技術スキルや用語などの記録を残していきます

Timer(時間制御)

【JavaScript入門】setIntervalでアニメーションを作る方法|動くUIの基本をやさしく解説

投稿日:

この記事で分かること

  • 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 演出が作れるようになる

超JavaScript 完全ガイド 2026(Udemy)

体系的に学びたい方へ(スクールという選択肢)

独学の限界を感じやすいポイント

  • アニメーションのコード構造が理解しづらい
  • DOM操作やイベント処理で混乱しやすい
  • setIntervalrequestAnimationFrame の使い分けが難しい
  • コードレビューを受ける機会がない

スクールでは、プロの講師が学習ロードマップを作成し、アニメーションのような実践的なテーマも丁寧にサポートしてくれます。

無料相談で得られるメリット

  • あなたのレベルに合わせた学習計画を作成
  • DOM操作やアニメーションの理解を深めるアドバイスがもらえる
  • 効率的な学習方法をプロが提案
  • エンジニア転職を視野に入れたキャリア相談も可能

JavaScript を効率よく学びたい方には、未経験からエンジニアを目指せる
DMM WEBCAMP の学習コースも選択肢のひとつです。

DMM WEBCAMP 学習コース(無料相談はこちら)



アニメーションに関するよくある質問(FAQ)

Q1

setInterval でアニメーションがカクつくのはなぜ?

A

処理が重いとタイマーが遅れたり、描画タイミングとズレるためです。軽い処理にするか requestAnimationFrame を使うと改善します。

Q2

開始ボタンを連打すると動きが速くなるのはなぜ?

A

setInterval が複数回動いているためです。開始前に clearInterval でリセットすると防げます。

Q3

アニメーションを滑らかにするにはどうすればいい?

A

移動量を小さくし、間隔を短くすると滑らかになります。より自然にしたい場合は requestAnimationFrame が適しています。

Q4

スマホでも同じように動きますか?

A

基本的には動きますが、端末性能によってはカクつくことがあります。軽い処理にするのがポイントです。



まとめ

  • setInterval を使うと簡単なアニメーションが作れる
  • 位置を少しずつ変えることで動きを表現できる
  • 開始・停止ボタンを付けると実用的になる
  • より滑らかな動きには requestAnimationFrame が向いている



関連記事

【JavaScript入門】タイマーのズレ問題とは?setIntervalが遅れる理由と正確なタイマーの作り方

2026/04/15   -Timer(時間制御)

この記事で分かること JavaScriptのタイマーがズレる理由 setInterval で遅延が起きる仕組み 正確なタイマーを作る方法(再帰setTimeout) 実際のコード例でズレを確認する ズ …

【JavaScript入門】タイマーIDの仕組みと管理方法|複数タイマーを扱う基本をわかりやすく解説

2026/04/25   -Timer(時間制御)

この記事で分かること タイマーIDとは何か(setTimeout / setInterval の戻り値) タイマーIDを使ってタイマーを停止する方法 複数タイマーを管理する方法(配列・オブジェクト) …

【JavaScript入門】setTimeoutの実用例まとめ|遅延処理・通知・演出を初心者向けに解説

2026/04/24   -Timer(時間制御)

この記事で分かること setTimeout の基本的な使い方 遅延処理の実用的な活用例 ポップアップ表示・ロード演出の作り方 ボタン連打防止などのUI改善テクニック 初心者でも使えるサンプルコード J …

【JavaScript入門】setTimeoutとsetIntervalの違いを徹底解説|初心者が迷わない使い分けガイド

2026/04/14   -Timer(時間制御)

この記事で分かること setTimeoutとsetIntervalの基本的な違い それぞれのメソッドが向いている用途 1回だけ実行・繰り返し実行の仕組み 実際のコード例で動作を理解する 初心者が迷いや …

【JavaScript入門】カウントダウンタイマーの作り方|setIntervalで簡単に実装する方法

2026/04/17   -Timer(時間制御)

この記事で分かること カウントダウンタイマーの基本的な仕組み setInterval を使ったカウントダウンの実装方法 開始・停止ボタンの作り方 実際に動くHTML+JavaScriptのサンプルコー …

このブログは Xserver 上の WordPress で運用しています。
表示速度が速く、安定しているのでブログ初心者にもおすすめです。

レンタルサーバー エックスサーバー

-Timer(時間制御)

執筆者: