API開発の「あのイライラ」をすべて消し去る魔法の技術へようこそ!
フロントエンドの開発を進めているとき、こんな壁にぶつかったことはありませんか?
- 「APIのこのフィールドが `null` で返ってきたときの表示崩れを確認したいけれど、テストデータをデータベースに仕込むのが面倒くさい……」
- 「サーバーサイドの実装が遅れていて、APIがまだ動かない。でもフロントエンドの画面は完成させてテストしたい!」
- 「本番環境だけで起きているバグを再現したいけれど、本番のAPIレスポンスをローカルに持ってくるのが難しい……」
データベースの値を書き換えたり、モックサーバーをわざわざNode.jsで立ち上げたり、コードの中に一時的な `if` 文を埋め込んだり……。こうした作業は、私たちの開発の「リズム」を狂わせる大きな要因になります。
これらをすべて「ブラウザの中だけで、1行のコードも書き換えずに、しかも完全に安全に」解決する方法があります。
それが、モダンなブラウザ(ChromeやEdgeなど)のデベロッパーツールに搭載されている「Local Overrides(ローカル・オーバーライド)」という機能です。
この記事では、この強力な機能を今日から実務で使いこなせるよう、その仕組みから、具体的なセットアップ、そして実践的なデモまで、優しく、かつ技術的な本質に迫りながら解説します。これをマスターすれば、あなたの毎日のコーディングとデバッグの効率は劇的に向上しますよ!
—
なぜLocal Overridesなのか? ツール内部の「超合理的」な仕組み
世の中には、APIをモックするためのツール(MSWやMockoon、Charles、Fiddlerなど)がたくさん存在します。それらがあるにもかかわらず、なぜブラウザの「Local Overrides」を学ぶべきなのでしょうか?
その秘密は、ブラウザ内部の「リクエスト割り込み(インターセプト)位置」にあります。
通常、ブラウザがサーバーにWeb API(FetchやXMLHttpRequest)をリクエストすると、下図のような経路をたどります。
[ブラウザJSエンジン] ──(Request)──> [ネットワーク層] ──> [インターネット] ──> [APIサーバー]
[ブラウザJSエンジン] <──(Response)── [ネットワーク層] <── [インターネット] <── [APIサーバー]
「Local Overrides」を有効にすると、ブラウザのネットワーク層の直前に「仮想のプロキシ(プロキシファイルシステム)」が割り込みます。
[ブラウザJSエンジン] ──(Request)──> [ネットワーク層] ──> (サーバーには送らない/送った後に横取り)
│
[Local Overrides] (あなたのPC上のフォルダ)
│
[ブラウザJSエンジン] <──(偽のResponse)───┘
この仕組みがもたらすメリットは計り知れません。
1. CORS(Origin制約)の回避
モックサーバーを別ポート(`localhost:3000`など)で起動すると、CORSエラーに悩まされることがよくあります。Local Overridesは「同一のAPIリクエスト」のレスポンスをブラウザの内部で差し替えるため、CORSの設定変更が一切不要です。
2. HTTPS(暗号化通信)の障壁がない
本番環境(`https://…`)の通信であっても、ブラウザの内部で複合された後のデータを書き換えるため、SSL証明書の作成やプロキシ設定といった面倒な作業が不要です。
3. コードを1文字も汚さない
テスト用のコード(`if (process.env.NODE_ENV === ‘development’) …` のような条件分岐)をプロダクションコードに混入させる必要がありません。Gitのコミットを汚す心配もゼロです。
—
準備:まずは実験用の「ミニマムな環境」を作ろう
百聞は一見に如かず。実際に動かして、その圧倒的な便利さを体感してみましょう!
まずは、簡単なAPIを呼び出して画面に表示する「Hello World」的なHTMLファイルを1つ用意します。
ローカルの適当な場所に `index.html` という名前で以下のファイルを保存してください。
- ユーザー情報ステータス
- 3ステップで設定:APIレスポンスを書き換える「Local Overrides」の実践
- ステップ 1:オーバーライド専用の「空のフォルダ」をPCに作成する
- ステップ 2:DevToolsで「Overrides」を有効化する
- ステップ 3:レスポンスを書き換えてみよう(最新のモダンな方法)
- 精度高いHelloWorldの「動作確認」
- 実務で真価を発揮する「プロの現場での応用パターン」
- パターンA:エラー系(500 Internal Server Error)のモック検証
- パターンB:本番環境のCSS/JSを書き換えて「緊急バグ修正」のシミュレーション
- アーキテクトからのアドバイス:モックツールとの賢い使い分け
- まとめ
ユーザー情報ステータス
このファイルをブラウザ(Chromeを推奨)でダブルクリックして開いてみてください。
無事に「Leanne Graham」といったダミーのユーザー情報が表示されれば、準備は完了です!
—
3ステップで設定:APIレスポンスを書き換える「Local Overrides」の実践
それでは、この `https://jsonplaceholder.typicode.com/users/1` から返ってくるデータを、サーバー側には一切触れずに、ブラウザ上で書き換えてみましょう。
ステップ 1:オーバーライド専用の「空のフォルダ」をPCに作成する
まず、デスクトップなど任意の場所に、空のフォルダを作成してください。
名前はなんでも構いません(例: `devtools_overrides`)。
このフォルダの中に、ブラウザが「書き換えたデータ」を自動的に保存していくことになります。
ステップ 2:DevToolsで「Overrides」を有効化する
1. 作成した `index.html` を開いているブラウザ画面で、`F12` キー(Macは `Cmd + Option + I`)を押して DevTools(開発者ツール) を開きます。
2. DevToolsの上部メニューから 「Network(ネットワーク)」 タブを選択します。
3. 画面に何も表示されていない場合は、一度ページをリロード(`Ctrl + R` または `Cmd + R`)して、APIリクエスト(`1` という名前のリクエスト)が走るのを確認してください。
4. 次に、DevToolsの 「Sources(ソース)」 タブを開きます。
5. 左側のパネルにある二重矢印 `>>`(非表示メニュー)をクリックし、「Overrides(オーバーライド)」 を選択します。
※見当たらない場合は、左側パネルの「Page」や「Filesystem」の並びにある「Overrides」を探してください。

(※デバッガの内部設定を触る際は、このOverridesタブが司令塔になります)
6. 「+ Select folder for overrides(フォルダを選択してオーバーライドを許可)」 というボタンをクリックし、先ほどステップ1で作成した空のフォルダ(`devtools_overrides`)を選択します。
7. ブラウザの上部に「DevTools がローカルディレクトリへのフルアクセスを求めています」という警告が表示されるので、「許可(Allow)」 をクリックします。
これで、ブラウザとあなたのPCのフォルダが安全に同期されました。準備万端です!
—
ステップ 3:レスポンスを書き換えてみよう(最新のモダンな方法)
現在のChromeでは、Networkタブから直接APIレスポンスを書き換えることができます。これが最も直感的でエラーの少ない方法です。
1. 「Network(ネットワーク)」 タブに戻ります。
2. 名前が `1` となっているAPIリクエストを右クリックします。
3. コンテキストメニューから 「Override content(コンテンツをオーバーライド)」 を選択します。
すると、自動的に「Sources」タブの「Overrides」エディタが開き、APIから返ってきた生データ(JSON)が表示されます。
ここで、データを以下のように自由に書き換えてみましょう!
{
“id”: 1,
“name”: “超凄腕アーキテクト(あなたです!)”,
“username”: “super_architect”,
“email”: “architect@example.com”,
“address”: {
“street”: “Kulas Light”,
“suite”: “Apt. 556”,
“city”: “Gwenborough”,
“zipcode”: “92998-3874”,
“geo”: {
“lat”: “-37.3159”,
“lng”: “81.1496”
}
},
“phone”: “090-1234-5678”,
“website”: “VIPゴールド会員(テスト書き換え)”,
“company”: {
“name”: “Romaguera-Crona”,
“catchPhrase”: “Multi-layered client-server neural-net”,
“bs”: “harness real-time e-markets”
}
}
書き換えたら、`Ctrl + S`(Macは `Cmd + S`)を押して保存します。
保存すると、ファイル名の横にあった紫色の丸いインジケータが落ち着き、ローカルフォルダに書き換え用のデータが保存されたことを示します。
—
精度高いHelloWorldの「動作確認」
それでは、本当に書き換わったのかテストしてみましょう!
1. ブラウザの画面に戻り、「データを再取得」 ボタンをクリックします。
2. 画面の表示を確認してください。
どうでしょうか!サーバーに通信が飛んでいる(Networkタブにはリクエストが表示されている)にもかかわらず、画面に表示されたのは、先ほどあなたが書き換えた 「超凄腕アーキテクト」 と 「VIPゴールド会員(テスト書き換え)」 という名前になっていますね!
さらに、Networkタブをよく見てみてください。
リクエストの左側に「紫色の警告(矢印)マーク」がついているはずです。これは、「このリクエストはローカルのファイルによってオーバーライドされていますよ」というデバッガからの親切なサインです。
—
実務で真価を発揮する「プロの現場での応用パターン」
このLocal Overridesの強力さは、単なる値の書き換えに留まりません。現場のエンジニアが実際に使っている、強力な3つの応用パターンをご紹介します。
パターンA:エラー系(500 Internal Server Error)のモック検証
フロントエンドを開発する際、「APIが500エラーを返したときに、画面がクラッシュせずに正しいエラーメッセージを出せるか」の検証は必須です。
これも、Local Overridesなら一瞬でシミュレートできます。
1. Networkタブで、先ほどの `1` のリクエストを右クリックし、今度は 「Override headers(ヘッダーをオーバーライド)」 を選択します。
2. 右側の「Header overrides」パネルが表示されます。
3. ここで `status code` を `200` から `500` に書き換えて保存します。
これで、APIを叩くたびにブラウザは「500 Server Error」を受け取ったと錯覚し、JavaScriptの `catch` ブロックが走り、安全にエラー表示のテストが行えます。
パターンB:本番環境のCSS/JSを書き換えて「緊急バグ修正」のシミュレーション
本番環境のサイト(例えば自社のコーポレートサイトなど)で表示崩れが起きたとき、手元にソースコードがなくても、Local Overridesを使えば本番の `main.js` や `style.css` をローカルに引き込み、ブラウザ上で直接コードを修正して、「これで直るか」を本番と同じ環境で検証できます。
修正が成功したら、その書き換えたコードをそのままGitのリポジトリに反映すれば良いのです。修正の手戻りがほぼゼロになります。
—
アーキテクトからのアドバイス:モックツールとの賢い使い分け
Local Overridesは極めて強力ですが、すべてのケースでこれを使うのが正解というわけではありません。プロのアーキテクトとして、以下の使い分けをおすすめします。
- MSW (Mock Service Worker) や Mockoon を使うべきとき:
- チーム全体で共通の「モックAPI定義」を共有したいとき。
- 自動テスト(JestやCypress)とモックデータを共通化したいとき。
- Local Overrides を使うべきとき:
- 開発初期やデバッグ中に、「今すぐその場で1分以内に」特定のデータを書き換えて挙動を見たいとき。
- 本番環境やステージング環境など、自分たちがコードを直接デプロイできない環境の不具合を調査・修正したいとき。
この2つをツールボックスに入れ、状況に応じてサッと使い分けることこそが、モダンでスマートなエンジニアの姿です。
まとめ
今回学んだ「Local Overrides」は、ブラウザを単なる「コードの実行環境」から「究極のデバッグサンドボックス」へと進化させる強力な機能です。
- 同一オリジン・HTTPSを気にせず割り込める
- サーバーやソースコードを一切汚さない
- レスポンスデータ(JSON)だけでなく、ステータスコードやヘッダー、CSS/JSすら書き換え可能
これを一度覚えてしまえば、APIの準備を待って手が止まることも、テストデータの作成に何時間も奪われることもなくなります。
「毎日のコーディングを劇的に楽にする」ための第一歩として、ぜひ明日からの実務プロジェクトで、この「紫色のマーク」を呼び出してみてください。開発の景色がガラリと変わるはずです!