UIXHERO

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

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

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

※このページは5原則すべてのコーディング解説ではなく、デザイナーが判断のを掴むための入口です。

この技術でできること

  • 要件が変わり続ける環境でも、過去のコードを壊さずに新しい機能を追加できる
  • のコンポーネントが巨大な「神コンポーネント」にならず、保守しやすい適切なサイズに分割される
  • サードパーティ(決済システム等)が仕様変更されても、影響を最小限に抑える構造(抽象への依存)を作れる

: O(オープン・クローズドの原則)を守って設計されたUIシステムでは、新しい種類の「お知らせバナー(アラートや警告用の新しいバリエーションなど)」を追加する際、既存のバナーコンポーネントのコードを一文字もいじることなく、外部から新しいスタイルを流し込むだけで安全に拡張できます。


なぜ難しいか

SOLID原則は、本来オブジェクト指向プログラミングの文脈で生まれた「5つの原則の頭文字」であり、概念が非常に抽象的で、適用を誤ると(硬直化:少しの変更で全体が壊れやすくなる、怖くて触れない状態)を招くからです。

  • S: Single Responsibility(単一責任)
  • O: Open-Closed(オープン・クローズド)
  • L: Liskov Substitution(リスコフの置換)
  • I: Interface Segregation(インターフェース分離)
  • D: Dependency Inversion(依存関係の逆転)

デザイナーがこれを文字通りコーディングレベルで理解する必要はありません。しかし、「なぜエンジニアが既存のボタンを再利用せず、わざわざ新しいボタンを作りたがるのか(O原則)」、「なぜユーザー情報を丸ごと渡さず、画像URLだけをわざわざ渡してくるのか(I原則)」という判断の裏側には、常にこの原則が働いています。


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

パターン: Propsの過剰な受け渡し(Interface Segregation)

Before(現実の悪い例): 「ユーザーアイコンを表示する小さなUIパーツ」を作る時、デザイナーが「後で何を使うかわからないから、とりあえずユーザーの全情報(アカウント番号、名前、年齢、住所、クレジットカード情報などが入ったオブジェクト)を全部渡して連携して」と指示する。 → エンジニア視点では、単なるアイコン表示にクレジットカード情報まで繋がるのはセキュリティ的にも設計的にも極めて危険である。

After(現実的な整理): インターフェース分離の原則に従い、そのコンポーネントが「本当に必要な情報(画像URLと代替えテキスト)」だけを提供(Propsとして宣言)する設計にする。

なぜ改善されるか(なぜ現実的か): 「必要最小限の依存関係」に絞ることで、どこでどのデータが使われているかが明白になり、将来ユーザーデータの構造が変わってもアイコン部品が壊れないからです。

代替手段: データのまとまりを渡したい場合は、「ユーザー情報」ではなく、「Figmaで定義したAvatar情報」という見た目の塊として別のルールで定義し直す。


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

❌ 「とりあえず既存のコンポーネントにフラグ(If文)を足して対応して」

デザイナーの視点: 今回だけ例外的に、既存のArticleCardの右上に「NEW」バッジを出したい。「if (isNew) { バッジ表示 }」という条件を1つ足すだけで済むのだから、素早くやってほしい。(品質=見た目の素早い再現と共通化) エンジニアの視点: 既存の安定して動いているコードの中に、特定の画面でしか使わない条件分岐を書き足すのは「オープン・クローズドの原則(変更に対して閉じていなければならない)」に違反する。「神コンポーネント」化の第一歩。(品質=既存コードを壊さない安全性)

なぜ衝突するか(品質の定義差): デザイナーは「見た目の」で設計を考えますが、エンジニアは「変更による機能破壊(デグレ)のリスク回避」を中心に設計を考えます。

どう合意するか:

  • 原則として、既存のコンポーネントの枠組みはそのままに、「外側から機能(バッジ)を注入できる(Slot、Children)」を持たせる設計にリファクタリングする。
  • エンジニアがコードを安全に保つための「遠回り」の必要性を、デザイナーがの負債防止として理解する。

実践チェックリスト

最低ライン(Must)

[ ] コンポーネントに「あれもこれも(2つ以上の責任)」を持たせていないか確認している(単一責任) [ ] 既存のパーツを無理に改修せず、新しいバリエーションとして拡張できる構造を描けている(オープン・クローズド)

理想ライン(Better)

[ ] 必要な情報だけをパーツに切り出す(インターフェース分離)視点で、エンジニアとAPIの受け渡しを相談できる [ ] これら5つの原則が、システムの「硬直化」を防ぐためのであることを理解したうえで話せる


関連技術

前提となる技術

次に学ぶ技術


まとめ

  • この技術の本質: ソフトウェアが「柔らかさ(変更の容易さ)」を失わないための5つの防御壁
  • UXへの影響: 技術的負債を防ぐことで、プロダクト全体の「素早い機能改善サイクル」が維持され、が向上し続ける
  • 実務での判断軸: 「この機能追加は、既存のうまく動いているシステムを“変更”しているか、それとも安全に“拡張”しているか?」
  • 次に学ぶべき技術: アーキテクチャパターン(個別のコンポーネントだけでなく、システム全体の大きな構造を学ぶ)

目的別のおすすめ:

更新のお知らせ

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

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

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

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

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

リクエストを送る