画面設計・実装のときに確認するためのガイドです。原則、レイアウト、タイポグラフィ、色、操作、フォーム、フィードバック、アクセシビリティ、レスポンシブ、パフォーマンスの順に、チェックできる形でまとめています。


目次

  1. 基本原則
  2. 視覚的階層とレイアウト
  3. タイポグラフィ
  4. 色とコントラスト
  5. ボタンとインタラクション
  6. ナビゲーション
  7. フォーム設計
  8. フィードバックと状態表示
  9. アクセシビリティ
  10. レスポンシブ・モバイル対応
  11. パフォーマンスと体感速度
  12. マイクロコピー(UIの文言)
  13. デザインシステム
  14. よくあるアンチパターン
  15. リリース前チェックリスト

1. 基本原則

ニールセンのユーザビリティ10原則(要約)

#原則具体例
1システム状態の可視化保存中のスピナー、アップロードの進捗バー
2現実世界との一致専門用語ではなくユーザーの言葉を使う
3ユーザーの主導権と自由「元に戻す」「キャンセル」を常に用意する
4一貫性と標準同じ操作は同じ見た目・同じ位置に
5エラーの予防破壊的操作の前に確認、入力時のバリデーション
6記憶より認識選択肢を見せる、最近使った項目を表示する
7柔軟性と効率上級者向けのショートカットキー
8美的で最小限のデザイン不要な情報を削り、主要な情報を際立たせる
9エラーの認識・診断・回復何が起きて、どう直せばよいかを平易に伝える
10ヘルプとドキュメント文脈に応じたヘルプ、ツールチップ

押さえておきたい法則

  • ヒックの法則:選択肢が増えるほど決定に時間がかかる → 選択肢を絞る、段階的に見せる
  • フィッツの法則:ターゲットが大きく近いほど押しやすい → 主要ボタンは大きく、よく使う場所の近くに
  • ミラーの法則:一度に扱える情報は限られる → 情報をグループ化(チャンク化)する
  • ヤコブの法則:ユーザーは他のサイトで慣れた操作を期待する → 独自性より慣習を優先
  • 美的ユーザビリティ効果:見た目が整っていると使いやすく感じられる(ただし使いにくさは隠せない)

2. 視覚的階層とレイアウト

視覚的階層

  • 1画面に主役は1つ。最も重要な情報・操作を、サイズ・太さ・色・位置で際立たせる
  • 重要度は サイズ → 太さ → 色 → 位置 の順で調整すると破綻しにくい
  • 視線の流れを意識する:テキスト中心なら F型、ビジュアル中心なら Z型

余白(ホワイトスペース)

  • 余白は「空き」ではなく グループ化の道具(近接の原則)
  • 関連する要素は近く、無関係な要素は離す:内側の余白 < 外側の余白
  • 詰め込むより、余白を増やして情報を減らす方が伝わる

スペーシングシステム

  • 4px または 8px のグリッド を基準に、余白・サイズを統一する
    • 例:4, 8, 12, 16, 24, 32, 48, 64
  • 場当たり的な値(13px、27pxなど)を使わない

グリッドとアライメント

  • 12カラムグリッドなどを使い、要素の端を揃える
  • テキストは原則 左揃え(中央揃えは短い見出し・CTA程度に)
  • 揃っていない要素は「意図的」でない限りノイズになる

ゲシュタルトの原則

  • 近接:近いものはグループに見える
  • 類同:似た見た目のものは同じ機能に見える
  • 閉合・連続:カードや区切り線で領域を示す
  • 共通領域:背景色や枠で囲むとグループになる

3. タイポグラフィ

基本設定

項目推奨値
本文サイズ16px以上(モバイルでも最低16px。iOSでは16px未満の入力欄でズームが発生)
行間(line-height)本文 1.5〜1.8(日本語は1.7前後が読みやすい)、見出し 1.2〜1.4
1行の長さ英語 45〜75文字、日本語 25〜40文字程度
書体の数原則1〜2種類まで
ウェイトRegular / Bold など2〜3種類に絞る

タイプスケール

  • 一定の比率(1.2、1.25、1.333など)でサイズを決める
    • 例(1.25倍):12 / 14 / 16 / 20 / 25 / 31 / 39px
  • 見出しレベル(h1〜h6)の見た目と意味を対応させる

日本語特有の注意

  • 和文フォントは欧文より大きく見えにくいため、サイズ・行間はやや大きめに
  • font-feature-settings: "palt" で詰めるのは見出し向き(本文は読みにくくなりがち)
  • 全角/半角の混在ルール(英数字は半角など)を統一する
  • 禁則処理・改行位置に配慮する(word-break: auto-phrase 等の活用も検討)

可読性

  • 全部大文字・全部太字・長い斜体は読みにくい
  • 本文の文字色は純黒(#000)より、少し柔らかい濃いグレー(例:#1a1a1a〜#333)が目に優しい(コントラスト比は確保する)

4. 色とコントラスト

カラーパレットの構成

  • ブランド色(Primary):主要アクション、リンクなど限定的に使う
  • ニュートラル(グレー系):テキスト、背景、境界線。UIの大部分を担う
  • セマンティックカラー:成功(緑)、警告(黄/橙)、エラー(赤)、情報(青)
  • 60-30-10ルール:ベース60%、サブ30%、アクセント10%が目安

コントラスト(WCAG 2.2)

対象AA基準AAA基準
通常テキスト4.5:1以上7:1以上
大きいテキスト(18pt以上 / 太字14pt以上)3:1以上4.5:1以上
UI部品・アイコン・フォーカス表示3:1以上—

色の使い方の注意

  • 色だけで情報を伝えない(色覚多様性への配慮)
    • ❌ 赤い枠だけでエラーを示す
    • ✅ 赤い枠 + エラーアイコン + エラーメッセージ
  • プレースホルダーや無効状態の薄いグレーもコントラストに注意
  • 色の意味を統一する(赤=危険/エラー、を他の用途に使わない)

ダークモード

  • 単純な色反転ではなく、専用パレットを設計する
  • 背景は純黒より濃いグレー(例:#121212)が見やすく、影の代わりに明度差で階層を表す
  • 彩度の高い色はダーク背景で目に刺さるため、彩度を少し下げる
  • ユーザーのOS設定(prefers-color-scheme)を尊重する

5. ボタンとインタラクション

ボタンの階層

種類用途見た目
Primary画面の主要アクション(1画面に原則1つ)塗りつぶし・ブランド色
Secondary補助的なアクション枠線のみ / 薄い塗り
Tertiary重要度の低いアクションテキストのみ
Destructive削除など破壊的なアクション赤系(確認とセットで)

ボタンのラベル

  • 動詞で具体的に:「OK」より「保存する」「メールを送信」
  • ダイアログでは「はい/いいえ」を避け、「削除する/キャンセル」のように結果が分かる言葉にする

インタラクティブ要素の状態

すべての操作可能な要素に、以下の状態を設計する:

  • Default(通常)
  • Hover(マウスオーバー)※タッチ端末では発生しない前提で設計
  • Focus(キーボードフォーカス)※絶対に消さない
  • Active / Pressed(押下中)
  • Disabled(無効)※なぜ無効なのかが分かるように
  • Loading(処理中)※二重送信を防ぐ

タッチターゲット

  • 最小サイズ:44×44pt(Apple)/ 48×48dp(Material)
  • WCAG 2.2 の最低基準は 24×24 CSS px(AA)
  • 隣接するターゲットの間隔は 8px 以上を確保

アフォーダンス

  • クリックできるものは「クリックできそう」に見せる(リンクは下線や色、ボタンは形)
  • クリックできないものをボタンやリンクのように見せない

6. ナビゲーション

  • 現在地を常に示す:アクティブなメニューの強調、パンくずリスト、ページタイトル
  • グローバルナビの項目は 5〜7個程度 に抑える
  • ラベルは短く、ユーザーが探す言葉で(社内用語を使わない)
  • モバイルでは主要機能を ボトムナビ(3〜5項目) に置くと親指で届きやすい
  • ハンバーガーメニューは発見されにくいため、主要機能を隠しすぎない
  • ロゴクリックでトップへ戻れるようにする
  • 検索は目立つ位置に(コンテンツが多いサイトほど重要)
  • ブラウザの「戻る」ボタンを壊さない(SPAでも履歴を正しく管理する)

7. フォーム設計

構造

  • 入力項目は最小限に。本当に必要か、後で聞けないかを検討する
  • 1カラムレイアウト が基本(視線の移動が少なく、完了率が高い)
  • 関連項目をグループ化し、見出しを付ける
  • 長いフォームはステップに分割し、進捗を表示する

ラベル

  • ラベルは入力欄の 上に配置 する(スキャンしやすく、モバイルでも崩れない)
  • プレースホルダーをラベル代わりにしない(入力すると消えて何の項目か分からなくなる)
  • 必須/任意を明示する(任意項目が少なければ「任意」を表示する方が分かりやすい)

入力支援

  • 適切な type / inputmode / autocomplete 属性を指定する
    • type="email"、type="tel"、inputmode="numeric"、autocomplete="postal-code" など
  • 郵便番号から住所を自動入力する
  • 入力形式は柔軟に受け付ける(全角/半角、ハイフン有無などをシステム側で吸収)
  • 入力欄の幅を、期待される入力の長さに合わせる(郵便番号欄は短く)

バリデーション

  • 入力完了時(blur)に検証 し、入力中に早すぎるエラーを出さない
  • エラーは 該当フィールドのすぐ近く に表示する
  • エラー文は「何が問題で、どう直せばよいか」を書く
    • ❌「入力値が不正です」
    • ✅「電話番号は数字10〜11桁で入力してください」
  • 送信時にエラーがあれば、最初のエラー箇所へフォーカスを移動する
  • エラーが起きても 入力済みの内容を消さない

8. フィードバックと状態表示

応答時間の目安

時間ユーザーの感覚対応
〜0.1秒即時特別な表示は不要
〜1秒思考が途切れない軽いインジケーター(必要に応じて)
〜10秒注意が保てる限界スピナー、スケルトン表示
10秒〜他のことをし始める進捗バー、残り時間、完了通知

必ず設計すべき画面状態

  1. 理想状態(データがある通常状態)
  2. 空状態(Empty State):何もない理由と、次に何をすべきかを示す
  3. ローディング状態:スケルトンスクリーンが体感速度を上げる
  4. エラー状態:原因と回復方法を示す
  5. 部分的な状態:データが1件だけ、極端に長いテキスト、など

通知の使い分け

種類用途
インラインフォームのエラーなど、特定の場所に関する情報
トースト / スナックバー一時的な完了通知(「保存しました」+「元に戻す」)
バナーページ全体に関わる持続的な情報
モーダル判断が必要な重要事項のみ(多用しない)

破壊的操作

  • 可能なら 確認ダイアログより「元に戻す」 を優先する(操作の流れを止めない)
  • 取り消せない操作は、何が失われるかを明示して確認する
  • 特に重大な操作は、対象名の入力などで誤操作を防ぐ

9. アクセシビリティ

アクセシビリティは一部の人のためではなく、すべての人の使いやすさにつながる。目標は WCAG 2.2 レベルAA 準拠。

POUR原則

  • Perceivable(知覚可能):代替テキスト、字幕、十分なコントラスト
  • Operable(操作可能):キーボード操作、十分な時間、発作を誘発しない
  • Understandable(理解可能):読みやすい、予測可能、入力支援
  • Robust(堅牢):支援技術と互換性がある

実装チェック

  • セマンティックHTMLを使う:<button>、<nav>、<main>、<h1>〜<h6> など。<div onclick> を避ける
  • すべての操作をキーボードで行えるようにする(Tab、Enter、Space、Esc、矢印キー)
  • フォーカスを見えるようにする:outline: none で消さない。:focus-visible を活用
  • フォーカス順序を論理的にする(視覚的な順序と一致させる)
  • モーダルではフォーカスを閉じ込め、閉じたら元の位置に戻す
  • 画像には適切な alt を付ける(装飾画像は alt="")
  • アイコンだけのボタンには aria-label を付ける
  • フォーム入力欄と <label> を関連付ける
  • 動的な更新(エラー、通知)は aria-live でスクリーンリーダーに伝える
  • ARIAは最終手段:ネイティブ要素で実現できるならそちらを使う
  • ページの言語を指定する(<html lang="ja">)
  • prefers-reduced-motion を尊重し、アニメーションを抑制できるようにする
  • 文字サイズを200%に拡大しても破綻しないようにする

テスト方法

  • キーボードだけで全操作を試す
  • スクリーンリーダー(VoiceOver、NVDA)で読み上げを確認する
  • 自動チェックツール(axe、Lighthouse)を使う(ただし自動検出できるのは一部の問題のみ)

10. レスポンシブ・モバイル対応

  • モバイルファースト で設計し、画面が広くなるにつれて情報を足す
  • ブレークポイントはデバイスではなく コンテンツが崩れる地点 で決める
  • 親指が届く範囲(画面下部)に主要操作を配置する
  • ホバーに依存した操作を作らない(タッチ端末にはホバーがない)
  • 横スクロールを発生させない(意図したカルーセルなどを除く)
  • ノッチやホームインジケーターに配慮する(env(safe-area-inset-*))
  • 画像は srcset / sizes で端末に適したサイズを配信する
  • 縦向き・横向きの両方で確認する
  • ピンチズームを無効にしない(user-scalable=no を使わない)

11. パフォーマンスと体感速度

Core Web Vitals(目標値)

指標意味良好
LCP最大コンテンツの表示時間2.5秒以内
INP操作への応答性200ミリ秒以内
CLSレイアウトのずれ0.1以下

体感速度を上げる工夫

  • スケルトンスクリーン でレイアウトを先に見せる
  • 楽観的UI(Optimistic UI):サーバー応答を待たずに結果を先に反映する(いいねボタンなど)
  • 画像・広告の領域を事前に確保し、レイアウトのずれを防ぐ
  • 画像の遅延読み込み(loading="lazy")、次世代フォーマット(WebP/AVIF)
  • 重い処理はバックグラウンドで行い、UIをブロックしない

アニメーション

  • 目的のあるアニメーションだけを使う(状態変化の理解を助ける、注意を引く)
  • 時間の目安:マイクロインタラクション 100〜200ms、画面遷移 200〜400ms
  • transform と opacity を使うと滑らかに動く
  • イージングは ease-out(入場)、ease-in(退場)を基本に

12. マイクロコピー(UIの文言)

  • 短く、具体的に、ユーザー視点で
  • 専門用語・社内用語・エラーコードをそのまま出さない
  • 能動態で、何をすればよいかを伝える
  • トーンを統一する(です・ます調、敬語のレベル)
  • ユーザーを責めない:「入力が間違っています」→「〇〇の形式で入力してください」
  • ボタン・リンクのラベルだけで行き先や結果が分かるようにする(「こちら」「詳しくはこちら」を避ける)
  • 空状態・エラー画面こそ丁寧に言葉を選ぶ
❌ 避けたい例✅ 改善例
エラーが発生しました(E-1024)通信が切れました。接続を確認して、もう一度お試しください
データがありませんまだプロジェクトがありません。「新規作成」から始めましょう
送信申し込みを確定する
こちらをクリック料金プランを見る

13. デザインシステム

  • デザイントークン で色・余白・タイポグラフィ・角丸・影などを定義し、デザインと実装で共有する
  • 再利用可能なコンポーネントを作り、各コンポーネントの状態・バリエーション・使い方を文書化する
  • 「いつ使うか」「いつ使わないか」をセットで記載する
  • 例外を作るときは、システム側を更新するかどうかを判断する(場当たり的な例外を増やさない)
  • 参考になる公開デザインシステム:
    • Material Design(Google)
    • Human Interface Guidelines(Apple)
    • Fluent(Microsoft)
    • Carbon(IBM)
    • デジタル庁デザインシステム(日本の行政向け。日本語UIの参考になる)

14. よくあるアンチパターン

アンチパターン問題点
プレースホルダーをラベル代わりにする入力後に何の項目か分からなくなる
フォーカスリングを消すキーボード利用者が現在地を見失う
色だけで状態を伝える色覚多様性のあるユーザーに伝わらない
「OK / キャンセル」だけのダイアログ何が起きるか分からない
主要ボタンが複数あるどれを押せばよいか迷う
無限スクロールでフッターに辿り着けない会社情報・問い合わせにアクセスできない
意味のないアニメーション・自動再生注意を奪う、酔いを誘発する
ダークパターン(解約導線を隠す、既定でオプトイン等)信頼を損なう。法規制の対象になる場合もある
エラー時に入力内容を消すユーザーの労力を無駄にする
小さすぎるタップ領域誤タップが増える
理由の分からない無効ボタン何をすれば押せるのか分からない
ページを開いた瞬間のモーダル・ポップアップ目的の行動を妨げる

15. リリース前チェックリスト

見た目・レイアウト

  • 1画面の主要アクションは1つに絞られているか
  • 余白・サイズはスペーシングシステムに沿っているか
  • 要素の端は揃っているか
  • 長いテキスト・多言語・極端なデータ量でも崩れないか

状態

  • 空状態・ローディング・エラー状態が設計されているか
  • すべての操作要素に hover / focus / active / disabled 状態があるか
  • 処理中の二重送信を防いでいるか

アクセシビリティ

  • テキストのコントラスト比は 4.5:1 以上か
  • キーボードだけで全操作できるか
  • フォーカスが見えるか
  • 画像に適切な代替テキストがあるか
  • 色以外の手段でも情報が伝わるか
  • フォームのラベルと入力欄が関連付いているか

モバイル

  • タップ領域は 44×44pt 以上か
  • 本文は 16px 以上か
  • 横スクロールが発生していないか
  • ホバーに依存した操作がないか

文言

  • ボタンのラベルは具体的な動詞か
  • エラーメッセージは回復方法を示しているか
  • 用語・トーンは統一されているか

パフォーマンス

  • LCP 2.5秒以内、INP 200ms以内、CLS 0.1以下か
  • 画像サイズは最適化されているか

参考資料

  • Nielsen Norman Group — 10 Usability Heuristics for User Interface Design
  • W3C — Web Content Accessibility Guidelines (WCAG) 2.2
  • Google — Material Design 3
  • Apple — Human Interface Guidelines
  • web.dev — Core Web Vitals
  • Laws of UX(lawsofux.com)
  • デジタル庁 — デジタル庁デザインシステム

0件のページ