Proxyman の Map Local ツールで HTTP レスポンスを書き換える方法
この技術ブログでは、Map Local ツールとは何か、そしてレスポンスを素早く書き換えるのにどのように役立つかを紹介します。
Proxyman がデバッグの生産性向上に役立てば幸いです 👏

1. Map Local ツール
Map Local ツールを使うと、ルールに一致したリクエストのレスポンスとして、ローカルファイルの内容を使用できます。
Map Local ツールを使えば、サーバー上のデータを明示的に更新することなく、さまざまなエッジケースを素早くテストできるため、開発のスピードが大幅に向上します。また、さまざまなレスポンスに対するアプリの動作を確認したい QA や開発者にとって、必須のツールでもあります。
2. HTTP レスポンスを書き換えるメリット
デバッグ中には、デバイスやアプリのレイアウトやコンテンツを確認するために、さまざまな種類のレスポンスを試したい場面が数多くあります。例えば次のような場合です。
- レスポンスに新しいパラメータを素早く試す。
- レスポンス内の異なるパラメータで、アプリの動作をテストする。
- 特殊なコンテンツで UI のレイアウトをテストする。
- ローカライズをテストする。
- 特定のパラメータを含むレスポンスで、バグを素早く再現する。

3. 仕組み
-
受信したリクエストの URL が事前に定義された一致ルールに一致し、かつローカルファイルが有効な場合 => 一致したリクエストのレスポンスボディは、自動的にローカルファイルの内容に置き換えられます。
-
リクエストがどのルールにも一致しない場合、レスポンスの内容はすべてサーバーから返された内容のままです。

4. 一致ルール
Wildcards と Include subdirectories オプションを組み合わせるだけで、ルールを定義できます。

-
Top-Down Matching: 受信したリクエストは上から順に評価されます。リストの一番上にあるルールが、最初に評価されるルールです。
-
アスタリスク ( * ): 任意の文字に 0 回以上一致します。例えば、"api.proxyman.com/v1/*" は、"api.proxyman.com/v1/" で始まるすべての URL に一致します。"api.proxyman.com/v1/login"、"api.proxyman.com/v1/data"、"api.proxyman.com/v1/" などが該当します。...
-
疑問符 ( ? ): 1 文字に 1 回一致します。例えば、"api.proxyman.com/v?/login" は api.proxyman.com/v1/login と api.proxyman.com/v2/login の両方に一致します。
-
Include subdirectories: すべてのサブディレクトリが自動的に一致します。ドメインのすべてのパスに一致させたい場合にとても便利です。例えば、"Include subdirectories" をオンにした "api.proxyman.com" は、ドメインが "api.proxyman.com" であるすべての URL に一致します。"api.proxyman.com"、"api.proxyman.com/v1/data"、"api.proxyman.com/login"、"api.proxyman.com/user?name=nghia" などです。...
-
HTTP / HTTPS の一致: デフォルトでは、"api.proxyman.com" はスキームが HTTP または HTTPS であるすべてのリクエストに一致します。それ以外の場合、"http://api.proxyman.com" は HTTP のみに、"https://api.proxyman.com" は HTTPS のみに一致します。
6. その他
Map Local ツールでは、ルールリストを素早く操作するためのさまざまな方法も用意されており、ホットキーにも対応しています。
- ⌘ + ⌥ + L : Map Local ウィンドウをすばやく開く。
- ⌘ + N : 新規エントリ
- ⌘ + E : エントリを編集
- ⌘ + D : エントリを複製
- ⌘ + ⌫ : エントリを削除
- 複数のエントリの選択に対応
- ローカルファイルを Finder またはお気に入りのエディタですばやく開く。
- 変更はすぐに反映されるため、保存する必要はありません。
- 一致したレスポンスの "Content-Type" は、ローカルファイルの種類に応じて自動的に置き換えられます。例:application/json、image/png、image/jpg など。これにより、アプリはレスポンスを適切に処理できます。

7. 使い方
Map Local ツールを開く方法はいくつかあります。Domains またはフローから Map Local ツールを開くと、一致するルールが自動的に入力されます。

ヒント
より具体的なルールは、広いルールより上に配置してください。そうすると、先に評価されます。一致するパスが多い API の場合、Map Local では 1 つずつファイルを指定する代わりに、ローカルディレクトリを使うこともできます。モックファイルはコンテンツタイプに合った有効な形式にしておき、完了前に通常のレスポンス、空のレスポンス、エラーレスポンスをそれぞれテストしてください。
Proxyman は、iOS デバイス、iOS シミュレータ、Android デバイス上のアプリやドメインから送受信される HTTP/HTTPS リクエストをキャプチャして確認できる、高性能な macOS アプリです。
https://proxyman.com からダウンロードできます。
