結論

メリハリ(視覚的階層)は気合いではなくサイズ・フォントウェイト・色(コントラスト)の3レバーで機械的に作る。プロが最初にやるのは主役を巨大化することではなく、競合する副要素を意図的に弱める(背景に近づけてコントラストを下げる)こと。弱化はウェイトを細くするのではなく、不透明度やグレー階調・サイズで段階化し、操作要素だけはWCAGの下限を割らない——これだけで平板な画面に焦点が生まれる。

01 — 3レバーで階層を作る(サイズだけに頼らない)

階層は「サイズ・font-weight・色」の3つで作る。サイズ1本に頼ると主役が巨大化し副役が極小化してバランスが崩れる。サイズ差は控えめにして、ウェイト(600/700)と色コントラストを併用するのがプロの配合だ。

新着レポート

2026年6月20日 更新

本文がここに続きます。すべて同じ濃さ同じ太さ。

✗ 全部16px・全部太字の黒 → どこを見ればいいか分からない

新着レポート

2026年6月20日 更新

本文がここに続きます。サイズ・ウェイト・色で3段階に。

✓ 見出し20px/700、本文87%、メタ12px/60% → 視線が降りる

blogNotes from Refactoring UI

02 — 主役を強めず脇役を弱める(emphasize by de-emphasizing)

主要素が既に十分大きいのに散漫に見えるなら、焦点を盛るのではなく競合する副要素のコントラストを背景方向へ落とす。これが最も上品な手法だ。二次テキストは明背景で黒87%→60%→38%、暗背景で白100%→70%→50%に段階化する。

Pro プラン

月額1,200円。チーム共有とエクスポートに対応。いつでも変更可能です。

✗ 弱めたい補足を font-weight:300 → 細くて安っぽく可読性も低下

Pro プラン

月額1,200円。チーム共有とエクスポートに対応。いつでも変更可能です。

✓ ウェイトは400のまま色を60%へ → 主役が相対的に立つ

primaryText legibility — Material Design

03 — 弱化はウェイトでなく色とサイズで(400未満は禁止)

UIで400未満のウェイトは細すぎて安っぽく、可読性が落ちる。弱めたいときはウェイトを下げるのではなく色を薄く(グレー階調)するかサイズを下げる。逆に低コントラストの要素を少し立てたいときだけ600/700を足す。通常は400/500の間で運用する。

配送状況

お届け予定 6月22日

追跡番号 1234-5678

✗ 補足を 300 で細らせる → かすれて読みにくい

配送状況

お届け予定 6月22日

追跡番号 1234-5678

✓ ウェイト400・色60%・サイズ13px で弱める → 読めるのに引っ込む

blogNotes from Refactoring UI

04 — 色背景ではグレー禁止、透過白か同hueで弱める

グレーが効くのは「白背景でコントラストを下げている」からに過ぎない。色背景にグレーを乗せると濁って(washed out)汚く見える。色背景の二次テキストは白文字のopacityを下げて背景を透かすか、背景と同じhueでsaturation/lightnessだけ調整した色を使う。

無料トライアル受付中

クレジットカード不要、14日間お試しいただけます。

✗ 緑背景に #9a9a9a のグレー → 濁って沈んで見える

無料トライアル受付中

クレジットカード不要、14日間お試しいただけます。

✓ rgba(255,255,255,.75) で背景を透かす → 馴染んで階層も出る

blogRefactoring UI — 7 Practical Tips for Cheating at Design

05 — ラベルは値と同格にしない

「価格:」「日付:」などのラベルは副次情報だ。値と同じ濃さ・サイズだと階層が潰れ、視線が散る。ラベルは小さく・低コントラスト・軽めにして、値を主役に立てる(そもそもラベルは最後の手段で、省けるなら省く)。

価格

¥3,800

配送

無料

✗ ラベルも値も同じ15px・太字の黒 → どっちが情報か不明瞭

価格

¥3,800

配送

無料

✓ ラベル11px/60%、値18px/87% → 値が即座に拾える

blogBook summary: Refactoring UI — sglavoie.com

06 — F字を壊して焦点へ誘導する

誘導シグナルのない「壁のようなテキスト」だと、ユーザーは最小努力のF字スキャンに落ち、最初の数行と各行の左端しか拾わない。重要点を冒頭2段落に前置きし、見出しで区切り、キーワードを太字化し、関連要素を枠や背景でグループ化してスキャン経路を断ち切る。

本サービスは複数の機能を備えており設定画面から各種オプションを変更でき通知やエクスポートやチーム共有なども利用可能でプランによって上限が異なります詳細は料金ページをご確認ください。

✗ 見出しも太字も区切りもない壁 → 左上だけ読まれて離脱
主要機能

チーム共有エクスポートに対応。

通知や上限はプランで変わります。

詳細は料金ページへ
✓ 見出し+キーワード太字+グループ化 → 視線を焦点へ運べる

primaryF-Shaped Pattern of Reading on the Web — NN/g

実装スニペット

/* 明背景の3段階テキスト階層(Material の emphasis レベル) */
:root{
  --text-high: rgba(0,0,0,.87);     /* 見出し・主テキスト */
  --text-medium: rgba(0,0,0,.60);   /* 二次・メタ・ヒント */
  --text-disabled: rgba(0,0,0,.38); /* 無効・補助の最弱 */
}
.title { color: var(--text-high);   font-weight: 700; font-size: 1.25rem; }
.body  { color: var(--text-high);   font-weight: 400; }
.meta  { color: var(--text-medium); font-weight: 400; font-size: .875rem; }
.label { color: var(--text-medium); font-weight: 500; font-size: .75rem;
         text-transform: uppercase; letter-spacing: .04em; }
/* 暗背景の階層(白の不透明度。二次/無効を明背景より高めに) */
.dark{
  background:#121212;
  --on-dark-high:     rgba(255,255,255,1);    /* 100% */
  --on-dark-medium:   rgba(255,255,255,.70);  /* 二次 70% */
  --on-dark-disabled: rgba(255,255,255,.50);  /* 50% */
}
.dark .title { color: var(--on-dark-high); }
.dark .meta  { color: var(--on-dark-medium); }
/* 色背景の二次テキスト(透過白 or 同hue。グレーは使わない) */
.banner{ background:#1e7a46; color:#fff; }              /* green hero */
.banner .subtext     { color: rgba(255,255,255,.75); }  /* 方法1: 透過白で背景を透かす */
.banner .subtext--hue{ color:#a7d8bd; }                 /* 方法2: 同hueで L/S だけ調整 */
/* F字を壊す見出し階層+キーワード強調 */
.prose h2{ font-size: clamp(1.5rem,3vw,2rem); font-weight:700; line-height:1.3; margin:2em 0 .5em; }
.prose p { max-width: 65ch; color: rgba(0,0,0,.87); }
.prose strong{ font-weight:600; }                       /* キーワードを太字化 */
.prose .lead { font-size:1.125rem; }                    /* 冒頭2段落をやや大きく前置き */
.callout{ background:#f4f6f8; border-left:4px solid #1e7a46;
          padding:1rem 1.25rem; border-radius:6px; }    /* 関連要素をグループ化 */

チェックリスト

  • 階層を「サイズ・ウェイト・色」の3レバーで作っている(サイズ1本に依存していない)
  • 散漫なら主役を盛る前に、競合する副要素のコントラストを落とした
  • 二次テキストを明背景87/60/38%、暗背景100/70/50%で段階化した
  • 弱化に font-weight 400未満を使っていない(弱めるのは色とサイズ)
  • 色背景の二次テキストはグレーでなく透過白か同hueで処理した
  • ラベルは値より小さく・軽く・低コントラストにした(または省いた)
  • 本文・操作要素は通常4.5:1/大テキスト・UIは3:1を満たしている
  • 長文は冒頭2段落に要点を置き、見出し・太字・グループ化でF字を壊した
  • 階層に使う色・ウェイトは2〜3種に絞った

限界 / 出典

数値の食い違い:Material の二次テキストは旧版が黒54%、現行M2が60%で差異がある。使うトークン体系(M2/M3か旧版か)を確認すること。本記事は現行M2の60%を採用。
opacity方式 vs 実色グレー:opacityは背景が変わると合成色が変わる。重なり・スクショ・固定UI色が要る箇所では実色トークン(またはoklch階調)の方が安全。
WCAGは下限であって目標ではない:4.5:1/3:1は「ここまでなら弱めてよい」線。本文・操作要素は必ず満たし、装飾的弱化のみこの線へ近づける。APCA/WCAG3は2026時点でドラフトのままで、納品・監査基準は依然WCAG2.1 AA。
F字は理想形ではない:NN/gのF字は「悪いフォーマットの症状」であり読み方の手本ではない。バナーなど小面積ではサイズ差を取りにくいので、ウェイトと色コントラストを主レバーにする。CSS値(rgba/oklch/clamp)は対象ブラウザのサポートを確認し、古い環境にはフォールバックを用意すること。

primaryText legibility — Material Design

primaryThe type system — Material Design

primaryF-Shaped Pattern of Reading on the Web — Nielsen Norman Group

primaryWebAIM: Contrast Checker

blogNotes from Refactoring UI (GitHub gist)

blogRefactoring UI — 7 Practical Tips for Cheating at Design

blogBook summary: Refactoring UI — sglavoie.com

blogWCAG 2 Colour Contrast Guidelines

primarymaterial-components-web / mdc-theme README