UStackUStack
Decoy icon

Decoy

DecoyはDockerやクラウドトンネルなしでローカルAPI/ウェブフックを擬似できるmacOSモックサーバー。エンドポイント設定とリクエスト監視、応答調整が可能。

Decoy

Decoyとは?

Decoyは、開発者がHTTPエンドポイントとウェブフックの動作をローカルでシミュレートするためのmacOSネイティブモックサーバーです。ルートを定義し、受信リクエストを監視し、制御されたモック応答を返却することで、外部サービスを立てずにAPIラッパー、リクエスト処理、リダイレクト、障害モードをテストできます。

Decoyの主な目的はローカルでオンデマンドなテストです。クライアントをDecoyのローカルドメインとポートに設定し、各リクエストの到着を監視し、エンドポイント応答を調整して、選択したシナリオでコードをテストします。

主な機能

  • macOSネイティブアプリで即時起動:SwiftUIアプリとして動作し、Docker、クラウドトンネル、セットアップ不要で素早く開始。
  • エンドポイントとリクエスト/応答制御:メソッド+パスをプロジェクトごとに定義し、応答ステータスコード、本文タイプ、ヘッダー、遅延を設定。
  • リアルタイムリクエスト監視:受信リクエストごとにヘッダー、本文、送信元IP、タイムスタンプ、UUIDを表示。JSON本文は自動整形。
  • パラメータ付きパスとプロジェクト:パスパラメータ(例: /users/:id が /users/42 にマッチ)をサポートし、エンドポイントをプロジェクトに整理。
  • 一般的なウェブシナリオ向け応答形式:プレーンテキスト、JSON、HTML、XML、ファイル、空、リダイレクトを選択。リダイレクト時はLocationヘッダーを自動設定。
  • ブラウザとCORS対応:ブラウザリクエストがそのまま動作し、CORSヘッダーを自動追加。リダイレクトステータス(301, 302, 307, 308)対応。
  • リクエスト/応答スナップショットとエクスポート:各リクエストの実際の応答を表示し、cURL、JavaScript fetch、Rubyとしてエクスポート。
  • SQLiteによる永続リクエストログ:リクエストを即時SQLiteに書き込み、アプリ異常終了時もデータ喪失なし。

Decoyの使い方

  1. Mac App StoreからDecoyをインストールし、macOS 14 Sonoma以降でアプリを起動。
  2. プロジェクトを作成/選択し、メソッドとパスでエンドポイントを定義。
  3. 各エンドポイントのモック応答を設定:ステータスコード、本文タイプ(JSON、HTML、XML、ファイルなど)、ヘッダー、遅延を選択。
  4. アプリやテストツールをDecoyのローカルドメインとポート(製品説明のdecoy.my:8998など)に設定。
  5. クライアントやブラウザからリクエスト送信。Decoyが受信リクエスト詳細を表示し、次のリクエストから応答変更を適用。

ユースケース

  • ウェブフック処理とエッジケースのテスト:Decoyにウェブフックリクエストを送り、コードが異なるステータスコード、応答本文、ヘッダー、遅延をどう処理するかを確認。
  • APIラッパー処理の検証:制御したモックエンドポイントでAPIクライアントをテストし、応答ペイロードとヘッダーを調整しながら受信リクエストを観察。
  • リダイレクト動作の再現:適切なLocationヘッダー付きリダイレクトをエンドポイントに設定し、アプリが301/302/307/308にどう従うかをテスト。
  • 開発中の静的コンテンツ提供:ファイル応答で画像、PDF、その他ファイルを直接配信、またはHTML本文タイプで完全なHTMLページを提供。
  • 実際のリクエスト/応答のキャプチャと再利用:リクエストスナップショットを使い、生成されたcURLやfetch/Ruby相当をエクスポートして問題再現や共有。

FAQ

DecoyはDocker、クラウドトンネル、設定ファイルが必要ですか? いいえ。製品説明の通り、Docker、クラウドトンネル、設定ファイル不要です。

対応プラットフォームとバージョンは? macOS 14 Sonoma以降が必要です。

モック応答の変更はいつ適用されますか? JSON、ヘッダー、ステータスコードなどの編集は、次の受信リクエストから有効。

ブラウザリクエストとCORSは扱えますか? はい。ブラウザリクエストをサポートし、CORSヘッダーを自動追加。

リクエストデータはどこに保存されますか? リクエストを即時SQLiteに書き込み、製品説明の通りアプリ異常終了時もデータ喪失なし。

代替案

  • ローカルHTTPモックサーバー(汎用ツール):このカテゴリのツールもローカルエンドポイントと制御可能な応答を提供し、通常は設定ファイルやコンテナを使用;DecoyはDocker不要のmacOSネイティブUIを重視。
  • 専用APIモックプラットフォーム(ホストサービス):これらはネットワーク経由でエンドポイントをシミュレート可能だが、通常は外部セットアップとデプロイが必要で、ローカルモックサーバーの実行とは異なる。
  • リクエスト/応答スタブライブラリやテストフレームワーク:一部のチームはテストスイート内でコードベースのスタブを使用;Decoyのスタンドアロン・ローカルサーバー(リクエスト監視と応答編集UI)とは異なる。
  • モッキング対応APIテストツール:一部のインタラクティブAPIクライアントがモッキングやローカルシミュレーションをサポート;特にリクエスト監視、プロジェクト、応答スナップショット/エクスポート機能周りでワークフローが異なる可能性。
Decoy | UStack