jQueryが「古い」と言われる本当の理由

jQueryは古い技術だから嫌われているわけではない

jQueryはよく「もう古い」「今どき使わない」と言われます。
しかし、これは半分正しく、半分誤解です。

単に登場が古いから使われなくなったのではありません。
結論から言うと、jQueryが提供していた価値が、ブラウザ標準に取り込まれたためです。

つまり、jQueryが不要になったのであって、jQueryの設計が間違っていたわけではありません。

かつてjQueryが必要だった理由

2000年代のJavaScript開発では、次のようなコードが普通でした。

var el = document.getElementById("menu");
el.style.display = "none";

この時点では問題なさそうに見えますが、実際にはブラウザ差異が大量に存在しました。

  • イベントの書き方が違う
  • CSS操作が不安定
  • DOM取得の方法が違う
  • AjaxのAPIが統一されていない

例えばAjaxです。

var xhr = new ActiveXObject("Microsoft.XMLHTTP");

これはInternet Explorer専用の書き方です。他のブラウザでは動きません。
jQueryの$.ajaxは、これらの差異をすべて吸収しました。

つまり当時のjQueryは「便利な糖衣構文」ではなく、ブラウザを使える状態にするための必須レイヤーでした。

現在のJavaScriptの変化

現在は状況が大きく変わりました。
ブラウザが標準仕様に収束し、ネイティブAPIが充実しています。

例えばDOM取得です。

現在
$("#id") document.querySelector("#id")

イベント登録も同様です。

document.querySelector("#btn")
  .addEventListener("click", handler);

Ajaxもfetch APIが使えます。

fetch("/api/user")
  .then(r => r.json())
  .then(data => console.log(data));

つまり、かつてjQueryが提供していた機能の多くが、ブラウザに標準搭載されました。

「書きやすさ」の逆転

かつては

  • 素のJavaScript:複雑
  • jQuery:簡単

でした。
しかし現在は逆転しています。

シンプルな操作なら、むしろネイティブの方が短くなります。
さらに、jQueryを読み込むコスト(数十KB)が相対的に大きくなりました。

このため、わざわざライブラリを導入する理由が減りました。

モジュール化との相性

もう1つの理由がJavaScriptのモジュール化です。
ES Modulesが普及し、次のような開発が一般的になりました。

import { something } from "./module.js";

jQueryはグローバル変数を前提としたライブラリです。
scriptタグで読み込まれ、window.jQueryとして存在します。

この設計は、ビルドツールやバンドラと相性が良くありませんでした。
現代のフロントエンドは「必要なコードだけ読み込む」方向に進み、巨大な単一ライブラリは避けられるようになりました。

誤解されやすいポイント

ここで重要なのは、「jQueryは危険な技術」ではないという点です。
実際、現在でも多くの管理画面やCMSで使われています。

問題は次のようなケースです。

  • SPAをjQueryで構築しようとする
  • 状態管理をDOMに任せる
  • 新規開発で全面採用する

これらは設計が合いません。
しかし既存のページに動きを付ける用途では、今でも合理的です。

なぜ「古い」と感じるのか

技術が古く見えるとき、たいてい理由は2つあります。

1. 役割がなくなった
2. 新しい抽象化が登場した

jQueryは両方に当てはまります。
ReactやVueはUIを「生成」しますが、jQueryはUIを「操作」します。

現在のWebは生成型の方が扱いやすくなりました。
その結果、jQueryの立ち位置が変わりました。

最後に

jQueryは衰退した技術というより、「標準化を成功させた技術」です。
ブラウザのばらつきを吸収した結果、その役割がブラウザ自身に移りました。

つまり、jQueryが不要になったのは失敗ではなく、目的が達成されたからと言えます。
古いのではなく、仕事を終えたライブラリと見る方が、実態に近いでしょう。