アニメーションのパフォーマンス考慮

アニメーションを実装する際は、パフォーマンスの考慮が必要です。同じ表現をするにも、実装方法によってパフォーマンスへの影響が異なります。

ウェブパフォーマンスとは - ウェブ開発を学ぶ | MDN

測定可能な指標

アニメーションの実装手段を検討する上では、主に2つの指標があります。

  1. 通信量
  2. ブラウザ上で動作するときの処理負荷

1. 通信量

アニメーションを再生するためにダウンロードするファイルサイズです。

チェック方法

Chrome DevToolsのNetworkタブで確認できます。(ドキュメント

注意点

出力するファイルサイズをできるだけ小さくしましょう。例えば、JSファイルや画像ファイルを圧縮するなど。

合計が同じファイルサイズでも、分割して並列に読み込むことでダウンロードにかかる時間を減らせる場合もあります。

最初に全部ダウンロードするのではなく、再生中に並列して読み込むことで、初期再生までの時間を減らせる場合もあります(ストリーミング再生)

ループ再生をする際、新たにデータをダウンロードするのではなく、同じファイルを利用して(キャッシュを利用して)再生できるようにしましょう。
例えば、YouTubeのループ再生を行うと、ループのたびに新しくデータをダウンロードしてしまいます。「終了時に初めにシークする」ことで通信量を減らすことができます。参考

2. 処理負荷

チェック方法

Chrome DevToolsのPerformanceタブで計測できます。(ドキュメント

注意点

動画・画像の場合は、画質を落とす、フレームレートを落とすことで負荷を下げられることがあります。

DOMが多すぎる場合、負荷がかかります。操作するDOMを減らす、canvasに描画するように変更するなどしましょう。

例えば以下の2つは、同じパーティクルアニメーションをSVGとcanvasそれぞれの方法で実装した例です。

Performanceタブで計測してみると、SVGの実装ではRenderingに大きく時間を割かれているのに対して、canvasでは全く時間がかかっていません。

SVGcanvas