デベロッパーツールを使える人は伸びる|Chrome DevToolsで仮説と検証を回す手順


デベロッパーツール(Chrome DevTools)とは、ブラウザに標準で入っている検証環境のことです。表示されているページのHTML・CSS・通信・表示速度の「いまの状態」を観測し、その場で書き換えて結果を確かめられます。ひとことで言えば、推測で直すのをやめて、確認してから直すための道具です。

プログラミングを教えていて、いつも同じところで差がつくと感じる瞬間があります。それは「CSSが効かない」と手が止まったときの動き方です。デベロッパーツールを開いて原因を見に行く人と、コードを書き換えては保存してリロードする、を繰り返す人。この2人は、同じ時間を使っても身につくものがまったく違います。

この記事では、デベロッパーツールを「開き方」ではなく「検証の手順」として解説します。レスポンシブの確認、CSSが効かない原因の特定、キャッシュの切り分け、未使用CSSの洗い出し、表示速度のボトルネック特定まで、実際の作業で使う順番に並べました。あわせて、それぞれの検証で「どこまで確認できたら直ったと判断してよいか」という合否ラインも示します。


デベロッパーツールを使える人が伸びる理由

インストラクターとして教えていると、デベロッパーツールを使えている人は学習の伸びが速い、という傾向がはっきり出ます。これはツールの操作を知っているかどうかの問題ではありません。問題が起きたときに「観測してから直す」習慣があるかどうかの差です。

つまずいたときの動き方は、だいたい次の2つに分かれます。

タイプやっていること結果
総当たり型コードを書き換える → 保存 → リロード → 変わらない → また書き換える直っても「なぜ直ったか」が残らない。次に同じ問題が出ても再現できない
検証型デベロッパーツールで現状を観測 → 原因の仮説を立てる → その場で値を変えて確かめる → 確定してからコードに戻す原因と対処がセットで残る。似た問題を自力で解けるようになる

総当たり型がよくないのは、時間がかかるからではありません。当たっても外れても学習が発生しないからです。仮説を立てずに手を動かしているので、直ったときに何が効いたのかが分からない。だから次も総当たりになります。

デベロッパーツールは、この「仮説 → 検証」のループを1秒単位で回せるようにする道具です。CSSの値をその場で書き換えれば、保存もリロードもせずに結果が見えます。ループが速く回るほど、1回のつまずきから学べる量が増えます。伸びる人が伸びるのは、才能ではなくループの回転数の差です。


覚えるパネルは3つだけでいい

デベロッパーツールにはパネルが10個以上ありますが、最初に覚えるべきなのは3つだけです。残りは必要になったときに開けば十分です。

パネル見えるもの使う場面
ElementsいまのHTML構造と、要素に当たっているCSS見た目がおかしい。CSSが効かない
ConsoleJavaScriptのエラーと警告ボタンが動かない。何も起きない
Network読み込まれたファイルと、その結果ファイルが読めていない。キャッシュを疑う

開き方は3通りありますが、実務で使うのは1つ目だけです。

  1. 調べたい要素を右クリック →「検証」:その要素を選択した状態でElementsが開く。目的の要素をDOMツリーから探す手間が消えるので、これが最速
  2. F12キー:直前に開いていたパネルが開く
  3. Cmd + Option + I(Windowsは Ctrl + Shift + I):F12と同じ。ノートPCでFキーが遠い場合はこちら

右クリックの「検証」から入る癖をつけてください。「デベロッパーツールを開いてから目的の要素を探す」のと「目的の要素を選んだ状態で開く」のとでは、たどり着くまでの手数が違います。


レスポンシブをデバイスツールバーで検証する

デバイスツールバーは、ブラウザの表示領域を任意の幅・高さに変えてレスポンシブを確認する機能です。デベロッパーツールを開いた状態で Cmd + Shift + M(Windowsは Ctrl + Shift + M)、またはツールバー左端のスマホアイコンで切り替わります。

見るべきは「実機の幅」ではなくブレークポイントの境界

初学者がやりがちなのは、プリセットの「iPhone 14 Pro」などを選んで、それだけ見て終わることです。しかし実際に崩れるのは、多くの場合メディアクエリが切り替わる境界の前後です。

プリセットではなく「Responsive」を選ぶと、幅の数値を直接入力できます。max-width: 768px でスタイルを切り替えているなら、767px と 768px を入力して、レイアウトが意図どおり入れ替わるかを確認します。境界の1px手前で崩れる、というのは頻出パターンです。

幅の枠をドラッグして連続的に狭めていく確認も有効です。特定の幅で急に横スクロールが出る場合、そこにはみ出している要素があります。

横スクロールの原因要素を特定する

スマホ幅で横スクロールが出るのは、どこかの要素が画面幅より広いからです。overflow-x: hidden で隠すのは対症療法で、原因は残ったままになります。Consoleパネルに次のコードを貼ると、画面幅からはみ出している要素だけを一覧できます。

document.querySelectorAll('*').forEach((el) => {
  if (el.getBoundingClientRect().right > document.documentElement.clientWidth) {
    console.log(el);
  }
});

出力された要素にマウスを乗せると、ページ上で該当箇所がハイライトされます。あとはその要素の widthpadding、はみ出している画像の max-width を確認すれば原因にたどり着けます。

検証の合否ライン:320px から 1440px まで幅を動かして、横スクロールが出ず、ブレークポイント境界の±1pxでレイアウトが破綻しないこと。ここまで確認できたらレスポンシブはクリアです。


CSSが効かない原因をStylesパネルで特定する

「CSSが効かない」は、原因を3つに分けて考えると一発で切り分けられます。要素を右クリック →「検証」で開いたElementsパネルの右側、Stylesペインを見てください。

Stylesでの見え方原因対処
書いたルールが表示されているが、打ち消し線が引かれている別のルールに上書きされている(詳細度で負けている)セレクタの詳細度を上げる。勝っているルールはすぐ上に表示されている
書いたルールがそもそも表示されないセレクタが要素に当たっていない(クラス名のタイポ、階層の指定ミス)Elementsで要素の実際のクラス名を確認する
ルールは表示されるが、プロパティ名の横に警告アイコンが出ているプロパティ名か値が無効(スペルミス、単位の付け忘れ)該当行を修正する

打ち消し線は「このプロパティは負けました」というサインです。負けている以上、そのファイルをいくら書き換えても表示は変わりません。ここを見ずにコードを書き換え続けるのが、総当たり型が時間を溶かす典型パターンです。

Computedで「最終的にどうなったか」を見る

Stylesの隣にあるComputedタブは、複数のルールが競合した結果、ブラウザが最終的に採用した値だけを表示します。プロパティ名の左の三角を開くと、その値がどのファイルの何行目から来たかまで遡れます。

「自分では指定していないのに余白が空く」といったケースは、ここで親要素からの継承やブラウザのデフォルトスタイル(user agent stylesheet)が犯人だと分かります。CSSが反映されない原因の全体像はCSSが反映されない原因と対処法で、環境別(Chrome・VSCode・GitHub Pages)の切り分けはChrome・VSCode・GitHubでCSSが反映されない原因と対処法でそれぞれ解説しています。

検証の合否ライン:Stylesで自分の書いたルールに打ち消し線がなく、Computedの値が期待どおりになっていること。この2つが揃っていれば、CSSは正しく当たっています。それでも見た目が変わらないなら、原因はCSSではなくHTML構造かキャッシュです。


hover・focusの状態を固定して確認する

:hover のスタイルを調整したいのに、マウスをデベロッパーツール側に動かした瞬間にhoverが解除されて確認できない——これは誰もが一度はぶつかる壁です。

Stylesペインの上部にある :hov ボタンを押すと、擬似クラスを強制的にONにできます。チェックを入れている間、マウスがどこにあっても状態が維持されます。

  • :hover:マウスを乗せた状態。ボタンやリンクの色変化の確認に
  • :focus / :focus-visible:キーボード操作でフォーカスが当たった状態。アクセシビリティの確認に必須
  • :active:クリックしている最中の状態
  • :visited:訪問済みリンクの状態

隣の .cls ボタンからは、要素に任意のクラスを一時的に追加できます。「クラスを付け外しして開閉するアコーディオン」のように、JavaScriptで状態が切り替わるUIを、JSを動かさずにCSSだけ確認したいときに使います。is-open のようなクラスを手で足して、開いた状態のスタイルを詰められます。


キャッシュを疑う前にNetworkパネルで確認する

「たぶんキャッシュだろう」と決めつけてスーパーリロードを連打するのも、立派な総当たりです。キャッシュかどうかは、Networkパネルを見れば数秒で確定できます。

Networkパネルを開いた状態でリロードすると、読み込まれたファイルが一覧で出ます。目的のCSSファイルを探して、Status列とSize列を見てください。

表示意味判断
Status 200 / Size にファイルサイズサーバーから新しく取得できているキャッシュではない。原因はコード側
Size が「(disk cache)」「(memory cache)」ブラウザに保存された古いファイルを使っているキャッシュが原因の可能性が高い
Status 304サーバーが「変更なし」と応答しているサーバー上のファイルが更新されていない
Status 404ファイル自体が見つかっていないパスの指定ミス。CSS以前の問題

そのファイルをクリックして「Response」タブを開けば、ブラウザが実際に受け取った中身がそのまま見られます。自分が書いたはずの記述がここに無ければ、ブラウザには届いていないということです。これでコード側の問題か配信側の問題かが確定します。

開発中は、Networkパネルの「Disable cache」にチェックを入れておきます。デベロッパーツールを開いている間だけキャッシュを無効化するオプションで、これをONにしておけば「古いCSSを見ていた」という無駄なハマりがほぼ消えます。キャッシュそのものの仕組みと消し方はスーパーリロードとキャッシュクリアの基本で解説しています。


使っていないCSSをCoverageで洗い出す

Coverageは、そのページで実際に使われたCSS・JavaScriptの割合を計測する機能です。デベロッパーツールを開いた状態で Cmd + Shift + P(Windowsは Ctrl + Shift + P) を押し、「Coverage」と入力して「Show Coverage」を選ぶと開きます。

リロードボタンを押すと計測が始まり、ファイルごとに「未使用バイト数」と未使用率が出ます。行単位で、使われた行が緑、使われなかった行が赤で表示されるので、どこが死んでいるかが目で見て分かります。

ただし、ここで結果を鵜呑みにして削除するのは危険です。Coverageが示すのは「いま見ているこのページで使われなかった」だけであり、他のページでは使われているかもしれません。また、hoverしたときや、メニューを開いたときにだけ当たるルールも「未使用」に数えられます。

Coverageの正しい使い方は、削除リストを作ることではなく「このページの表示に本当に必要なCSSはどれか」を知ることです。ファーストビューの表示に必要な分だけを先に読み込ませるクリティカルCSSの設計は、ここで得た情報が出発点になります。


表示が遅い原因をPerformanceでLCP要素まで絞る

「サイトが遅い」で止まっていると何も直せません。遅さは、どの要素の表示が遅いのかまで絞って初めて対処できます。それを教えてくれるのがLCP(Largest Contentful Paint)です。

LCPは、画面内で最も大きく表示される要素(多くはヒーロー画像か見出し)が描画されるまでの時間です。Googleは、良好なユーザー体験のためにLCPを2.5秒以内に収めることを推奨しています(出典:Google「Largest Contentful Paint (LCP)」)。

  1. Performanceパネルを開き、リロードアイコン(Record and reload)を押す
  2. 計測が終わったら「Timings」の行にある LCP マーカーを探す
  3. LCPマーカーにマウスを乗せると、どの要素がLCPだったかがポップアップに表示される
  4. その要素が画像なら、サイズ圧縮・WebP変換・loading="eager" の指定を検討する

「サイトが遅い」が「トップの背景画像が2.8秒かかっている」に変われば、やることは1つに決まります。スコアの読み方と改善の進め方はPageSpeed Insightsの見方と改善実務、LCP・INP・CLSの全体像はCore Web Vitals改善ガイドで詳しく扱っています。

検証の合否ライン:LCPが2.5秒以内。超えている場合は、まずLCP要素そのものを軽くすることから着手します。


デベロッパーツールで追いきれない検証はツールで補う

デベロッパーツールは万能ではありません。苦手なのは「全体を俯瞰する」検証です。Elementsパネルが見せてくれるのはDOMツリーそのもので、「このページの見出しが階層として正しく積まれているか」は、タグを1つずつ開いて追わないと分かりません。

見出しは、h2の次にh4が来る、h1が複数ある、見た目の大きさだけでh3を選んでいる、といった崩れが起きやすい箇所です。しかも崩れていても画面上は正常に見えるため、目視では絶対に気づけません。ここは専用ツールで一気に検証したほうが速いです。

HTMLアウトライン設計ツールにHTMLを貼り付けると、見出しの階層構造がツリーで可視化され、階層の飛びをその場で指摘してくれます。見出しタグ自体の正しい使い方はh1〜h6見出しタグの正しい使い方とSEO対策にまとめています。

同じことがSEO要素全般にも言えます。タイトル・メタディスクリプション・構造化データ・見出し・内部リンクを、デベロッパーツールで1つずつ目視確認するのは現実的ではありません。CodeQuest.work SEO診断ツールはURLを入れるだけでこれらを一括診断し、どこが減点されているかを一覧で返します。「観測してから直す」という考え方は同じで、観測の範囲がページ全体に広がるだけです。


「直った」の合否ラインをどこに置くか

検証で一番むずかしいのは、操作ではなく「どこまで確認できたら直ったと言えるか」を決めることです。ここが曖昧だと、直っていないのに直った気になったり、逆にいつまでも不安で手が止まったりします。この記事で扱った検証の合否ラインをまとめます。

検証したいこと見る場所合否ライン
CSSが当たっているかElements → Styles / Computed自分のルールに打ち消し線がなく、Computedの値が期待どおり
レスポンシブが崩れないかデバイスツールバー320〜1440pxで横スクロールが出ず、BP境界の±1pxで破綻しない
キャッシュが原因かNetwork → Status / ResponseStatus 200 かつResponseに自分の変更が含まれている
表示速度に問題がないかPerformance → Timings → LCPLCPが2.5秒以内
見出し構造が正しいかHTMLアウトライン設計ツールh1が1つ、階層が飛んでいない

そして合否ラインを満たしたら、必ずコードに戻してください。デベロッパーツール上で書き換えた値は、リロードした瞬間に消えます。ここを忘れて「さっき直したのに」となるのは、初学者に限らずよくある事故です。検証はあくまで「正解を見つける工程」であり、確定した値をエディタに書き写して初めて修正が完了します。


よくある間違い

教えていて頻繁に遭遇する、デベロッパーツールまわりの勘違いを挙げます。

  • デベロッパーツールで直したのにサイトが変わらない:デベロッパーツールの編集は一時的なもので、リロードで消えます。サイトを直すにはエディタでコードを書き換える必要があります
  • Disable cacheが効かない:このオプションはデベロッパーツールを開いている間だけ有効です。閉じるとキャッシュが再び使われます
  • Coverageの未使用CSSをまとめて削除してしまう:他ページやhover時にだけ使われるルールも「未使用」に含まれます。削除は必ずページ横断で確認してから
  • デバイスツールバーの表示を実機と同じだと思っている:再現されるのは画面サイズとユーザーエージェントで、実機のフォント描画やスクロール挙動、iOS Safari固有の癖までは再現されません。最終確認は実機で行います
  • Consoleの赤いエラーを読まずにスルーする:JavaScriptが途中で止まっている場合、以降の処理はすべて実行されません。「ボタンが反応しない」の原因は、たいていConsoleに書いてあります

なお、デベロッパーツールの各パネルの詳細な仕様は、Googleが公開しているChrome DevTools 公式ドキュメントで確認できます。機能は継続的に追加されているので、迷ったら一次情報を見るのが確実です。


よくある質問

Q. 「検証」と「デベロッパーツール」は違うものですか?

同じものです。ページ上で右クリックしたときに出る「検証」は、デベロッパーツールを開くためのメニューです。右クリックした要素を選択した状態でElementsパネルが開くため、目的の要素をすぐ調べられます。

Q. デベロッパーツールで書き換えたCSSはどこに保存されますか?

どこにも保存されません。リロードすると元に戻ります。デベロッパーツールは値を試すための場所なので、確定した値は自分でエディタのCSSファイルに書き写してください。この一手間を飛ばすと、直したはずの修正が消えます。

Q. デバイスツールバーで確認すれば実機テストは不要ですか?

不要にはなりません。デバイスツールバーが再現するのは画面サイズとユーザーエージェントであり、実機のフォント描画やスクロールの挙動、iOS Safari特有の表示差までは再現されません。レイアウトの詰めはデバイスツールバーで行い、最終確認は実機で行うのが安全です。

Q. CSSに打ち消し線が引かれていました。どうすればいいですか?

そのプロパティは別のルールに上書きされています。Stylesペインでは勝っているルールが上に表示されるので、それを確認してください。対処は、セレクタの詳細度を上げるか、上書きしている側のルールを見直すかのどちらかです。!important で強制するのは、詳細度の設計が崩れるため最後の手段にします。

Q. Coverageで未使用と出たCSSは削除してよいですか?

そのままの削除は危険です。Coverageの「未使用」は「いま計測したこのページで使われなかった」という意味であり、他のページやhover時にだけ当たるルールも未使用に含まれます。削除する場合は、サイト内の全ページで使われていないことを確認してから行ってください。


関連記事