MathML(マスマティカル マークアップ ランゲージ)とは
MathML(
Mathematical Markup Language)は、XMLをベースにした
数式記述のための
マークアップ言語です。ウェブ上で
数式を正確に表現し、
コンピュータによる
数式の意味認識を可能にすることを目的としています。単体では
数式の記述しかできないため、XHTMLなどに埋め込んで使用します。
歴史
コンピュータ上で
数式を記述するニーズは、ウェブ普及以前から存在していました。
TeXは、
数式表記の事実上の標準として広く利用されており、テキストベースでの
数式表記や、
ウィキペディアなどの
数式表現にも使われています。しかし、HTMLには
数式を表現する標準的な手段がなく、
画像やPDFなどの形式で代替されることが一般的でした。
HTML3.0では、
数式を表現するためのMATH要素が提案されましたが、HTML3.0自体が破棄され、MATH要素も実装されませんでした。しかし、この動きが、後のW3C Mathワーキンググループ設立につながりました。
1999年7月にはMathMLバージョン1.01が勧告され、その後、バージョン2.0(
2001年)、バージョン2.0第2版(
2003年)、バージョン3.0(
2010年)と改訂が重ねられてきました。
MathMLの初期バージョンでは、XML名前空間が定義されていませんでした。そのため、名前空間を指定しないで使用されることも多いですが、MathMLと認識させるためには`http://www.w3.org/1998/Math/MathML`と名前空間を指定する必要がある実装もあります。
表示と意味論
MathMLは、
数式の視覚的な表現だけでなく、その意味も記述できる点が特徴です。これにより、
数式の内容が利用者に正確に伝わるように設計されています。MathMLが埋め込まれたウェブページは、一般的なブラウザで表示できるだけでなく、
スクリーンリーダーを通して視覚障碍者もMathMLの内容を理解できます。
表現MathML
表現MathMLは、
数式の視覚的なレイアウトに特化した記述方法です。約30個の要素と、約50個の記号を使って構成されます。要素名はすべて`m`で始まり、レイアウトを制御する役割を持ちます。
内容MathML
内容MathMLは、
数式の意味論に特化した記述方法です。関数適用を表す`
`要素を核とし、関数やオペランドを子要素として記述します。表現MathMLに比べて要素数は少ないものの、`ci`(識別子)や`cn`(数値)などの要素を使って、数式の意味を明確に記述できます。演算子も、`times`や`power`などの要素で明示的に記述されます。
例
二次方程式の解の公式をMathMLで記述する例を示します。
html
TeXと比較すると、MathMLは可読性が低いですが、コンピュータによる数式の意味認識を容易にすることを目的としているため、人間が直接記述・編集することを想定していません。
ソフトウェアでの対応状況
2015年現在、MathMLの普及は進んでいるとは言えませんが、MathML出力をサポートするソフトウェアは増加傾向にあります。
エディタ
MathMLをネイティブでサポートするエディタには、MathFlow、MathType、MathMagic、Publicon、WIRISなどがあります。また、Mathematica、Maple、Casio ClassPad 300などの数式処理ソフトウェアや、Apache OpenOffice、LibreOffice、Calligra Suite、MS Office 2007などの主要なオフィスソフトもMathMLをサポートしています。Mozilla FirefoxのアドオンであるFiremathは、WYSIWYGのMathMLエディタを提供します。
ほとんどのエディタは表現MathMLのみを生成しますが、MathDoxの数式エディタは表現MathMLと内容MathMLの両方を提供します。Formulator MathML Weaverは、表現MathML、内容MathML、およびそれらの混合マークアップを編集するためのWYSIWYGエディタです。
TeXmacsなどのWYSIWYGエディタでMathMLを出力できるものや、MathMLをネイティブに読み込み・保存できるソフトウェアとしてFormulator、Amayaなどがあります。また、TeXからMathMLへの変換ツールも存在し、ConTeXt、MathType、itex2mmlなどが挙げられます。
ブラウザ
ブラウザのMathMLネイティブサポートは、GeckoをベースとするMozilla Firefoxや、Safari 5.1以降に限られています。Google Chromeは、一時的にMathMLをサポートしましたが、実装上の問題から一旦非対応となり、Chrome 109から再び対応しました。Microsoft Edgeも同様に対応しています。Opera 9.50~12.1はMathMLをサポートしていましたが、それ以降のバージョンでは非対応となっています。
Internet ExplorerはMathMLをネイティブサポートしていませんが、MathJaxやMathPlayerなどのJavaScriptライブラリやプラグインを使用することで、MathMLを表示できます。
ブラウザでのMathMLのレンダリング品質は、インストールされているフォントに依存します。STIXフォントプロジェクトは、オープンライセンスの数式フォントを提供しています。Microsoft Windows付属のCambria MathフォントもMathMLをサポートしています。
その他
アンテナハウスのAH Formatterは、XMLやHTMLに埋め込まれたMathMLを可視化し、印刷したり、PDFやSVGに出力したりすることができます。JAWSは、バージョン16.0からMathMLに対応しています。
ソフトウェア開発のサポート
MathMLは、コンピューターを利用した教育、レポートの自動生成、数式処理システム、教育・出版ツールなど、幅広い分野でのソフトウェア開発を加速します。ソフトウェア開発者向けに、MathMLエディタのコンポーネントエディションを提供するベンダーも存在します。
まとめ
MathMLは、ウェブ上での数式表現と処理において、重要な役割を担っています。対応ソフトウェアやブラウザのサポート状況はまだ発展途上ですが、数学、科学、ビジネス、経済など、様々な分野での応用が期待されています。