jQueryはなぜ生まれ、なぜ「卒業」されたのか ―
ライブラリの盛衰が教えてくれること

かつてWeb制作の現場で「jQueryを知らない人はいない」と言われた時代があった。なぜあれほど広まり、なぜ今は主役でなくなったのか。その変遷を辿ることで、技術の流行り廃りの「なぜ」が見えてくる。

「jQueryなんて古い」は本当に正しいか

jQueryは古い——そう言われるようになって久しいですが、少し立ち止まって考えてみてください。2024年時点でもjQueryはW3Techsの調査によれば世界のWebサイトの77%以上で使われています。WordPressのコアにも組み込まれており、jQueryが「消えた」のかというとまったくそうではない。

ではなぜ「古い」「使わない方がいい」という声が上がるのか。答えは「jQueryが解決しようとしていた問題が、もはや問題でなくなった」からです。これは技術の「失敗」ではなく、その技術がやり遂げた「成功」のしるしでもある。

そこには、ブラウザとWebの歴史そのものが詰まっています。

jQueryが「古い」のは、jQueryが解決しようとしていた問題を、ブラウザ自身が解決してしまったからだ。

jQueryが生まれた「あの時代」の絶望

2006年。ジョン・レシグ(John Resig)がjQueryを公開したとき、Web開発者たちはある種の「地獄」にいました。

当時のブラウザ市場はInternet Explorer 6が圧倒的なシェアを持ちながら、Firefox、Opera、Safariが追いかけるという混乱した状況でした。問題は、同じJavaScriptを書いても、ブラウザによって動きがまったく違ったことです。

たとえば、DOMの要素を取得するだけでも、IE6では attachEvent、標準ブラウザでは addEventListener を使い分けなければなりませんでした。Ajaxリクエストを送るためには XMLHttpRequestActiveXObject の両方を試みる分岐処理が必要で、CSSのスタイルを動的に変更するだけでも「このブラウザではこう、あのブラウザではああ」という if文の山が積み重なっていく。

「Write less, do more.」——jQueryのスローガンはコードの量を減らすだけでなく、ブラウザ間の差異という「精神的な負荷」をゼロにする宣言だった。

ジョン・レシグが天才だったのは、この問題を「仕様で解決する」のではなく「ライブラリで吸収する」と決めたことです。ブラウザのバラバラな実装を内部で判定し、開発者には一つの統一されたAPIだけを見せる。その発想が、jQueryを一夜にして「業界標準」にした。

2006
jQueryリリース(v1.0)

ジョン・レシグがBarCamp NYC 2006で発表。「$」で始まるシンプルなAPI、セレクタとDOM操作の統一、AjaxのラッパーがWeb開発者を虜にする。

2008
jQuery UI 登場、生態系が拡大

ドラッグ&ドロップ、日付ピッカー、タブUIなどコンポーネントライブラリとして拡充。企業サイトやポータルへの採用が爆発的に増える。

2011
jQueryモバイル、採用率が世界最高水準へ

スマートフォン普及に合わせてjQuery Mobileが登場。W3Techsの調査では世界のWebサイトの50%以上でjQueryが使われるという前例のない普及率を達成。

2013〜2015
React・Angular・Vueが登場

Facebookが2013年にReactを、Googleが2010年にAngularを公開(2016年にAngular 2で刷新)。Vue.jsも2014年登場。「コンポーネント指向」という新しいパラダイムがフロントエンドを変え始める。

2015〜2020
ブラウザが「jQueryのやっていたこと」を標準実装

ES2015(ES6)でPromise・アロー関数・クラス構文が標準化。document.querySelector() が全ブラウザで安定。Fetch APIが登場しXHRを置き換え。jQueryの存在理由が静かに消えていく。

jQueryが解決していた「3つの問題」と、その消滅

jQueryが長年にわたって開発者に愛された理由を整理すると、実は3つの具体的な「痛み」を解消していたことがわかります。そしてその3つが、時代とともに次々と消えていった。

①ブラウザ間の互換性地獄

先述の通り、これがjQuery誕生の最大の動機でした。IE6〜8とモダンブラウザの間には深い溝があり、同じコードが動かない。jQueryはその溝を内部で吸収し、「一度書けばどこでも動く」を実現した。

2016年にMicrosoftがIE11以前のサポートを終了し、Edgeへの移行が進んだことで、この問題は実質的に消滅しました。

② DOM操作とAjaxの冗長さ

vanilla JavaScript(素のJS)でDOM要素を取得し、クリックイベントを登録し、Ajax通信を行うには、信じられないほどの記述量が必要でした。jQueryはこれを劇的に圧縮した。

2006年頃 — 素のJS
冗長で複雑なコード

要素の取得にgetElementById、イベントの登録にaddEventListener(IE非対応)、Ajaxにはブラウザ分岐が必須で20行以上になることも。

2006年頃 — jQuery
$("selector").on("click", fn) の一撃

セレクタ・イベント・Ajax・アニメーションすべてが$ 一文字で統一。「これさえ覚えれば動く」という強力な一貫性が初心者をも取り込んだ。

しかし2015年以降、document.querySelector()addEventListener()fetch()classList が全ブラウザで安定して使えるようになり、「jQueryでやっていたことが素のJSで書ける」状況が整っていきます。

③ アニメーションとUI操作

fadeIn()slideDown()animate()——jQueryのアニメーションAPIは当時の開発者にとって魔法でした。CSSアニメーションがまだ黎明期で、JavaScriptでDOM要素を動かすには手書きのタイマー処理が必要だった時代に、わずか数行で滑らかな動きが実現できた。

その後、CSSの transition@keyframes が標準化され、さらにWeb Animations API(WAAPI)が登場したことで、jQueryでアニメーションを書く理由はなくなりました。

jQueryは「ブラウザが標準化すべきものを先取りした」ライブラリだった。標準化が追いついた瞬間に、その役割は終わった。

「卒業」が意味すること ― 技術の役割は変わる

jQueryが広まりすぎたことの弊害も、2010年代後半には顕在化していました。コンポーネント思考が求められる時代に、jQueryはページ全体を「DOMツリーへの命令の集積」として扱う構造から抜け出せなかった。大規模なSPAやWebアプリを作るとき、jQueryベースのコードは複雑に絡み合い、テストも困難になっていく。

ReactやVue.jsが「データが変わればUIも自動で変わる」という宣言的なモデルを提示したとき、多くの開発者は「これが欲しかったものだ」と感じました。私自身も、Reactを初めて触ったときに「jQueryで書いていたあの複雑な状態管理が、こんなにシンプルになるのか」と衝撃を受けたのを覚えています。

ただし、誤解してはいけないのは——ReactやVueがjQueryを「倒した」のではないということです。jQueryが解決していた問題は時代とともに消え、新しい問題(大規模なUIの状態管理)が浮上した。それに答えたのが新しい世代のフレームワークだった。技術の役割は、Webの課題とともに変わる。

📌 豆知識
「You Might Not Need jQuery」というサイト(youmightnotneedjquery.com)が2013年頃に話題になりました。jQueryで書いていた処理を素のJSで書き換えると何行になるかを比較したサイトで、「もはやjQueryなしでもやっていける」という空気の形成に大きく貢献しました。

さらに言えば、jQueryが「古い」と言われながらも現実のWebサイトの大多数で使われているという事実は、技術の普及と「現場」の関係をよく表しています。新しいフレームワークへの移行にはコストがかかる。学習コスト、リファクタリングの工数、チームのスキルセット。特にWordPressで作られた数百万のサイトは、そう簡単にjQueryから切り離せない。

「最先端の技術を使っている現場」と「現実のWebの大多数を動かしている技術」は、常に一致していません。それを知っておくことは、エンジニアとして大事な視点です。

jQueryの遺産 ― 今のWebに残っているもの

jQueryが消えていなくなったわけではありません。むしろ、jQueryが形成した概念や設計思想は今のWebに深く刻み込まれています。

CSSセレクタでDOM要素を取得するというアイデアは、document.querySelector() として標準化されました。これはjQueryの $() の考え方をW3Cが正式に取り込んだものです。メソッドチェーン($(".el").addClass("active").hide() のような書き方)は、JavaScriptのPromiseチェーンや配列のfluentなAPIに継承されています。Ajaxのシンプルなラッパーという発想は、fetch APIへと受け継がれた。

偉大なライブラリは、消えるのではなく「標準」に溶け込む。jQueryが目指したWebは、今のブラウザそのものになった。

jQueryを学ぶ必要があるかといえば、新規プロジェクトで積極的に採用する理由は薄くなっています。しかし、既存のWordPressサイトや大企業のレガシーシステムをメンテナンスする現場では、今もjQueryの読み書きは必要なスキルです。「古い技術は捨てるもの」ではなく「時代と役割が変わるもの」として理解することが、長くこの仕事を続ける上での現実的な視点ではないでしょうか。

今、あなたが使っているReactのuseStateや、Vue.jsのリアクティブシステムも、いつかは「あの時代のものだ」と言われる日が来るかもしれない。そのとき、その技術がなぜ生まれ、何を解決し、どこへ受け継がれていったのかを理解できる人間でありたいと思っています。

まとめ

  • jQueryは2006年にジョン・レシグが公開。ブラウザ間の互換性地獄・DOM操作の冗長さ・Ajaxの複雑さという3つの「痛み」を解決するために生まれた。
  • 全盛期には世界のWebサイトの50%以上で使われ、「jQueryを知らないWeb開発者はいない」と言われた時代があった。
  • 「卒業」の最大の理由は、ブラウザ自体がjQueryのやっていたことを標準APIとして実装したこと。querySelector・fetch・classList・CSS transitionがその代表例。
  • ReactやVueはjQueryを「倒した」のではなく、jQueryが解決できなかった新しい問題(大規模UIの状態管理)に答えた。
  • jQueryが生んだ概念——CSSセレクタによるDOM取得・メソッドチェーン・Ajaxラッパー——は今のブラウザ標準に溶け込んでいる。
  • 「古い技術は捨てるもの」ではなく「時代と役割が変わるもの」。技術の盛衰を知ることは、今使っている技術の本質を理解することでもある。