まえがき
先日
標準でないチェックボックスはいろいろ難しい
という素晴らしい記事が公開されました。とてもわかり易く書かれており、ウェブアクセシビリティを推進している人たちにとっても一つの指針となるだろう記事だと感じています。
一方、実際の利用者はどのような問題に直面しており、どう解決されることを望んでいるでしょうか。また、アクセシビリティをそれほど考慮していない(意図的ではありません)ウェブ開発者はどうすればよいのでしょうか。
ということで、私見ではありますが最近私が考えていることを書き連ねていきたいと思います。
チェックボックスではないチェックボックス
よく見かけるようになりました。本当に困るのです。でも!
スクリーンリーダーはキーボード操作でマウスクリックをエミュレートしています。NVDAでもJAWSでも、ブラウザ使用時にエンターキーを押すことは、マウスの左クリックと同等です。スペースキーも左クリックとして動作します。
ところが、この例とその下の例では、スクリーンリーダーはチェックボックスの状態を知ることができません。なので仮に状態を切り替えられていても読み上げは行われません。これは困ります。
実際JAWSでは、スペースキーを押してもエンターキーを押してもチェックボックスの状態を切り替えることができます。しかし、切り替えられたことがわかりません。
ARIAを完全実装しても、まだまだ壊れている
この例は、実はスクリーンリーダーによって挙動が異なっています。NVDAではEnterキーでもスペースキーでも変化後の状態を読み上げません。ところがJAWSではEnterキーを押したときは変化後の状態を読み上げます。つまり、読み上げようと思えば読み上げられることを意味しています。これをウェブ開発者側だけの問題として片付けてよいでしょうか?
tabindexの指定をしても、まだまだまだ壊れている
これでTabキーによるフォーカス移動ができるようになりました。すごく改善されたと思います。元のページにも書かれていますが、キーボード操作でチェックボックスを切り替えたときにも読み上げができるようになりました。それでも壊れているでしょうか?
キー操作への対応をして、一応完成
ではキーボード操作はだれが行うのでしょうか?前述したように、スクリーンリーダーは実はマウス操作をエミュレートしています。ということは、スクリーンリーダーのためにやったキーボード操作への対応は、実際には使われない可能性が高いのです。
例えば、上司障害があるユーザがこのチェックボックスを使ったとしましょう。スクリーンリーダーならばキーボード操作でチェックボックスが操作できてしまいますが、ブラウザ単体ではそうもいきません。そのような意味ではキーボード操作に対応することは不可欠となります。しかし、実際のところ、スクリーンリーダーのマウスエミュレート機能をオフにすると、世の中の多くのコントロールが操作できなくなってしまいます。これはどう考えればよいでしょうか。
私のまとめ
アクセシビリティは共同作業です。情報やサービスを提供する側、支援技術を提供する側、ユーザ、この3社が共同作業することで推進されます。
チェックボックスの例では、支援技術ベンダーは、キーボードイベントを使わず、キーボード操作でマウスイベントを出すようにしました。これによって、ウェブ開発者の作業はかなり軽減されるはずです。
このような例はあちらこちらにあります。論理的にはできてもいいんじゃないの?と思えることが、前述の3社の距離感の問題で実現できていないように思います。
技術もトレンドも日々変化します。仮にアクセシブルでないサービスが現れたとき、ユーザはできるだけ早くそれらが使えるようになることを望みます。完ぺきを求めるのではなく、スクリーンリーダー側とウェブ制作者側が共同作業することでより良い状態を作り出すことが寛容なのではないか、そう思うのです。
仮にキーボードイベントが実装されていなくても、チェックボックスが論理的に伝えられているのであれば読み上げは可能です。ひょっとしたらチェックボックスぽいものを機械学習でどうにか読めるかもしれません。マウスイベントを監視している要素やtabindexが設定されている要素にキーボードフォーカスがあるとき、スペースキーやエンターキーを押したらマウスクリックをエミュレートする拡張機能なんてものを作ることが可能かもしれません。
それが一時的なワークアラウンドであったとしても、アクセシビリティの改善にコストと時間がかかるのであれば、ユーザにとって利益があることになります。
ウェブ制作者はぜひスクリーンリーダー開発側に、「このくらいできるんじゃないの?」というアプローチをしてほしいなと思います。逆にスクリーンリーダー開発者はウェブ制作者に対して、「せめてこのくらいはやってくんないと論理的に情報取れないよお」ということを発信してもよいのではないでしょうか。
そんな場所が設定されると良いなと思います。