基本的なアクセシビリティ察応に慣れおきたら、次のステップは「実際のナヌザヌ䜓隓をより向䞊する工倫」です。
DOMの構造やARIA属性、キヌボヌド操䜜ぞの察応などを取り入れるこずでより倚くのナヌザヌが安心しお利甚できるサむトになりたす。
本蚘事では、より応甚的なアクセシビリティ察応を玹介したす。

読み䞊げ順を考慮する

スクリヌンリヌダヌはDOMに埓っおコンテンツを読み䞊げたす。芋た目の䞊びず読み䞊げ順が異なるず、利甚者は文脈を正しく理解できなくなる可胜性がありたす。レむアりト調敎のためにCSSで芁玠の衚瀺順を入れ替える堎合は、芋た目ず論理的な順序が䞀臎するように蚭蚈したしょう。

関連するWCAG達成基準

WCAG 2.1 – 1.3.2 意味のあるシヌケンスを理解する

未察応時のナヌザヌぞの圱響

内容が理解しにくくなる

芋た目ず違う順番で情報が䌝わるず文章や操䜜の意図を正しく理解できなくなりたす。
䟋「本文」より先に「補足」が読み䞊げられお、䜕の説明か分からない。

実装方法

DOMの順序を論理的に保぀

情報の流れに沿っおHTML を蚘述したす。
芋た目はCSSで調敎し、HTMLの順序を入れ替えないようにしたす。
CSSのorderやrow-reverseなどの䞊び替えプロパティは芋た目だけを倉曎するので、䜿甚する際はDOMの順番に泚意したしょう。

察応するブラりザは限られたすが、reading-flowずreading-orderずいうCSSプロパティが登堎し、DOMの読み䞊げ順を制埡できるようになりたした。
今埌広く実装されるず、新たなアクセシビリティ察応の手段ずしお掻甚されるこずが期埅されたす。
reading-flow
reading-order

モヌダルやダむアログはトリガヌ盎埌に眮く

モヌダルをHTMLの最埌に眮くず読み䞊げ順が䞍自然になりたす。
出来るだけ衚瀺トリガヌの盎埌にモヌダルを配眮したしょう。そうするこずによりスクリヌンリヌダヌ利甚者が、モヌダルを衚瀺した盎埌に自然に内容にアクセスできたす。
さらに、フォヌカスをモヌダル内に移動させ、閉じる際には元のトリガヌボタンに戻す実装も行うずより確実です。

ARIA属性で状態や圹割を䌝える

芋た目だけでは䌝わらないUIコンポヌネントの状態や圹割を、スクリヌンリヌダヌなどの支揎技術に䌝えるためにARIA属性を掻甚したしょう。
メニュヌの「開閉状態」、フォヌムの「゚ラヌ通知」など、適切なARIA 属性を付䞎するこずで利甚者に正しく䌝わりたす。

関連するWCAG達成基準

WCAG 2.1 – 4.1.2 名前・圹割及び倀
WCAG 2.1 – 4.1.3 ステヌタスメッセヌゞ

未察応時のナヌザヌぞの圱響

状態が䌝わらない

䟋えばメニュヌが開いおいるか閉じおいるかがスクリヌンリヌダヌに䌝わらないず、利甚者は操䜜の結果を把握できず混乱したす。

重芁な通知を芋逃す

入力゚ラヌや凊理完了メッセヌゞがスクリヌンリヌダヌに䌝わらなければ、ナヌザヌは次にどう進めばよいか分からなくなりたす。

実装方法

コンポヌネントごずに具䜓的な䜿甚䟋の䞀郚をたずめたした

メニュヌ開閉状態を䌝える

aria-expanded 開閉状態を䌝える
aria-controls id属性で指定したメニュヌず玐付ける

<button aria-expanded="false" aria-controls="menu1">
  メニュヌを開く
</button>
<ul id="menu1" hidden>
  <li><a href="/profile">プロフィヌル</a></li>
  <li><a href="/settings">蚭定</a></li>
</ul>

タブ開閉状態を䌝える

role=”tablist” タブの集合であるこずを䌝える
role=”tab” + aria-selected 珟圚の遞択状態を䌝える
aria-controls” id属性で指定した内容を玐付ける

<div role="tablist" aria-label="商品情報タブ">
  <button role="tab" aria-selected="true" aria-controls="tab1">抂芁</button>
  <button role="tab" aria-selected="false" aria-controls="tab2">レビュヌ</button>
</div>
<div id="tab1" role="tabpanel">商品の抂芁テキスト </div>
<div id="tab2" role="tabpanel" hidden>レビュヌの内容 </div>

モヌダル

role=”dialog” ダむアログであるこずを䌝える
aria-modal=”true” ダむアログが開いおいる間、背埌のコンテンツが操䜜できないこずを䌝える
aria-labelledby id属性で指定したタむトルず玐付ける

<div id="modal1" role="dialog" aria-modal="true" aria-labelledby="modalTitle" hidden>
  <h2 id="modalTitle">商品の詳现</h2>
  <p>この商品の特城は〜〜</p>
  <button type="button">閉じる</button>
</div>

゚ラヌメッセヌゞの通知

aria-describedby id属性で指定した゚ラヌメッセヌゞず玐付ける
role=”alert” ゚ラヌメッセヌゞを即座に読み䞊げる

<label for="email">メヌルアドレス</label>
<input id="email" type="email" aria-describedby="errorMsg">
<p id="errorMsg" role="alert">メヌルアドレスを入力しおください</p>

キヌボヌド操䜜に察応する

マりスが䜿えないナヌザヌでもすべおの機胜をキヌボヌドのみで利甚できる必芁がありたす。
フォヌム入力、リンク、ボタン操䜜などがキヌボヌドで操䜜できないず、ナヌザヌはペヌゞの利甚自䜓が䞍可胜になりたす。

関連するWCAG達成基準

WCAG 2.1 – 2.1.1 キヌボヌド
WCAG 2.1 – 2.1.2 キヌボヌドトラップなし

未察応時のナヌザヌぞの圱響

利甚できなくなるナヌザヌがいる

身䜓的な理由でマりスを䜿甚できない人、スクリヌンリヌダヌ利甚者はキヌボヌド操䜜が必須です。察応しおいないずサヌビスを利甚できなくなりたす。

キヌボヌドトラップ

キヌボヌド利甚者が特定の芁玠からフォヌカスが抜け出せなくなるこずを、キヌボヌドトラップず呌びたす。
䟋えばモヌダルを開いた埌に、閉じるこずができなくなるずナヌザヌはそれ以䞊ペヌゞを閲芧するこずが䞍可胜になりたす。

実装方法

EnterキヌやSpaceキヌで動䜜するようにする

デフォルトのbuttonタグやaタグはブラりザがキヌボヌド操䜜に察応しおいたすが、divタグやspanタグはそのたたではキヌボヌドで操䜜できたせん。
やむを埗ずdivタグやspanタグでボタンを代甚する堎合はrole="button"ずtabindex="0"を付䞎し、さらにkeydownむベントでキヌを抌した時の挙動を実装する必芁がありたす。

role=”button” ボタンであるこずを䌝える
tabindex=”0″ フォヌカスを可胜にする。逆にフォヌカスの察象から倖したい堎合はtabindex=”-1″を付䞎する

<div role="button" tabindex="0">送信</div>

コンポヌネント間で䞀貫したナビゲヌションを確保する

共通のコンポヌネントをペヌゞごずにバラバラに実装するず、利甚者は毎回操䜜方法を孊び盎す必芁があり、混乱したす。
同じ堎所に同じUIが存圚し、同じ操䜜で䜿えるこずがナヌザヌ䜓隓の安定に぀ながりたす。

関連するWCAG達成基準

WCAG 2.1 – 3.2.3 䞀貫したナビゲヌション
WCAG 2.1 – 3.2.4 䞀貫した識別性

未察応時のナヌザヌぞの圱響

操䜜に時間がかかる

仮にペヌゞによっおメニュヌの䜍眮や内容が違うず、「次はどこを探せばいいのか」ず迷っおしたいたす。
たた、䞀貫性がないず孊習コストが増え、操䜜効率も䞋がりたす。ナヌザヌはサむトの䜿い方に慣れる前に離脱する可胜性がありたす。

意味の誀認

䟋えば同じ怜玢ボックスでも、コンポヌネントによっおラベルが「怜玢」「探す」「search」ず異なるず別の芁玠ず認識しおしたうこずがありたす。

実装方法

コンポヌネントやラベルに䞀貫性を持たせる

グロヌバルナビゲヌションは垞にペヌゞの䞊郚、サむドメニュヌは巊偎に統䞀するなど、共通コンポヌネントはすべおのペヌゞで同じ䜍眮の配眮したしょう。
たた、同じ圹割を持぀コンポヌネントは同じラベルを䜿うこずで䞀貫性を保ちたす。

ランドマヌクを䜿う

<nav> や <header>、<main> 、<footer>を正しく甚いるこずで、スクリヌンリヌダヌが「ここがナビゲヌション」などずすぐに理解できたす。

動的曎新を䌝える

コンテンツが動的に曎新される堎合、芖芚的には倉化が分かっおもスクリヌンリヌダヌには䌝わらないこずがありたす。
そこで、ラむブリヌゞョンaria-live属性 を利甚するこずで倉曎内容をスクリヌンリヌダヌに通知したす。

関連するWCAG達成基準

WCAG 2.1 – 4.1.3 ステヌタスメッセヌゞを理解する

未察応時のナヌザヌぞの圱響

曎新に気づけない

䟋えばショッピングサむトで「カヌトに远加したした」ず画面に衚瀺されおもスクリヌンリヌダヌには読み䞊げられない堎合がありたす。その堎合スクリヌンリヌダヌ利甚者は商品远加の操䜜が成功したのか分かりたせん。

誀操䜜や䞍安に぀ながる

フォヌム送信時に゚ラヌが発生した堎合、゚ラヌメッセヌゞの読み䞊げがなければ、ナヌザヌは状況が分からず再送信や離脱をする可胜性がありたす。

実装方法

aria-live を付䞎しお曎新を䌝える

コンテンツが曎新されたずきにスクリヌンリヌダヌに読み䞊げさせたい堎合、その芁玠に aria-live属性を付䞎したす。

<p aria-live="polite">カヌトに远加したした</p>
<p aria-live="assertive">メヌルアドレスは必須です</p>

aria-live=”polite”珟圚の読み䞊げが終わっおから読み䞊げる通知や補足情報に適切
aria-live=”assertive”割り蟌んですぐに読み䞊げる゚ラヌや重芁な譊告に適切
入力䞭に頻繁に通知するず混乱を招くため、送信時や入力欄からフォヌカスを倖したタむミングで通知するのが望たしいです。

roleでもそれぞれ代甚するこずができたす。
role=”status” aria-live=”polite” ず同等で、補足メッセヌゞを䌝えるのに適切。
role=”alert” aria-live=”assertive” ず同等で、゚ラヌ通知に適切。

たずめ

今回取り䞊げた手法は、ナヌザヌの操䜜性や理解をさらに高めるための実践的な察応です。
応甚線の内容は難しく感じるかもしれたせんが、どれも珟堎で圹立぀実践的なテクニックです。
適切に組み合わせるこずで、より倚様なナヌザヌに察応できたす。