スタブとは?IT初心者向けにわかりやすく解説|モックとの違いやAPI開発での使い方
スタブ(Stub)とは、本来呼び出されるシステムや機能の代わりに、あらかじめ決められた結果だけを返す簡易的なプログラムです。
システム開発やAPI開発では、まだ完成していない機能や利用できない外部システムの代わりとしてスタブを利用します。IT業務では、単体テストや結合テスト、APIの動作確認でよく使われる用語です。
スタブとは
スタブは、本物のシステムの代わりに決まったデータやレスポンスを返すための仕組みです。
例えば、社員情報を取得するAPIが未完成の場合でも、スタブを利用すれば、あらかじめ用意した社員情報を返して画面の動作確認を行えます。
| 本物のAPI | スタブ |
|---|---|
| 実際にデータベースへアクセスする | 用意したデータを返す |
| 処理内容によって結果が変わる | 決められた結果を返す |
展示用の家電量販店で、電源が入らなくても見た目だけ展示されている製品のように、「最低限の役割だけを果たすもの」と考えるとイメージしやすいでしょう。
なぜスタブが必要なのか
開発では、すべての機能が同時に完成するとは限りません。
スタブを利用すると、未完成の機能を待たずに開発やテストを進められます。
- 未完成のAPIを待たずに開発できる
- 単体テストを実施できる
- 外部システムへ接続しなくてもよい
- テスト環境を準備しやすい
- 開発効率を向上できる
どんな場面で使われるのか
| 利用場面 | スタブの役割 |
|---|---|
| 単体テスト | 外部機能の代わりに決まった値を返す |
| API開発 | 固定レスポンスを返す |
| 画面開発 | テスト用データを返す |
| 外部サービス連携 | 接続先の代替として利用する |
| 結合テスト | 未完成システムを補う |
API開発でのスタブ
API開発では、実際のAPIが完成する前にスタブAPIを作成し、固定のJSONデータを返すことがあります。
これにより、フロントエンド側はバックエンドの完成を待たずに画面開発やテストを進められます。
API仕様書どおりのデータ形式を返すスタブを作成することで、開発効率を高められます。
スタブとモックの違い
| 項目 | スタブ | モック |
|---|---|---|
| 役割 | 固定の値を返す | 本物に近い動作を再現する |
| 処理 | 単純 | 比較的複雑 |
| 用途 | 単体テスト | 動作確認・結合テスト |
| 呼び出し確認 | 基本的に行わない | 行える場合が多い |
初心者は「スタブは固定の回答を返すもの」「モックは本物のように振る舞うもの」と覚えると分かりやすいでしょう。
業務でよくあるトラブル
スタブと本番APIの仕様が違う
原因
- API仕様変更
- スタブの更新漏れ
影響
- 本番環境で画面が正常に表示されない
- JSON解析エラーが発生する
固定データしか返さない
スタブは決められた値しか返さないため、実際の検索条件やデータ件数の違いを確認できないことがあります。
エラーを再現できない
本番環境で発生する認証エラーやタイムアウト、サーバーエラーなどをスタブでは再現できない場合があります。
障害発生時の切り分け
| 確認項目 | 確認内容 |
|---|---|
| 接続先 | スタブか本番APIか |
| API仕様 | 最新版と一致しているか |
| レスポンス形式 | JSON構造が同じか |
| データ内容 | 固定値ではないか |
| ログ | エラー内容を確認する |
確認する順番
- 接続先がスタブか本番環境か確認する
- API仕様書を確認する
- レスポンス内容を比較する
- HTTPステータスコードを確認する
- アプリケーションログを確認する
GUIで確認する方法
ブラウザーの開発者ツール(F12キー)の「Network(ネットワーク)」タブでは、接続先URLや返却されたレスポンスを確認できます。
- 対象システムを開く
- F12キーを押す
- 「Network」を開く
- 通信先URLを確認する
- レスポンス内容を確認する
コマンドプロンプトで確認できること
- curl(スタブAPIのレスポンス確認)
- ping(ネットワーク疎通確認)
- tracert(通信経路確認)
- nslookup(DNS確認)
curlを利用すると、スタブが期待どおりのレスポンスを返しているか確認できます。
PowerShellで確認できること
- HTTP通信テスト
- JSONレスポンス確認
- API動作確認
- 接続先確認
イベントビューアーで確認する場面
スタブ自体でイベントビューアーを利用する機会は多くありませんが、Windows上でスタブサーバーを実行している場合や、アプリケーションで通信エラーが発生した場合は、イベントビューアーやアプリケーションログを確認することがあります。
- Windowsキーを押す
- 「イベントビューアー」を起動する
- 「Windowsログ」→「アプリケーション」を開く
- エラーや警告を確認する
初心者が混乱しやすいポイント
- スタブは固定のデータを返す仕組みである
- 本番環境のすべての動作を再現するわけではない
- 認証やデータベース処理は省略されることが多い
- API仕様が変わるとスタブも更新が必要になる
筆者の現場経験
API開発の現場で、バックエンドの完成前にスタブAPIを利用して画面開発を進めたことがあります。画面の表示確認は順調に進みましたが、本番APIへ切り替えた際に、レスポンス項目が追加されており、一部の画面で表示崩れが発生しました。
原因はスタブのレスポンスが最新のAPI仕様に更新されていなかったことでした。
この経験から、スタブは開発を効率化する便利な仕組みですが、本番APIとの仕様差分を定期的に確認することが重要だと実感しました。
上司へ報告するポイント
- 発生日時
- スタブ環境か本番環境か
- 対象API
- HTTPステータスコード
- 実施した確認内容
- API仕様との差異
- 影響範囲
エスカレーションするタイミング
- スタブと本番APIで仕様が異なる
- API仕様書に誤りがある
- 本番環境のみエラーが発生する
- 複数画面で同じ問題が発生している
- プログラム修正が必要と判断した場合
新人が覚えておきたいポイント
- スタブは決まったデータを返す代替機能
- 単体テストやAPI開発でよく利用される
- モックよりもシンプルな仕組みである
- 本番環境との仕様差分に注意する
- API仕様書とレスポンスを比較して確認することが重要
関連するIT用語
- モック(Mock)
- ダミー(Dummy)
- API(Application Programming Interface)
- JSON(JavaScript Object Notation)
- リクエスト(Request)
- レスポンス(Response)
- 単体テスト
- 結合テスト
よくある質問(FAQ)
スタブとモックはどちらを使えばよいですか?
固定のレスポンスだけで十分な場合はスタブが適しています。呼び出し回数や引数の確認、本物に近い動作が必要な場合はモックが適しています。
スタブだけでテストは完了できますか?
いいえ。スタブは開発や単体テストには便利ですが、本番環境と同じ動作を保証するものではありません。結合テストや総合テストでは実際のAPIやシステムとの接続確認も必要です。
スタブは本番環境で利用されますか?
通常は利用されません。スタブは開発環境やテスト環境で使用され、本番環境では実際のAPIやサービスが利用されます。
まとめ
スタブとは、本来利用するシステムやAPIの代わりに、あらかじめ決められたデータやレスポンスを返す簡易的な仕組みです。未完成の機能を待たずに開発やテストを進められるため、システム開発では広く利用されています。
一方で、スタブは本番環境の動作を完全に再現するものではありません。IT業務では、スタブと本番APIの違いを理解し、API仕様書や実際のレスポンスを比較しながら開発やテストを進めることが大切です。
