JavaScriptでDOM操作時のパフォーマンス改善テクニックを初心者向けに解説
生徒
「JavaScriptで画面を動かすと、なんだか重くなったり、反応が遅くなったりすることがあるんですが、原因は何ですか?」
先生
「それはDOM操作の回数ややり方が原因で、ブラウザに負担をかけている可能性があります。」
生徒
「DOM操作って、表示を変えるだけなのに、そんなに影響があるんですか?」
先生
「あります。画面の書き換えは意外と体力を使う作業なので、効率よく行う工夫が大切なんです。」
1. DOM操作とパフォーマンスの関係
JavaScriptのDOM操作とは、HTMLで作られたWebページの要素を、あとから取得して変更することです。文字を変えたり、色を変えたり、表示を切り替えたりする操作が該当します。
パフォーマンスとは、画面の動きがどれだけ速く、スムーズに反応するかという意味です。DOM操作を何度も行うと、ブラウザはそのたびに画面を計算し直すため、動作が遅くなります。
初心者のうちは気づきにくいですが、小さな操作の積み重ねが、ページ全体の重さにつながります。
2. DOM操作が重くなる理由
DOM操作が重くなる一番の理由は、ブラウザが画面の再描画を何度も行うからです。再描画とは、画面を描き直す作業のことです。
たとえるなら、黒板に文字を書くたびに、教室全体を掃除し直すようなものです。一回なら問題ありませんが、何十回も繰り返すと時間がかかります。
そのため、DOM操作は「まとめて」「必要な分だけ」行うことが重要になります。
3. DOM要素の取得は一度だけ行う
初心者がよくやってしまうのが、同じ要素を何度も取得する書き方です。document.getElementByIdなどは便利ですが、毎回呼び出すと処理が増えてしまいます。
一度取得したDOM要素は、変数に入れて使い回すことで、無駄な処理を減らせます。
const box = document.getElementById("box");
box.textContent = "文字を変更";
box.style.color = "red";
このように、一回取得してから操作するだけで、パフォーマンスは大きく改善されます。
4. DOM操作はまとめて行う
DOMを一つずつ変更すると、そのたびに画面の計算が行われます。そこでおすすめなのが、変更内容をまとめてから反映する考え方です。
特にループ処理の中でDOMを操作すると、処理が一気に重くなります。まずはデータを準備してから、最後にまとめて表示しましょう。
const list = document.getElementById("list");
let html = "";
for (let i = 0; i < 3; i++) {
html += "<li>項目</li>";
}
list.innerHTML = html;
この方法なら、DOMの書き換えは一回だけで済みます。
5. styleの直接変更を減らす
JavaScriptでstyleを直接変更するのは簡単ですが、何度も行うとパフォーマンスに影響します。
その代わりに、CSSクラスを切り替える方法がおすすめです。クラスとは、見た目のルールをまとめた名前のことです。
const box = document.getElementById("box");
box.classList.add("active");
この方法なら、見た目の変更を一度にまとめられ、コードも読みやすくなります。
6. 不要なDOM操作をしない意識を持つ
すでに同じ内容が表示されているのに、もう一度同じDOM操作を行うと、無駄な処理になります。
変更が本当に必要かどうかを考えてから操作するだけで、動作は軽くなります。
初心者のうちは「動けばOK」になりがちですが、「少ない操作で動かす」意識が大切です。
7. 初心者が意識したいパフォーマンス改善の考え方
DOM操作のパフォーマンス改善は、難しいテクニックを覚えることではありません。
画面の変更は重い作業だと理解し、必要な回数を減らすことが最も重要です。
まずは「要素は使い回す」「まとめて変更する」「無駄に触らない」という三つを意識するだけで、十分に効果があります。