14 ポイント 投稿者 GN⁺ 2026-01-19 | 3件のコメント | WhatsAppで共有
  • 約10年ぶりのメジャーバージョンアップデートとして、jQuery 4.0.0が正式公開
  • IE 10以下および旧世代ブラウザーのサポート終了、コードの軽量化と現代的な標準準拠を強化し、大半のユーザーはコード変更なしでアップグレード可能
  • ESモジュールベースの構成へ移行し、Rollupビルドを導入、最新の開発環境との互換性を確保
  • Trusted TypesおよびCSP対応を追加し、セキュリティポリシーとの衝突を最小化
  • 非推奨APIの削除およびslimビルドの縮小により、性能向上と保守性を改善

jQuery 4.0.0の主な概要

  • jQuery 4.0.0は約10年ぶりの大規模なメジャーリリースであり、長い開発サイクルと複数のプレリリースを経て完成
    • 大半のユーザーはコード変更なしでアップグレード可能
    • 以前のバージョンで蓄積されたレガシーコードと非公開パラメーターを削除
  • アップグレードガイドjQuery Migrateプラグインがあわせて提供され、旧バージョンからの移行を支援
  • 配布は公式CDNおよびnpmを通じて可能で、その他のCDNは順次更新予定

ブラウザーサポートの変更

  • IE 10以下のサポート終了、IE 11はjQuery 5.0で段階的に削除予定
  • Edge Legacy、旧iOS版(直近3バージョンより前)、旧Firefox版(直近2バージョンより前)、Android Browserのサポートを終了
  • 旧式ブラウザーをサポートする必要がある場合はjQuery 3.xの継続利用を推奨

Trusted TypesおよびCSP互換性

  • TrustedHTMLオブジェクトを安全に処理できるようTrusted Types対応を追加
  • ほとんどの非同期スクリプト要求を**``タグベースへ移行**し、CSPエラーを防止
    • "headers"オプション使用時は引き続きXHRも利用可能だが、scriptAttrsの使用を推奨

ESモジュール移行

  • jQueryのソースがAMDからESモジュールへ完全移行
    • 従来のRequireJSの代わりにRollupをビルドツールとして採用
    • ESモジュールベースでテストも別途実施
  • ``により現代的なブラウザーおよびビルドツールとの互換性を確保

非推奨APIの削除

  • 長らく非推奨とされていたAPIを完全に削除
    • 削除された関数: jQuery.isArray, jQuery.parseJSON, jQuery.trim, jQuery.type, jQuery.now, jQuery.isNumeric, jQuery.isFunction, jQuery.isWindow, jQuery.camelCase, jQuery.nodeName, jQuery.cssNumber, jQuery.cssProps, jQuery.fx.interval
    • 代替: Array.isArray(), JSON.parse(), String.prototype.trim(), Date.now() などのネイティブメソッドを使用
  • IE関連コードの削除により、gzip基準で約3KBサイズを削減

内部専用メソッドの削除

  • jQueryプロトタイプで内部用にのみ使われていたpush、sort、spliceメソッドを削除
    • $elems.push(elem)の代わりに[].push.call($elems, elem)の形で代用可能

フォーカスイベント順序の変更

  • W3C仕様に従ったfocus/blurイベント順序に統一
    • 新しい順序: blur → focusout → focus → focusin
    • 従来のjQueryの順序とは異なるため互換性に注意が必要
    • IEを除くすべてのブラウザーが同じ順序で動作

slimビルドの改善

  • DeferredsおよびCallbacksの削除により、ファイルサイズを約19.5KB(gzip)まで縮小
    • 大半のブラウザーはネイティブPromiseをサポートしているため代替可能
    • IE11対応が必要な場合はメインビルドまたはPromiseポリフィルの使用を推奨
  • slimビルドはAjaxおよびアニメーション関連モジュールを除外し、約8KBさらに小型

ダウンロードと配布

コントリビューターと20周年記念

  • 多くのオープンソース貢献者がパッチ、バグ報告、テストに参加
  • jQuery 20周年を迎え、Dallasでチームが再会し、創設者John ResigもZoomで参加

主なコード変更の要約(Changelog)

  • Ajax: バイナリデータ処理を改善、CSPエラーを防止、JSONPのエラー処理を強化
  • CSS: ``要素のサイズ計算を修正、CSS変数の空白処理を改善、opacityフックを削除
  • Core: AMD → ESモジュールへ移行、DOMParserを使用、旧式ブラウザー対応コードを削除
  • Event: focus/blurイベントをネイティブ処理、event.which shimを削除
  • Selector: Sizzleを統合、:hasおよび:even/:oddを改善、uniqueSortのチェーン対応を追加
  • Docs: HTTPSリンクを更新、READMEおよびCONTRIBUTING文書を整備
  • Release: ビルドおよび配布プロセスを自動化し、release-itベースへ移行

要約

  • jQuery 4.0.0は現代的なWeb標準とセキュリティポリシーに合わせた構造的刷新版
  • レガシーコード削除、ESモジュール化、セキュリティ強化、軽量化により、長期保守の基盤を強化
  • jQueryエコシステムの20周年を記念する象徴的なリリースと評価される

3件のコメント

 
tsboard 2026-01-21

感慨深い20周年です。今では使う機会はほとんどなくなりましたが、それでも現場で役立つツールとして、これからも愛され続けてほしいです。

 
shakespeares 2026-01-19

ものすごくしぶといですね.. 笑

 
GN⁺ 2026-01-19
Hacker Newsの反応
  • 関連記事として、レガシーコードベースで最新フレームワークを使えないときに、jQueryをリアクティブに使う方法をうまくまとめた記事がある
    Reactive jQuery for Spaghetti-fied Legacy Codebases

    • 昔はこの用途で BackboneJS がよく使われていた。今でも引き続きメンテナンスされている
      レガシーな事情でjQueryを使わざるを得ないなら、Backboneはモダンなフレームワークへ移行する前の良い中間段階になり得る
      BackboneJS公式サイト, GitHubタグ一覧
    • この記事を見ていると、昔の jQueryスパゲッティコード 時代を思い出す
      実際、過剰に設計されたReactコードが、きちんと整理されたjQueryコードよりひどいこともあった
      Reactが品質基準を引き上げたのは確かだが、ときには慣れた道具を適切に使うほうが効率的だ
    • 自分もこのアプローチを使ったことがあるが、2010年代風のjQueryの混沌よりはるかに良かった
      特に Userscript のように問題の範囲が小さく、ビルドステップが面倒なときに向いている
      実際、jQueryなしでも querySelector, addEventListener, innerHTML だけで十分に実装できる
    • 最後に作った大きなjQueryアプリでも、この リアクティブパターン を使っていた
      Joomla CMSの中にカスタム検索フロントエンドを無理やり組み込む必要があったが、かなりうまく動いた
    • 本当に良いパターンだ。ここに signals を追加すれば、更新関数が自動で呼ばれる
      私たちが Reactive Mastro でやっているのはまさにこれだ
  • 今でも自分が最も好きなライブラリの1つが jQuery
    自分のキャリアを築いてくれた道具なので、いつも愛着がある

    • 最近の若い人たちは新しいフレームワークばかり追いかけるが、jQueryと .NET Framework のおかげで自分はいつも仕事に困らなかった
    • 15年間jQueryを使っている。今でも自分の 第一選択
    • 誰かがjQueryに Virtual DOM を載せてくれたらいいのにと思う
      jQuery + jQuery UI + プラグイン + AI の組み合わせなら、とてつもない可能性がありそうだ
  • HTMXの話が出るたびに、「それってjQueryなら3行で済むんじゃないか?」と思ってしまう
    とにかくjQueryはいつも問題を解決してくれたし、それが重要だ

    • その通り。HTMX はもともと、jQueryの .load() メソッドに着想を得た intercooler.js から発展したものだ
      jQuery.load()ドキュメント を参照
      パフォーマンス作業中に気づいたのだが、本当にjQueryへの敬意が増した
    • jQueryの問題は 命令型コード なので、複数の状態を扱い始めると複雑になる点だ
    • 今はネイティブJSを使っているが、$() セレクタインターフェースの 優雅さ は今でも最高だったと思う
      性能差は事前計算で補えるかもしれない
    • Djangoを使うときは、HTMXと vanilla JS の組み合わせでたいていの問題を解決している
      シンプルでありながらSPAのような感覚を出せる
  • 古き良き jQuery、本当にありがたい存在だった

  • jQueryが今でも保守され、更新されているのを見るとうれしい
    ただ、これは Reactも2060年まで生き残るかもしれない という意味でもあり、少し複雑な気分だ

    • Reactのおかげでアプリ開発はずっと良くなった
      昔の コールバック地獄 を思えば、今は夢のようだ
    • 2060年ごろには、React Nativeはv0.93くらいになっているかもしれない
    • すでに事実上2つのReactが存在している。2060年には5つくらいになっていそうだ
  • 2000〜2010年代にSPAフレームワークが一般的でなかったころ、自分もjQueryでWeb開発を学んだ
    当時作ったもののかなりの数が、今でも動いている気がする
    jQueryチームに 感謝の気持ち を伝えたい

  • jQuery 4.0 リリース に参加したすべての人に祝意を表したい
    もう少し構造的なアプローチが欲しいなら、JsViews という リアクティブテンプレートシステム がある
    古くて安定しているが、最新のフレームワークほど注目はされていない

    • JsViewsは初めて聞いたが興味深い
      個人的には cheerioalpine.js のような、現代的なjQueryスタイルが好きだ
      cheerio.js.org, alpinejs.dev
    • 自分も今すぐjQueryを使うことはないが、JsViewsのソースは学ぶ価値がありそうだ
      ただ、サイトデザインがあまりに古風なので採用率が低いのかもしれない
      それでも読み込みは速く、軽量さ が印象的だ
      jsrender.min.js はわずか12.82kBしかない
  • 信じがたいが、jQuery 4.0 は今でも IE11をサポート している
    これはjQuery 5.0でついに削除される予定だ

    • 4.0のリリースを遅らせないために、IE11サポートを残したようだ
      関連PR, Issue を参照
      3.0が10年前に出たことを思うと、かなり驚きだ
    • 後方互換性 のためだ。今でもIE11を使わなければならない環境は存在する
      そうしたユーザーや製品を支えてくれるのはありがたい
    • MicrosoftはWindows 10 LTSCとWindows 11のEdge IEモードで 2032年までIE11をサポート する予定だ
    • 世の中の誰もが最新のハードウェアやソフトウェアを使えるわけではない
      今でも古いシステムを使っている 学校のコンピューター室 は多い
  • jQueryの アップグレードツール に注がれた努力には本当に感心する

  • jQueryの チェーン構文 は今でも大好きだ
    15年前にフランス語でjQueryチュートリアルを書いたことがあり、多くの閲覧数を得た
    jQuery普及に少しでも貢献できていたならうれしい