Chrome は、Interop 2024 のアクセシビリティ重点分野のテストで 88.2% を達成して年をスタートしました。2024 年 6 月に、Google はテストの 100% 合格を初めて達成しました。この記事では、この目標を達成するために行われた作業について説明します。
ユーザー補助の重点分野には何が含まれますか?
Interop 2024 のすべての重点分野と同様に、ユーザー補助の分野は、選択した機能に対する一連のウェブ プラットフォーム テストによって定義されます。Interop 2024 のテストは、すべてのブラウザがアクセス可能な名前と計算されたロールを同じ方法で作成することを目的としています。
ユーザー補助機能用の名前は、HTML 要素の目的や意図を伝えます。これにより、ユーザーは要素の用途と操作方法を理解できます。accname 仕様では、ブラウザが要素のこのユーザー補助名文字列を作成する方法を定義します。ARIA 仕様には、この名前の計算方法のチュートリアルが含まれています。
要素の計算されたロールは、ブラウザ エンジンによって計算された要素のロールを表す文字列です。これは主にデベロッパー ツールで使用され、たとえば WebDriver 関数 getComputedRole
で相互運用性テストを可能にします。
Chrome チームはどのような対応をとったのですか?
完了する必要のある大きな作業は 2 つあります。ロールのマッピングを汎用ロールに変更することと、非推奨のロールを取り除くことです。さらに、小さな修正と実装する機能がいくつかありました。Chrome チームが完了した以下の作業に加えて、ユーザー補助の重点分野について、Microsoft が Chromium に commit した修正についても協力しました。
特定のロールのマッピングを汎用ロールに変更する
マッピングを汎用ロールに変更すると、要素からユーザー補助セマンティクスが削除されます。汎用要素はユーザー補助ツリーに値を提供しないため、ツリーには含まれません。これにより、パフォーマンスが向上し、ツリーが小さくなり、支援技術で解析しやすくなります。次のロールは汎用ロールに変更されます。
<main>
またはセクション分割コンテンツ要素(<article>
、<aside>
、<nav>
、<section>
)にスコープ設定された<header>
。<main>
またはセクション分割コンテンツ要素(<article>
、<aside>
、<nav>
、<section>
)にスコープ設定された<footer>
。- セクション分割コンテンツ要素(
<article>
、<aside>
、<nav>
、<section>
)内に、ユーザー補助機能向けの名前のない<aside>
があります。 - ユーザー補助機能向けの名前のない
<section>
。 - 孤立したリストアイテム(
<li>
)。
最初の 4 つの箇条書きの場合、通常、これらの要素はランドマーク ロールにマッピングされます。ページにランドマークが多すぎると、ナビゲーションが難しくなることがあります。この変更により、重複するランドマークが減り、ページのナビゲーションが容易になります。最後の項目は通常、ページ デベロッパーによる間違いを示します。リストアイテムは常にリスト内に存在する必要があるため、孤立したアイテムには汎用ロールが付与されます。
非推奨のロールを取り消す
directory
ロールは非推奨となり、リストロールにマッピングされました。ARIA 1.2 では、directory
ロールが非推奨になりました。仕様では、これは list
ロールと同等であり、デベロッパーは list
を使用する必要があると説明されています。directory
を使用する古いコンテンツのセマンティクスを維持するため、Chrome では list
にマッピングされるようになりました。
その他の修正
gridcell
ロールのサポートが追加されました。この新しいロールにより、gridcell
と cell
の区別が明確になります。gridcell
は、cell
とは異なり、フォーカス、編集、選択が可能です。
フォールバック ロールの計算を追加しました。以前は、フォールバック ロールがチェックされていなかったため、最初のロールが有効でない場合、別のロールが使用されていましたが、これは仕様に記載されている内容ではありません。
一部のロールは、正しいコンテキストにある場合にのみ有効です。次のように、ロールの無効な使用をチェックする機能を追加しました。
row
ロールはtable
、grid
、rowgroup
、またはtreegrid
内に配置する必要があります。rowgroup
ロールはtable
、grid
、tree
、またはtreegrid
内に配置する必要があります。listitem
ロールはlist
内に配置する必要があります。
ロールが無効な場合、Chrome は HTML 要素などの他の情報を使用して代替ロールを計算します。
thead
と tfooter
は、ユーザー補助ツリーに含まれるものとしてマークされています。以前は、無視としてマークされていましたが、ツリーには引き続き含まれていました。表のヘッダーと表のフッターを支援技術で解析できるようになりました。
これらの変更はほとんどのデベロッパーには見えませんが、すべてのブラウザが同じ方法で動作するように取り組んでいるため、さまざまなロールがどこでも同じように公開されます。