ウェブページを作成していると、リンクをはるという行為から逃れることはできませんが、それだけにアクセシビリティに配慮したリンクのはり方について迷う場面によく遭遇します。そこで、何回かに分けてアクセシビリティに配慮したリンクのはり方について考えてみたいと思います。
目次
WCAG2.0(JIS X8341-3:2010)での要件
W3CのウェブアクセシビリティガイドラインであるWCAG2.0では、以下の2.4.4、2.4.9がリンクのはり方に係る主たる要件になります。
2.4.4 文脈におけるリンクの目的: (JIS X8341-3:2010では7.2.4.4)
それぞれのリンクの目的が、リンクのテキストだけから、又はプログラムが解釈可能なリンクの文脈をリンクのテキストとあわせたものから解釈できる。ただし、リンクの目的が一般的にみて利用者にとって曖昧な場合は除く。 (レベルA)
参考: 達成基準 2.4.4 を理解する | WCAG 2.0解説書
2.4.9 リンクの目的: (JIS X8341-3:2010では7.2.4.9)
それぞれのリンクの目的がリンクのテキストだけから特定できるメカニズムが利用可能である。ただし、リンクの目的が一般的にみて利用者にとって曖昧な場合は除く。 (レベルAAA)
参考: 達成基準 2.4.9 を理解する | WCAG 2.0解説書
スクリーンリーダーなどの支援技術は、そのウェブページにあるリンクの一覧したり、フォーカスを移動してリンクテキストだけを読み上げる機能をもっていますので、前後の文脈に依存せずにリンクテキストだけでリンクの目的が判断できるようにすることが求められています。
2.4.9の要件では、全てのリンクを前後の文脈に関係なくリンクテキストだけでユーザーがリンクの目的を完全に理解できるようにすることが求められています。全てのリンクをリンクテキストだけで理解できるようにすると、逆に分かりづらいものになってしまう場合もあり、なかなか難易度が高い要件であるため、達成基準AAAになっています。
2.4.4 の要件では、リンクテキストに加えて、プログラムが解釈可能なリンクの文脈を組み合わせてリンクの目的を判断させることを認めています。この2.4.4 の要件は最低限満たすべき要件(達成等級A ⇒参考 WCAG 2.0への適合を理解する)です。
リンクテキスト
リンクテキストとは、アンカーテキストとも呼ばれますが、a要素でタグ付けされるテキストを指しています。
<a href=”ample.html”‘>リンクテキスト</a’>’
リンクテキスト
リンクテキストはリンクの目的を説明し、同じページにある他のリンクと区別でき、リンク先に遷移するべきかどうかを判断できるものでなくてはなりません。
以下のように「PDF版」に対してだけ、リンクをはってしまうと、スクリーンリーダーなどでリンクテキストだけを読み上げる、もしくはリンクテキストを一覧した場合にリンクの目的が判断できません。
<ul> <li>平成24年版障害者白書 <a href="h24hakusyo.pdf">PDF版</a></li> <li>平成23年版障害者白書 <a href="h23hakusyo.pdf">PDF版</a></li> </ul>
PDF版を説明するテキストをあわせてリンクテキストとして提供することで、リンクの目的をユーザーに説明することができます。
<ul> <li><a href="h24hakusyo.pdf">平成24年版障害者白書 PDF版</a></li> <li><a href="h23hakusyo.pdf">平成23年版障害者白書 PDF版</a></li> </ul>
上で例にあげた『障害者白書』がPDF版だけではなく、EPUB版を提供していた場合、以下のようにリンクをはりたいところです。しかし、この場合、リンクテキストだけではリンクの目的を説明することができません。
<ul> <li>平成24年版障害者白書 <a href="h24hakusyo.pdf">PDF版</a> <a href="h24hakusyo.epub">EPUB版</a></li> <li>平成23年版障害者白書 <a href="h23hakusyo.pdf">PDF版</a> <a href="h23hakusyo.epub">EPUB版</a></li> </ul>
リンクテキストだけでリンクの目的を説明しようとすると、PDF版とEPUB版のリンクそれぞれに書名のテキストを加えてやる必要があります。
<ul> <li><a href="h24hakusyo.pdf">平成24年版障害者白書 PDF版</a> <a href="h24hakusyo.epub">平成24年版障害者白書 EPUB版</a></li> <li><a href="h23hakusyo.pdf">平成23年版障害者白書 PDF版</a> <a href="h23hakusyo.epub">平成23年版障害者白書 EPUB版</a></li> </ul>
WCAG2.0の2.4.9「リンクの目的」(達成基準AAAの要件)はそれを求めていますが、フォーマットごとに同じ書名が読み上げられることは、スクリーンリーダーのユーザーにとって使いやすいものとは限りません。2.4.4「文脈におけるリンクの目的」(達成基準Aの要件)では、リンクテキストに加えて、リンクのおかれている文脈からリンクの目的を特定させてもよいとしています。
参考
リンクの文脈
可能な限り、リンクテキストだけでリンクの目的を伝えることが理想的ですが、それが難しい場合でもリンクを含む文章からリンクの目的がユーザーに伝わるようにしなければなりません
リンクの文脈はどのようにあるべきかは、WCAG 2.0解説書の以下の文章が簡潔にしてわかりやすいと思われますので、そのまま転載します。
ある状況においては、コンテンツ制作者は、リンクの説明の一部を、そのリンクの文脈を提供する論理的に関係のあるテキストで提供したいことがある。この場合、利用者がリンクからフォーカスを移動させずに、そのリンクの目的を確認できなければならない。言い換えれば、利用者があるリンクにやってきて、その位置にいたままで、リンクに関するより多くの情報を探し出すことができる必要がある。これは、同じ文、段落、リスト項目、そのリンクの直前にある見出し、リンクであるテーブルのセル、又はデータテーブル内にあるリンクの見出しセルに、リンクの説明を置くことで可能である。なぜなら、それらはリンク自体と直接関連付けられているからである。
こういった文脈は、リンクの前にあると、最も使いやすいだろう(例えば、曖昧なリンクテキストを使わなければならない場合、その曖昧な語句をリンクの行き先を説明する文章の初めに置くよりも、リンクの行き先を説明する文章の最後に置いたほうが分かりやすい)。リンクの後に説明がきてしまうと、ウェブページを(先頭から最後まで)順に読んでいるスクリーンリーダーの利用者が、困惑したり、理解しづらかったりする可能性がある。
from 達成基準 2.4.4 を理解する | WCAG 2.0解説書
つまり、2.4.4「文脈におけるリンクの目的」であれば、以下のように提供してもよいということになります。
<ul> <li>平成24年版障害者白書 <a href="h24hakusyo.pdf">PDF版</a> <a href="h24hakusyo.epub">EPUB版</a></li> <li>平成23年版障害者白書 <a href="h23hakusyo.pdf">PDF版</a> <a href="h23hakusyo.epub">EPUB版</a></li> </ul>
同じ文、段落、リスト、見出しなど様々なものをリンクの説明に活用することができますが、順に読み上げているユーザーのことを考慮し、リンクに到達する前に必要な情報をユーザーが取得できているようにリンクの前にリンクの説明をおくことが望ましいです。
ここまで人間が理解できるリンクの文脈の話でしたが、WCAG2.0では、さらにリンクの文脈をプログラムが解釈可能であることも求めています。
参考
プログラムが解釈可能なリンクの文脈
「プログラムが解釈可能」と言っても、人間のようにリンクの文脈を意味としてプログラムが解釈できることを求めているわけではありません(無理・・・)。ここで求められているのは、リンクの目的を説明する文脈をプログラムからでも特定できるようにすることです。
以下のように「続きを読む」のリンク部分のパラグラフが前のパラブラフから独立していると、「続きを読む」のリンクがどこの文章と関係しているのかが特定できず、ユーザーに混乱を与えてしまいます。
間もなくあなたの近くの町に行きます……。 全米民族音楽祭にラインナップしている最終15組です。 <a href="final15.html">続きを読む</a>
以下のように一つのパラグラフにまとめることで、「続きを読む」のリンクがどこのテキストをと関係しているのかをプログラムでも理解できるようにしておく必要があります。
間もなくあなたの近くの町に行きます……。 全米民族音楽祭にラインナップしている最終15組です。 <a href="final15.html">続きを読む</a>
つまり、コンテンツをタグ付けしてきちんと構造化しましょうという話になります。スクリーンリーダーなどはセンテンス、パラグラフ、見出しなどの単位でフォーカスを移動させる機能を備えているため、きちんと構造化することで必要な説明にすばやく到達させることが可能になります。
例えば、リンクをul要素とli要素でグループ化することで、これらのリンクが1つのグループであることと、リンク同士が並列関係にあることをプログラムに理解させ、ユーザーに伝えることができます。
<a name="categories" id="categories"></a> <h2>商品カテゴリー</h2> <ul class="navigation"> <li><a href="kitchen.html">キッチン</a></p></li> <li><p><a href="bedbath.html">ベッドとバス</a></p></li> <li><p><a href="dining.html">ダイニング</a></p></li> <li><p><a href="lighting.html">照明</a></p></li> <li><p><a href="storage.html">収納</a><li><p> </ul> <p>
パラグラフ、テーブル、リストのケースは以下のWCAG 2.0 実装方法集で詳しく紹介されています。
参考
- G91: リンクの目的を説明したリンクテキストを提供する
- H50: 構造を示す要素を用いて、リンクをグループ化する | WCAG 2.0 実装方法集
- H77: リンクテキストとそれが含まれているリスト項目とを組み合わせて、リンクの目的を特定する | WCAG 2.0 実装方法集
- H78: リンクテキストとそれが含まれているパラグラフとを組み合わせて、リンクの目的を特定する | WCAG 2.0 実装方法集
- H79: リンクテキストとそれが含まれているデータセル及び関連づけられた見出しセルとを組み合わせて、リンクの目的を特定する | WCAG 2.0 実装方法集
- H80: リンクテキストとその直前にある見出し要素とを組み合わせて、リンクの目的を特定する | WCAG 2.0 実装方法集
- H81: 入れ子になったリスト項目にあるリンクテキストとその親のリスト項目とを組み合わせて、リンクの目的を特定する | WCAG 2.0 実装方法集
- F63: 達成基準 2.4.4 の不適合事例 - リンクと関係のないコンテンツにおいてのみ、リンクの文脈を提供している | WCAG 2.0 実装方法集
- F84: 達成基準 2.4.9 の不適合事例:リンクテキストを具体的なテキストに変更するメカニズムを提供せずに、「ここをクリック」又は「続きを読む」といった不明確なリンクを用いる | WCAG 2.0 実装方法集
代替手段を用意する(2.4.9の要件)
2.4.9「リンクの目的」(達成基準AAAの要件)では、リンクテキストだけでリンクの目的が特定できることを求めています。しかし、部分的にならともなく、ウェブサイト全体に対してこの要件を満たそうとすると、リンクテキストが冗長になるため、サイトの使い勝手が悪くなるとユーザーに感じさせる箇所も出てくるはずです。
そこで、2.4.9の要件を満たした別バージョンのコンテンツを提供する、もしくは説明の表示・非表示を切り替えできる機能を提供するなどの手法を以下の文書で案内しています。
参考
- G136: 適合していないウェブページの先頭に、適合している代替バージョンへのリンクを提供する
- G189: ウェブページの先頭近くに、リンクのラベルを変更するコントロールを提供する | WCAG 2.0 実装方法集
- C7: CSSを用いて、リンクテキストの一部を非表示にする | WCAG 2.0 実装方法集
関連エントリ
ウェブアクセシビリティガイドラインについて
代替テキスト
- アクセシビリティに配慮した代替テキストの話
- ウェブコンテンツで「非テキストコンテンツと同等の目的を果たす代替テキスト」を提供しなくてもよいもの
- アクセシビリティに配慮した顔文字、ASCIIアートの代替テキストの提供