UIXHERO
#998
アクセシビリティ・インクルーシブ
#998

ふぉーかすとらっぷ

フォーカストラップ (Focus Trap)

別名・表記:Focus Trapfocus-trapフォーカストラップキーボードトラップ

UIXHERO Definition

フォーカストラップとは、モーダルやドロワーを開いている間、Tabキーの移動範囲を前面UIの中に保つアクセシビリティ実装。

概要

ダイアログ(モーダル)やドロワーのようなオーバーレイUIを開いた際、Tabキーによるフォーカス移動が一巡すると、背面に隠れているメイン画面のリンクやボタンへフォーカスが「漏れて」しまう問題が発生する。これを防ぐため、モーダル内の最後の要素から次のTabキーで先頭の要素へ戻るように制御する技術。

フォーカストラップは、画面を見て操作するユーザーのためだけではなく、キーボード操作やスクリーンリーダー利用時に「いま操作できる範囲」を明確にするための仕組みでもある。

UXでの活用

  • モーダルへの集中: ユーザーの操作文脈を現在のモーダル内に完全に固定し、誤操作による状態の不整合を防ぐ。
  • スクリーンリーダー対応: 目が見えないユーザーにとっても、現在操作できる範囲を明示し、予期せぬ画面の移動によるパニックを防止する。
  • キーボード操作の予測可能性: Tab / Shift+Tab の移動先をモーダル内に保ち、背面のリンクへ突然移動しないようにする。

誤用・混乱

フォーカストラップは「閉じ込めること」だけが目的ではない。閉じる手段、初期フォーカス、閉じた後のフォーカス復帰まで揃って初めて安全に機能する。 Escキーや閉じるボタンがなく抜け出せない状態は、アクセシビリティを高めるフォーカストラップではなく、ユーザーを閉じ込めるキーボードトラップになる。

💡 使いどころ

Dialog(モーダル)、AlertDialog、Sheet(ドロワー)など、背面画面を一時的に操作対象外にするUIを実装する時。

⚠️ 注意点・誤用

閉じ方、初期フォーカス、閉じた後のフォーカス復帰を用意せずに閉じ込めると、悪い意味でのキーボードトラップになる。

具体例

  • モーダル内の最後のボタンでTabを押すと、先頭の閉じるボタンへ戻る
  • Shift+Tabで先頭から末尾へ戻り、背面ページには移動しない
  • Escキーや閉じるボタンで抜けられ、閉じた後は元の起点へフォーカスが戻る
作成: 2026年2月28日

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

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

UIXHEROに頼めることを見る

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

この記事をシェアする
シェア: