サーバーを立ち上げずに特定のJSONボディ、ステータスコード、ヘッダーを返すフェイクAPIエンドポイントが必要になったことがあるなら、おそらくMockyを検索したことがあるでしょう。このガイドでは、Mockyとは何か、その使い方、そしてどのような場合にMockyでは不十分になるのかを説明します。まず広い視野で捉えたい場合は、オンラインAPIモックツール比較のまとめがこの分野を網羅しており、Mocky自身のオープンソースリポジトリが基本を確認しています。
Mockyとは?
Mockyは、カスタムHTTPレスポンスを生成するための無料のオープンソースWebサービスです。ブラウザでレスポンスを設計すると、MockyがユニークなURLを提供し、そのURLへのリクエストは定義したとおりのものを正確に返します。バックエンドを記述する必要も、サーバーをホストする必要もありません。
これはJulien Lafontによって構築され、Apache 2.0ライセンスの下でリリースされました。ホスト版はmocky.ioで利用でき、コードは公開されているため、独自のインスタンスを運用したい場合はセルフホストすることも可能です。
その核となるアイデアはシンプルです。「URLの背後でレスポンスを設計する」ことです。それが製品のすべてであり、その集中こそが最大の強みです。
設定できること
Mockyでは、クライアントテストにとって重要なHTTPレスポンスの要素を設定できます。
- ステータスコード: 必要に応じて
200、404、または500を返すことができます。 - レスポンスボディ: 通常はJSONですが、どのようなテキストペイロードでも機能します。
- HTTPヘッダー: コンテンツタイプやカスタムヘッダーを含みます。
- レスポンス遅延: 低速なネットワークや遅延のあるアップストリームをシミュレートできます。
保存すると、Mockyはレスポンスを保存し、永続的なURLを提供します。そのURLをフロントエンドコード、テスト、またはHTTPクライアントに貼り付けるだけで完了です。
簡単な例
バックエンドの準備ができていないが、フロントエンドがレンダリングのためにユーザーオブジェクトを必要としているとしましょう。Mockyデザイナーを開き、ステータスを200に設定し、Content-Type: application/jsonを設定し、次のようなボディを貼り付けます。
{
"id": 42,
"name": "Ada Lovelace",
"role": "admin"
}
Mockyはhttps://run.mocky.io/v3/<some-id>のようなURLを返します。アプリをそのURLに向けると、すべてのリクエストでそのユーザーが返されます。このパターンのより広い視野については、サーバーをセットアップせずにオンラインAPIをモックする方法に関する説明をご覧ください。
Mockyが最適な場合
Mockyは、ニーズが小さく、単発的な場合にその真価を発揮します。
- アカウントなしで、単一の静的レスポンスを素早く得たい場合。
- 固定されたペイロードをチームメイトやサポートチケットと共有している場合。
- バグレポートのために、500 Internal Server Errorレスポンスのような1つのエラーケースを再現している場合。
- リクエストに基づいてレスポンスを変更する必要がない場合。
これらの作業において、Mockyに勝るものはありません。無料であり、ブラウザで動作し、1分以内に機能するURLを用意できます。この程度の問題に過剰な設計をする必要はありません。
Mockyの限界
Mockyを素晴らしいものにしているシンプルさは、同時にその限界でもあります。各Mocky URLは1つの固定されたレスポンスです。プロジェクトが成長するにつれて、そのモデルはいくつかの予測可能な点で限界を迎えます。
- 動的なデータなし。すべての呼び出し元が同じボディを受け取ります。
/users/1と/users/2で異なるユーザーを返すことはできず、リアルで多様なデータを生成することもできません。 - リクエストマッチングなし。Mockyはクエリパラメータ、パス値、またはリクエストボディに基づいて分岐しません。1つのURL、1つの回答です。
- 組織が緩い。実際のAPIには多数のエンドポイントがあります。これらを個別のMockyリンクの山として管理すると、すぐに煩雑になります。
- 連携が薄い。共有ワークスペース、バージョン管理、モックに関するチーム権限がありません。
- スキーマリンクなし。モックとOpenAPI仕様が異なる場所に存在するため、乖離が生じます。
これらのうち2つか3つに直面した場合、あなたは単一レスポンスツールでは物足りなくなっています。それが本格的なモックプラットフォームへ移行する時期です。予算のトレードオフを検討している場合は、無料および安価なAPIモックサーバーに関するガイドで選択肢が提示されています。
一般的なきっかけはフロントエンドチームです。ある開発者はユーザーオブジェクトをモックし、別の開発者は注文リストをモックし、3番目の開発者は認証フローをモックします。Mockyでは、これらは共有ベースURLがなく、環境を切り替える方法もない3つの無関係なリンクです。実際のモックサーバーでは、それらは1つのプロジェクト内の3つのエンドポイントであり、すべて単一のホストの下で応答し、ステージングデータとプロダクションデータを一箇所で切り替えることができます。
最高のMocky代替案:Apidog
Apidogは、Mockyの最高の特性である共有可能なURLの背後にあるカスタムレスポンスを維持しつつ、Mockyが提供しないもの、すなわち多数のエンドポイントにわたる永続性、スキーマ駆動のデータ、動的なレスポンス、チームコラボレーションを追加します。エンドポイントを設計すると、Apidogは、Mockyと同様にカスタムステータスコード、ヘッダー、JSONボディを返すホストされたモックURLを生成しますが、それは実際のAPI設計に紐づけられています。
ここに正直な違いがあります。Mockyは「1つの固定されたレスポンスを今すぐ無料で提供してほしい」という問いに答えます。Apidogは「プロジェクトとともに成長する、全体的なAPIの信頼できるモックを提供してほしい」という問いに答えます。
MockyのユースケースにApidogが加えるいくつかの点:
- スマートモックとAI生成データ。1つのボディをハードコーディングする代わりに、Apidogはフィールド名とスキーマから現実的な値を推測できるため、
emailはメールアドレスを返し、createdAtは日付を返します。 - Faker.jsのサポート。Faker.jsを組み込むことで、呼び出しごとに多様で現実的なペイロードの動的なモックデータを生成できます。
- 高度なモックルール。クエリパラメータやリクエストコンテンツに基づいて異なるレスポンスを返します。これはMockyではできないリクエストマッチングです。
- スキーマファーストのモック。モックはOpenAPI設計から生成されるため、両者が同期した状態を保ちます。
- チームワークスペース。モックは、散在する単発的なリンクではなく、バージョン管理とリアルタイム同期を備えた共有プロジェクト内に存在します。
シンプルな部分はそのまま利用できます。固定されたJSONボディを持つ200を返す単一のエンドポイントがURLの背後で必要ですか?Apidogもそれを提供し、ワンクリックでチームと共有できます。
MockyとApidogの比較概要
| 機能 | Mocky | Apidog |
|---|---|---|
| URLの背後にあるカスタムステータス、ヘッダー、ボディ | はい | はい |
| 無料で開始、セットアップ不要 | はい | はい(無料プラン) |
| 単一の静的レスポンス | はい | はい |
| 動的データ(Faker.js、スマートモック) | いいえ | はい |
| リクエストマッチング/条件付きルール | いいえ | はい |
| 1つのプロジェクトに多数のエンドポイント | いいえ | はい |
| スキーマ駆動(OpenAPI)モック | いいえ | はい |
| チームワークスペース + バージョン管理 | いいえ | はい |
| セルフホストオプション | はい(オープンソース) | クラウド + セルフホストオプション |
さらに多くの候補を並べて比較したい場合は、最適なAPIモックツールのリストと、RESTエンドポイントモックのまとめで詳しく解説しています。
ApidogでMocky URLを置き換える方法
単一のMockyリンクから移行するのは簡単です。
- Apidogをダウンロードしてプロジェクトを作成します。
- エンドポイントを追加します。例えば
GET /users/42。 - レスポンスを定義します。ステータスコードを設定し、ヘッダーを追加し、Mockyに入力したのと同じフィールドでJSONボディを記述します。
- モックを有効にします。Apidogはそのエンドポイント用のホスト型モックURLを生成します。
- フロントエンドまたはテストを新しいURLに向けます。
そこから、必要に応じて、追加機能、動的データ、条件付きルール、さらなるエンドポイントを重ねていくことができます。最初から高度な機能を使う必要はありません。
移行が一度にすべて行われることは稀です。ほとんどのチームは、重要なエンドポイントをApidogで再構築している間、既存のMockyリンクを機能させ続け、プロジェクトが1か所に集約されたら古いURLを廃止します。ApidogはOpenAPIファイルを読み取ることができるため、すでに仕様がある場合はそれをインポートして、各レスポンスを手動で再作成する代わりに、すべてのエンドポイントのモックURLを一度に取得できます。
よくある質問
Mockyは無料ですか?
はい、無料です。MockyはApache 2.0ライセンスのもとで無料かつオープンソースであり、モックを作成するのにアカウントは必要ありません。レスポンスはサーバーサイドに保存されるため、取得したURLはそのまま利用可能です。もし単一の固定レスポンス以上のものが必要な場合は、Apidogのようなより本格的なプラットフォームが、動的なデータとチーム機能を備えた無料ティアを提供しています。
mocky.ioとモックサーバーの違いは何ですか?
MockyのURLは単一の定型レスポンスです。一方、モックサーバーは、多数のエンドポイント、リクエストマッチング、およびリクエストごとに変更可能なデータを使用して、API全体をシミュレートします。この概念に慣れていない場合は、モックAPIとは何かという解説が基礎から説明しています。
Mockyでカスタムステータスコードとヘッダーを返すことはできますか?
はい、できます。それこそがMockyの目的です。ステータスコードを設定し、必要なヘッダーを追加し、ボディを記述すると、Mockyはそれらすべてを単一のURLから提供します。制限は、リクエストの内容にかかわらず、常に同じレスポンスが返されることです。
Mockyから本格的なモックプラットフォームに切り替えるべき時期はいつですか?
動的または現実的なデータ、条件付きレスポンス、まとめて整理された複数のエンドポイント、またはチーム向けの共有ワークスペースなど、1つの固定された回答以上のものが必要になったときに切り替えるべきです。それまでは、Mockyのシンプルさは欠点ではなく、利点です。
まとめ
Mockyは、1つのカスタムHTTPレスポンスをURLの背後に置くためのクリーンで無料の方法であり、迅速で静的なニーズには最適なツールです。しかし、動的なデータ、リクエストマッチング、多数のエンドポイント、またはチームコラボレーションが必要になった瞬間、その単一レスポンスモデルでは手狭になります。
そこでApidogが活躍します。Apidogは「URLの背後でレスポンスを設計する」という同じ役割をこなし、APIの成長に合わせてスキーマ駆動型、動的、協力的なモックへとスケールアップします。Apidogをダウンロードして、最初のモックURLを無料で立ち上げ、プロジェクトが大きくなるにつれて活用してください。
