1 of 27

ウェブアプリのダークモード対応

「見やすさ」「わかりやすさ」の観点で考える

PWA Night vol.41 ~Design〜

2022-07-20

2 of 27

土屋 一彦 (@caztcha)

ウェブユーザビリティ / アクセシビリティ / 情報設計 (Information Architecture : IA)

  • Accessible & Usable (https://accessible-usable.net)
  • HCD-Net 認定 人間中心設計専門家
  • ウェブアクセシビリティ基盤委員会 (WAIC) 翻訳作業部会 招聘専門家

3 of 27

4 of 27

WCAG 2.1 および関連文書の日本語訳

WCAG 2.1

WCAG 2.1 解説書

WCAG 2.1 達成方法集

5 of 27

なぜ、ダークモード?

6 of 27

Twitter

Instagram

Slack

Feedly

YouTube

Line

GitHub

Google Calendar

Notion

Overcast

7 of 27

一般ユーザーが利用する OS のほとんどで、ダークモード (ダークテーマ) への切替が標準装備されている。

* macOS 10.14 Mojave 以降、iOS 13 以降、iPadOS 13 以降、Android 10 以降、Windows 10 以降。

8 of 27

ダークモード対応は必須?

アクセシビリティの観点では、必ずしも必須要件ではない。

*W3C 勧告「Web Content Accessibility Guidelines (WCAG)」には、ダークモード対応の達成基準はない。

ロービジョン (弱視) のユーザーの中には、暗い背景色と明るい文字色の組み合わせを好む人もいるが、OS の反転表示機能 (ハイコントラストモード) で解決できる。

9 of 27

必須要件でなくとも、よりよい UX (ユーザー体験) の観点で考えてみると :

  • ユーザーがお好みでデバイスのダークモードを有効にしているにもかかわらず、ウェブアプリ側で敢えて (ダークではない) ライトなビジュアルデザインを提示すべき積極的な理由はない。
  • 各種アプリ (ソーシャルメディア、フィードリーダー、「あとで読む」系アプリなど) がダークな表示になっている中で、ウェブアプリに遷移すると急にライトな表示になってしまうのも目に優しくない

ダークモード対応する理由

10 of 27

Nielsen Norman Group (NN/g) の記事

Dark Mode vs. Light Mode: Which Is Better?

https://www.nngroup.com/articles/dark-mode/

  • ライトな表示での長時間の読書は長期的に視力への影響があるかもしれない
  • 白内障などでダークな表示のほうが読みやすいユーザーがいる
  • 単に好みとしてダークな表示を望むユーザーがいる

…という理由から、ユーザーの任意でライトまたはダークの表示切替が可能になっていることが推奨されている

11 of 27

ダークモード対応で気をつけたいこと

12 of 27

カラースキーム (色彩計画) を設計する。

13 of 27

機械的な色反転は避ける

CSS の filter プロパティを用いて上記のように機械的に色を反転させるのはお手軽だが、iOS (Safari / Chrome) でズームすると、テキストや SVG であっても輪郭がぼやけてジャギーが出てしまう現象が見られる。

@media (prefers-color-scheme: dark){

:root{

filter: invert(100%) hue-rotate(180deg);

}

:root img{

filter: invert(100%) hue-rotate(180deg);

}

}

14 of 27

カラースキームを (地道に、丁寧に) 設計する

:root{

--color-basic: #333333;

/* 文字色 : 基本 */

--color-heading: #000000;

/* 文字色 : 見出し */

--color-interactive: #33568A;

/* リンクやボタンなどインタラクティブなコンポーネント */

--bgcolor-basic: #FFFFFF;

/* 背景色 : 基本 */

}

@media (prefers-color-scheme: dark){

:root{

--color-basic: #F7F7F7;

--color-heading: #FCFCFC;

--color-interactive: #A1C7EA;

--bgcolor-basic: #333333;

}

}

CSS 変数 (カスタムプロパティ) でライトモードとダークモードの両方に対して共通したカラースキームを定義し、各々の変数名に対して (可読性に優れた) 配色を割り当てる。

15 of 27

可読性/視認性に優れた配色にする。

16 of 27

前景色 (文字色) と背景色とのコントラストを十分に確保する

達成基準 1.4.3 コントラスト (最低限)

テキスト及び文字画像の視覚的提示に、少なくとも 4.5:1 のコントラスト比がある。

達成基準 1.4.11 非テキストのコントラスト

以下の視覚的提示には、隣接した色との間で少なくとも 3:1 のコントラスト比がある。

  • ユーザインタフェース コンポーネント
  • グラフィカルオブジェクト

* W3C 勧告「Web Content Accessibility Guidelines (WCAG) 2.1」より抜粋

ロービジョン、色覚特性、老眼、利用コンテキスト (例 : 屋外でデバイスを見ている) など、ユーザーが抱える多様性によってコンテンツ利用が阻害されることのないようにする。

17 of 27

18 of 27

背景色を真っ黒 (#000000) にするのは避ける

  • 背景色と前景色との間のコントラスト比を高めるという観点で考えると、背景色は真っ黒 (#000000) にするのが計算上よさそう。
  • しかし実際には背景色が真っ黒 (#000000) だと、感覚的に文字色とのコントラストがきつくなりすぎてしまい、かえって読みづらく感じるユーザーもいる。
  • Googleのマテリアルデザインでは、ダークテーマの背景色 (surface color) として #000000 ではなく #121212 が推奨されている。

前景色とのコントラストを十分に保ちつつ、黒に近い濃いめのグレーを基本の背景色に採用する。

19 of 27

前景色の彩度を抑えめにする

  • 背景色がダークな色だと、感覚的に文字色とのコントラストがきつく感じられやすいため、前景色に彩度の高い色を採用するのも避けたほうがよい。
  • Google の Material Design には、「Avoid using saturated colors that visually vibrate against a dark background.」というインストラクションがある。

基本の文字色は真っ白 (#ffffff) よりも若干オフホワイト気味にしたり、リンクやボタン、その他のアクセントカラーも若干彩度を落とし気味にしたり (視認性が悪くならないように適宜明度なども調整しつつ) して、目に優しい感じに配色する。

20 of 27

21 of 27

ダークモードに白背景の画像を配置する場合

  • ダークモードにおいて白い背景色のコンテンツ (画像やチャートなど) がある場合、そのままだと眩しく見えてしまうことがあるかもしれない。
  • CSS の filter プロパティ (brightness 値) を適用するなどして、若干明度を落とすのも一考。
  • Apple の Human Interface Guidelines には、「If you display a content image that includes a white background, consider slightly darkening the image to prevent the background from glowing in the surrounding Dark Mode context.」というインストラクションがある。

22 of 27

ユーザーの認知負荷を高めない。

23 of 27

ライトモードとダークモードとで、チャンク (情報の塊) を同等に認知できるようにする

カードの塊感が視認しやすい

カードの境界が不明瞭。

カード内側の白い区切り線が悪目立ちして、チャンクを誤認しそう。

24 of 27

ライトモードとダークモードとで、フォーカスインジケーターを同等に認知できるようにする

運動障害、上肢障害、怪我などでポインティングデバイスを利用できないユーザーは、キーボード操作によって UI コンポーネントにフォーカスを動かして実行する、という使いかたをするため、「フォーカスが今どこに当たっているか」の識別はとても重要。

25 of 27

まとめ

26 of 27

  • ダークモード対応は、(アクセシビリティの観点で) 必須要件ではない。
    • ただし、よりよい UX のために、やる意義がある。
  • ダークモード対応で気をつけたいこと :
    • 機械的な色反転を実装するのではなく、カラースキームを丁寧に設計する。
    • 可読性/視認性に優れた配色にする。
      • 前景色 (文字色) と背景色とのコントラストを十分に確保する。
      • 背景色を真っ黒 (#000000) にするのは避ける。
      • 前景色の彩度を抑えめにする。
      • 白背景の画像を配置する場合、若干明度を落とすのも一考。
    • ユーザーの認知負荷を高めない。
      • ライト/ダーク両モードで、チャンク (情報の塊) を同等に認知できるようにする。
      • ライト/ダーク両モードで、フォーカスインジケーターを同等に認知できるようにする。

27 of 27

ご清聴ありがとうございました。