UIXHERO

状態管理|エンジニアリング

「どこにデータを持たせるか」の設計技術。データの持ち方が画面の矛盾を防ぎ、システム全体の体験を左右する。

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

この技術でできること

  • 画面移動して戻ってきた時に「データが消えている」という重大なUX毀損を防ぐことができる
  • アプリ全体で共有すべきデータと、その画面だけで閉じるデータを分け、古い情報が残ることによる混乱を削減できる
  • URLを一つの「状態」として活用し、SNSでのシェアやブラウザの「戻る」ボタンが正しく動くを設計できる

: 検索結果画面でフィルターをかけた後、詳細画面を見て「戻る」ボタンで戻った際、状態管理が正しく設計されていればフィルター条件がそのまま残っています(URLのパラメーターに状態を持たせる設計など)。ユーザーは再度検索し直すストレスから解放されます。


なぜ難しいか

現代のWebやアプリは、単なる「紙のページ」ではなく「生きているソフトウェア」だからです。

ユーザーが入力した文字、開いているモーダルウィンドウ、サーバーから取ってきた最新の在庫数……これら変化するデータすべてが「状態(State)」です。この「状態」をどこに保存しておくかの設計を誤ると、「一覧では既読なのに詳細では未読になっている」といったデータ矛盾や、「画面遷移するたびにリセットされるフォーム」といった使いにくいUIが量産されます。


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

パターン: ローカル(局所)とグローバル(全体)の分離

Before(現実の悪い例): 「入力途中のコメント」や「今開いているドロップダウンの表示状態」まで、すべてのデータをアプリ全体で共有する巨大な保存領域(グローバルステート)に詰め込んでしまう。 → エンジニア視点では、どの画面がどのデータを変更したかが追えなくなり、別の画面を開いた時に意図せずドロップダウンが開いたままになるなどのバグ(状態の汚染)が多発する。

After(現実的な整理): 状態の「寿命」と「影響範囲」を見極め、保存場所を明確に分ける。

  • ローカル: 「モーダルの開閉」など、その画面が消えたら捨てていい状態(破棄する)
  • グローバル: 「ログインユーザー情報」など、アプリ全体で常に必要な状態(保持する)

なぜ改善されるか(なぜ現実的か): 「画面が破棄されたら一緒に忘れてもいいデータ」をシステム全体から切り離すことで、不具合の波及を防げるからです。記憶を最小限に保つことは、システムの安定動作(の一貫性)に直結します。

代替手段: もしローカルな状態(例:入力中の長い文章)を画面遷移後も残す必要があるなら、グローバル状態にあげるのではなく「下書きとしてサーバーやブラウザ内ストレージに保存する」という機能要件に変更する。


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

❌ 「別の画面に行っても、さっき入力した情報を全部出しておいて」

デザイナーの視点: ユーザーの入力の手間を省きたい。一度選んだカテゴリや入力した検索キーワードは、どの画面に遷移してもずっと引き継いでおいてほしい。(品質=完全な利便性と入力記憶) エンジニアの視点: 一時的な情報をずっとメモリ(グローバル)に持ち続けると、メモリリークの原因や、別のタスクを始めた時の「古いデータの表示」というバグを生む。遷移したら一旦リセットするのが安全だ。(品質=メモリの安全性と状態のクリーンさ)

なぜ衝突するか(品質の定義差): デザイナーは「便利さ=すべての記憶の保持」と捉える傾向があり、エンジニアは「不要な記憶の保持=負債やバグの温床」と捉えるためです。

どう合意するか:

  • 記憶すべき内容を「URLのパラメーターに含める(シェア可能にする)」「データベースに保存する」「一時的にメモリに持つ」のどれで解決するかを要件定義の段階で共に設計する。
  • 何でもアプリ側に持たせず、ブラウザの自然な復元機能に任せることも視野に入れる。

実践チェックリスト

最低ライン(Must)

[ ] を作る際、その画面が「どんなデータ(状態)を前提として表示されるか」を定義している [ ] ユーザーが「リロード」や「ブラウザバック」した時に画面がどうなるかを想定している

理想ライン(Better)

[ ] 「この状態はURLに持たせますか(例:?tab=profile)、内部で持ちますか」とエンジニアに提案できる [ ] モーダルやフォームの設計時、一時的な状態(ローカル)なのか保存すべき状態(グローバル)なのかを切り分けている


関連技術

前提となる技術

次に学ぶ技術

  • API設計 — 手元の状態を、いつどのように本サーバー側と同期させるかの設計

まとめ

  • この技術の本質: 時間の変化とともに移り変わるデータを「どこに置き、いつ捨てるか」の交通整理
  • 体験への影響: 画面のあちこちで矛盾したデータが表示される不快感を防ぎ、アプリへの信頼性を担保する
  • 実務での判断軸: 「画面を移動して戻ってきた時、この情報は消えていても許されるか?」
  • 次に学ぶべき技術: 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が機能するのか”を言語化することを目指している

あわせて読みたい

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

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

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

2026年3月22日
6

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

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

2026年3月22日
6

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

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

2026年3月22日
7

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

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

リクエストを送る