Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jetpack Composeで始めるServer Cache State

Masaki Ogata
December 12, 2024

Jetpack Composeで始めるServer Cache State

Masaki Ogata

December 12, 2024
Tweet

More Decks by Masaki Ogata

Other Decks in Technology

Transcript

  1. Bulletproof React のドキュメントから読み解く(1/2) 7 React開発のベストプラクティスとして作られた有名なGitHubリポジトリ※1 https://github.com/alan2207/bulletproof-react • Component State •

    Application State • Server Cache State 👈 • Form State • URL State 効率化の観点から状態の分類化を検討するべし(State Management章より意訳) ※1 最近のRSC文脈では必ずしもベストプラクティスとは限らない可能性がありますので、ご留意ください
  2. Bulletproof React のドキュメントから読み解く(2/2) 8 Server Cache State の説明文には次のように書かれている サーバーキャッシュ状態は、サーバーから取得したデータ をクライアント側で将来の利用のためにローカルに保存す

    ることを指す。 このデータを Redux のような状態管理スト アにキャッシュすることも可能だが、より効率的な方法が 存在する。 パフォーマンス向上やデータ取得プロセスの最 適化のためには、より効率的なキャッシング手法を検討す ることが重要である 文明の力を借りて日本語に翻訳 👉
  3. Client State と Server State の違い 10 Server Stateは、Client Stateと比べてデータの性質が異なる※1

    Client State Server State 小分類 Component State, Application State, Form State, URL State Server Cache State データの所有者 アプリケーション自身が所有 サーバーが所有 データの鮮度 常に最新を参照可能 最後に取得した時点のスナップ ショット 制御方式 同期処理 非同期処理のみ ※1 参考)https://tanstack.com/query/latest/docs/framework/react/overview
  4. ボイラープレートコードの多さ 11 Server State に分類されるデータ管理には、次のような実装上の課題がつきまとう • 処理状態の管理 ◦ 非同期処理には時間がかかる可能性があるため、UXへ配慮しなければならない 👉

    読み込み中など処理状態に応じてユーザへの適切なフィードバックを検討する • 再取得やリトライ処理 ◦ モバイルネットワーク環境では一時的な通信エラーに配慮しなければならない 👉 再取得の仕組み(ボタン設置やPull to Refreshなど)やリトライ処理を検討する • 画面間のデータ同期(いいねボタン問題) ◦ 更新が他の画面に反映されるよう、データの整合性へ配慮しなければならない 👉 画面間でのデータ更新通知の仕組みを検討する