はじめに
本記事では、Next.js、TypeScript、Tailwind CSSを組み合わせたフロントエンド開発において、アクセシビリティ(A11y)に配慮した設計方法についてまとめます。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
誰もが使いやすいUI/UXを目指す上で、基本的な考え方と具体的な実装ポイントを整理しました。
書こうと思ったきっかけ
現在、Next.jsとTypeScript、Tailwind CSSを技術スタックとして採用しているプロジェクトにおいて、画面のUI/UXをアクセシビリティを意識した設計にしたいと考えました。
基本に立ち返り、開発初期から正しい知識をもとに設計するため、自身の整理も兼ねて記事にまとめました。
Next.js × TypeScript × Tailwindでやるべきアクセシビリティ設計
1. セマンティックなHTMLをしっかり使う
-
div
の乱用を適切に避ける - 例えば、ボタンには正しく
<button>
タグを使う - セクションごとに
<main>
,<header>
,<section>
,<article>
,<footer>
などを適切に利用する
2. Tailwindでフォーカススタイルをしっかりつける
-
focus:outline-none
だけだと、「どこにフォーカスしているか」分からないリスクがある - 例:
<button className="focus:outline-none focus:ring-2 focus:ring-blue-500">
送信
</button>
3. 色だけに依存しない設計
- Tailwindにはテキストスタイルのクラスも豊富
- 例:エラーメッセージは赤色マーク(色)、アイコン(ビジュアル)、文字の組み合わせで伝える
<div className="flex items-center text-red-600">
<svg className="w-5 h-5 mr-2" aria-hidden="true">...</svg>
<span>入力に誤りがあります</span>
</div>
4. スクリーンリーダー対応
- 隠したい情報にTailwindの
sr-only
クラスを使う
<span className="sr-only">ログインボタン</span>
- これで「画面には見えないけどスクリーンリーダーには読まれる」状態を作れる
5. 自動モーション制御
- Tailwindでは
motion-safe:
やmotion-reduce:
を使って簡単にアニメーション制御が可能
<div className="transition motion-reduce:transition-none">
ここにアニメーション
</div>
まとめ:この技術スタックで意識すべきこと
項目 | ポイント |
---|---|
HTML設計 | セマンティックなタグを使う |
キーボード対応 | フォーカス可能+フォーカススタイルを設ける |
カラーコントラスト | 明確に見やすい色を選ぶ(Tailwindのカラー設定を調整してもOK) |
スクリーンリーダー対応 |
aria 属性、sr-only クラスを適切に使う |
モーション制御 |
motion-reduce で優しい動きに |
これらの基本を押さえることで、より多くの人にとって使いやすいWebサイト・アプリケーションを作るとできます
今後もアクセシビリティの向上を意識しながら、開発を進めていきます...!