【アクセシビリティ】非テキストコンテンツのコントラストについて

## はじめに
みなさんは、コントラスト比を気にしながらUIを作成していますか？

コントラスト比を考慮して、カラーパレットを見直した話は、よく聞きます。
その話の中では、テキストコンテンツを基準にコントラスト比の話をしています。

ただ、WCAGの基準には非テキストコンテンツのコントラストに関する基準もあります。
そのため、この記事では、非テキストコンテンツのコントラストについて紹介します。

https://waic.jp/translations/WCAG21/Understanding/non-text-contrast.html



## 非テキストのコントラスト
### 意図・目的

低いコントラストの要素はロービジョン人に見逃される可能性があるため、アクティブなユーザインタフェースや意味のあるグラフィックが中程度のロービジョンの人によって識別できるようすることが必要。

また、コンテンツや機能を理解するためにグラフィックが必要とされる場合は、コントラストを強化する支援技術がなくてもロービジョンや他の障害のある人に知覚されるべきある。

コントラスト比の基準は、[コントラスト (最低限)](https://waic.jp/translations/WCAG21/Understanding/contrast-minimum.html)の大きな文字のものと同じ。

### アクティブなユーザインタフェースについて
:::note
最低でも隣接している色と**3:1**のコントラスト比が必要
:::

コンポーネントのコントロールを示す情報（フォーカス時のアウトライン）も **3:1**のコントラスト比が必要。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/d4cb3ae0-ac5d-6563-4bbf-3d24b09c903f.png)

:::note alert
コンポーネントの状態を示す場合は、変化前後のコントラスト比は、**3:1である必要がない**
:::

hoverで色が変化したり、リンクの訪問済みなどの色の変化によって、コンポーネントの状態を示す場合はコントラスト比は、**3:1である必要がない**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/8c396f8b-c605-aebf-a2cc-d301bbc0d64b.png)


### border（境界）について
:::note warn
クリック範囲を示す視覚的なborderが存在することは求めないが、認知障害のある人が要素を認識し、動作を完了させるためには、コンポーネントにborderをつけることが推奨されている。
:::

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/fc38a5aa-7047-be24-710d-af6a1f93fed1.png)


ボタンのテキストやInput要素のプレースホルダーが十分なコントラスト比が確保されている場合は、クリック範囲を表す視覚的な要素がなくても問題ない。

また、テキストボタンに色つきのborderが付いている場合、borderがボタンであることを示す唯一の手段ではないため、テキストのコントラスト[(1.4.3 コントラスト (最低限))](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum)を越えるコントラストは必要ない。

### 隣接している色について

「隣接している色」は、コンポーネントに隣接している色を意味する。
例えば、以下のような 白い背景で濃いボーダーのインプット要素と白い外側の背景があった場合、コンポーネントの「隣接している色」は白い外側の背景になる。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/12ecef94-629c-22bd-032d-cd0f1d94364b.png)

:::note
コントラスト比を測定する際、コンポーネントの識別に干渉しない色は**無視できる**
:::
例えば、ドロップシャドウやコントラストをもつ背景間の暗いボーダーは、明るさ (知覚される輝度) が最も近い色に含まれていると見なされる。

以下のような場合では、隣接している色（`#2F3232`）とborder（`#000000`）のコントラスト比は、1.62:1で基準を満たしていないが、コンポーネントの識別には、テキストフィールドの背景（'#FFFFFF'）を使っているため、border（`#000000`）を無視し、隣接している色（`#2F3232`）とテキストフィールドの背景（'#FFFFFF'）でコントラスト比を測定するf

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/e55719ff-8999-ea77-8fb7-92e22ec79651.png)


### 色の使用との関係性
:::note
[色の使用](https://waic.jp/translations/WCAG21/Understanding/use-of-color.html)では、テキストやグラフィックを区別するためにコントラスト比 (明るさの差) は使用できるが、区別するための唯一の方法になってはいけないが、3:1 のコントラスト比を満たしていれば問題ない
:::

例えば、以下のようにテキストの中からリンクである要素を示すために、周囲のテキストとのコントラスト比3:1を使用して、区別させることはできる。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/18a49c0b-fcf8-8ca3-0034-87c7f5d2ac21.png)

:::note warn
色相の違いのみを使用した非テキスト情報は、色の使用の基準に失敗する可能性があるので、注意が必要
:::

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/0a65b582-af9d-3ede-5059-34fbe74ae6d6.png)


### フォーカスの可視化との関係性

:::note
コンポーネントがフォーカスされている時に、そのコンポーネントの視覚的なフォーカスインジケータは、隣接している背景に対して十分なコントラストがなければならない。
<font color="gray">※ ただし、コンポーネントの見た目がユーザエージェントに決定されて、かつコンテンツ制作者が変更してない場合を除く。</font>
:::

ほとんどのフォーカスインジケータはコンポーネントの外側に表示されるため、コンポーネントの背景とコントラストをつける必要がある。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/10f4e2cb-7ebe-ac3b-898c-d10e9ed402de.png)


その他のケースとしては、以下のようなフォーカスインジケータがある
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/390720/17a11578-0eef-fcff-c3c8-cb9d436ee42d.png)

- コンポーネントの内側にフォーカスインジケータがある場合
    - コンポーネント内の隣接している色とコントラストをつける必要がある
- コンポーネントのボーダーにフォーカスインジケータがある場合
    - コンポーネントが置かれている背景とフォーカスインジケータの色をコントラスト比をつける必要がある

### アクティブではないユーザインタフェースについて
:::note info
インタラクションに利用できないユーザインタフェースは**コントラストの基準を満たすことを求められていない**。
:::

ただ、アクティブでないユーザーインターフェースを識別できるようにすることは、一部の人にとって有益であるため、将来的に、利用者の設定に応じて無効化されたことを提示する方法が発展することが期待されている

## まとめ
この記事では、非テキストコンテンツのコントラストについてをまとめてみました。

ぜひこの記事を読んで、非テキストコンテンツのコントラストについても考えてみてください。

---

最後まで読んでくださってありがとうございます！

普段はデザインやフロントエンドを中心にQiitaに記事を投稿しているので、ぜひQiitaのフォローとX(Twitter)のフォローをお願いします。

https://twitter.com/degudegu2510