UIXHERO

アクセシビリティ実装|エンジニアリング

すべてのユーザーに同じ情報と機能を届ける。特別な対応ではなく、HTMLとWebの標準仕様を守り抜く「コードの品質」の最前線。

2026年3月22日
更新: 2026年8月27日
6
by Dengen Yosho(DGYS)

この技術でできること

  • スクリーンリーダー(音声読み上げソフト)を使う視覚障害者でも、意味を理解して迷わず操作できるUIを提供できる
  • マウスを使わずキーボード(Tabキー等)だけでも、すべての機能(モーダル、ドロップダウン含む)にアクセスできるようになる
  • クローラー(Googleなどの検索エンジン)がページ内容を正確に解析でき、結果としてSEOも向上する

: トグルスイッチをデザインした時、「見た目だけスイッチに似せた div タグとCSS」で実装すると、スクリーンリーダーにはただの「文字がない箱」と認識されます。エンジニアが正しい button 要素を使い、aria-pressed="true/false" などの属性を適切に実装(セマンティックHTMLとARの活用)することで、マシンはそれが「今はONになっている切り替えボタン」だと正しくユーザーに読み上げることができます。


なぜ難しいか

ブラウザが「間違った(に準拠していない)コード」を書いても、見た目上はなんとなく動いて表示してしまうからです。

エンジニアが <div> タグにJavaScriptでクリック判定とカーソル変更スタイル(cursor: pointer)をあてれば、見た目は完全に「ボタン」になります。健常なユーザーも普通にクリックできます。しかし、それは「見えている人」や「マウスを使える人」だけの話であり、目に見えない「システム側からの解釈」は完全に欠落しています。表面的な見た目を急いで再現することに囚われると、構造の品質(セマンティクス)が犠牲になります。


実装でUXに効くポイント

1. セマンティックHTML(意味のある構造のマークアップ)

見出しには h1 h2、区切りには sectionnav、ボタンは button と、役割に合ったタグを厳密に使います。

  • たったこれだけで、多くのアクセシビリティツールは自動的にフォーカス位置を調整し、意味をユーザーに伝えてくれます。

2. フォーカス制御(キーボード操作の担保)

Tabキーを押してフォーカス(選択状態)が移動した際、「いまどこにいるか」の輪郭線(アウトライン)を消さずにデザインに馴染ませて表示します。

  • さらに「モーダルを開いたらフォーカスをモーダル内に閉じ込める」「閉じたら元のボタンにフォーカスを戻す」といった、キーボードユーザーが迷子にならないための見えない動線設計(等)が必要です。

3. WAI-ARIAによる「状態」の翻訳

セマンティックHTMLだけでは表現しきれない複雑な(カルーセルや、開閉するカスタムセレクトボックス等)に対して、「これは今開いている(aria-expanded)」、「これは必須項目だ(aria-required)」という情報を付与する属性群(HTMLだけで足りない状態情報を機械に伝えるもの)です。

  • これにより、コードとスクリーンリーダーの間に橋が架かり、複雑な非同期UIの現在状態が音で伝わります。

やりすぎ / 足りなすぎ(トレードオフ)

状況例: ARIA属性の過剰な付与

Before(悪い例): 「アクセシビリティを完璧にしたい」と考えたエンジニアが、すべての div 要素に role="button"aria-label="クリックしてください" などを過剰に書き込む。 結果: スクリーンリーダーの読み上げ情報がノイズだらけになり(「クリックしてくださいボタン、クリックしてくださいボタン…」)、本当に伝えたい機能が埋もれてかえって使えなくなる(:Webアクセシビリティの国際的なガイドライン の第一ルール「No ARIA is better than bad ARIA」違反)。

After(現実的な落とし所): 無理に装飾的なカスタムUIをARIAで補強するのではなく、まずはHTML標準タグ(ネイティブの <button><dialog>)を使って書き直す。

代替手段への配慮: デザイン側も、「どうしても標準タグで実現できない特殊な見た目のUI」をあきらめ、システムが自然に持つコンポーネントの挙動にデザインを歩み寄らせる。


運用で崩れるポイントと衝突(デザイナー × エンジニア)

❌ 「フォーカスの青い枠線がデザインに合わないから、CSSで全部消して」

デザイナーの視点: ボタンをクリックした後に残る太い輪郭線(デフォルトの outline)が、ブランドの美しい世界観を壊している。フォーカス枠は全部 outline: none で隠すべきだ。(品質=ビジュアルの美しさとノイズのなさ) エンジニアの視点: デフォルトの輪郭線を消すと、キーボードで操作しているユーザーが「自分が今どこを選択しているか」完全に失い、プロダクトが操作不能になる。消すのは明らかなアクセシビリティ違反だ。(品質=あらゆるユーザーへの機能到達性)

なぜ衝突するか(品質の定義差): デザイナーは「マウスやタッチ前提の視覚面」を優先し、エンジニア(意識の高いエンジニア)は「キーボードユーザーの生存線」を守ろうとするためです。

どう合意するか:

  • フォーカスリングを「単に消す」のではなく「ブランドカラーに合わせた美しい見せ方のフォーカス(:focus-visible 等の活用)」をシステムデザインとして定義し直す。
  • デザイナー自身がTabキーだけでサイトを巡回し、フォーカス状態がないことの絶望感を体験する。

実践チェックリスト

最低ライン(Must)

[ ] デザイン上で「キーボードフォーカスされている状態(Focus表示)」のスタイルを定義している [ ] 意味のあるボタンやリンクを、見た目重視のために不適切なHTMLタグ(div 等)で実装させていない [ ] フォームの入力エラー等が、色(「赤くなります」等)だけでなくテキストでも伝わるよう設計している

理想ライン(Better)

[ ] 「スクリーンリーダーでこのUIをどう読み上げるべきか(aria-label)」をFigma等に申し送りしている [ ] 複雑なオリジナルUIを作る場合、最初からキーボードでの操作手順(Tab移動や矢印キーの挙動)を設計に含めている


関連技術

前提となる技術

次に学ぶ技術

  • テスト戦略 — アクセシビリティは人力だけでなく、多くの部分をLighthouse等の自動テストで検知・保証できる

まとめ

  • この技術の本質: 視覚情報だけに依存せず、機械(ブラウザ・支援技術)を通して情報の意味を正しく伝達する構造
  • UXへの影響: 障害の有無に関わらず、あらゆる環境(屋外の眩しい光、通信制限、音声環境等)での快適な体験を担保する
  • 実務での判断軸: 「Figmaで作ったこの美しいUIは、画面を見ずにキーボードのTabキーと音声だけで操作できるか?」
  • 次に学ぶべき技術: テスト戦略(この品質をどうやって落ちないように仕組み化するかを学ぶ)

目的別のおすすめ:

更新のお知らせ

サイトに載せていない実例や、新しい記事のお知らせはこちらで出しています。

読んだ内容を、自分の画面に当てるとき

UIXHEROは、記事を書くほかに、画面の検品・判定、デザインシステムの構築、実装と改善の伴走を受けています。何を頼めばいいか決まっていない段階の相談も、同じ窓口で受けます。

UIXHEROに頼めることを見る

※ 記事の内容についての質問や、書いてほしいテーマの要望も同じ窓口で受けています

記事をシェア

メールでお知らせを受け取る

最終更新: 2026年8月27日

この記事を書いた人

Dengen Yosho(DGYS)

Dengen Yosho(DGYS)

UI/UXデザイナー兼デザインエンジニア デザイン歴25年以上 情報設計〜UIデザイン〜React/TypeScriptによる実装までを一気通貫で担当 大手企業のDXプロジェクトや決済アプリ領域で、デザインリードとして改善と構築を経験 現在はフリーランスとして、プロダクトのUI/UX改善とデザインシステム構築を支援 長年の実務の中で感じてきたのは、 「良いUI」はセンスではなく、再現可能な判断の積み重ねであるということ UIXHEROは、 心理学や行動科学の知見を、現場で使える設計言語に翻訳するための場所 関心領域は「ユーザーの行動が変わるUI」 人の認知・注意・意思決定の構造を理解し、 “なぜそのUIが機能するのか”を言語化することを目指している

あわせて読みたい

この記事に関連する記事をご紹介します

CI/CDとデプロイ|エンジニアリング

スピードは品質。手作業のリスクを排除し、デザインの変更や新機能を安全かつ最速で本番環境に届ける自動化の仕組み。

2026年3月22日
7

パフォーマンス最適化|エンジニアリング

デジタルプロダクトにおいて速さはUXの中心。遅延読み込み、キャッシュ、Core Web Vitalsを理解する。

2026年3月22日
6

セキュリティと認証|エンジニアリング

無防備なシステムは一瞬で信頼を失う。「守り」をUXの障害にせず、ユーザーに安心を提供する実装と設計。

2026年3月22日
6

もっと深く知りたいですか?

ここに掲載されていないトピックについても、リクエストがあれば解説記事を追加します。 わかりにくい点や、具体的な事例について知りたいことがあれば教えてください。

リクエストを送る