UIXHERO

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

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

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

DRY原則

この技術でできること

  • 「一箇所の修正だけで全体が変わる」デザインシステムを構築できる
  • 画面ごとに微妙に違うや色(Hexコード)の増殖を防ぎ、UXの一貫性を保てる
  • エンジニアが「前に作ったコード」を使い回せるようになり、開発スピードが加速する

: Figma上で #007BFF というカラーコードを至る所にコピペして塗るのではなく、color-primary というデザイントークンとして定義する。ブランドカラーが変更された時、トークンを1つ編集するだけで全画面・全コードのボタンやリンクが一瞬で新しい色に切り替わる。


なぜ難しいか

「コピー&ペースト」が、短期的には最も速い仕事の進め方だからです。

デザイナーもエンジニアも、急いでいる時は「前に作った似た画面をコピペして、少しだけ文字を変えよう」と考えます。これが続くと、システム内に「似ているが少しずつ違うコードとデザイン」が大量に存在することになります(WET: Write Everything Twice、同じことを何度も別々に書いてしまう状態)。結果として、「ヘッダーの角丸を変えるために、50個のファイルを一つずつ直す」という絶望的な保守作業が発生します。


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

パターン: デザイントークンとスタイルの不在

Before(現実の悪い例): Figma上でコンポーネント化やスタイル登録をせず、ボタンAには border-radius: 4px、ボタンBには border-radius: 6px を手作業で設定する。エンジニアもそれを拾い上げ、愚直に別々のCSSとして実装する。 → デザイン修正が起きた際、どこを直せばすべてに反映されるか(Single Source of Truth:信頼できる唯一の情報源)が存在せず、がちぐはぐになる。

After(現実的な整理): すべてに意味付け(トークン)を行い、ルールにない値の使用を禁止する。 size-radius-sm, size-radius-md など数種類の変数を作り、デザインとコードで完全に同期させる。

なぜ改善されるか(なぜ現実的か): 「見た目」ではなく「意味」でルール化されるため。新しいデザインを作る時も「いちから数値を考える」必要がなくなり、既存のトークンを当てはめるだけで必然的にUIの統一感が担保されるからです。

代替手段: たまたま画面で必要な「1回限りの特殊なサイズ」については、無理にシステムに組み込まず、インラインで上書きすることを許容する。


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

❌ 「たまたま見た目が同じだから共通化してほしい」

デザイナーの視点: ログインの入力フォームの中身と、クレジットカード番号の入力フォームの中身が「見た目」として同じ。これらは1つの共通コンポーネントにまとめて再利用すべきだ。(品質=見た目の同期と作業のショートカット) エンジニアの視点: 見た目は同じだが、入力される文字の入力チェック(バリデーション)も違えば、送信されるサーバーの用途も違う。これらを無理に一緒にすると、後で片方だけ変更したい時に複雑な条件分岐が必要になり破綻する。(品質=ビジネスロジックの安全性)

なぜ衝突するか(品質の定義差): デザイナーは「見た目の類似によるDRY」を求め、エンジニアは「ドメイン(ビジネス上の意味)の類似によるDRY」を重視しているため。

どう合意するか:

  • 「見た目だけの共通枠(UIコンポーネント)」と「用途が縛られた機能(機能コンポーネント)」に分けて設計する。
  • 「本当に二つは同じ理由・同じタイミングで変更されるか?」を問い、別々に変更される可能性があるなら、最初から独立させておく(WETを許容する)。

実践チェックリスト

最低ライン(Must)

[ ] デザインツール内で、色やフォントが単なる「値」ではなく「スタイル(トークン)」として登録されている [ ] 同じようなレイアウトやモジュールを、画面ごとにコピー&ペーストで作らないルールがある

理想ライン(Better)

[ ] ドメイン(意味)が違うが「たまたま見た目が同じ」要素に対して、安易な共通化を避けている [ ] エンジニアと「Single Source of Truth(ただ1つの信頼できる情報源)」がどこにあるかを合意している


関連技術

前提となる技術

  • YAGNI原則 — DRYを意識する前に、そもそも不要なものを作らない

次に学ぶ技術

  • 関心の分離 — 共通化する前に「役割」を分ける考え方

まとめ

  • この技術の本質: 知識と情報をただ一箇所に集約し、「変更漏れ」というバグを物理的に潰す
  • UXへの影響: ボタンの位置や色が画面ごとで変わらないという「高い一貫性」がユーザーの安心感を生む
  • 実務での判断軸: 「もしブランドカラーを変更することになった時、10秒で全画面に反映できる構造になっているか?」
  • 次に学ぶべき技術: 関心の分離(SoC。繰り返さないのと同時に、役割をどう分けるかを学ぶ)

KISSが「複雑さを減らす」、が「未来のために足さない」なら、DRYは「重複を一箇所に集約する」原則です。

目的別のおすすめ:

更新のお知らせ

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

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

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

UIXHEROに頼めることを見る

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

記事をシェア

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

最終更新: 2026年8月27日

この記事を書いた人

Dengen Yosho(DGYS)

Dengen Yosho(DGYS)

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

あわせて読みたい

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

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

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

2026年3月22日
5

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

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

2026年3月22日
5

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

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

2026年3月22日
7

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

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

リクエストを送る