Why Semantics Matter

ブラウザと支援技術に「意味」を伝える唯一の手段。CSSは見た目しか変えない。

Screen Reader
画面上のテキストや構造を音声で読み上げる支援技術。NVDA, JAWS, VoiceOverなど。
Semantic HTML
意味のあるタグを使うこと。<div>ではなく<button>、<span>ではなく<h1>など。

Button vs Div

❌ Bad (Div Soup)

<div class="btn" onclick="submit()">
Submit
</div>

- キーボードフォーカスが当たらない(Tabキーで飛ばされる)。
- Screen Readerはこれをただの「グループ」と読む。「ボタン」とは認識しない。
- Enterキー/Spaceキーで実行できない。

✅ Good (Semantic)

<button type="button" class="btn" onClick={submit}>
Submit
</button>

- デフォルトでフォーカス可能。
- 「ボタン」として読み上げられる。
- キーボードイベントも自動処理。