アクセシビリティチェッカー
チェッカーはエディター内のコンテンツを読み取り、スクリーンリーダーで使う場合やロービジョンの場合に使いにくくなる点を報告します。組み込みの機能でライセンスに含まれており、有料のアドオンではありません。エディター 2.6.12 の時点で 18 のルールを適用し、そのほとんどにはワンクリックの修正があります。修正ではマークアップを直し、文言は作成者が入力します。
チェックするのはエディターではなくコンテンツです。キーボードやスクリーンリーダーのユーザーに対してエディター自体がどう動作するかについては、アクセシビリティ(WCAG 2.2 AA)を参照してください。
使い方
ツールバーのボタンを押すと、見つかった問題の一覧を表示するパネルが開きます。問題を選ぶと、文書内のその箇所が強調表示されます。エラーは、誰かにとってコンテンツが使えなくなるもの、警告は使いにくくなるものです。
// The checker is a plugin; it loads with all_plugins.js.
var editor = new RichTextEditor("#div_editor");
editor.accessibilityChecker.open(); // show the panel
editor.accessibilityChecker.toggle(); // show or hide it
editor.accessibilityChecker.close();
// Run it yourself - for example before saving - and read the result.
var result = editor.accessibilityChecker.run();
result.issues.forEach(function (issue) {
console.log(issue.code, issue.severity, issue.message, issue.path);
});
// Block a save while errors remain, and let warnings through.
function hasBlockingIssues() {
return editor.accessibilityChecker.run().issues.some(function (i) {
return i.severity === "error";
});
}各問題には、下の表にある code、error または warning の severity、作成者向けに書かれた message、要素を特定する path が含まれます。
画像、リンク、色、言語
| ルール | レベル | 検出するもの | ワンクリックの修正 |
|---|---|---|---|
image-missing-alt | エラー | 代替テキストのない画像。スクリーンリーダーは「画像」としか読み上げません。 | 説明を入力すると、alt に書き込まれます。 |
image-alt-filename | エラー | ファイル名(IMG_4021.jpg)になっている代替テキスト。何も説明していません。 | 実際の説明を入力します。 |
image-alt-too-long | 警告 | 150 文字を超える代替テキスト。聞くのが負担になります。 | より短い説明を入力します。 |
link-empty | エラー | テキストのないリンク。「リンク」としか読み上げられません。 | リンクのテキストを追加します。リンクがアイコンの場合は aria-label を追加します。 |
link-ambiguous-text | 警告 | 「Click here」「read more」など。スクリーンリーダーのリンク一覧では役に立ちません。 | —(テキストは自分で書き直します) |
link-adjacent-duplicate | 警告 | 同じリンク先を指すテキストのリンクの隣にある画像のリンク。2 回読み上げられます。 | 1 つのリンクにまとめます。 |
contrast-insufficient | エラー | WCAG AA のコントラスト比(本文は 4.5:1、大きな文字は 3:1)を下回るテキスト。 | —(別の色を選びます) |
duplicate-id | エラー | 同じ id を共有する 2 つの要素。その id を指すラベルは、すべて最初の要素に解決されます。 | —(どちらかの id を変更します) |
language-of-parts | 警告 | lang 属性のない、別の文字体系で書かれたテキストのまとまり。誤った音声で読み上げられます。 | 選んだ言語でそのまとまりをマークします。 |
見出しと構造
| ルール | レベル | 検出するもの | ワンクリックの修正 |
|---|---|---|---|
heading-empty | 警告 | テキストのない見出し。それでも文書のアウトラインには表示されます。 | 見出しのテキストを入力します。 |
heading-level-skip | 警告 | H1 から H3 への飛び。アウトラインのレベルが 1 つ抜けます。 | 次のレベルに変換します。 |
paragraph-as-heading | 警告 | 1 行だけの、太字で大きなテキスト。見出しのように見えますが、見出しとして移動できません。 | 本物の見出しに変換します。 |
fake-list | 警告 | 「1.」や「-」で入力した行。リストとして読み上げられず、項目数も伝わりません。 | 本物のリストに変換します。 |
blockquote-as-indent | 警告 | インデントのために使われた blockquote。引用として読み上げられます。 | —(代わりにインデントのボタンを使います) |
表
| ルール | レベル | 検出するもの | ワンクリックの修正 |
|---|---|---|---|
table-missing-header | 警告 | 見出しのセルがないデータの表。列にも行にも名前がありません。 | 最初の行を見出しに昇格させるか、表をレイアウト専用としてマークします。 |
table-header-empty | エラー | テキストのない見出しのセル。それがラベルを付ける列は、名前なしで読み上げられます。 | ラベルを入力するか、通常のセルに降格させます。 |
table-missing-caption | 警告 | キャプションのないデータの表。聞き手は、何が入っているかを知らないまま表に入ることになります。 | キャプションを入力します。 |
layout-table-semantics | エラー | 見出しのセルやキャプションが残っているレイアウト用の表。存在しない関係が読み上げられます。 | データの表のマークアップを取り除きます。 |
問題を修正する
修正で変わるのはマークアップで、言葉を勝手に作ることはありません。ルールにテキストが必要な場合はそれを渡すと、チェッカーが正しい場所に書き込み、一覧が正確に保たれるよう再度チェックを実行します。
// Repair issue 0. The options an issue needs depend on its rule:
// the author supplies words, the editor does the markup.
var issues = editor.accessibilityChecker.getIssues();
editor.accessibilityChecker.repair(0, { altText: "Crew fitting the new roof" }); // image-missing-alt, image-alt-filename, image-alt-too-long
editor.accessibilityChecker.repair(0, { headingText: "Opening hours" }); // heading-empty
editor.accessibilityChecker.repair(0, { targetLevel: 2 }); // heading-level-skip, paragraph-as-heading
editor.accessibilityChecker.repair(0, { captionText: "Sales by month" }); // table-missing-caption
editor.accessibilityChecker.repair(0, { markLayout: true }); // table-missing-header, as a layout table
editor.accessibilityChecker.repair(0, {}); // fake-list, link-adjacent-duplicate: nothing to supply3 つのルールには自動の修正がありませんが、これは意図的なものです。あいまいなリンクのテキスト、不十分なコントラスト、重複した id は、いずれも言葉づかい、色、どの要素が id を保持するかについて、人間の判断が必要です。
チェッカーが行わないこと
- 読み取るのはエディター内のコンテンツで、公開したページではありません。サイトが適用するスタイルによって、保存後にコントラストが変わることがあります。
- 代替テキストが正確かどうかは判断できません。判断できるのは、存在するか、ファイル名でないか、長すぎないかだけです。
- 同じ文字体系で書かれた別の言語のフレーズ(英語の中のフランス語など)は検出できません。言語のルールは文字体系を手がかりにしているからです。
- 公開前に実際のスクリーンリーダーでテストすることの代わりにはなりません。