HTMLソース [コーディング]
HTMLソースは、ユーザーエージェントが解析できるように、バリデータで以下の4つに該当するエラーが出ていないことを確認する。
- 仕様では認められていない終了タグの省略
- 仕様に準じていない要素の入れ子
- 同一の要素内での同じ属性の重複
- ユニーク(一意的)ではないid属性値
解説
HTMLのWebページの場合、次のようにさまざまなユーザーエージェントがソースコードを解析して、その結果を用途や目的に応じて処理しています。
- ビジュアルブラウザは、Webページとして画面に表示する。
- スクリーンリーダーは、合成音声で読み上げる。
- 検索クローラーは、検索エンジンに登録(インデックス)する。
そのため、ユーザーエージェントが機械的に処理できるように、Webページの見た目を整えるだけでなく、HTMLのソースコードをマシンリーダブルにしておく必要があります。そうすることによって、より多くのユーザーエージェントをサポートすることができ、より多くのユーザーにWebコンテンツを提供することができます。
HTMLには、W3C(World Wide Web Consortium)が定めた仕様があります。基本的には、その仕様に沿ってHTMLをコーディングする必要があります。バリデータを用いてHTMLのソースコードをチェックして、エラーが出ないこと(validであること)が理想ではあります。
ただし、バリデータでエラーが発見されたとしても、少なくとも次の4点をクリアしていれば、ユーザーエージェントがHTMLのソースコードを解析する上での問題は生じず、アクセシビリティには影響を及ぼさないとされています。
- 要素に完全な開始タグと終了タグがある(省略が仕様で認められている場合は除く)。
- 仕様に準じて入れ子になっている。
- 同一の要素内に同じ属性が重複していない。
- id属性値がユニークな値である。
例えば、閉じる山括弧(”>”)がなかったり、属性値の引用符が一致していなかったりすると、「完全な開始タグと終了タグがある」とはいえません。コーディングする際には注意しましょう。
事例 1. 完全な開始タグと終了タグ
悪い例
<h2 id="principle">Webアクセシビリティ10原則
<p class="paragraph">私たちは、Webコンテンツのアクセシビリティを確保するための10原則を提唱しています。</p>
<h2>の終了タグがない。
良い例
<h2 id="principle">Webアクセシビリティ10原則</h2>
<p class="paragraph">私たちは、Webコンテンツのアクセシビリティを確保するための10原則を提唱しています。</p>
<h2>の完全な開始タグと終了タグがある。
事例 2. 仕様に準じた入れ子
悪い例
<p>私たちは、Webコンテンツのアクセシビリティを確保するための<strong>10原則を提唱しています。</p></strong>
<p>
要素内にある<strong>
要素の終了タグが<p>
要素の終了タグよりも後にある。
良い例
<p>私たちは、Webコンテンツのアクセシビリティを確保するための<strong>10原則を提唱しています。</strong></p>
<strong>
要素の終了タグが<p>
要素内にあり、<p>
要素と<strong>
要素が適切に入れ子になっている。
事例 3. 同一要素内の同じ属性
悪い例
<h2 id="guidelines" id="heading">Webアクセシビリティ逆引きガイドライン</h2>
<h2>
要素にid
属性が複数ある。
良い例
<h2 id="guidelines" class="subsection">Webアクセシビリティ逆引きガイドライン</h2>
重複している属性がない。
事例 4. id属性値
悪い例
<h2 id="guidelines">Webアクセシビリティガイドライン</h2>
(略)
<h2 id="guidelines">Webユーザビリティガイドライン</h2>
同じid
属性値が複数回使用されている。
良い例
<h2 id="accessibility">Webアクセシビリティガイドライン</h2>
(略)
<h2 id="usability">Webユーザビリティガイドライン</h2>
id
属性値がユニークな値である。
『JIS X 8341-3:2016 / WCAG 2.0』の関連する達成基準(レベル A)
4.1.1 構文解析の達成基準
JIS X 8341-3:2016 / WCAG 2.0「4.1 互換性のガイドライン」
マークアップ言語を用いて実装されているコンテンツにおいては,要素には完全な開始タグ及び終了タグがあり,要素は仕様に従って入れ子になっていて,要素には重複した属性がなく,どのID も一意的である。ただし,仕様で認められているものを除く。