UIXHERO

フォーカスインジケーター(Focus Visible)|アクセシビリティ

キーボード操作時の「現在地」を視覚化するフォーカスリング。美観を損なわずに実装するデザイン手法と「outline: none」の罠。

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

この技術・考え方で達成できること

  • 現在地の視覚化: マウスを使わずに画面を操作する際、自分が今どこにいるのかが常にハッキリとわかる
  • 操作の予測可能性: 「次にEnterキーを押せば、どのボタンが実行されるか」を事前に確認できる
  • キーボードトラップの回避: 画面内でフォーカスを見失うことによる、離脱や操作のフリーズを防ぐ

: この対応は、マウスを操作することが困難なユーザー(運動障害)だけでなく、「愛用していたマウスが突然壊れて、予備が見つからずにキーボード操作を余儀なくされている人(状況的な障害)」がECサイトで無事に決済を完了できるかどうかを決定づけます。


なぜ対応が難しいか(または後回しにされるか)

ブラウザのフォーカスリング(よくある青い太枠や点線の四角形)を、デザイナーやステークホルダーが「洗練されたUIデザインに合わず、ダサい・ノイズになる」と嫌うことが最大の原因です。

その結果、「クリックした時に青い枠が出るのを消してほしい」という一言で、エンジニアが悪気なくCSSに outline: none;box-shadow: none; を書いてしまい、現在地を完全に消滅させてしまうアンチパターンが世界中で横行しています。


デザイン時に配慮すべき障壁(バリア)

フォーカス表現の設計において、以下のミスマッチ(障壁)を取り除く必要があります。

  1. 恒常的な障害(運動障害・上肢障害): 関節リウマチや麻痺などにより、マウスの細かいポインティングができず、主にキーボードの「Tabキー」を使って画面内のリンクを飛び飛びに移動している状態。
  2. 状況的な障害(デバイス非依存): テスターやパワーユーザーで、マウスを持たずにショートカットキーやTab移動だけでフォーム入力を素早く終わらせたい状態。

これらのにおいて、「フォーカス(現在地)が見えない=画面が見えないのと同じ(完全な操作不能)」という決定的なバリアを生み出します。


解決パターン(Before/After)

❌ Before: outline: none; による現在地の消失

  • マウスクリック時の枠線を消すため、すべてのインタラクティブ要素(<button>, <a>, <input>)に一律で outline: none; を指定している。

なぜ問題か: 代替の視覚的フォーカスを定義せずに消すことが最大の問題です(消すこと自体が常に悪というわけではありません)。キーボードのTabキーでリンクを展開しても、画面上の見た目が一切変わらず、自分がどこを選択しているのか全くわからなくなります。

✅ After: デザインシステムに適したフォーカス状態の定義

  • CSSの :focus-visible 疑似クラス(キーボード操作時にだけフォーカスを見せやすくするCSS)を使用し、マウスクリック時(タップ時)は枠を出さず、キーボードでフォーカスした時だけ、十分なを持った美しいフォーカスの装飾(太めの box-shadow などを2重に重ねる等)を表示する。

なぜ改善されるか: 「ダサい枠は出したくない」というデザイナーの要望を満たしつつ、キーボード操作で画面を巡回するユーザーには、自分がいま操作している位置をスタイリッシュに、かつ力強くガイドできるようになります。


見た目と機能性の両立(デザイナー × エンジニア)

❌ クリック時のノイズ vs キーボードでの迷子

デザイナーの視点: 「ボタンをクリックするたびに青い枠が毎回チカチカ出るのは邪魔で不格好です。消してください」 エンジニアの視点: 「フォーカスを完全に消してしまうと、キーボードアクセス時に重大な問題(違反)になります」

なぜ衝突するか: かつてのブラウザの実装では、「マウスクリック」と「Tabキーによるフォーカス」が区別されておらず、単一の :focus で制御されていたため、どちらかの体験を犠牲にする必要があったからです。

どう合意するか: 現代のCSS標準である :focus-visible の強力さを共有します。 「クリックした時にはフォーカス枠は出ず、Tabキーで移動した時だけフォーカス枠が出るように実装できますよ」とエンジニアから提案します。 そしてデザイナーは、ただ「デフォルトの青枠を使う」のではなく、「自分のブランドのカラートークンに合った、美しくて目立つフォーカス専用のスタイル(例: 外側に2pxの透明な隙間を空けて、3pxのプライマリーカラーのシャドウを展開する)」をState(状態)の1つとしてで定義(トークン化)し、合意します。


実践チェックリスト

最低ライン(Must)

[ ] キーボード(Tabキー)でした際、すべての機能する要素(リンク、ボタン、フォーム入力欄など)で、はっきりと視覚的な変更(フォーカスインジケーター)が表示される [ ] フォーカスを完全に無効化する記述(:focus { outline: none; } など)を、代替の視覚的フォーカス表現を用意せずに絶対に使用していない

理想ライン(Better)

[ ] CSSの :focus-visible を使用し、マウス・タッチ操作の邪魔をせずにキーボードユーザーにのみフォーカスを表示している [ ] フォーカスインジケーター(枠線や<span class="no-glossary">色)が、隣接する<span class="no-glossary">背景色に対して 3:1 以上のコントラスト比を持っている(フォーカスインジケーター自体も背景に対して見える必要があるため。WCAG 2.2 フォーカス・アピアランス要件) [ ] :focus-visible 時のスタイルを汎用的なCSS変数(Custom Properties)として定義し、すべてのコンポーネントで統一されたフォーカス体験を提供している


まとめ

  • この記事の本質: フォーカスインジケーターは「消す邪魔者」ではなく、デザインシステムの一部として美しく「設計すべき状態(State)」である。
  • 誰のどんな課題を解決するか: マウスが使えないユーザーやパワーユーザーの「いま自分がどこにいるのかわからない迷子状態」。
  • 実務での判断軸: 「マウスを横にどけて、Tabキーだけでこのページの下部にあるボタンを押せますか?」
  • 次に学ぶべき知識: キーボードナビゲーション(より良い移動順序との防止)

目的別のおすすめ:

この原則を実装で見る

この原則が実装でどう形になるかを、GUNJO の部品で確かめられます。

更新のお知らせ

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

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

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

UIXHEROに頼めることを見る

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

記事をシェア

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

最終更新: 2026年8月27日

この記事を書いた人

Dengen Yosho(DGYS)

Dengen Yosho(DGYS)

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

あわせて読みたい

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

色彩とコントラスト比(Color & Contrast)|アクセシビリティ

色覚多様性に配慮し、誰にでも見やすい配色を。WCAG基準と、色だけに頼らない情報伝達のベストプラクティス。

2026年3月22日
6

キーボードナビゲーション(Keyboard Navigation)|アクセシビリティ

マウスなしで論理的に移動できるUIの実装。DOMの順序、適切なフォーカス管理、そして視覚的な順序とのギャップを埋める設計手法。

2026年3月22日
7

タイポグラフィと余白(Typography & Spacing)|アクセシビリティ

文字の可読性と、誤クリックを防ぐための余白設計。ロービジョンや認知特性、運動障害のあるユーザーにとって使いやすいUI表現の基礎。

2026年3月22日
6

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

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

リクエストを送る