アクセシビリティを意識したWAI-ARIA実装について

この記事は [株式会社Y's アドベントカレンダー](https://qiita.com/advent-calendar/2017/ysinc) 13日目の記事です。

# はじめに
インクルーシブに続き、今一度アクセシビリティについてちゃんと考えてみました。

# アクセシビリティとは
Webサービスにおけるアクセシビリティとは、情報やサービスへのアクセスのしやすさのこととされています。

>高齢者や障害者などを含めたあらゆる人が、どのような環境（うるさい場所や、暗い場所、逆に明るい>場所など）においても柔軟にWebサイトを利用できるように構築することを考慮する場合に使われる。[IT用語辞典バイナリ]

Webサービスでのアクセシビリティに関しては結構前から話題にあがっていて、1999年には**W3C**(World Wide Web Consortium)より『Web Content Accessibility Guidelines 1.0』というアクセシビリティに関する指針が発表されています。

# WAI-ARIAとは
『**W**eb **A**ccessibility **I**nitiative - **A**ccessible **R**ich **I**nternet **A**pplications』の頭文字をとったもので、HTMLやSVGで利用できるアクセシビリティ確保のための属性の仕様です。

#### **WAI** [**W**eb **A**ccessibility **I**nitiative]
W3Cの一部であるWeb Accessibility Initiative(WAI)という、Webアクセシビリティを向上することを目的としている団体・組織の名称です。
上記でも出てきた『Web Content Accessibility Guidelines』もWAIによって公開されているものです。

#### **ARIA** [**A**ccessible **R**ich **I**nternet **A**pplications]
WAIによって公開されている、仕様書です。
アクセス可能なリッチなWebアプリケーションを作成するための考え方からコーディング方法まで記載されています。

最新版はこちら↓
[Accessible Rich Internet Applications (WAI-ARIA) 1.1](https://www.w3.org/TR/wai-aria-1.1/)
[Accessible Rich Internet Applications (WAI-ARIA) 1.1 日本語訳](https://momdo.github.io/wai-aria-1.1/#intro_ria_accessibility)

# WAI-ARIAを意識して実装してみよう！
## role属性
HTML5より正式に採用された『role属性』には、コンテンツの役割を正確にブラウザに伝えることができます。


```html
<li role="menuitem">Open file…</li>
```

上記のようにrole属性に"menuitem"を記述することでこのリストはメニューのリストアイテムだという意味の補助付けができます。
※ `<li>`には暗黙のセマンティックとしてrole="listitem"が内包されているので、listitemは記述しない。

↓暗黙のARIAセマンティックスについて
[ARIA in HTML 日本語訳](https://momdo.github.io/html-aria/#document-conformance-requirements-for-use-of-aria-attributes-in-html)

また、セマンティックを持たない要素への意味付けとしてdevやpへ詳細を付与することもできます。

```html
<p role="alert" class="error">入力内容はエラーです。</p>
```


## aria属性
『aria-〇〇="true/false"』は状態や性質などの詳細な情報を付与することができます。

```html
<li role="menuitemcheckbox" aria-checked="true">
　　　　Sort by Last Modified
</li>
```
上記ではメニュー項目がチェックされる（true）、チェックされない（false）かどうかを示します。

# 参考
[MDN web docs moz://a<ARIA>](https://developer.mozilla.org/ja/docs/Web/Accessibility/ARIA)
[Accessible Rich Internet Applications (WAI-ARIA) 1.1 日本語訳](https://momdo.github.io/wai-aria-1.1/#usage)


# 注意点
WAI-ARIAを学ぶと片っ端から取り入れたくなりますが、全部に取り入れればいいという訳ではありません。
セマンティック要素で賄える部分は要素を正しく使うべきですし、多すぎる情報は時に複雑化を促します。
WAI-ARIAはアクセシビリティなコーディングをするための補助的な存在なのです。

#おすすめ書籍
**＊デザイニングWebアクセシビリティ - アクセシブルな設計やコンテンツ制作のアプローチ**([amazonURL](https://www.amazon.co.jp/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0Web%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B7%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B7%E3%83%96%E3%83%AB%E3%81%AA%E8%A8%AD%E8%A8%88%E3%82%84%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E5%88%B6%E4%BD%9C%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AD%E3%83%BC%E3%83%81-%E5%A4%AA%E7%94%B0%E8%89%AF%E5%85%B8/dp/4862462650))

**＊コーディングWebアクセシビリティ - WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション**([amazonURL](https://www.amazon.co.jp/%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0Web%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B7%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3-WAI-ARIA%E3%81%A7%E5%AE%9F%E7%8F%BE%E3%81%99%E3%82%8B%E3%83%9E%E3%83%AB%E3%83%81%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E7%92%B0%E5%A2%83%E3%81%AEWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-%E3%83%98%E3%82%A4%E3%83%89%E3%83%B3%E3%83%BB%E3%83%94%E3%82%AB%E3%83%AA%E3%83%B3%E3%82%B0/dp/4862462669/ref=pd_bxgy_14_img_2?_encoding=UTF8&psc=1&refRID=0NGPZJP3S1VR36CXGRN9))

どちらもとても読みやすく、上記記事で参照した仕様内容をとてもわかりやすく解説してくれるので是非とも一度読んで欲しいです。
特にコーディングWebアクセシビリティはすぐに取り入れやすい内容が盛りだくさんとなっています。


次は 15日目@w_ide_Ysincさんの記事です。お楽しみに！