TL;DR
SoapUIモックサービスはSOAPまたはRESTエンドポイントをローカルでシミュレートしますが、Javaプロセスの実行や手動ディスパッチ設定が必要であり、共有マシンなしではチーム間で共有できません。ApidogのSmart MockはAPIスキーマからモックレスポンスを生成し、クラウドで実行され、チームと自動的に共有されます。
💡 ApidogはローカルでJavaプロセスを動かすことなく、API定義から即座にモックエンドポイントを作成できるSmart Mockを内蔵した無料のオールインワンAPI開発プラットフォームです。クレジットカード不要で無料で試せます。
はじめに
モックサービスはAPI開発において、サービスが未完成・未公開でもクライアントの動作検証やエラー・遅延ケースのテストができるようにします。
SoapUIのモックサービスは初期からあり、リクエストに応じてローカルHTTPサーバーでレスポンスを返しますが、プロセス管理や共有面で不便があります。本記事ではSoapUIモックサービスの具体的な使い方・課題・ApidogのSmart Mockとの違いを、実装目線で解説します。
SoapUIモックサービスの仕組み
SoapUIはプロジェクト内のSOAP/RESTインターフェースからモックサービスを作成し、以下の流れでモックを動作させます。
- 指定したローカルポート(例:
http://localhost:8088/MockService)で待ち受け - リクエストを受信
- ディスパッチロジックで「モックレスポンス」を選択
- 設定済みのレスポンスを返却
SOAPの場合はWSDLからスタブレスポンスを自動生成可能で、実装前のAPIシミュレーションに便利です。
SoapUIモックサービスの設定(ステップバイステップ)
SOAPインターフェースの場合
- SoapUIプロジェクトでSOAPインターフェースを右クリック
- 「Generate MockService」を選択
- ダイアログで以下を設定
- サービス名(例:
OrderService Mock) - ポート番号(デフォルト8088など)
- パス(例:
/orders)
- サービス名(例:
- 「OK」でMockServiceノードが作成される
- MockServiceノード展開→各SOAP操作ごとのMockOperationができる
- MockOperationをダブルクリックでレスポンスエディタを開く
- レスポンスXMLを編集し、返す値を設定
- MockServiceエディタの再生ボタンでサーバー開始
クライアントコードのエンドポイントURLを http://localhost:8088/orders に変更してテストできます。
RESTインターフェースの場合
- プロジェクトツリー内RESTインターフェース/リソースを右クリック
- 「Add to MockService」または「Generate MockService」を選択
- ポート・パスを設定
- 各リソース/メソッドごとにレスポンス本文・ステータスコードを設定
- モックサービスを開始
ディスパッチの設定
デフォルトでは最初のモックレスポンスを返しますが、入力ごとにレスポンスを分けたい場合はディスパッチスクリプト(Groovy)かSEQUENCEタイプを使います。
- SEQUENCEディスパッチ: 呼び出しごとに順番でレスポンスを返す
- SCRIPTディスパッチ: Groovyスクリプトでリクエスト内容を見てレスポンス名を返す
例(Groovy):
def request = mockRequest.getRequestContent()
if (request.contains("orderId>12345")) {
return "OrderFoundResponse"
} else {
return "OrderNotFoundResponse"
}
※ 複数のモックレスポンスを作成し、スクリプトで振り分けます。
SoapUIモックサービスのよくある問題
問題1:SoapUIを閉じるとモックが停止する
モックはSoapUIのJVMプロセス上で動作。SoapUIを閉じると停止します。
回避策:
- 専用マシンやVMでSoapUIを常時起動
- コマンドライン(例:
mockservicerunner.sh -p 8088 -s "OrderService Mock" project.xml) - 永続的な共有マシン利用
いずれもJava・SoapUI環境が必須です。
問題2:チーム間でのモックの共有
localhost:8088 で動作するため、他のチームメンバーは同じマシンにアクセスするか、ネットワーク設定(VPN/ファイアウォール)や共有サーバー必須です。
問題3:複雑なXMLでディスパッチスクリプトが壊れる
ディスパッチは生XMLに対するテキスト検索。
SOAPの名前空間やクライアントによるXML構造の違いで、単純な<orderId>12345</orderId>検索が効かなくなる場合あり。
この場合、GroovyUtilsでXMLパース処理が必要でスクリプトが複雑化します。
問題4:呼び出し間で状態が永続しない
デフォルトはステートレス。POST/GETで状態を持たせたい場合、Groovy変数で状態管理する必要がありますが、堅牢とはいえません。
問題5:モックサービス用のSSL
HTTPS対応にはキーストア/証明書の手動セットアップ+SoapUI/クライアント双方の設定が必要です。
Apidog Smart Mock:比較
ApidogはAPI設計(OpenAPI/スキーマ定義)からモック生成をスタートします。
- エンドポイント・メソッド・リクエスト/レスポンススキーマを定義
- クラウドで自動的にモックエンドポイント(例:
https://{your-project}.mock.apidog.io/orders/{id})が生成
このURLは
- 常時稼働(ローカルプロセス不要)
- 権限があればチーム全員アクセス可能
- スキーマからレスポンス生成
Apidogがモックレスポンスを生成する方法
ApidogはJSON SchemaやOpenAPIレスポンス定義を読み取り、現実的なダミーデータを自動生成します。
- 例:
orderIdがUUID形式→ランダムUUIDを返す - 例:
amountが0〜10000のnumber→その範囲で返却
特定のフィールドはカスタム値(例: 常に "test-123" 返却)も設定可能です。
Apidog MockにおけるSOAPエンドポイント
RESTのJSONモックが主軸ですが、SOAPも「リクエスト+カスタムXMLレスポンス」を手動で登録→モックサーバーで返却可能。
WSDL自動生成は非対応ですが、ローカルJava不要で簡易SOAPモックが作れます。
ステートフルモッキング
ApidogはJavaScriptでモックスクリプトを記述でき、リクエスト内容に応じて動的にレスポンスを返すことが可能です(SoapUIのGroovyディスパッチ相当)。
サイドバイサイド比較
| 機能 | SoapUIモック | Apidog Smart Mock |
|---|---|---|
| Javaが必要 | はい | いいえ |
| 常時稼働 | コマンドラインランナー使用時のみ | はい(クラウド) |
| チームアクセス可能 | 手動ネットワーク設定が必要 | はい、共有URL経由 |
| WSDL自動生成 | はい | いいえ |
| RESTスキーマベース | いいえ | はい |
| 動的レスポンス | Groovyディスパッチ | JavaScriptモックスクリプト |
| HTTPSサポート | 手動キーストア設定 | 組み込み |
| ステートフルモッキング | Groovy変数経由 | JavaScriptスクリプト経由 |
| 無料 | はい | はい |
それぞれの使用時期
SoapUIモックサービスが向いているケース
- WSDLベースのSOAPを自動スタブ化したい
- オフラインや厳格なネットワーク環境
- 既存SoapUIプロジェクトから離れたくない
Apidog Smart Mockが向いているケース
- REST APIのモックを簡単にチーム共有したい
- モックサーバーの起動や環境管理を自動化したい
- 実装前にAPI契約を決めておきたい
- JavaインストールやSoapUIのセットアップを避けたい
よくある質問
Q. SoapUIモックサービスはヘッドレス(GUIなし)で動かせる?
A. 可能です。mockservicerunner.sh(Linux/macOS)やmockservicerunner.bat(Windows)でコマンドライン実行できます(Java必須)。
Q. ApidogはSOAPモックをサポートする?
A. 一部サポート。カスタムXMLレスポンスを登録できますが、WSDLベースの自動スタブ生成はありません。
Q. SoapUIモックサービスで応答遅延はシミュレートできる?
A. できます。モックレスポンスに「Delay」値(ms)を設定。Apidogも応答遅延設定が可能です。
Q. Apidogはどれくらいのモックリクエストに対応可能?
A. 一般的な開発・テスト用途の負荷なら十分対応。大規模パフォーマンステストには専用ツール推奨です。
Q. チームで同じエンドポイントに異なるモックレスポンスが必要な場合は?
A. SoapUIは各自ローカルで独立運用可能。Apidogは環境切り替えやクエリパラメータ、Mock expects機能で条件分岐可能。
Q. Apidogでモック作成にはAPIを完全定義する必要がある?
A. 完全なスキーマがなくても手動でレスポンス本文を設定してモック化できます。スキーマ定義があれば自動生成も活用できます。
SoapUIのモックはローカルJavaプロセス依存で運用に課題があります。チームで永続・共有したいモックは、Apidogのクラウド型Smart Mockで手間なく運用可能です。
今すぐApidogを試して、APIモック運用の効率化を体感してください。
Top comments (0)