Ajaxライブラリの変遷

Ajaxライブラリが生まれた経緯Ajaxテクノロジで開発する上で、大きな問題となることの1つは各Webブラウザ間の互換性問題です。主にInternet Explorer(以下、IE)とそれ以外のWebブラウザの仕様の違いに依存しています。まず、Ajaxの肝となるXMLHttpRequestの呼び出

林 俊之

2008年5月9日 20:00

Ajaxライブラリが生まれた経緯

Ajaxテクノロジで開発する上で、大きな問題となることの1つは各Webブラウザ間の互換性問題です。主にInternet Explorer(以下、IE)とそれ以外のWebブラウザの仕様の違いに依存しています。

まず、Ajaxの肝となるXMLHttpRequestの呼び出し方からして異なっています。

IEの場合は、「xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");(IE7はXMLHttpRequest()でも可能)」となり、それ以外のWebブラウザでは、「xmlhttp = new XMLHttpRequest();」となります。

また、オブジェクトにイベントをアタッチするやり方も違います。

IEの場合は、「element.attachEvent('onclick', handler);」となり、それ以外のWebブラウザでは、「element.addEventListener('click', handler, false);」となります。

このように、いちいち処理ごとにWebブラウザによって処理を変えて記述していては効率が悪く、またバグの温床にもなりやすいです。そこでAjaxのライブラリを使うと、このような処理を汎用的な関数で吸収することができるようになり、Webブラウザの差異を気にすることなく実装することが可能になるのです。

さらに、Ajaxではドラッグ&ドロップで、ページ遷移なしにコンテンツの中身が書き換わるという動作が多用されます。このような挙動はHTMLのDOM(Docuument Object Model)をJavaScriptから操作することで実現しているのですが、DOMの操作は汎用的にいろいろなことが操作できる反面、実際書いてみると煩雑なコードになりがちです。

この実装もWebブラウザ間で実装が違っていたりと何かと大変なことが多いのですが、多くのAjaxライブラリはよく使う機能をより簡潔に記述できる機能を提供してくれています。

このようなAjaxライブラリがネットで出回り始め、Ajaxテクノロジの導入が進みはじめました。また、こういった普及にブログやソーシャルブックマークなどのCGMコンテンツが貢献したのも今の時代ならではといえるでしょう。このような自動的に伝染していくメディアがあって、より急速に広まっていったと考えています。

IEの実装は先進的?

たしかにバグが多く、皆を悩ませることが多いIEですが、先行実装や、独自実装したところは面白いものも多く、賛否両論分かれるところですが、筆者はIEを評価しています。

IEはほかのWebブラウザに比べてWebブラウザ上でアプリケーションを扱うことを初期のころから意識して作っています。やはり、デスクトップアプリケーションを開発している企業ならではの発想と理念があるのではないでしょうか。

いくつかIEで実装されている面白い機能で、IEに先行・独自実装された機能を見てみましょう(図1)。

特に「Expression」はCSSにJavaScriptのロジックが記述できるというまか不思議な仕様ですが、CSSのみでIEにロジックを追加できるので、ちょっとしたバグの対応に便利です。頻繁に使うのは推奨しませんが、いざというときに役に立ちます(CSSがvalidでなくなってしまいますが…)。

独自実装には否定的な意見も多いですが、標準仕様にそって作っているだけでは進化のスピードも遅くなるでしょうし、よいアイデアであれば先行して実装してしまうのもありなのではないでしょうか。

XMLHttpRequestももともとはIEの独自実装です。まさかMicrosoftもこれがここまで世界を変えるものになるとは思わなかったのではないでしょう。

そのMicrosoftもIE 8ではWeb標準に乗っ取って、より互換性の高いWebブラウザをつくると明言しています。素晴らしいことだと思いますが、個人的には標準実装だけでなくMicrosoft独自の面白い実装にも期待したいです。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30