Mathematical Markup Language

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


x
=


-
b
±

b2-4ac



2a






TeXと比較すると、MathMLは可読性が低いですが、コンピュータによる数式の意味認識を容易にすることを目的としているため、人間が直接記述・編集することを想定していません。

ソフトウェアでの対応状況



2015年現在、MathMLの普及は進んでいるとは言えませんが、MathML出力をサポートするソフトウェアは増加傾向にあります。

エディタ


MathMLをネイティブでサポートするエディタには、MathFlow、MathType、MathMagic、Publicon、WIRISなどがあります。また、MathematicaMaple、Casio ClassPad 300などの数式処理ソフトウェアや、Apache OpenOfficeLibreOfficeCalligra 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は、ウェブ上での数式表現と処理において、重要な役割を担っています。対応ソフトウェアやブラウザのサポート状況はまだ発展途上ですが、数学、科学、ビジネス、経済など、様々な分野での応用が期待されています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。