# Proxyman for iOS の Map Local チュートリアル

> Proxyman for iOS の Map Local を使って、iPhone 上の HTTP/HTTPS レスポンスをモックし、ステータスコード、ヘッダー、ボディを変更する方法を解説するステップバイステップのチュートリアルです。

## Proxyman Map Local で iPhone 上の HTTP(s) レスポンスを操作する {#manipulate-https-responses-on-iphone-with-proxyman-map-local}

バージョン 2.0.0 以降、Proxyman for iOS には Map Local ツールがあります。このツールを使うと、ルールに一致するリクエストのレスポンスとして、ローカルファイルの内容を使用できます。

Map Local を使うと、開発をより速く進められます。サーバーのデータを変更せずに、エッジケースをすばやくテストできます。また、さまざまなレスポンスでアプリの動作をテストしたい QA や開発者にとっても、欠かせないツールです。テストシナリオの例は次のとおりです：

* レスポンスを定義して、一致するリクエストで使用します。
* レスポンスの新しいパラメータをすばやく試します。
* レスポンスのパラメータを変えて、アプリの動作をテストします。
* 特殊なコンテンツで、UI レイアウトをテストします。
* 特定のパラメータを含むレスポンスで、バグをすばやく再現します。
* ローカルファイルで API をモックします。まだ本番環境にない API を試験的にテストしたい場合に便利です。

## 前提条件 {#prerequisites}

* App Store から最新版の Proxyman をダウンロードします：[https://apps.apple.com/us/app/proxyman/id1551292695](https://apps.apple.com/us/app/proxyman/id1551292695)
* iOS デバイスに Proxyman の証明書をインストールして信頼します。Proxyman を初めて使う場合は、[iPhone から HTTPS 通信をキャプチャして確認する](https://proxyman.com/posts/2021-10-17-Getting-Started-With-Proxyman-For-iOS)の手順に従い、iPhone での HTTP 通信のキャプチャを開始してください。

## Map Local ルールを作成する {#create-map-local-rules}

Map Local ルールを作成する方法は 2 つあります：

1. More タブから

* **More** タブ → **Map Local** → **+** ボタンをタップします。
* ルールの項目（Name、URL、Method、サブパスを含めるかどうか）を入力します。

2. コンテキストメニューから

* リクエストを長押しして、**Add to Map Local** を選択します。
* Proxyman が、選択したリクエストからルールの項目をすべて自動で入力します。

![Add to Map Local を含む Proxyman for iOS のコンテキストメニュー。リクエストから入力された Map Local Editor が開く](https://proxyman.com/docs/assets/image%20(14).png)

_リクエストから Map Local ルールを作成する_

### ヘッダー、ステータスコード、ボディを変更する {#modify-header-status-code-and-body}

Map Local Editor では、ヘッダー、ステータスコード、ボディを変更できます。ボディを別のデータ型に置き換えると、Proxyman が Content-Type を検出し、ヘッダーを自動で更新します。

## Map Local ツールでレスポンスを操作する {#manipulate-response-with-map-local-tool}

![ステータス 201 Created の Map Local Editor と、有効になっている Map Local ルールの一覧が並んでいる Proxyman for iOS](https://proxyman.com/docs/assets/image%20(12).png)

_Map Local とルールを有効にする_

準備は完了です。もう一度リクエストを送信して、動作を確認してみてください。

受信したリクエストの URL が、**事前に定義された一致ルール**に一致し、かつローカルファイルが有効な場合、Proxyman はそのリクエストのレスポンスボディを、ローカルファイルの内容に置き換えます。

どのルールにも一致しないリクエストでは、サーバーからのレスポンスはそのまま変わりません。

![Proxyman for iOS のフロー一覧。Map Local で実行されたリクエストの詳細と、ローカルファイルに置き換えられたレスポンスボディが表示されている](https://proxyman.com/docs/assets/image%20(13).png)

_Map Local によってレスポンスが変更された状態_

うまくできました！フロー一覧では、小さな青いアイコンが、そのフローが変更されたことを示します。レスポンスの内容は、ローカルファイルに置き換えられました。

## 次のステップ {#whats-next}

Map Local を使うと、さまざまなレスポンスを試して、デバイス上のレイアウトやコンテンツをテストできます。ただし、変更できるのはレスポンスだけです。リクエストも変更したい場合は、[Breakpoint for iOS チュートリアル](https://proxyman.com/docs/ja/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial)をご覧ください。Breakpoint を使うと、アプリのロジックを変更することなく、リクエストとレスポンスの両方をその場で変更できます。
