1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:Next.js × TypeScript × Tailwindで始めるアクセシビリティ設計をまとめてみた

Last updated at Posted at 2025-04-26

はじめに

本記事では、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サイト・アプリケーションを作るとできます

今後もアクセシビリティの向上を意識しながら、開発を進めていきます...!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?