時代が進みすぎた結果、今となっては存在感も薄れていくjQueryですが、数年前まではJavaScriptライブラリの王道と言っていい地位を占めていました。では、時計の針をjQuery誕生の頃まで戻して、どんな位置付けだったか見ていきましょう。
jQueryがリリースされた頃の世界
jQueryの初リリースは2006年とのことですが、この頃Webブラウザ界はどんな世界線だったのか振り返ってみましょう。
- Internet Explorer…7のリリースが2006年後半
- Firefox…1.0、1.5、2.0
- Netscape…8(Mozillaベース)
- Safari…2.0
- Chrome…誕生前(初版が2008年)
- iPhoneもAndroidもリリース前
ということで、時代はIE vs Netscapeのブラウザ戦争が片付いた結果、「ブラウザごとにAPIも何もかも違う」という状況はひとまず解決したものの、まだまだDOM実装にはブラウザごとの差異がある、というような環境でした(IEにaddEventListener
が登場したのは、IE 9での話です)。そして、要素の検索メソッドもgetElementById
、getElementsByName
、getElementsByTagName
ぐらいしかなく、IE 6ではXHRもActiveXObject
として実装されている、というように、現代の水準からすればない物づくしでした。
jQuery 1.0の水準
現在のjQueryサイトでも1.0からあったものを抽出できますが、そこで揃っていたメソッドは、現在のjQueryと基本的に同じようなものです(後から追加された機能もちょくちょくありますが、.closest
が1.3から、Deferred
や.prop
が1.6から、.on
が1.7からという感じです)。
- セレクタ1つでエレメントの検索ができる
$()
- DOMのルールに従って正しくバブリングし、ブラウザを問わず同じ形でセットできるイベント(※)
- エレメントに結びつけてもメモリリークしない、イベントハンドラやデータ構造(※)
- スッキリとメソッドチェーンで書ける利便性
-
window.load
より早いタイミングで動作する、$(関数)
- 便利に使えるAjax関数
この時代背景を踏まえれば、当時のjQueryがどれだけ便利な存在だったか、想像できることかと思います。
現代に至る変化
さて、このjQueryが提供していた利便性ですが、ブラウザ自体の進化により、次第に魅力を減じていくこととなります。セレクタはdocument.querySelectorAll
でブラウザネイティブの取得ができるようになり、IEもDOMをしっかり実装していった結果、ブラウザごとの実装をjQueryで吸収する必要も減ってきました。アニメーションもCSSアニメーションのほうが負担が軽いということで、jQueryのをゴリゴリ使う時代でもなくなっています。
$(関数)
もDOMContentLoaded
としてブラウザイベントとして取れるようになる、jQueryのクラス系のメソッドと同様なものがclassList
に実装される、.closest
がネイティブ実装されるなど、jQueryに影響を受けたと思しきDOMの実装すら存在するようになっています。
このようにして、「クロスブラウザ」と「便利なメソッド」の利点がなくなっていき、そして仮想DOMが全盛となって直接DOM操作すること自体がバリバリ行われるものではなくなってきた中、jQueryに残ったものは「メソッドチェーン」、「簡潔なメソッド名」と「jQueryプラグイン」ぐらいかな、という感じです。