UIXHERO

関心の分離(SoC)|エンジニアリング

デザインとロジックを切り離す。システムの変更箇所を最小に抑え、UIを安全に変更しやすくするための境界設計。

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

関心の分離(Separation of Concerns)

この技術でできること

  • 見た目とデータ取得を切り離し、UI変更を安全に行える
  • 特定の機能を変更した際、関係のない別の機能が壊れるバグ(デグレ)を防ぐことができる
  • どんなデータをどう見せるか(プレゼンテーション層)の画面デザインに集中できる

: カートに商品を追加するボタンを見た時、「ボタンの色とホバーの」という関心事(見た目)と、「サーバーに在庫を問い合わせて減少させる」という関心事(ビジネスロジック)を、コード上で独立したファイルに分けて書く。これにより、デザイナーが「色を赤に変えたい」と言った時、在庫システムを一切触らずに安全に色だけを変えられる。


なぜ難しいか

システムを作っていると、様々な処理が一つの場所に「混ざりやすい」からです。

最初は単にユーザー名を表示するだけのでも、やがて「未ログインなら非表示にする」「長い文字は省略する」「アイコン画像を非同期で読み込む」など、無数の「別の関心事」が同じコードの中に書き込まれていきます。この巨大で複雑な一枚岩(モノリス型のコード)ができると、わずかなUIの微修正すら「どこに影響が出るか分からないから触りたくない」とエンジニアに敬遠される負債となります。


デザイン時の判断ポイント(Before/After)

パターン: 役割を分けたコンポーネント設計

Before(現実の悪い例): 「ユーザーカード」のUIに、データ取得からエラー処理、クリック処理、細かなマージン調整まで、すべての役割を持たせて1つのまとまりとしてFigmaで定義(または実装)する。 → デザインだけ別バージョンに変えたいのに、データ取得ロジックが中にハードコードされているため、流用できずに新しくカード全体を作り直す羽目になる。

After(現実的な整理): 関心を「見た目」と「箱」に分ける。

  • Container(箱): データ取得とエラーハンドリングだけを関心事とする透明な箱にする。
  • Presentational(見た目): データを受け取って単に表示するだけの純粋なUIにする。

なぜ改善されるか(なぜ現実的か): 役割が分かれることで、「同じ見た目のまま取得先が変わる場合」や「データは同じだがモバイルアプリ向けのUIに変える場合」に、片方のパーツだけを差し替えて再利用(スワップ)できるようになるからです。

代替手段: 最初から完璧に分離するのは難しい場合、最初は混ざった状態で作り、2回使い回す必要が出たタイミングで初めて分離する(と組み合わせる)。


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

❌ 「どうせ同じセットなんだから、API通信までデザインパーツに含めて」

デザイナーの視点: NotificationItemというFigmaコンポーネントに、常に既読ステータスをサーバーに送るロジックまで含めた「完成品」を作ってくれれば、色々な画面に簡単に使い回せる。(品質=配置するだけの完全な部品化) エンジニアの視点: UIコンポーネントの中にAPI通信(副作用)を入れると、テストが非常に難しくなり、通信エラー時の画面ごとの見せ方の制御などが効かなくなる。(品質=純粋な関数としてのUI機能と、副作用の完全分離)

なぜ衝突するか(品質の定義差): デザイナーは「オールインワンのモジュールの便利さ」を重視し、エンジニアは「システムとしての予測可能性やテストのしやすさ」を重視しているため。

どう合意するか:

  • 「表示するパーツ(ボタン、カード等)」には一切の通信やビジネスロジックを持たせない方針で合意する。
  • デザイナーは「純粋なUI」を渡し、エンジニアは画面ごとの「親側」で必要な処理を注入してつなぎ合わせる。

実践チェックリスト

最低ライン(Must)

[ ] 「データをどう見せるか(UI)」と「データがどう操作されるか(ロジック)」を混同して話していない [ ] 1つのコンポーネントが「あれもこれも」と複数の役割を持ちすぎていないか見直している

理想ライン(Better)

[ ] Figmaの設計レイヤーでも、「基盤となるレイアウト(枠)」と「中のコンテンツ」の関心が分かれている [ ] 常に「この変更は、システムのどの関心(見た目か、データか、操作か)に対する変更か」をエンジニアと共有できている


関連技術

前提となる技術

  • KISS原則 — 複数の役割が混ざるとシンプルではなくなる

次に学ぶ技術


まとめ

  • この技術の本質: 変更が他に波及しないよう、システムの境界線を引くこと
  • UXへの影響: システムが柔軟になり、新しいUIの投下が容易になり、体験の改善サイクルが速まる
  • 実務での判断軸: 「UIの色を変えるために、サーバーやデータベースのコードを読んで直す必要がないか?」
  • 次に学ぶべき技術: コンポーネント設計(関心をUIとしてどう切り出すかの定石)

目的別のおすすめ:

更新のお知らせ

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

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

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

UIXHEROに頼めることを見る

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

記事をシェア

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

最終更新: 2026年8月27日

この記事を書いた人

Dengen Yosho(DGYS)

Dengen Yosho(DGYS)

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

あわせて読みたい

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

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

Don't Repeat Yourself。デザインの重複、コードの重複を排除し、一つの変更が全体に伝播する一貫性の高いシステムを作る。

2026年3月22日
5

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

「今いらないもの」を作らない。将来の不安に基づく過剰設計を防ぎ、素早くユーザーに価値を届けるための原則。

2026年3月22日
5

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

単純さを保つ設計技術。複雑さはバグ、遅延、負債の根源。UIにもコードにも効く最重要原則。

2026年3月22日
7

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

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

リクエストを送る