概要
Next.js
でアクセシビリティ対応を行うことは、ユーザー全員にとって使いやすいウェブサイトを作るために欠かせません。特にスクリーンリーダー対応やナビゲーションの最適化、フォーム要素のラベル設定などの基本的な実装が求められます。この記事では、Next.js
でのアクセシビリティ向上に役立つポイントとツールを紹介します。
ページ遷移のアクセシビリティ対応
Next.js
はクライアントサイドでのページ遷移をサポートしており、デフォルトで「ルートアナウンス機能」を備えています。これにより、画面リーダーを使用しているユーザーにもページの変更がアナウンスされます。特に<a>
タグを使ったナビゲーションでは、ページタイトルや<h1>
要素が正しく読み上げられるため、各ページには固有のタイトルを設定することが重要です。
クライアントサイドの遷移時にもスクリーンリーダー対応を強化するため、Next.js
にデフォルトで含まれているこのルートアナウンサー機能を活用しましょう。
フォームのアクセシビリティ
フォームの実装時には、適切にラベルを設定することが重要です。例えば、<label>
タグを使って入力フィールドとラベルを関連付けることで、スクリーンリーダーに対応できます。aria-required
やaria-labelledby
属性を活用することで、フォームの必須項目やグループラベルを支援技術に適切に伝えられます。特に、placeholder
属性をラベル代わりに使うのは避け、視覚的にもスクリーンリーダー的にも分かりやすいラベルを設定しましょう。
<label for="name">お名前</label>
<input type="text" id="name" required aria-required="true">
ESLintでのアクセシビリティチェック
Next.js
には、eslint-plugin-jsx-a11y
がデフォルトで組み込まれており、アクセシビリティの問題を早期に検出することができます。例えば、<img>
タグにalt
属性がない場合や、aria-*
属性の不適切な使用を警告してくれるため、開発中にこれらの問題を解消しやすくなります。これを利用して、コードレベルでアクセシビリティを改善しましょう。
npm install eslint-plugin-jsx-a11y --save-dev
フォーカスインジケーターの確保
キーボードでのナビゲーションを支援するためには、フォーカスインジケーターを見えやすく設定することが重要です。outline: none;
などでフォーカスインジケーターを消してしまうと、キーボードユーザーはどの要素がフォーカスされているのか分からなくなります。必ずデフォルトのフォーカスインジケーターを保持し、必要に応じてカスタマイズするようにしましょう。
button:focus {
outline: 2px solid blue;
}
結論
Next.js
でアクセシビリティ対応を強化するには、適切なツールや機能を活用し、フォームやナビゲーションのラベル設定、フォーカスインジケーターなどの基本要素に注意を払うことが重要です。eslint-plugin-jsx-a11y
やルートアナウンサーを活用し、より多くのユーザーに使いやすいウェブサイトを提供しましょう。