ARIA (Accessible Rich Internet Applications) attributes are an HTML extension specification that provides assistive information to help users who rely on assistive technologies correctly perceive and interact with web content.
ARIA (Accessible Rich Internet Applications) は、Webページやアプリケーションのアクセシビリティを向上させるための技術仕様です。特に、支援技術(スクリーンリーダーなど)を利用するユーザーが、動的コンテンツやインタラクティブな要素を適切に認識し、操作できるようにするために設計されています。
通常のHTMLには、リンク (<a>
)、ボタン (<button>
)、フォーム (<input>
、<select>
など) などのアクセシブルな要素が備わっています。しかし、JavaScriptやCSSを駆使したカスタムコンポーネントや、動的なコンテンツの変化を適切に通知できる仕組みは不十分です。
ARIAを利用することで、以下のような場面でアクセシビリティを向上させることができます。
ARIAは大きく分けて以下の3つの要素で構成されます。
ARIAロールは、HTML要素に追加して、特定の機能や目的をスクリーンリーダーに伝えるための属性です。
代表的なARIAロール
role="button"
div
などをボタンとして扱う場合に使用。role="alert"
role="dialog"
role="navigation"
role="tooltip"
ロールの使用例
HTML
<div role="button" tabindex="0" onclick="alert('クリックされました')">
カスタムボタン
</div>
ARIAプロパティは、要素の追加情報を提供するために使われます。
代表的なARIAプロパティ
aria-labelledby
aria-describedby
aria-hidden
true
/ false
)。aria-live
polite
, assertive
など)。HTML
<p id="description">このボタンをクリックすると、メッセージが表示されます。</p>
<button aria-describedby="description">クリック</button>
ARIAステートは、要素の現在の状態を示します。
代表的なARIAステート
aria-checked
true
, false
, mixed
)。aria-expanded
true
, false
)。aria-disabled
true
, false
)。aria-selected
true
, false
)。ステートの使用例
HTML
<button aria-expanded="false" onclick="toggleMenu(this)">メニュー</button>
<div id="menu" hidden>
<ul>
<li>アイテム1</li>
<li>アイテム2</li>
</ul>
</div>
<script>
function toggleMenu(button) {
const expanded = button.getAttribute('aria-expanded') === 'true';
button.setAttribute('aria-expanded', !expanded);
document.getElementById('menu').hidden = expanded;
}
</script>
<button>
は role="button"
より優先する。role="alert"
は、動的な警告メッセージに適用する。role="heading"
を <h1>
に適用するのは冗長。tabindex
を使い、キーボード操作を考慮する。ARIAは、支援技術ユーザーにとってWebの利用体験を向上させる強力なツールです。しかし、適切に実装しないと逆に使いづらくなることもあるため、ネイティブHTMLの特性を活かしつつ、必要に応じてARIAを追加するのがベストプラクティスです。