

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
wiremockとは?
wiremockは API のモックを作るツールです。実際の外部サービスにアクセスせずにテストを進められるのが大きな特徴で、テストの安定性を高めることができます。開発中には依存する外部の API が必ずしも動いているとは限らず、遅延や障害が起きることもあります。wiremockを使えばそのような状況を再現して、アプリが正しく動くかを確かめることができます。
wiremockには二つの主な使い方があります。ひとつはスタンドアロンとしてサーバを立てる方法で、設定ファイルやディレクトリ構成だけでモックを運用できます。もうひとつは Java のライブラリとして組み込み、テストコードの中から直接操作する方法です。スタンドアロンは CI 環境で動かしやすく、ライブラリとして使うとテストケースとモック定義を密接に結びつけて管理できます。
基本的な考え方はとてもシンプルです。wiremock に対して「このリクエストが来たらこのレスポンスを返す」という mappings を用意します。リクエストはメソッドと URL の組み合わせだけでなく、ヘッダやクエリパラメータやボディの内容にもとづいて細かく条件を付けることができます。レスポンスにはステータスコードやヘッダ、ボディを設定します。こうすることで外部 API が止まっていたり遅くなったりしても、テストを止めずに進められます。
使い方のコツとしてはまず最小限のスタブを作って動作を確認し、次に少しずつ条件を追加して現実の状況に近づけていくことです。実務では特定のエラーを返すスタブ、遅延を再現するスタブ、認証が必要なエンドポイントのモックなどを組み合わせて使います。遅延を再現することでユーザー体験への影響を評価でき、エラー時の挙動を確認することができます。
以下は簡単な使い方の流れです。ステップを追って理解するのがコツです。
始めるための簡単な手順
1. 環境に wiremock を導入します。Java が動く環境であればすぐに使えます。2. スタンドアロンで起動します。コマンドラインから起動するだけで、ポートを指定して待機状態になります。3. スタブを作成します。設定ファイルやプログラムから、GET や POST のエンドポイントとレスポンスを定義します。4. テストを実行して結果を確認します。これで外部サービスに依存せずにテストを回せます。
実務で役立つ機能をいくつか紹介します。リクエストの厳密なマッチング、動的なレスポンスの生成、遅延の再現、複数のエンドポイントを同時に管理といった点が挙げられます。これらを組み合わせると、現実の API の挙動に近い環境を再現できます。
実際の使い方の例として、Java プロジェクトでの連携を挙げます。JUnit などのテストフレームワークと組み合わせ、WireMockRule や WireMockServer を起動してテストケースごとにスタブを読み込む形です。Maven や Gradle で依存関係を追加し、テスト時にモックを自動起動させる運用が一般的です。これにより、外部 API の可用性に左右されず、再現性の高いテストを実現できます。
初心者向けのポイントをもう少しまとめます。まずは最小限のスタブだけを作って反応を確認します。次にリクエストの条件を増やし、実際のケースに近づけます。最後に複数のエンドポイントをまとめてテストする流れを作ると良いでしょう。なお、wiremockは完全な代替にはならない場合もあります。実サービスの挙動まで正確に再現することは難しい点に注意し、最終的な統合テストは実サービスで行うことを忘れないでください。
ここまでを踏まえると、wiremockは開発とテストを安定させる強力な道具だと分かります。使い方を覚えるとテストの時間を短縮し、バグを早く発見できるようになります。慣れるまでは公式ドキュメントやチュートリアルを参考に、徐々に自分のプロジェクトに合わせた運用ルールを作っていくと良いでしょう。
特徴のまとめ
| スタブの作成と管理 | |
| 利点 | 外部依存の影響を受けずにテスト可能、再現性が高い |
|---|---|
| 使い方のコツ | 最小限のスタブから始め、徐々に複雑さを追加 |
| 実務での用途 | API のモック作成、遅延・エラーの再現、CI での安定化 |
最後に、wiremock は外部 API への依存を減らし、開発とテストの効率を高める強力なツールです。適切に使えば、バグの原因を早く突き止め、品質の高いソフトウェアを作る手助けになります。
wiremockの同意語
- モックサーバー
- 実在の外部サービスを模倣する仮想サーバー。リクエストに対して事前定義のレスポンスを返すソフトウェアを指す。
- スタブサーバー
- 特定のリクエストに対して決まったレスポンスを返すための仮想サーバー。テストの安定性を高める目的。
- APIモック
- APIの挙動を模倣するモック。開発・テスト時に外部APIを代替する用途。
- HTTPモックサーバー
- HTTPプロトコルで動作するモック用サーバー。WireMockのようにリクエストとレスポンスを定義する。
- ダミーAPI
- 実在の機能を持たない偽のAPIエンドポイント。開発・テスト用に用意される。
- モックAPI
- APIモックの別称。外部APIの挙動を再現する仮想API。
- モックエンドポイント
- モック用に用意された仮想のAPIエンドポイント。テストでレスポンスを返す。
- サービスモック
- 外部サービスの挙動を置き換えるモック。統合テストでの依存を解消。
- テスト用モック
- テストのために用意されたモック。実際のサービスを代替して安定した検証を実現。
- APIモックツール
- APIモックを作るためのツール群。WireMockのような機能を提供するソフトウェア。
- 仮想API
- 実体のない仮想的なAPI。開発・テストでの擬似的な挙動を提供。
- スタブAPI
- 固定レスポンスを返すAPIの別称。テスト用のスタブを提供する。
- ダミーエンドポイント
- ダミーのエンドポイントでレスポンスを返す仕組み。挙動の確認や開発時の依存置換に使う。
- モック作成ツール
- モックを生成・管理するためのツール。リクエストとレスポンスを事前に設定する。
wiremockの対義語・反対語
- 本番サーバー
- 実際に運用されているサーバー。モックではなく、リアルなデータを返すAPIの提供元。
- 本番環境
- 開発用・テスト用ではなく、実際の運用環境。モックに対する対義語として使われる。
- 本番API
- 公開・実運用中のAPIエンドポイント。ダミーのモックではないリアルなレスポンスを返す。
- ライブAPI
- 現在稼働しているAPI。実データを返すリアルなAPIの別称。
- 実サーバー
- モックではない、実際のサーバー。実データを返す信頼性のあるバックエンド。
- 実データを返すAPI
- モックが返すダミーではなく、本番データを返すAPIの特徴を表す表現。
- リアルAPI
- 現実のデータを返すAPI。モックの対義語として使われる。
- 非モック
- モックでないことを示す表現。実サービス・エンドポイントを指す。
- 生のAPI
- 生のデータを返すAPI。モックを使わず、現場の情報を提供するAPI。
- 稼働中のバックエンド
- 現在稼働しているバックエンド。モック・検証環境ではない実運用の側を指す。
wiremockの共起語
- スタブ
- WireMockが提供する模擬のAPIレスポンス。実際の外部依存を置き換えるための定義です。
- モック
- 外部サービスを代替する仮想サーバーとして機能します。
- スタブマッピング
- 特定のリクエスト条件に対して返すレスポンスを定義する設定。
- マッピング
- スタブの1つの定義。リクエストとレスポンスの対応を表す設定。
- リクエストマッチング
- どのリクエストにこのスタブを適用するかを決める条件(URL、メソッド、ヘッダなど)。
- レスポンス
- クライアントへ返すHTTPレスポンスの内容。ステータス、ヘッダ、ボディを含みます。
- マッピングファイル
- スタブの設定をJSON形式で保存するファイル。
- Mappingsディレクトリ
- マッピングファイルを格納する標準ディレクトリ名(通常は mappings)。
- __filesディレクトリ
- レスポンスボディの実体データを格納するディレクトリ。
- レスポンステンプレート
- 動的にレスポンスを生成するテンプレート機能(変数を埋め込むことができる)。
- Handlebars
- レスポンステンプレートを実行するテンプレートエンジンの名称。
- レコーディング
- 実際のリクエストを記録して自動的にスタブを生成する機能。
- プロキシモード
- 外部サービスへ代理リクエストを送信し、応答を取得するモード。
- スタンドアロン
- WireMockを別プロセスのサーバーとして単独で動かす形態。
- Java
- ライブラリとしてJavaアプリに組み込んで使う前提の技術要素。
- JUnit
- テストの実行と検証に使われる代表的なフレームワークと組み合わせることが多い。
- Maven
- ビルドツールの一つ。依存関係としてWireMockを追加して利用。
- Gradle
- 別のビルドツールでの導入方法。
- Docker
- Dockerコンテナとして実行でき、環境の再現性が高い。
- Admin API
- スタブの追加・取得・削除を行うHTTPベースの管理API。
- HTTP
- WireMockはHTTPプロトコルを介してモックサービスを提供。
- HTTPS/TLS
- HTTPSにも対応。TLS設定を行ってモックを保護したり通信を模擬。
- クエリパラメータ
- URLのクエリ文字列でのマッチング条件。
- リクエストヘッダー
- リクエストのヘッダー値でマッチングを設定。
- リクエストボディ
- POST/PUT等の本文データを使ってマッチング条件を設定。
- 遅延
- レスポンスの返却を遅らせる機能。タイムアウトの再現などに活用。
- 障害注入
- レスポンスをエラーにしたり、遅延・断続的な応答を再現する機能。
- JSON
- 多くのレスポンスがJSON形式で提供されるため関連語として頻出。
- XML
- 場合によってはXML形式のボディにも対応。
- テンプレートエンジン
- Handlebarsのほか、テンプレート機能全般を指す語として使われる。
wiremockの関連用語
- WireMock
- HTTP/HTTPS のモックサーバー。実在の API を模倣し、リクエストに対して決め打ちのレスポンスを返すツールです。テストの安定性と独立性を高めるために使われます。
- Stub Mapping
- リクエストの条件とそれに対するレスポンスを定義する設定。WireMock ではスタブの組み合わせを「stub mapping」と呼びます。ファイルは mappings ディレクトリに格納されます。
- Mappings ディレクトリ
- スタブ定義を格納するディレクトリ。個々の stub mapping は JSON 形式で保存されます。
- __Files ディレクトリ
- レスポンスボディなどのファイルを格納するディレクトリ。スタブで参照できます。
- リクエストマッチング
- 受信したリクエストをどのスタブに当てるかを決める条件設定です。メソッド・URL・ヘッダ・ボディ等で絞り込みます。
- URLマッチング
- URL やパスの一致条件を定義します。正規表現 (urlPattern) やパス指定 (urlPath) が使えます。
- HTTPメソッド
- GET / POST / PUT / DELETE など、リクエストの種類を指定してマッチさせます。
- ヘッダマッチング
- 特定の HTTP ヘッダの値で条件を追加します。例: Content-Type, Authorization。
- クエリパラメータ
- URL に含まれるクエリ文字列を条件として指定できます。
- ボディマッチング
- リクエストのボディを文字列・JSON・XMLでマッチさせます。JSONPath や XPath での照合も可能です。
- JSONPath
- JSON ボディの値を参照・抽出するためのパス表現。マッチ条件として使えます。
- XPath
- XML ボディの値を参照するためのパス表現。マッチ条件として使えます。
- レスポンス
- スタブが返すレスポンスの定義。ステータスコード・ヘッダ・ボディ・遅延などを設定します。
- ステータスコード
- レスポンスの HTTP ステータス。例: 200, 404, 500 など。
- レスポンスヘッダ
- レスポンスに付与するヘッダ。Content-Type などを設定します。
- レスポンスボディ
- 返す実体。JSON・XML・プレーンテキストなどを指定します。
- 固定遅延
- レスポンスを返すまでの固定的な待ち時間をミリ秒で設定します。
- 遅延
- レスポンス送出の遅延を模倣します。固定遅延と併用したり、応答テンプレートで動的に変えたりできます。
- Fault Injection
- ネットワークフォールトを模擬して、空レスポンス・接続切断・リセット等を返す機能です。
- プロキシ
- バックエンドにリクエストを転送する機能。スタブが存在しなくても実際のサービスを利用可能にします。
- レコード / 録画
- 実際の API 呼び出しを記録し、それを元に自動でスタブを作成する機能です。
- StartRecording
- リアルなリクエストを記録開始します。
- StopRecording
- 録画を停止し、記録したスタブを適用します。
- シナリオ
- 複数のリクエストを順序立てて返すための状態機械。シナリオ名と状態を組み合わせて管理します。
- Scenario State
- シナリオの現在の状態を表します(例: Started、UserLoggedIn など)。
- New Scenario State
- リクエスト後に遷移する次のシナリオ状態を指定します。
- 検証
- 実際に受け取ったリクエストの発生回数を検証します。
- Verify API
- コードから WireMock に対してリクエストの発生回数を確認する機能です。
- Admin API
- スタブの追加・削除・リセット・検証を行うための管理用 REST API。
- Admin UI
- スタブの管理を視覚的に行えるウェブインターフェース。
- Standalone サーバー
- 独立して動作する WireMock の実行環境。CI や開発時に使えます。
- Embedded
- テストコード内に WireMock を組み込み、テスト時だけ起動します。
- JUnit5
- JUnit5 用の連携モジュール。テスト中に WireMock を組み込み・制御します。
- Docker
- Docker コンテナとして WireMock を実行する方法。環境の再現性が高いです。
- HTTPS / TLS
- HTTPS でモックを提供する機能。TLS 証明書の設定が必要です。
- TLS キーストア
- HTTPS 通信を可能にするための鍵と証明書の保管ファイル。
- テンプレート
- レスポンスを動的に生成するためのテンプレート機能。リクエストの値を参照できます。
- Handlebars
- レスポンステンプレートで使われるテンプレートエンジン。リクエストデータを組み込むことができます。
- ResponseTransformer
- デフォルトのレスポンスを拡張してカスタムロジックで返す機能。
- RequestFilter
- 受信リクエストを前処理する拡張ポイント。
- GlobalResponseTransformer
- 全体に適用されるレスポンス変換を行う拡張機能。
- __admin/mappings
- 現在の Stub Mappings を取得・追加・更新・削除できる管理エンドポイント。
- __admin/verify
- リクエストの検証結果を取得する管理エンドポイント。
- __admin/recordings
- 録画したリクエストとスタブの情報を管理するエンドポイント。
- UrlPattern
- 正規表現で URL をマッチさせる設定。高度なマッチングに使います。
- UrlPathPattern
- パス部分を正規表現でマッチさせる設定。
- UrlPath
- URL のパス部分のマッチング設定。



















