4.4 Local Overrides(永続化)

Override Web Content Locally

Local Overridesは、任意のWebサイトでの変更をリロード後も維持する機能である。DevToolsで行った変更がローカルフォルダにコピーされ、次回アクセス時にはローカルファイルが優先的に読み込まれる。本番サイトのデバッグ、CSSの実験、APIレスポンスのモックに活用できる。

Local Overridesとは

DevToolsでCSS、JavaScript、HTMLを変更しても、通常はページリロードで元に戻る。Local Overridesを有効にすると、変更が指定したローカルフォルダに保存され、リロード後もその変更が維持される。

特徴 説明
対象サイト 任意のWebサイト(localhost以外も可)
保存先 指定したローカルフォルダ(URLベースの階層構造)
対象ファイル CSS、JavaScript、HTML、画像、XHR/fetchレスポンス
HTTPヘッダー レスポンスヘッダーのオーバーライドも可能
キャッシュ 有効時は自動的にキャッシュ無効化
Workspacesとの違い Workspacesはローカル開発時にプロジェクトファイルを直接編集する機能。Local Overridesは任意のサイトの変更を別フォルダにコピーして保持する機能。目的と保存先が異なる。

セットアップ手順

初期設定

  1. 任意のWebサイトを開き、F12でDevToolsを起動
  2. Sourcesパネルを開く
  3. 左サイドバーのOverridesタブをクリック(表示されない場合は「≫」から選択)
  4. Select folder for overridesをクリック
  5. Overrides用の空フォルダを選択(例: C:\devtools-overrides
  6. ブラウザ上部の「DevToolsがフォルダへのフルアクセスを要求しています」で許可をクリック
  7. Enable Local Overridesにチェックが入っていることを確認
フォルダ選択の注意
  • Overrides専用の空フォルダを使用する(他のファイルと混在させない)
  • 機密情報を含むフォルダは選択しない(DevToolsがフルアクセス権を持つため)
  • 一度設定すると、そのフォルダにURLベースの階層構造が自動生成される

CSSのオーバーライド

最も一般的な使用例。本番サイトのスタイルを実験的に変更し、リロード後も維持できる。

方法1: Elementsパネルから

操作手順

  1. Elementsパネル → Stylesペインで任意のプロパティを変更
  2. 変更したCSSファイルが自動的にOverridesフォルダにコピーされる
  3. ファイル名横に紫のドットが表示される
  4. ページをリロードしても変更が維持される

方法2: Sourcesパネルから

操作手順

  1. Sourcesパネル → Pageタブ → CSSファイルを右クリック
  2. Override contentを選択
  3. ファイルがOverridesフォルダにコピーされ、編集可能になる
  4. コードを編集し、Ctrl+Sで保存

方法3: Networkパネルから

操作手順

  1. Networkパネルでリソースを右クリック
  2. Override contentを選択
  3. Sourcesパネルに自動で移動し、編集可能になる
新しいCSSルールの追加 Stylesペインの「+」ボタンを長押しし、inspector-stylesheetではなく実際のCSSファイルを選択すると、追加したルールもOverridesに保存される。

JavaScriptのオーバーライド

本番サイトのJavaScriptを修正し、バグの原因調査や修正テストに活用できる。

操作手順

  1. Sourcesパネル → Pageタブ → JSファイルを右クリック
  2. Override contentを選択
  3. コードを編集
  4. Ctrl+Sで保存
  5. ページをリロードして変更を適用
即時反映について JavaScriptの変更は、すでに実行されたコードには反映されない。リロードが必要。ただし、まだ実行されていない関数(クリックイベントなど)は変更後すぐに新しいコードが適用される場合もある。

サードパーティスクリプトのデバッグ

広告スクリプト、アナリティクス、チャートライブラリなど、外部から読み込むスクリプトも同様にオーバーライドできる。問題の切り分けやパフォーマンス実験に有用。

// 例: サードパーティライブラリにログを追加
console.log('Library loaded:', new Date().toISOString());

// 元のコード
(function() {
    // ...
})();

APIレスポンスのオーバーライド

XHRやfetchリクエストのレスポンスをオーバーライドできる。バックエンドの変更を待たずにフロントエンドの開発・テストが可能。

操作手順

  1. Networkパネルでオーバーライドしたいリクエストを右クリック
  2. Override contentを選択
  3. Sourcesパネルでレスポンスボディを編集
  4. 保存してページをリロード
// 例: APIレスポンスをモック
{
  "users": [
    {"id": 1, "name": "テストユーザー1"},
    {"id": 2, "name": "テストユーザー2"},
    {"id": 3, "name": "追加したモックデータ"}
  ],
  "total": 3
}
エラーレスポンスのテスト 正常なAPIレスポンスを意図的にエラーに変更することで、フロントエンドのエラーハンドリングをテストできる。

HTTPヘッダーのオーバーライド

レスポンスヘッダーをオーバーライドして、CORS、CSP、キャッシュ設定などを実験できる。

操作手順

  1. Networkパネルでリクエストを選択
  2. Headersタブを開く
  3. Response Headersセクションでヘッダー値にカーソルを合わせる
  4. 編集アイコン(鉛筆)をクリック
  5. ヘッダー値を編集または新しいヘッダーを追加

よくある活用例

ヘッダー 活用例
Access-Control-Allow-Origin CORS問題のデバッグ
Content-Security-Policy CSP制限の緩和テスト
Cache-Control キャッシュ動作の確認
X-Frame-Options iframe埋め込み制限のテスト

Overridesフォルダの構造

オーバーライドしたファイルは、URLに基づいた階層構造で保存される。

devtools-overrides/
├── example.com/
│   ├── css/
│   │   └── style.css
│   ├── js/
│   │   └── main.js
│   └── api/
│       └── users.json
└── cdn.example.com/
    └── lib/
        └── library.min.js

この構造により、複数サイトのオーバーライドを同一フォルダで管理できる。サイトごとにフォルダが分けられるため、整理しやすい。

外部エディタでの編集 Overridesフォルダ内のファイルは通常のテキストファイル。VSCodeなどのエディタで直接編集し、保存すると変更がDevToolsにも反映される。

Overridesの管理

有効/無効の切り替え

Sourcesパネル → Overridesタブ → Enable Local Overridesチェックボックスで切り替え。

個別ファイルの削除

操作手順

  1. Sourcesパネル → Overridesタブ
  2. 削除したいファイルを右クリック
  3. Deleteを選択

すべてのOverridesを削除

OverridesタブのClearボタン(🚫アイコン)をクリック。

Overridesの一覧表示

Networkパネルでリクエストを右クリック → Show all overridesで、現在有効なすべてのオーバーライドを確認できる。

Overridesが有効な場合の注意 Networkパネルに三角形の警告アイコン(⚠)が表示される。これは一部のリソースがオーバーライドされていることを示す。デバッグ完了後はOverridesを無効化することを忘れずに。

Changesタブで差分を確認

オーバーライドで変更した内容はChangesタブで差分として確認できる。

操作手順

  1. Ctrl+Shift+Pでコマンドパレットを開く
  2. 「Show Changes」と入力してEnter
  3. または、DevTools右上の「⋮」→ More tools → Changes

Changesタブには、変更したすべてのファイルが一覧表示され、各ファイルの差分がGit風のdiff形式で表示される。変更内容を確認してから本番コードに反映する際に便利。

制限事項

  • ElementsパネルでのDOM変更は保存されない:HTMLの変更はSourcesパネルで行う必要がある
  • HTMLファイル内のCSSは保存されない:外部CSSファイルのみオーバーライド可能。インラインスタイルやstyleタグ内のCSSは対象外
  • キャッシュは自動無効化:Overrides有効時はブラウザキャッシュが無効になる
  • Source Mapファイルは対象外:元のソースではなくビルド後のファイルをオーバーライドする

実践的なユースケース

1. 本番環境のバグ調査

本番サイトでのみ発生するバグを調査する際、コードにログを追加したり、条件を変更して原因を特定できる。

2. デザイン変更の提案

クライアントへの提案前に、実際のサイトでCSSを変更してスクリーンショットを撮影。説得力のあるプレゼンテーションが可能。

3. パフォーマンス実験

サードパーティスクリプトを削除または軽量版に置き換え、パフォーマンスへの影響を測定。

4. フロントエンド単独開発

バックエンドAPIの開発が完了する前に、モックレスポンスを使ってフロントエンドを開発・テスト。

5. A/Bテストのシミュレーション

本番サイトのUIを変更し、ユーザビリティテストを実施。実装前に効果を検証できる。

参考文献
[1] Override web content and HTTP response headers locally - Chrome DevTools. developer.chrome.com
[2] What's New In DevTools (Chrome 65) - Local Overrides. developer.chrome.com
[3] Override webpage resources with local copies - Microsoft Edge DevTools. learn.microsoft.com