Webアクセシビリティ Advent Calendar 2019、7日目の記事、というかメモです。
数式ありのコンテンツについて、WebやEPUBでどのような方法で記述し、そして、アクセシブルなものにするのか、現状の考えられる案をMathMLを中心に書き出してみました。なお、近年の仕様の動向やブラウザの実装に係る動きは、ミツエーリンクスさんのブログWebにおける数式と数式の読み上げを取り巻く環境についてでまとめてくれています。
なお、私自身のスコープが
数式入りの学術文献を如何にアクセシブルな形でEPUBにするか
にあります。EPUBより実装が進んでいるであろうWeb(Webブラウザ上での対応)も比較の対象として触れますが、EPUB対応を前提としていることをご了承ください。数式入りというと、小中高の教育系コンテンツも考えらますが、このエントリは高等教育向けのコンテンツを対象とします。
1. 数式入りのコンテンツ(特に学術系コンテンツ)をWeb化 / EPUB化する大前提
- 学術用途に耐えうること。つまり、引用という形で再利用可能であること。
- 数式を表示できること。
- スクリーンリーダーで読み上げられること。
2. 数式への対応方法
WebやEPUBに数式を入れる方法として以下が考えられます。2.1とそれ以外の方法を組み合わせることになるだろうと思われる。
2.1 プレーンなテキストデータとして記述
2.1.1 方法
二項演算子及び関係演算子を用いて一行で表記可能なシンプルな数式はテキストデータとして表記する。
2.1.2 優位性
- 現行の実装で最もシンプルで汎用性が高い。課題に挙げた事例を除けば、読み上げる可能性が高い。
2.1.3 課題
- この方式で記述できない数式がある。その数式への対応については、別の対応が必要。その線引きについても、例えば、以下の課題がある。
- 塁乗などは上付き数字で表記は可能である( 例: 2³ )。しかし、スクリーンリーダーでどのように読み上げるのか(上付き数字も普通の数字と区別なく読んでいるようであれば厳しいか)。
- 簡単な分数であれば、スラッシュで表記可能である(例:⇒ 1/3)。しかし、スクリーンリーダーの読み上げて、理解可能か。また、学術文献の表記として、このような置き換えがアリか。
2.2 数式の画像化と代替テキストの提供
2.2.1 方法
数式を画像化して挿入する。画像には数式の読みを代替テキストとして提供する。
2.2.2 優位性
- 全ての数式に対応ができ、かつ、現在の実装で最も汎用性が高い。
- 代替テキストに対応した環境では、確実に適切に読み上げる(適切な代替テキストを提供できることが前提となるが)。
2.2.3 課題
- 1つ1つの数式に適切な代替テキスト(数式の読み)を提供することがハードルが高い。数式の難易度にそれは比例する。学術書に掲載されるような、複雑な数式の読みを代替テキストとして提供することは、かなり難易度が高い。それを作成する者が確保できるのか。
- 日本語については、一意な読み方法が確立されていない(例 「5分の3引く1」で「」と「」の2通りの式が再現できるなど。)。数式の読み情報のみで正確な情報が伝えることができるか。
- 数式の読み情報のみで、学術用途(引用用途)で再利用するために数式としての復元がどこまで可能かわからない。
2.3 MathML
2.3.1 方法
MathMLを使用して数式を記述する。
2.3.1.1 MathMLについて
- EPUBの標準的な数式記述方法である。DAISY 3 においてもMathML 2.0に対応した拡張仕様 がある(参考: MathML in DAISY)など、DAISYとも古い付き合い。
- MathMLは、Presentation Markup とContent Markupの2種類のマークアップがある。
- 数式の同じ形の部分も式によってその内容(意味)が異なるが、Presentation Markupはその違いは考慮せずに「形」を記述する。Content Markupは「内容(意味)」を記述する。
- Content Markupは、閲覧環境の対応が進めば利用者に最適な読み上げが期待できる。しかしContent Markupは内容を理解しないと記述ができない。数式への理解が曖昧であれば誤った記述となる可能性がある。
- LaTexからの変換を想定する場合は、Content Markup への変換は困難であることが予想される。
- Presentation MarkupとContent Markupでは、前者のほうがブラウザやEPUBの閲覧環境への対応も進んでいることが予想される。
2.3.2 優位性
- EPUBの標準的な数式記述方法である。実装があるのであれば、この方法がEPUBの仕様としては理想的。
- MathMLが読み上げるなら、数式を入れる側はMathMLとしての構造化のみを意識して入力することができる(数式の読みはMathMLに対応したスクリーンリーダーに委ねることができる)。
- 数式として構造化されているため、実装があるのであれば、読み上げ対応に限定されず、構造化された情報を様々な支援技術が活用できることが期待できる。
2.3.3 課題
- Webブラウザ及びEPUBのネイティブの実装でMathMLの表示、読み上げともに実装している環境が限られている(WebブラウザやEPUBでネイティブに表示、読み上げに対応する環境があるか検証が必要)。
- 学術用途(引用用途)で再利用に耐えうるか検証が必要。
2.3.4 参考
2.4 MathML+ MathJax
2.4.1 方法
JavaScriptライブラリであるMathJaxを利用し、MathMLとして数式を記述する。EPUBの場合は、このJavaScriptライブラリをEPUBに同梱する。
2.4.2 優位性
- 数式表示はJavaScriptによるMathJaxがデファクトスタンドダードになりある(らしい)。JavaScriptに対応したあらゆるブラウザやEPUBの閲覧環境で対応することができる。
- JavaScriptライブラリのサポートを前提とするが、EPUBの仕様に沿ってMathMLという形で数式を記述することができる。
- MathMLが読み上げるなら、数式を入れる側はMathMLとしての構造化のみを意識して入力することができる(数式の読みはMathMLに対応したスクリーンリーダーに委ねることができる)。
- 数式として構造化されているため、実装があるのであれば、読み上げ対応に限定されず、構造化された情報を様々な支援技術が活用できることが期待できる。
- MathMLそのものはEPUBの仕様でサポートされているため、仮にMathJaxの開発がとまっても、中長期的にはMathMLにネイティブに対応することが期待できる。
2.4.3 課題
- JavaScriptに対応した環境にMathJaxの使用が限定される(ただし、JavaScriptに対応していないEPUBの閲覧環境は、読み上げに対応していない電子ペーパー端末に限定される?)。
- MathJaxの、Presentation MarkupとContent Markupへの対応状況は要検証。
- MathJaxで表示の課題は解消できても、読み上げへの対応はどうかは要検証
- ネイティブでMathMLに対応している環境(iOS 版のSafariなど)への挙動の影響はどうかは要検証。
- 学術用途(引用用途)で再利用に耐えうるか検証が必要。
2.4.4 参考
2.5 LaTex
2.5.1 方法
LaTexを使用して数式を記述する。
2.5.2 優位性
- 数式の入力・表示についてMathMLよりは広く使用されている。読み上げる環境がMathMLより進んでいる可能性ある。(英語についてはJAWSが対応していると聞いたことが)。
- LaTexを記述できる者であれば、数式として表示されていなくても、Latexの記法で表示されたままでも、理解できる?(数式入りの学術文献を利用する者であれば、LaTexを取り扱えるものは多いと予想される)
2.5.3 課題
- EPUBの仕様では本来サポートされておらず、閲覧環境の実装においても対応しているものはないと思われる。Webブラウザでも同様。
- 学術用途(引用用途)で再利用に耐えうるか検証が必要。
2.6 LaTex + MathJax
2.6.1 方法
JavaScriptライブラリであるMathJaxを利用し、LaTexとして数式を記述する。EPUBの場合は、このJavaScriptライブラリをEPUBに同梱する(EPUBの仕様ではサポートしていないが、MathJaxによりLaTexで記述することがブラウザ上でもEPUBの閲覧環境上でも可能になるはず)。
2.6.2 優位性
- 数式の入力・表示についてMathMLよりは広く使用されている。読み上げる環境がMathMLより進んでいる可能性ある。(英語についてはJAWSが対応していると聞いたことが)。
- MathJaxの対応もMathMLよりLatexのほうがこなれている?ツールも多い?
- LaTexを記述できる人口の方がMathMLより多い?
2.6.3 課題
- EPUBの仕様では本来サポートされていない。MathJaxにより、表示、そして、仮に読み上げが可能であったとしても、イレギュラーな対応になる。MathMLの開発が止まってしまったら、閲覧は担保できなくなる(中長期的に閲覧を担保できない)。
- JavaScriptに対応した環境にMathJaxの使用が限定される(ただし、JavaScriptに対応していないEPUBの閲覧環境は、読み上げに対応していない電子ペーパー端末に限定される?)。
- MathJaxで表示の課題は解消できても、読み上げへの対応はどうかは要検証
- 学術用途(引用用途)で再利用に耐えうるか検証が必要。
3. 対応状況の検証
画像に付与された代替テキストの読み上げは、ほぼ全ての環境で対応していると言ってよいであろうと思われ、LaTexはEPUBの仕様でサポートされていないため、「2.2 数式の画像化と代替テキストの提供」、「2.5 LaTex」、「2.6 LaTex + MathML」の検証は省略。
以下を検証する必要がある (一部確認できているところは記入)。学術用途(引用用途)で再利用に耐えうるかの検証方法は要検討。
※本当は実際に検証してこの表を埋めるところまで書きたかったのですが、検証対象を絞るところで力尽きてしまいました 汗。
3.1 プレーンなテキストデータとして記述
3.2 Webブラウザの対応(検証中)
3.2.1 MathML
検証に用いたサンプル
メモ
- NVDAとMathPlayerとの組み合わせでWORDに埋め込んだMathMLを読み上げさせることが可能らしい(参考: NVDA 2015.2 の数式対応 – nishimotzの日記)。ただし、少なくとも現行のMathPlayerは、32-bit Office に対応が限定される。Internet Explorer (IE) のプラグインとしても機能するが、IE10以降には対応しておらず、IEのEnterprise Modeでレガシーモードを使う必要がある。MathPlayerの更新も2016年でとまっており、MathPlayerやIEの方針が変わなければ、この組み合わせは利用できなくなると思われる。
- NVDAには、Access8Mathというプラグインがある。Mozilla Firefox, Microsoft Internet Explorer and Google ChromeでMathMLを読み上げるようになるらしい。
- PC-TalkerはMathMLの読み上げに対応していないようなので、ここでは検証対象からはずした。PC-Talkerの利用が前提の音声ブラウザNetReaderも外れる。
3.2.2 MathML + MathJax
「3.2.1 MathML」に用いたサンプルのソースに以下を追加。検証対象にNetReaderを追加。
<script type="text/javascript"
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
3.2.3 参考
3.3 EPUBの閲覧環境 (検証中)
検証するなら以下の表を埋める感じであろうか。
3.3.1 MathML
テスト用サンプルEPUB
なお、DAISYユーザーのEPUB閲覧環境としては、EPUBにも対応したDAISY再生機器のプレクストークPTR3も有力な候補になりえるが、学術用途(引用用途)での再利用が困難である(つまり、コピペが難しい)と思われるため、とりあえず今回の検証対象からは外す(将来的には検証に加えた方がよいとも思うが)。
3.3.2 MathML + MathJax
3.3.3 参考
4. ツール・サービス
5. 他機関のプロジェクト
Benetech・DIAGRAM Center
6. 参考文献