MacOS 向け HTTP プロキシ & モックツール Mimicry を作った
ダウンロード
最新版のダウンロードと使い方は Mimicry のツールページ を参照してください。
はじめに
モバイルアプリや Web アプリの開発では API のレスポンスを差し替えたいことがよくあります。エラー画面を確認したいときやエッジケースをテストしたいとき、まだ実装されていない API の代わりにモックを返したい場合などさまざまなシーンがあります。
Charles Proxy のようなツールもありますが有料です。モックルールを記憶させておいて必要なときにすぐ切り替えられるツールが欲しくなりました。そこで無料で使えて複数のモックパターンを管理できるツールとして Mimicry を作りました。
冒頭の動画で実際にモックが動作する様子を確認できます。
Mimicry とは
Mimicry は macOS で動作する HTTP プロキシ & モックツールです。iOS/Android シミュレーター・実機や Web ブラウザのネットワークリクエストをインターセプトし、設定したルールに基づいてモックレスポンスを返します。
主な特徴は以下の通りです。
- URL パターンマッチングによるモックレスポンス
- プロジェクト/フォルダによる階層的なルール管理
- macOS システムプロキシの自動設定
- iOS シミュレーターへの証明書自動インストール
- Android エミュレーター・実機、Web ブラウザ対応
- 通信ログのリアルタイム表示
- JSON エクスポート/インポート機能
- 日本語/英語の UI 対応
- valibot による保存時バリデーション
- iOS/Android エミュレーター起動サポート
フロントエンドは Electron + Vite + React で構築し、バックエンドには Python の mitmproxy を使っています。
対応プラットフォーム
Mimicry は以下のプラットフォームで動作確認済みです。
- iOS シミュレーターは証明書の自動インストールに対応しており、ワンクリックでセットアップできます
- iOS 実機は手動での証明書インストールとプロキシ設定が必要です
- Android エミュレーターは Android Studio のエミュレーターで動作確認済みです
- Android 実機は Wi-Fi プロキシ設定と証明書インストールが必要です
- Web ブラウザは Chrome など macOS システムプロキシ経由で利用できます
使い方
プロジェクトとフォルダを作成
サイドバーでプロジェクトを作成し、その中にフォルダを追加します。フォルダには対象ドメインを設定できます。
フォルダ内にモックルールを追加していきます。ルールには URL パターン・HTTP メソッド・ステータスコード・レスポンスボディを設定します。
デバイスのセットアップ
iOS シミュレーター
デバイス設定パネルからシミュレーターを選択して証明書をインストールします。ボタンをクリックするだけで mitmproxy の CA 証明書がシミュレーターに追加されます。
システムプロキシの設定もワンクリックで有効化できます。iOS シミュレーターは macOS のシステムプロキシを継承するので、これで準備完了です。
Android エミュレーター・実機
Android エミュレーターはデバイス設定パネルから直接起動できます。Android Studio で起動可能なエミュレーターの一覧が表示されるので、目的のデバイスを選んで起動ボタンをクリックします。
エミュレーターや実機の場合は Wi-Fi 設定からプロキシを手動で設定し、mitmproxy の CA 証明書をインストールします。詳細な手順は mitmproxy の公式ドキュメントを参照してください。
Web ブラウザ
Chrome などの Web ブラウザは macOS のシステムプロキシ設定を利用するため、システムプロキシを有効化するだけで利用できます。
通信ログからモックを作成
通信ログパネルにはプロキシを通過したリクエストがリアルタイムで表示されます。実際の API レスポンスを確認してそこから直接モックルールを作成できます。
レスポンスボディをコピーして貼り付ける手間がなく、ワンクリックでルールが作成されるので便利です。
保存時バリデーション
モックルールを保存する際、JSON 形式のレスポンスボディやヘッダーは valibot でバリデーションされます。不正な JSON があるとエラーが表示されるので、問題を修正してから保存できます。
エラーメッセージは日本語と英語の両方に対応しています。不正な値を入力した箇所が明確に示されるため、修正が容易です。
JSON エクスポート/インポート
プロジェクトやモックルールは JSON 形式でエクスポート・インポートできます。チームメンバー間でモック設定を共有したり、異なる環境で同じルールセットを利用したいときに便利です。
エクスポートしたファイルにはプロジェクト名やフォルダ構成、各ルールの詳細がすべて含まれます。インポート時は既存のデータと比較して異なる部分だけが追加されます。
Developer ID 署名と Apple 公証
配布用にビルドする際は Gatekeeper 警告なしでインストールできるよう Developer ID による署名と Apple 公証に対応しています。Electron アプリと Python バイナリの両方に署名を行い、macOS で安全にインストールできるようにしました。
まとめ
Mimicry を使えば、iOS/Android アプリや Web アプリ開発時の API モックが手軽にできるようになります。通信ログから直接モックを作成できるので、効率的にテストや検証を進められます。
valibot による保存時バリデーションや JSON エクスポート/インポート機能により、モック設定の管理が簡単になりました。Android エミュレーターを UI から直接起動できるため、セットアップの手間も減っています。
今後も機能を追加していく予定です。Android エミュレーターへの証明書自動インストール機能や実機セットアップの手順改善など、より使いやすくしていきたいと考えています。