UIXHERO

API設計|エンジニアリング

デザイン(画面)とデータ(サーバー)をつなぐ契約書。通信の回数と重さが、そのままアプリの体感速度を決定する。

2026年3月22日
更新: 2026年8月27日
5
by Dengen Yosho(DGYS)

この技術でできること

  • 通信回数や通信データ量の無駄をなくすことで、画面の表示速度(パフォーマンス)を劇的に向上できる
  • 「データ取得中(ローディング)」「エラー」の表示を、システムの実態に即して無理なくデザインに組み込める
  • フロントエンド(UI)とバックエンド(データ)の開発を並行して進めるための明確な境界線(契約)を作れる

: 「ユーザーのプロフィール情報」と「そのユーザーの最近の投稿10件」を別々のAPIで2回に分けて取得(通信の無駄)するのではなく、特定の画面の仕様に合わせて1回の通信でまとめて返すAPI(またはGraphQL等の技術)を用意することで、画面の「表示のもたつき」や「二段階のローディング表示」を防ぐことができます。


なぜ難しいか

APIは「画面の構造(UI)」と「データベースの構造」という、形が全く違う2つの世界を翻訳する場所だからです。

データベースはデータをよく綺麗に保存するために関係性(リレーション)を細かく分割していますが、画面(UI)はユーザーに見せるために様々な情報を一つのビューに混ぜ合わせています。この乖離を埋めるため、「誰がデータベースの情報を画面用に組み立てるか(フロント側で何回も通信して組み立てるか、バックエンド側で1つの塊にして送るか)」という重い設計判断が必要になります。


設計プロセスの判断ポイント(Before/After)

パターン: Over/Under Fetching(データの取りすぎと足りなさ)

Before(現実の悪い例): UI側で単に「ユーザー一覧のリスト(名前とアイコンのみ)」を出したいだけなのに、既存の GET /users APIを叩き、全ユーザーの詳細情報(年齢、住所、決済履歴などの重いデータ)まで一緒に取得してしまう(Over Fetching)。 → 通信量が無駄に増大し、モバイル回線での表示が著しく遅くなる。

After(現実的な整理): に合わせて、一覧用の軽量なAPI(名前とアイコンURLだけを返す)と、詳細プロフィール用のAPIを事前に分けて設計する。またはGraphQLなどを用いて「UI側から必要な項目だけを指定して受け取る」技術を採用する。

なぜ改善されるか(なぜ現実的か): 「画面に必要なデータ量」と「ネットワークに乗せるデータ量」が一致することで、通信という最大のUXボトルネックが解消されるからです。

代替手段: バックエンド改修が重い場合は、フロントエンドのすぐ裏にBFF(Backends For Frontends:UI用のデータ組み替え専用サーバー層)を置き、そこで既存の重いAPIのデータを必要な分だけに整形してから画面に渡す仕組みを作る。


アンチパターンと衝突(デザイナー × エンジニア)

❌ 「このダッシュボード画面用に、全部のデータを1発で返して」

デザイナーの視点: ダッシュボードを開いた時、グラフも新着通知もプロフィールも同時にパッ!と表示されてほしい。だから1つのAPIで全部のデータを一括で返してほしい。(品質=ローディングを感じさせないシームレスな表示) エンジニアの視点: 異なるデータベースの集計結果を1つにまとめようとすると、一番遅い処理(複雑なグラフの集計)が終わるまでAPI全体が結果を返せなくなる。結果、何もない真っ白な画面が5秒間続く最悪の事態になる。(品質=部分ごとの効率的な通信と分散エラー耐性)

なぜ衝突するか(品質の定義差): デザイナーは「表示タイミングの一致」を求めますが、バックエンドエンジニアは「サーバーの負荷分散と最速の初期応答時間(TTFB:最初の応答が返るまでの時間 等)」を重視しているためです。

どう合意するか:

  • 画面を「一瞬で出したい軽い重要データ(通知等)」と「遅れて表示してもよい重いデータ(グラフ等)」に切り分ける。
  • データの種類ごとに個別にAPIを取得し、「」を活用して部分的に段階表示していくUIを一緒に設計する。

実践チェックリスト

最低ライン(Must)

[ ] 上に「非同期(データの取得待ち)」が発生する場所を理解し、プレースホルダーを用意している [ ] 「この情報を出すために裏側でどんな通信が発生するか」を大まかにエンジニアと確認している

理想ライン(Better)

[ ] APIの取得失敗(通信エラー)だけでなく、取得結果が0件だった場合(Empty State)のUIも定義している [ ] エンジニアと「この画面を最速で表示するために、どのデータを優先して取得すべきか」を議論できている


関連技術

前提となる技術

  • 状態管理 — 取得したAPIのデータをフロントエンドでどう保持するかの受け皿

次に学ぶ技術


まとめ

  • この技術の本質: クライアント(UI)とサーバー(データ)の間に結ばれる「データ交換の契約書」
  • 体験への影響: 表示のもたつき、ローディングの美しさ、エラー時の不快感など、通信を挟むすべての体験を決める
  • 実務での判断軸: 「この画面に必要な表示を、サーバーへの問い合わせ方(通信回数・順序)から逆算してできているか?」
  • 次に学ぶべき技術: パフォーマンス最適化(APIからのデータをブラウザ上でいかに速く「体感」させるかを学ぶ)

目的別のおすすめ:

更新のお知らせ

サイトに載せていない実例や、新しい記事のお知らせはこちらで出しています。

読んだ内容を、自分の画面に当てるとき

UIXHEROは、記事を書くほかに、画面の検品・判定、デザインシステムの構築、実装と改善の伴走を受けています。何を頼めばいいか決まっていない段階の相談も、同じ窓口で受けます。

UIXHEROに頼めることを見る

※ 記事の内容についての質問や、書いてほしいテーマの要望も同じ窓口で受けています

記事をシェア

メールでお知らせを受け取る

最終更新: 2026年8月27日

この記事を書いた人

Dengen Yosho(DGYS)

Dengen Yosho(DGYS)

UI/UXデザイナー兼デザインエンジニア デザイン歴25年以上 情報設計〜UIデザイン〜React/TypeScriptによる実装までを一気通貫で担当 大手企業のDXプロジェクトや決済アプリ領域で、デザインリードとして改善と構築を経験 現在はフリーランスとして、プロダクトのUI/UX改善とデザインシステム構築を支援 長年の実務の中で感じてきたのは、 「良いUI」はセンスではなく、再現可能な判断の積み重ねであるということ UIXHEROは、 心理学や行動科学の知見を、現場で使える設計言語に翻訳するための場所 関心領域は「ユーザーの行動が変わるUI」 人の認知・注意・意思決定の構造を理解し、 “なぜそのUIが機能するのか”を言語化することを目指している

あわせて読みたい

この記事に関連する記事をご紹介します

アーキテクチャパターン|エンジニアリング

システムをどう区分けし、どう繋ぐか。「MVC」や「マイクロフロントエンド」など、開発の地図となる大きな「間取り」の指針。

2026年3月22日
6

コンポーネント設計|エンジニアリング

UIパーツの責務と分割を定める技術。再利用性と合成可能性が、デザインシステムと実装をつなぐ。

2026年3月22日
7

SOLID原則|エンジニアリング

「硬直化」を防ぎ、変更に強く壊れにくいシステムを作るための5つの強力な設計原則。

2026年3月22日
6

もっと深く知りたいですか?

ここに掲載されていないトピックについても、リクエストがあれば解説記事を追加します。 わかりにくい点や、具体的な事例について知りたいことがあれば教えてください。

リクエストを送る