WebKitの数式(MathML)でSafariはボランティアの努力を採用し、数式を表示できる。Chromeは同じものを不採用として批判を浴びる。

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

HTMLに数式を埋め込む方法はいくつかあります。ここでは、MathMLを埋め込んだときの表示について検討します。

ちなみにMathMLとはどんなものか、を知るには次の資料をご覧いただくと良いと思います。

http://www.antenna.co.jp/AHF/ahf_samples/v62/Seminar20140307.pdf

HTML5ではMathMLの要素をHTMLの要素と同じように記述することができます。次のページにサンプルがあります。

http://www.w3.org/TR/2012/CR-html5-20121217/embedded-content-0.html#mathml

HTMLの中に記述したMathMLをブラウザで表示する方法として、ブラウザのネイティブレンダリング機能で表示する方法と、MathJaxというJavascriptを使って表示する方法があります。以下の話はネイティブレンダリング機能で表示する方法に関するものです。

ブラウザの有力なレンダリングエンジンのひとつがWebKitです。WebKitは主にアップルが中心になって開発してきたものでアップルのWebブラウザであるSafariで使われています。グーグルもChromeブラウザでWebKitを使っていました。なお、グーグルは2013年の春にレンダリングエンジンをBlinkに切り替えることを発表し、2013年7月リリースのChrome28以降はBlinkベースとなっています[1]。また、Androidの標準ブラウザもAndroid4.4からBlinkベースとなっています。

MathMLは、1998年にV1がW3Cの勧告となっており、歴史の古い仕様です。利用もWebブラウザ以外の領域ではかなり普及しています。ところがブラウザのネイティブレンダリング機能によるMathML表示はなかなか進んでいません。

現在、主要なブラウザでMathMLのネイティブレンダリングをサポートしているのは、Safari 5.1以降[2](WebKit)とFireFox(レンダリングエンジンはGecko)のみです。

GeckoのMathMLレンダリングエンジン開発は、FireFoxになる以前から始まっておりFireFoxは1.0で、既にMathMLの表示をサポートしています[3]。しかし、開発のスピードは遅いようで、かなり沢山の問題が残っています。MathML3.0で規定された算数(Elementary Math)のサポートもありません。

WebKitのMathMLレンダリングも少しずつ対応が進んでいたようですがあまり活発とはいえませんでした[4]。Wikiページの履歴をみますと、4年程前(2010年8月)にAlex Milowski氏とFrançcois Sausset氏による実装が行なわれ、その後2012年にDave Barton氏がバグを修正した後、グーグルは2013年1月にリリースしたChrome24でMathMLを有効にしました[5]。MathMLの実装を行なったのは、正社員や委託契約者ではなく、ボランティアのようです。

しかし、グーグルの開発者は、このMathMLレンダリングは品質的に不十分として2013年2月リリースのChrome25でMathMLのレンダリング機能を使えなくしてしまいました[6]。このChromiumの議論を読みますと、2月時点では、グーグルの担当者からは、問題を解決したらまた使えるようにしたいという、次のようなメッセージが出ています。

#32 “Note that MathML has had to be turned off because the code is not yet production ready.
We hope to turn it on in some future release.
#40 To summarize the current status of this bug: We’d like to enable MathML in Chrome, but the WebKit code still needs further improvements before we can ship it.
(Chromiumより)

しかし、2013年10月になって、次のような新しいコメント(#43)が発信されました。MathMLはMathJaxで十分なので直接サポート(ネイティブレンダリング)は不要という趣旨の発言です。これをめぐってMathMLのネイティブレンダリングを期待する開発者との間で激論となっています。

#43 comment #40 is out of date. MathML is not something that we want at this time. We believe the needs of MathML can be sufficiently met by libraries like MathJax and doesn’t need to be more directly supported by the platform.
(Chromiumより)

グーグル開発者の発言を読みますと、品質は具体的にはセキュリティの問題が大きく、これはアーキテクチャの問題なので簡単には解決できない、ということが指摘されています。一方で、MathMLを期待する側からは、セキュリティについては解決済みであり、機能を使えなくしてからそういうことを指摘しても実際に確認できないではないか、などの批判があります。

これに関して、一般のメディアでも、「グーグルは数式の重要性がわかっていないということで批判を浴びている」という記事が掲載されています。[7]

同じMathMLレンダリング機能をSafariでは有効にしている訳ですから、グーグルのセキュリティに関する発言が実際にどこまで妥当かは判断しにくいところです。

いろいろな記事を見ていきますと、WebKitもGeckoもMathMLレンダリングエンジンの開発は、ボランティア任せで専任の担当者はチェックしかしていないようです。このあたりに問題がありそうに思うのですが、引き続きもう少し調べて見たいと思います。

[1] 「Google Chrome 28」の安定版リリース Blink採用と「リッチ通知」機能(Windowsのみ)(2013年07月10日 )
[2] Safari 5.1 and math (July 21st, 2011 at 8:29 pm by Dr. Drang)
[3] http://fred-wang.github.io/MozSummitMathML/
[4] https://trac.webkit.org/wiki/MathMLには、WebKitのMathMLプロジェクトが記載されており、進捗をチェックできます。
[5] 「Google Chrome 24」が安定版に、“MathML”や“Datalist”要素をサポート (2013/1/11 13:48) 窓の杜ほか
[6] Issue 152430: Enabling support for MathML(chromium)
[7] Google subtracts MathML from Chrome, and anger multiplies(November 5, 2013)