JavaScriptのデバッグに役立つブラウザ機能
Web制作やスマートフォン向けアプリの開発では、コードを書き終えたあとにブラウザで動作を確かめる時間が欠かせません。画面が表示されない、クリックイベントが反応しない、通信結果だけがおかしいといった問題は、ソースコードを眺めているだけでは原因を見つけにくいものです。
私がJavaScriptのデバッグでよく使うのは、ブラウザに標準搭載されている開発者ツールです。特別なソフトを追加しなくても、ログの確認、DOMの調査、通信内容の確認、画面サイズの再現まで幅広く行えます。
勉強会や開発者向けイベントで他の人の調査方法を見ると、同じ機能でも使い方に個性があると感じます。以前参加した開発者ミートアップのレポートを振り返りながら、自分が普段使っている機能を整理します。
コンソールでエラーを読み解く
最初に確認するのは、開発者ツールのConsoleです。JavaScriptの構文エラーや未定義の変数、読み込みに失敗したファイルなどが赤い文字で表示されます。エラーをクリックすると該当するファイルと行番号へ移動できるため、問題の場所を探す手間が大きく減ります。
console.log()による値の確認も基本的な手段です。関数の引数、APIから返ったデータ、条件分岐の直前にある状態などを記録すると、想定と実際の違いが見えてきます。ログを増やしすぎると必要な情報が埋もれるので、調査が終わったら不要な出力を削除するようにしています。
ブレークポイントで処理を止める
Sourcesでは、JavaScriptの実行を任意の行で一時停止できます。行番号をクリックしてブレークポイントを設定し、ボタン操作やページ読み込みを再現すると、その時点で変数に入っている値を確認できます。複雑な条件分岐を追うときに特に便利です。
停止中は、次の行へ進む、関数の内部へ入る、呼び出し元へ戻るといった操作を選べます。処理の流れを一つずつ確認できるため、非同期処理やイベントハンドラーの調査にも役立ちます。条件付きブレークポイントを使えば、特定の値になった場合だけ停止させることも可能です。
要素とCSSをその場で検証する
Elementsでは、画面に表示されているHTMLと適用中のCSSを確認できます。クリックした要素を選択すれば、どのスタイルが有効で、どのルールが上書きされているのかを一覧で見られます。余白やサイズが意図どおりにならないときは、まずここを調べます。
編集したCSSは一時的に画面へ反映できるため、ファイルを書き換える前の試行錯誤にも向いています。擬似要素やレスポンシブの状態も確認できるので、デザイン調整のスピードが上がります。変更内容はリロードで消えるため、採用した値は忘れずに元のコードへ反映します。
ネットワーク通信を確認する
API連携の不具合では、Networkタブが重要になります。リクエストのURL、HTTPメソッド、ステータスコード、送信したデータ、レスポンスの内容を確認すれば、フロントエンドとサーバーのどちらに原因があるか判断しやすくなります。
画像やJavaScriptファイルの読み込み失敗も、ここで見つけられます。通信が遅い場合はTimingの情報から時間のかかっている部分を確認し、必要に応じてキャッシュを無効化して再読み込みします。外部サイトのインタラクティブな画面を調べるときも、ルーレットの紹介ページのように通信や画面更新が発生するページでは、リクエストの変化を追う考え方が応用できます。
スマートフォン表示を再現する
デバイスツールバーを使うと、iPhoneやAndroidに近い画面幅でページを確認できます。縦向きと横向きの切り替え、倍率の変更、タッチ操作のシミュレーションにも対応しています。スマートフォン向けのWebサイトを制作するときは、PC幅だけで確認しないことが大切です。
ただし、エミュレーションは実機と完全に同じではありません。カメラや通知、キーボード表示、端末固有のスクロール挙動などは、最後に実機で試します。普段から勉強会の記録を残すように、確認した端末や再現条件をメモしておくと、後から不具合を追いやすくなります。
ストレージとパフォーマンスを調べる
Applicationでは、Cookie、Local Storage、Session Storage、IndexedDBなどに保存されているデータを確認できます。ログイン状態が解除されない、古い設定が残る、初回表示だけ挙動が違うといった問題では、保存データを削除して状態をリセットします。
Performanceでは、ページ読み込みや操作中の処理負荷を記録できます。長いタスク、レイアウトの再計算、スクリプト実行の集中などを確認できるため、表示のもたつきを感覚だけで判断せずに済みます。まずConsoleとNetworkで原因を絞り、必要になった段階でパフォーマンス計測へ進むと調査が整理しやすくなります。
開発者ツールは、エラーを探すためだけの機能ではありません。画面、処理、通信、端末環境を分けて観察できるので、問題を小さな単位に切り分ける助けになります。気になった不具合があれば、再現手順と確認したタブを記録しながら、日々の制作やアプリ開発で少しずつ使いこなしていきましょう。