jQueryは以下の2つの側面を有した時代を象徴するJavaScriptライブラリーでありましたがそれぞれ技術の進化によりより良い手段が提供されてしまったがゆえにあまり利用されなくなりました。
- ブラウザ間の仕様の差分を吸収するJavaScriptサブセット
- わかりやすいDomライブラリーのラッパー
ブラウザの進化
そもそも、なぜjQueryが使われていたのかそれは「ブラウザごとの差分を吸収できる」からでした。しかし最新のJSやCSSの仕様に対応せず独自路線を突き切る憎きIEのサポートも終了し主要ブラウザは、Chroniumベースもしくは最新仕様に追従しているブラウザのみとなりました。そのことにより「ブラウザ差分を吸収するライブラリー」としてのjQueryは大方役割を終えたといってもよいでしょう。
宣言的UIと仮想DOMいう発想
jQueryの時代にはJavaScriptはDOMAPIでDOMを命令的にDOMを扱っていました
それに対しCSS、HTMLは結果の性質の集まりを扱っていました。 この状況に一石を投じたのがReactというライブラリーです。これはJSXというDOMを扱うDSL(?)によって宣言的にUIを扱うことを可能にしました。宣言的にDOMを扱うことでコードベースで結果のDOMを理解することが容易になりコードの保守性が上がります。これがjQueryとの決定的な差になります。
さて、なぜ宣言的UIができるようになったのでしょうか?それは「仮想DOM」の存在によって宣言的UIの致命的なデメリットであった「命令型よりあまりにもパフォーマンスが悪い」というものを打ち消してしまったからです。「宣言的UIが現実的なパフォーマンスでjavascriptに組み込めるようになった。」この事実がJavaScriptライブラリーというゲームを大きく転換したものだといえるでしょう。
jQueryは不要なのか
筆者は「歴史的に必要なものであったが役割を終えたライブラリー」であると考えております。なぜならばjQueryは便利なSyntaxをたくさん保有し宣言的なJavaScriptのサブセットとしてはスタンダードの地位を築きました。しかしながら親であるJavaScriptも進化しjQueryの「サブセットの大きさが大きい」という問題がjQueryのメリットを上回ってしまっているように思ってしまいます。
また、宣言的UIというものがあるというものを踏まえて「それでも命令型でしかできないコード」があるとするならばより軽量なJavaScriptのサブセットを使うべきなのかなと思います。その点で「ブラウザロード時にダウンロードする全部入りの大きなライブラリー」はもう終焉が近いのかなと筆者は考えております。