アクセシビリティチェック機能
自治体サイトでは公開側ページにて、 一定のWEBアクセシビリティを求められることがあります。
参考:
Web Content Accessibility Guidelines 2.0
JIS X 8341-3:2016
miChecker (エムアイチェッカー)Ver.2.0
アクセシビリティ評価の向上には目視、手動でのチェックは欠かせませんが、シラサギにはこれらを補助する機能があります。
本文アクセシビリティチェック
ページ作成時にCKEditor本文内のHTMLを精査し、以下項目のチェックを行うことができます。
- 画像の代替テキストが適切でない
- 画像のURLがdataURL形式となっている
- 表にキャプションが設定されていない
- 表のヘッダーにスコープ属性が設定されていない
- 見出し要素の順番が不正
- 英数字が全角文字となっている
- 半角カナ文字が含まれている
- 機種依存文字が含まれている
- 日付の表記が適切でない
- リンクのテキストの確認が必要
- 同じページへのリンクが隣接して存在する
- 単語の文字間のスペースが適切でない
- 動画や音声を含む場合、説明が適切か確認が必要
- 使用が好ましくない単語(単語辞書機能で登録)が含まれている
動作
- CKEditor下部のアクセシビリティチェックボタンを押下した際、チェックが実行されます。
- ページ保存ボタンを押下した際、チェックが実行されます。
- チェックボタンの下部、またはモーダル内に各項目に対応するエラーメッセージが表示されます。
- 項目によっては自動修正に対応しており、自動修正リンクを押下すると、HTMLが修正されます。
実装
以下のJavaScriptに記述しています。
app/assets/javascripts/cms/lib/form.coffee.erb
@Syntax_Checker
- 各項目のチェック処理を記述するクラスです。
@checkXXX
という形式でHTMLのチェックを行う関数を記述しています。@correctXXX
という形式でHTMLの自動修正を行う関数を記述しています。- 新しく項目を追加する場合、このクラスにHTMLをチェックする関数を追加します。
@Cms_Form
- ページ保存時の警告モーダルを表示するクラスです。
各項目の詳細
各チェック項目の詳細を記載します。
これらのチェック項目はベースとして、とある自治体サイトの要件を元に作成されました。
WCAG 2.0 達成方法集 に関連する項目がある場合、リンクを記載しています。
画像の代替テキストが適切でない
img
要素の alt
属性が空、もしくは日本語で設定されていない場合、警告が表示されます。
チェック | @checkImgAlt |
自動修正 | 無し |
エラーメッセージ | 画像の代替テキストを確認してください。 |
WCAG 2.0 | H37:img 要素の alt 属性を使用する |
画像のURLがdataURL形式となっている
img
要素の src
属性のURLが Data URI Scheme
である場合、警告が表示されます。
チェック | @checkImgDataUriScheme |
自動修正 | 無し |
エラーメッセージ | 画像のURIにバイナリー文字列が含まれています。 |
WCAG 2.0 | - |
表にキャプションが設定されていない
table
要素の中に caption
要素が設定されていない場合、警告が表示されます。
自動修正を実行すると <caption>キャプション</caption>
を table
要素に挿入します。
チェック | @checkTable |
自動修正 | @correctTableCaption |
エラーメッセージ | 表にキャプションが設定されていません。 |
WCAG 2.0 | H39:データテーブルの表題とデータテーブルを関連付けるために、caption 要素を使用する |
表のヘッダーにスコープ属性が設定されていない
th
要素に scope
属性が存在しない場合、警告が表示されます。
自動修正を実行すると scope="row"
または scope="col"
を th
要素に挿入します。
チェック | @checkTable |
自動修正 | @correctTableScope |
エラーメッセージ | 表のヘッダーにスコープ属性が設定されていません。 |
WCAG 2.0 | H63:データテーブルの見出しセルとデータセルを関連付けるために、scope 属性を使用する |
見出し要素の順番が不正
h
要素の順番が適切でない場合、警告が表示されます。
h1
~ h6
の要素を次のパターンでチェックし、パターンに合わない場合に警告が表示されます。
- 先頭の見出しは
h1
,h2
h3
の前の見出しはh2
~h6
h4
の前の見出しはh3
~h6
h5
の前の見出しはh4
~h6
h6
の前の見出しはh5
~h6
チェック | @checkOrderOfH |
自動修正 | @correctOrderOf |
エラーメッセージ | 見出しの順番が不正です |
WCAG 2.0 | G141:見出しを用いてウェブページを構造化する |
英数字が全角文字となっている
HTML内のテキストに全角英数(A-Za-z0-9
)が含まれている場合、警告が表示されます。
自動修正により半角に修正可能です。
チェック | @checkMultibyteCharacter |
自動修正 | @correctMultibyteCharacter |
エラーメッセージ | 英数字は半角文字を入力してください |
WCAG 2.0 | - |
半角カナ文字が含まれている
HTML内のテキストに半角カナが含まれている場合、警告が表示されます。
自動修正を実行すると全角カナに置換します。
チェック | @checkKanaCharacter |
自動修正 | @correctKanaCharacter |
エラーメッセージ | 半角カナ文字が含まれています。 |
WCAG 2.0 | - |
機種依存文字が文字が含まれている
HTML内のテキストに機種依存文字が含まれている場合、警告が表示されます。
自動修正を実行すると ①
のような機種依存文字を [機種依存文字]
という文字列に置換します。
チェック | @checkDependentCharacter |
自動修正 | @correctDependentCharacter |
エラーメッセージ | 機種依存文字が含まれています。 |
WCAG 2.0 | - |
日付の表記が適切でない
次のようなパターンの日付表記がある場合、○年○月○日形式に修正を促す警告が表示されます。
- 2017-07-18
- 2017/07/18
自動修正を実行すると○年○月○日形式に置換します。
チェック | @checkDateFormat |
自動修正 | @correctDateFormat |
エラーメッセージ | 日付の表記は○年○月○日としてください。 |
WCAG 2.0 | - |
リンクのテキストの確認が必要
a
要素内のテキストが3文字以内の場合、リンクのテキストが適切か、確認を促す警告が表示されます。
チェック | @checkLinkText |
自動修正 | 無し |
エラーメッセージ | リンクのテキストを確認してください。 |
WCAG 2.0 | G53:リンクテキストとそれが含まれている文章中のテキストとを組み合わせて、リンクの目的を特定する |
同じページへのリンクが隣接して存在する
ある a
要素の次に a
要素が存在し、同じ href
属性を持つ場合、警告が表示されます。
自動修正を実行すると単純に a
要素内のテキストを繋げて一つの a
要素とします。
チェック | @checkAdjacentA |
自動修正 | @correctAdjacentA |
エラーメッセージ | 隣接する同じリンクを一つのリンクにまとめてください |
WCAG 2.0 | 隣り合った画像とテキストリンクを同じリンクの中に入れる |
単語の文字間のスペースが適切でない
テキストに全角スペースが含まれる場合、スペースの確認を促す警告が表示されます。
チェック | @checkInterwordSpace |
自動修正 | 無し |
エラーメッセージ | 単語の文字間のスペースを確認してください。 |
WCAG 2.0 | - |
動画や音声を含む場合、説明が適切か確認が必要
動画や音声を埋め込み時に、適切な説明が存在するか、確認を促す警告が表示されます。
現状は以下のパターンをチェックします。
embed
要素またはvideo
要素が存在するiframe
要素のsrc
属性またはa
要素のhref
属性にwww.youtube.com
を含む
チェック | @checkEmbeddedMedia |
自動修正 | 無し |
エラーメッセージ | 動画や音声を含む場合、説明があるか確認してください |
WCAG 2.0 | G68:ライブの音声しか含まないコンテンツ及びライブの映像しか含まないコンテンツの目的を説明するために、簡潔な代替テキストを提供する |
使用が好ましくない単語(単語辞書機能で登録)が含まれている
テキストに単語置換辞書機能に登録した文字列が存在する場合警告が表示されます。
また、置換後の文字列を辞書に登録することで自動修正できます。
チェック | @checkReplaceWords |
自動修正 | @correctReplaceWords |
エラーメッセージ | 使用が好ましくない単語が含まれています。 |
WCAG 2.0 | - |
課題
- 専用ツール
miChecker
のように多くの項目を網羅しているわけではありません。 - おそらく日付形式や見出しの順などはWCAG 2.0とは異なり独自仕様となっている。
- チェック対象や自動修正後の属性が決め打ちになっています。
- 全てJavaScriptでの実装になっている為、Railsとの相性が悪く拡張性が低いかもしれません。
- 各チェックと自動修正の処理をRubyで置き換え、Ajaxで結果を応答するという仕組みにすれば、もう少しメンテナンスが容易になると思われます。