actions

Mathematical Markup Language

テンプレート:著作権問題調査依頼 テンプレート:翻訳直後

MathML
拡張子 .mml
MIMEタイプ application/mathml+xml
開発者 World Wide Web Consortium
最新版
3.0 2nd Edition
(2014-4-10)
種別 マークアップ言語
派生元 XML
ウェブサイト www.w3.org/Math/

Mathematical Markup Language(マスマティカル マークアップ ランゲージ 略:MathML(マスエムエル))は、XMLアプリケーションの一つで、数式を記述するためのマークアップ言語である。単体では数式の記述しかできないため、文書として利用するにはXHTMLに埋め込んでXHTML文書として扱うなどする。

歴史

コンピュータ上で数式を記述する要求はウェブが普及する前からあった。なかでも[[TeX|テンプレート:TeX]]は有名でかつよく使われており、数式の表記方法としてもテキストのみで表記せざるを得ないときなどに用いられる他、ウィキペディアを含むウィキ等での数式を表現する手段として今日でもよく使われている。しかし、HTML上で数式を表現する手段がなく、ウェブで数式を表現するには画像にするか、PDFなどHTML以外の形式にすることが多い。

なお、HTML 3.0では数式を表現できるようにしていた。1995年の案ではMATH要素が入れられることになっていた[1]。これはMathematicaで有名な Wolfram Research の提案をもとにしたものである。しかしHTML3.0は後に破棄され、またほとんどのブラウザはMATH要素に対応しなかった。HTMLに数式を載せること自体は果たせなかったものの、後のW3CのMathワーキンググループの前身といえる HTML Math Editorial Review Board が設立されるなどした。ちなみに、これは現在のMathMLとは違い、[[TeX|テンプレート:TeX]]の数式表記に似た表記法であった。

1999年7月にMathML規格バージョン1.01がW3CのMathワーキンググループから勧告された。そして2001年2月にバージョン2.0が勧告され、2003年10月にバージョン2.0第2版が勧告された。その後、2010年10月にバージョン3.0が勧告された。

MathMLのオリジナルのバージョンでは名前空間が決められていなかった。というのも、まだXML名前空間の仕様自体が決まっていなかったからである。こうした事情から名前空間を指定されないことが多いが、名前空間を http://www.w3.org/1998/Math/MathML と指定しないとMathMLと認識しない実装も多い。

表示と意味論

MathMLは数式の要素のその表示をもってだけでなくその意味もまた処理する(MathMLの後者のものは「内容MathML」として知られる[訳注 1])。その内容が利用者にたいして通じるかどうかは、(方程)式の意味がその表示から離れて保たれるかどうかによる。例えば、それらにおいてMathMLが埋め込まれたウェブページは多くのブラウザーで自然なウェブページとして見ることができる、しかし視覚障害の利用者はそれらをスクリーンリーダー(例えば、Internet Explorer、(あるいは)9656+ビルトのOpera9.5のためのMathPlayerプラグイン、またはFirefoxのためのFire VoxEnglish版拡張版)の利用を通して同じようにMathMLを読むこともできる。

表現MathML

表現MathMLは(方程)式の(視覚的)表示に向けて用途を絞る、そしておおよそ30 個の構成要素をもつ。構成要素の名前はすべてmから始まる。ひとつの表現MathMLの表示は、それらのレイアウトを制御するものである(主に細部を細かく制御するものである、おおよそ50個の標識がまたある)、上位レベルの構成要素を使って組み合わされたところのトークンから組み立てられる。

内容MathML

内容MathMLは意味論においてまたは意味について、またはそれのレイアウトよりもむしろ表現に向いて用途を絞る。内容MathMLの中心は関数の適用を表示するところの<apply>構成要素である。適用されるその関数は<apply>のもとの最初の子の構成要素であり、そしてそれのオペランドまたはパラメーターは子の構成要素を保持する。内容MathMLはわずかな標識しか用いない。
識別子のようなものや数は、表現MathMLと比べて多量に、しかしcicnのようなものの構成要素をもって、個別にマークアップされる。トークンの単なる他のタイプの存在よりもむしろ、timespowerなどの、数学的な意味をMathMLが認めるものである、明確な構成要素によってオペレーターは表示される。いろいろな関数とオペレーターのために100個を超えるいろいろな構成要素がある([1]を見よ)。

よく知られた二次方程式の解の公式を例にする:

[math]x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}[/math]

これを[[TeX|テンプレート:TeX]]で記述すると以下のようになる:

x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

MathMLで記述すると以下のようになる:

<math>
 <mrow>
  <mi>x</mi>
  <mo>=</mo>
  <mfrac>
   <mrow>
    <mrow>
     <mo>-</mo>
     <mi>b</mi>
    </mrow>
    <mo>&PlusMinus;</mo>
    <msqrt>
     <mrow>
      <msup>
       <mi>b</mi>
       <mn>2</mn>
      </msup>
      <mo>-</mo>
      <mrow>
       <mn>4</mn>
       <mo>&InvisibleTimes;</mo>
       <mi>a</mi>
       <mo>&InvisibleTimes;</mo>
       <mi>c</mi>
      </mrow>
     </mrow>
    </msqrt>
   </mrow>
   <mrow>
    <mn>2</mn>
    <mo>&InvisibleTimes;</mo>
    <mi>a</mi>
   </mrow>
  </mfrac>
 </mrow>
</math>

このように人間の可読性を求めるならばテンプレート:TeXのほうが優れている。しかし、XMLアプリケーションであるMathMLは本来コンピュータによる数式の意味認識において有利となるよう設計されたものであり、人間がMathMLを直接書いたり編集したりすることは意図していない[2]

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

2015年現在、普及はしているとは言い難いが、MathML出力をサポートしているソフトは増えつつある。

エディタ

MathMLをサポートするネイティブなエディタにはデザイン・サイエンスEnglish版からのMathFlowとMathTypeウルフラム・リサーチからのMathMagicEnglish版PubliconEnglish版、そしてWIRISがある。[3] W3CにMathMLのエディタのリストがある。[4]
MathematicaMapleおよびCasio ClassPad 300English版のウィンドウズ版のようなものの数学のソフトウェア製品と同様に、(OpenOffice Mathによる)Apache OpenOffice、(LibreOffice Mathによる)LibreOffice、(以前の KOfficeの)Calligra Suite、そしてMS Office 2007のような主要な製品によってもMathMLはサポートされている。
Mozilla FirefoxのアドオンのFiremathEnglish版は、WYSIWYGのMathMLエディタを提供する。
たいていのエディタは表現MathMLだけを作り出す。MathDoxの数式エディタは表現だけでなく内容MathMLもまた提供するOpenMathエディタである。MathMLの表現、内容、ならびにそれらの混ざったマークアップを編集するのにFormulator MathML WeaverはWYSIWYGスタイルを使う。

TeXmacsなどのWYSIWYGなエディタでMathML出力をすることができるものや、MathMLをネイティブに読込・保存できるソフトとしてFormulator[5]Amayaなどがある。

他の数式表現形式からMathMLに変換するソフトもあり、例えば[[TeX|テンプレート:TeX]]からの変換ソフトとして[[ConTeXt|テンプレート:ConTeXt]]やMathType、itex2mmlなどがある。またウェブ上で変換をするページもある。

ブラウザ

Webページに組み込んだMathMLは MathJax[6]を使って表示できる。

ブラウザでのMathMLネイティブサポート(ブラウザのレンダリングエンジンによるMathMLのレンダリング)は進んでいない。対応しているのは、Gecko を採用している Mozilla Firefox などのブラウザ[7]Safari 5.1 以降にとどまる。Presto を採用している、Opera 9.50[8]〜12.1 においては単体でほとんどの数式の表示が可能となったが、Opera 14 よりレンダリングエンジンが WebKit そして Blink になり非対応となった。

Google ChromeMicrosoft EdgeInternet Explorer は対応していない。但し、Internet Explorer では、例えばプラグインの Design Science の MathPlayer をインストールすることで MathML を表示できるようになる。

ブラウザでのMath MLのレンダリングの品質はインストールされているフォントに依存する。STIXフォントプロジェクトEnglish版はオープンライセンスの数学フォントをリリースしている。Microsoft Windows付属のCambriaEnglish版 Mathフォントもサポートしている。

その他

アンテナハウスのAH FormatterはXMLまたはHTML中に埋め込まれたMathMLを可視化して印刷したり、PDFやSVGなどに出力できる[9]

JAWS2015年に発売されたVersion 16.0よりMathMLに対応している[10]

ソフトウェア開発のサポート

コンピューター・エイデッド・エデュケーション(遠隔教育、電子教科書、そして他の教材);魅力的なレポートの自動作成;数式処理システム;著作、教育、出版ツール(ウェブとデスクトップ・オリエンテッドの両方)、そして数学、科学、ビジネス、経済、その他の多くの他のアプリケーションのような多様なものにおいてMathMLフォーマットのサポートはソフトウェア・アプリケーションの開発を加速する。ソフトウェア開発者らにたいして彼らのアプリケーションにおいて機能的で数学的なレンダリング/編集/処理を組み入れるように簡易な方法の提供を行って、幾つかのソフトウェア・ベンダーらは彼らのMathMLエディタのコンポーネント・エディションを提案する。例えば、Hermitech LaboratoryからのFormulator ActiveX ControlはMathMLのエディタと同じようになるようにアプリケーションへ合併するようできる、Design ScienceEnglish版はインタラクティブな数式を含むものであるウェブ・ページを組み立てるためのツールキットを提供する(MathFlow DEvelopers Suite、[11])。

  1. HTML Math
  2. Mathematical Markup Language (MathML™) 1.01 Specification (Abstract)” (1999年7月7日). . 2008閲覧. “While MathML is human-readable it is anticipated that, in all but the simplest cases, authors will use equation editors, conversion programs, and other specialized software tools to generate MathML.”
  3. WIRIS editor page describing the use of MathML.Wiris.com.Retrieved on 9 May 2012.
  4. MathML Software - Editors at W3C. W3C.org (24 April 2012). Retrieved on 9 May 2012.
  5. Hermitech Laboratory - Formulator Mathml Weaver
  6. MathJax
  7. Authoring MathML for Mozilla
  8. Opera Desktop Team - Even more work
  9. MathML で記述した数式を PDF に変換
  10. JAWS16.0日本語版
  11. MathFlow, Dessci.com. Retrieved on 9 May 2012.

訳注

  1. Presentation MathMLをPMathML、Content MathMLをCMathMLのように略記することも一案だが、ここでは文献ローラ・リメイ 武舎広幸訳 (1998-8). HTML入門 続. プレンティスホール出版. ISBN 4-89471-066-8. に倣った。

外部リンク

  • W3C Math Home 規格書、FAQ、ソフトウェアの一覧がある