ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所 by スー

PHPerKaigi 2026
レギュラートーク(20分)

ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所

suguru_ohki スー suguru_ohki

仕事において「Webフロントエンドでサービス開始されたが、あとからネイティブアプリも必要になった」という状況が起こり得ます。

そのときに起こりがちなのが、React Native製ネイティブアプリとReact Router v7以降(元Reimix)などのWebフロントエンドで、独自にAPIクライアントが生えてしまい、仕様変更のたびに2倍のコストで改修することになる問題です。
本セッションでは、このカオスを避けるために、API通信ラッパーをどこまで共通化するのかという現実的な戦略を共有します。

特に以下の3点を扱います。

  • ネイティブとWebフロントエンドの違い(ネットワーク品質・バックグラウンド実行・ストレージ・オフライン対応・認証方式・エラー表現など)を踏まえた、バックエンドのAPI設計において配慮すべきポイントと具体例
  • API通信ラッパー共通化のためのレイヤー構成(型付き共通クライアント層/トークン管理やナビゲーション連携などのプラットフォーム依存層)と、実行環境の差分を吸収する実装パターン
  • Orvalを用いたOpenAPI+型生成、HTTPクライアント、SWR系ライブラリを選定する際の判断基準と、「ネイティブだけ別実装にしてしまい後から辛くなった」「最初に共通ラッパーへ投資して変更が楽になった」といった実例

[持ち帰ってもらうこと]

  • ネイティブアプリ追加時にも破綻しないAPI設計・レスポンス設計のチェックリストを自チームで作成できるようになる
  • React Native/Webフロントエンドの両方から使い回せるAPIラッパー構造を、自プロダクト向けに設計し直す際のたたき台を持ち帰れる
  • フロントエンド/ネイティブアプリ/バックエンド間で「どこまで共通化し、どこから分けるか」を合意形成するための議論のフレームワークを得られる