ロービングタブインデックスを採用したUIの実装コストを下げるfocusgroup属性
エグゼクティブ・フェロー 木達Google ChromeやMicrosoft EdgeをはじめとするChromiumベースのブラウザで実験的に実装されたfocusgroup属性について、フィードバックを求める記事がChrome for DevelopersとMicrosoft Edge Blogの両サイトに時を同じくして掲載されました。
- デベロッパー フィードバックのリクエスト: フォーカス グループ | Blog | Chrome for Developers
- Making keyboard navigation effortless - Microsoft Edge Blog
focusgroup属性が何を目的とした、どのような属性かは、仕様が取りまとめられているFocusgroup (Explainer) | Open UIに詳しくまとめられています。
フォーカス管理の手法として、ロービングタブインデックス(Roving tabindex)と呼ばれるパターンがあります。同列に並んだ複数のインタラクティブ要素のうち、選択中の要素にtabindex="0"、それ以外にはtabindex="-1"を指定するものです。加えて、一連の要素を矢印キーや十字キーで遷移できる(タブキーでその遷移から抜ける)ようにすることで、UIの利便性を高めることができます。
従来、そのようなUIを実装するには、JavaScriptの記述や、同等の機能を提供するライブラリの導入が不可欠でした。focusgroup属性を使用することで、ロービングタブインデックスを採用したUIをJavaScriptに頼ることなく実現でき、その実装コストが下がることが期待できます。
単に実装コストの低減のみならず、表示パフォーマンスの向上、そしてもちろんアクセシビリティの確保のしやすさの向上が期待できるでしょう。キーボードのみでUIを操作可能とすることは、Webアクセシビリティにおいて基本的なルールであり、focusgroup属性は既存のARIA Authoring Practices Guide(APG)と整合するよう配慮されています。
興味のある方はぜひ、Chromiumベースのブラウザでabout://flags/#enable-experimental-web-platform-featuresにアクセスのうえ当該機能を有効化していただき、Focusgroup: Interactive Demosに用意されたパターン/シナリオで実際の動作を確認していただければと思います。