EDUPUBで数式をどのように表わすのか? MathMLが飛翔するか、それともSVGなのか?


数式をWebで表わすための標準としてMathML仕様[1]があります。MathMLは1998年4月にV1が標準化されていますので、既に16年近くになります。しかし、現在、MathMLで表わした数式を表示できるEPUBリーダーはもとよりWebブラウザは数が少なく、また表示できたとしても不十分です[2]。現在、ブラウザ上での数式表示はJavascriptによるMathJax[3]がデファクトになりつつありますが、MathJaxといえども、算数は表示できないなどの制限があります[4]

現在、教育コンテンツ配布のためのEPUBプロファイル仕様EDUPUBにむけて活動が活発化しています。数学はもとより科学教育では数式の記述と表示は必須です。ボストンのEDUPUBでは、数式を表示する方法に関するプレゼンもあり、数式表示の話題が関心を集めたようです。

EDUPUBの中心人物の一人であるMatt Garrishは、EDUPUB2の直前のブログ「MathML Support in EPUB」[5]で、数式が重要なのに、期待のMathMLはなかなか普及しない、という現状を憂いています。Matt氏に限らず、WebとEPUBにおける数式表示の問題を解消したいと望んでいる人は多いでしょう。

そこ本ブログでは、数回にわたり、MathMLを中心に数式表現の現状と課題をレビューするとともに、アンテナハウスの取り組みを紹介します。もちろん、できるだけ、タイトルに掲げた疑問に答えたいと考えています。

MathとEPUB/HTMLの関係

数式は科学の基本になりますので、Webで数式を表わしたいという考えは自然です。HTML2.0には数式を表わす要素はありませんが、1995年にリリースされたHTML3.0には <MATH> 要素が追加になりました[6]。しかし、次のHTML3.2では、Mathについては、引き続き検討すると述べられているだけで、仕様から削除されてしまいました。

この間、数式を表現するマークアップ言語として、MathMLが新しく提案されて独立な標準仕様として成長してきたことになります。MathMLは、EPUB3.0には、ドキュメント文書の標準機能として含まれています。そして、HTML5では、math要素を標準的な要素として含むことができるようになっています。16年間の間、別の親にそだてられたmath要素が、いよいよHTML5の中で他のHTML直系要素と肩を並べた存在になったとも言えます[7]

MathMLはV3.0で成熟した仕様になり、様々な分野で採用された。残された大きな課題はEPUB3とHTML5においてMathMLを表示すること」(Autumn Cuellar. ”A MathML Progress Report”[8])が、MathML関係者の共通の問題認識のようです。

[1] Mathematical Markup Language (MathML) Version 3.0 W3C
[2] 例えば、MathML3.0は2010年10月に勧告になり、既に満3年半を経過しました。しかし、MathML3.0で新しく追加された、a. 右から書く言語(アラビア語など)の数式記述、b. 数式内の改行制御、c. 初等数学(算数)すべてを可視化できるWeb/EPUB環境は存在しません。MathPlayerは、アラビア語の数式、算数は対応しており、改行もできる可能性があります。しかし、MathPlayerは、Internet Explorer (IE) のプラグインなのですが、IE10以降ではプラグインが利用できないため、このままIEの方針が変わらないなら廃れてしまうでしょう。
[3] MathJax
[4] MathML Forges On Peter Krautzberger。Peter氏はMathJax開発チームの一員であり、このWebページの現状報告は非常によくまとまっており、また深い情報があります。
[5] MathML Support in EPUB Matt Garrish
[6] Table of Contents HTML3.0
[7] HTML5 A vocabulary and associated APIs for HTML and XHTML
[8] Autumn Cuellar. “A MathML Progress Report” XML Prague 2014 Conference Proceedings. 14-16 Feb. 2014. University of Economics, Prague, Czech Republic

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA値として計算に合う値を入力してください。 *