用語集 最終更新 2026.07.25

アンダーフェッチ

アンダーフェッチは、1回のAPI呼び出しでは足りず、必要な情報をそろえるのに何回も呼ぶ必要がある状態です。 初心者向けには、一覧APIを叩いた後、1件ずつ詳細APIを叩き、さらに関連APIも叩く 状態と考えるとつかみやすいです。

どんな場面で起きるか

  • ユーザー情報を取ってから、部署情報と最新注文を別々のエンドポイントで追加取得する
  • 一覧に表示したい項目が3つのエンドポイントに分散している
  • 画面を開くたびに、直列で何往復も発生する

何が問題になるか

問題の本体は通信量ではなく往復の回数です。 1往復あたりの遅延が100ミリ秒なら、直列で5往復すればそれだけで0.5秒かかります。モバイル回線や海外からのアクセスでは、この遅延が支配的になります。

  • 画面表示までの体感が遅くなる
  • リクエスト数が増え、レート制限やサーバー負荷にも効く
  • エラー処理が分岐だらけになり、実装が壊れやすくなる

対処の方向

  • GraphQL で、必要な関連データをまとめて1回で取得する
  • REST API でも ?include=department,orders のような埋め込みや、画面用の集約エンドポイントを用意する
  • 画面ごとに必要な形へ整えて返す層(BFF)を挟む
  • 直列にせず、独立したリクエストは並列で投げる(これだけで体感が変わることも多い)

近い問題との違い

  • オーバーフェッチ … 取りすぎる問題。アンダーフェッチとは逆向きで、片方を潰すともう片方が出やすい
  • N+1問題 … 似ているが層が違います。N+1は主にアプリとデータベースの間で1件ずつクエリが飛ぶ話、アンダーフェッチはクライアントとサーバーの間で往復が増える話です。GraphQL でアンダーフェッチを解消しても、サーバー側で N+1 が残ることはよくあります

実務での見方

まずブラウザの開発者ツールのネットワークタブで、1画面あたり何往復しているかを数えるのが早いです。 直列で3往復以上 が常態化しているなら、集約する価値があります。逆に往復が1〜2回なら、無理にAPIを作り替える必要はありません。

あわせて見たい用語

方式ごとの向き不向きは GraphQLとREST APIの違いは? で整理しています。