最近頻繁に耳にする、「マルチブラウザ」と「クロスブラウザ」。この2つの違いを理解して、使い分けできているでしょうか?
国内だと両者は同じ意味として捉えられており、IT用語の解説を行っているサイトでも同義として扱うことが多いようです。しかし国外では、この2つの言葉に対して、別の定義を持たせるべきだという主張が生じています。多くのJavaScriptライブラリを提供しているサイトでは、意図的にこれらの言葉を使い分けているケースが見受けられます。
一体何が違うのでしょうか?
マルチブラウザとは?
マルチブラウザとは、動作するWebブラウザを明示し、その環境下では保証される状態のことを表します。
一昔前は、「本サイトはInternet Explorer 6で動作保証されます」というキーワードを目にした方も多いかと思います。「推奨ブラウザ」と呼ばれるものです。
少し前のインターネットはIE6に支配されていました。サービスがIE6だけをケアすれば良かった時代は、確かにありました。しかし今のインターネットは、ChromeやFirefoxが高いシェアを得て、またWindows 7のシェア拡大と共にIE8以上の複数のバージョンが利用されるという状況です。こうした中、複数のWebブラウザに対応することが求められ、対象のWebブラウザが「複数」であることを強調する用語が必要になりました。それが「マルチブラウザ」です。
マルチブラウザ対応で最も有名なものが、「jQuery(http://jquery.com/)」です。
jQueryはマルチブラウザ対応されたWebサイト作りを支援するライブラリです。jQueryでは動作するWebブラウザの種類・バージョンを明示します。そしてその明示された環境下では、jQueryコアとプラグインを組み合わせることで、様々な機能を付加することができます。
表現が変わって響きが良くなっていますが、その正体はまさに一昔前頻繁に目にした「推奨ブラウザ」という考え方そのものです。本質的な違いはありません。
クロスブラウザとは?
クロスブラウザとは、動作するWebブラウザは明示せず、如何なる環境下でもコンテンツが何かしらの状態で提供されることを保証した状態のことを表します。
Webブラウザの種類が豊富になり、Internet Explorerが独自実装から標準準拠へと戦略を変えるようになり、コンテンツをWebブラウザで縛るデメリットが大きくなりました。こうした中、Webブラウザの機能に着目し、機能の有無に応じてフォールバックを行い、何かしらの形でコンテンツを提供できることが望ましいという考えが広まっています。これが「クロスブラウザ」です。
Webでは、JavaScriptが無効の環境下でも、CSSの力を借りれない環境下であっても、何かしらのコンテンツを提供されることが求められています。Canvasのような視覚を使うようなもの、Sound要素のような聴覚を使うようなもの、様々なコンテンツの提供方式がありますが、どのようなものであってもこれらに依存しない「情報」が得られることを求めます。「アクセシビリティ」という考え方です。
クロスブラウザ対策として有名なものが、「Modernizr(http://modernizr.com/)」です。
jQueryは、推奨されないWebブラウザは保証しないという思想です。普通に使えば、保証外のWebブラウザでは何が起こるかわかりません。対してModernizrは、機能の有無に応じてどう振る舞うべきかという設計指針に基づきWeb制作を行います。
Modernizrでは、機能の有無を判定するModernizrコアと、フォールバックを行なうクロスブラウザポリフィルを組み合わせるなどして、機能の作り込みを行います。JavaScriptが動作しない場合の判定を、HTMLドキュメント上で行えるような機能まで提供されます。
jQueryとは違って利用者側である程度の意識が求められますが、クロスブラウザであることを徹底する場合、非常に有益な機能を兼ね備えています。
どちらが良いのか?
現段階では「両方」が正解でしょう。
ブラウザで縛るなとは言われても、ブラウザを縛るという前提があったからこそ多様なライブラリが作れたのもまた事実です。jQuery無くして今の生産性・品質を維持できない現場は、世の中にゴマンとあるでしょう。
jQueryコア自体はかなり昔にブラウザの種類・バージョンを判別する機能を廃止しましたが、実態としてこれらの情報を全く利用せずに、jQueryが動作しない環境下での動作の作りこみは難しいという状況では無いでしょうか。(大抵は無視なのかもしれませんが)
ただ、クロスブラウザ自体も、その手段や定義が今も模索中のようにも思えます。JavaScriptが動かない環境下で何かしらのアプローチがあればそれで大抵は満足するようですが、「完全なクロスブラウザが何か」という問いに同じ答えはなかなか出てこないように思えます。
「IE6でしか動きません」がダサいとは言われます。「推奨ブラウザを作るなんて古い」と言われたりします。しかし、私たちが今もなおこの延長にいるのは確かです。悔しいですが、jQueryに依存しているうちは、自分たちもその「ダサい」側にいることは間違いないのです。
「ダサいことだ」「ダメなことだ」と思える状況そのものは、素晴らしいことですが。