MathMLとアクセシビリティAPI
数式のアクセシビリティには様々な切り口が考えられますが、ここではMathMLとアクセシビリティAPIについて見てみます。
アクセシビリティAPIを使ったアプローチは大きく2つあります。アクセシビリティAPIに数式を表現するための仕組みを設ける方法と、既存のアクセシビリティAPIの中でなんとかする方法です。
数式用アクセシビリティAPI
アクセシビリティAPIに数式を表現するための仕組みを設け、ブラウザーはその仕組みにそって数式を表現し、支援技術はその仕組みから情報を得るというアプローチです。正攻法と言えるアプローチです。
OS XとiOSのアクセシビリティAPIには数式用のRolesやPropertiesがあります。SafariはこのアクセシビリティAPIに対応しており、VoiceOverを使ったMathMLの読み上げなどが行えます。iOS 7には数式をNemeth点字(アメリカ合衆国で一般的な数式用の点字)で出力するオプションもあるようです(が、私は点字が読めないため、ちゃんと機能しているのか不明です)。
- WebAccessibilityObjectWrapperMac.mm
- The Journey Toward Braille: Potential and Limitations of using Braille with iDevices
このアプローチのメリットは、アプリケーションが数式用のAccessiblity APIに対応すれば、内部的に数式をどう扱っていようとも、支援技術は追加の対応なしに数式をサポートできる、ということです。
最近、FirefoxもOS X版ではこのアクセシビリティAPIへの対応を進めています。
- MathML Accessibility | Air Mozilla
- Accessibility/MathML - MozillaWiki
- 1001641 – Provide equivalent support for MathML as WebKit for NSAccessibility
OS XやiOSではブラウザー・アプリケーションのサポートが進めば、支援技術から数式を理解しやすくなるでしょう。
非数式用アクセシビリティAPI
他のプラットフォームではアクセシビリティAPIに数式用のオブジェクトがない場合がほとんどです。ですが、アクセシビリティAPIのオブジェクトは要素型や属性の情報を含めることができます。そのため、支援技術がアクセシビリティAPIのオブジェクトから要素型や属性の情報を取り出して、MathMLとして処理し、ユーザーに情報を伝えるアプローチも考えられます。
NVDAのJames Teh氏は、数式を処理するライブラリはMathMLを受け付けるようにできているので、ブラウザーはMathMLの情報をそのまま支援技術にわたすよう、MozillaのBugzillaでコメントしています(916419 – Expose MathML as a hierarchical accessible tree)。
また、彼はプロトタイプも作成しているようです。
I now have an early prototype of #NVDASR Firefox MathML support which can speak, braille & hierarchically navigate the quadratic formula!
— James Teh (@jcsteh) 2013, 9月 24
このアプローチではアプリケーションと支援技術の双方がMathMLに対応する必要があります。今現在、支援技術が数式に対応するには、何らかの処理を追加する必要があるでしょう。その際、MathMLに対応しておけば大丈夫という状況になれば、このアプローチは有効なのですが…。