あなたが知らない(かもしれない)jQueryの話
https://gyazo.com/84bc72516770d006b859ebc6d7b6b64f
この資料はあなたが知らない(かもしれない)jQueryの話のLT資料です
https://gyazo.com/5510d4e88c34b7dc94f91817952946e7
メニューのドキュメントアイコンより「Start presentation」クリックでプレゼンテーションが始まります
自己紹介
大山奥人.icon大山奥人
株式会社クラウドワークス プロダクト本部 プロダクト開発部 プラットフォーム開発 3グループ
エンジニア
主にフロントエンド領域
#cw_frontendや#accessibilityのSlackチャンネルに生息しています
yamanoku.icon @ yamanoku
既婚で1児の父と猫🐈🐈🐈と犬🐶の飼い主
https://pbs.twimg.com/media/FYBeXaBUUAABaw2.jpg
本題の前に宣伝
昨年12月にyamanoku Advent Calendar 2023という1人アドベントカレンダーを実施
yamanoku Advent Calendar 2023 | yamanoku.net
https://gyazo.com/59b64fa339c304fc5f78461a7da9ede8
その中でやった話題についてを触れます
他にもいろんなことを書いてるので見てみてね
皆さんはjQueryってご存知ですか?
https://gyazo.com/8a10e0c1ed6fb71bf9ed2108a5ddcf76
jQueryとは一体なにか
JavaScriptのライブラリ
2006年8月26日に誕生
特徴
DOM操作をより簡易的にする
手続き型の実装
イベントハンドリングを容易にする(hover, click等)
軽微なアニメーションを実装(toggleSlide())
プラグインのエコシステムが抱負(ポップアップ・スライダー等)
手広いブラウザサポート(下図は2024年1月現在)
https://gyazo.com/c40a3082ad8c45382cefad6a56986f1d
JavaScriptのブラウザ対応がまだまだだった頃…
マルチブラウザ対応としての存在
ブラウザ間で対応していない挙動があった
この挙動の違いを吸収をしていたのがjQuery
いわゆる「polyfill」のような存在
IE8より以前はだいぶ貢献していた
jQueryUIやjQuery Mobileの登場
UIキット集の登場
https://scrapbox.io/files/65b991257347f80026cbd939.mov
https://gyazo.com/a21a269c073a673774cd92ff64ecc284
jQuery Mobile(ver Alpha 1)
今でも広く使われているjQuery
https://gyazo.com/cca6fd41be157175812742d301b9af46 https://almanac.httparchive.org/en/2022/javascript
Web Almanac(2022年のデータ)
WordPress製のサイトではjQuery付き
Durpalは標準対応
必要はなくなってきている?
https://gyazo.com/0dc91c1a248ccb35f68ed6602379793b
You Might Not Need jQuery
jQueryのメソッド、他で代替できるよ集
ほとんどがPureなJavaScriptで表現できる
React.js、Vue.jsという宣言的UI指向のフレームワークが登場
複雑なデータや状態の表現を扱いやすくなった
プロダクトでは徐々に処されている
Removing jQuery from GitHub.com frontend - The GitHub Blog
GitHubがjQuery依存を外すまでの話(2018)
GOV.UK は、フロントエンドから jQuery を削除しました。 | Articles | web.dev
GOV.UK(イギリス政府ポータルサイト)もjQueryをやめた(2022)
jQuery Removerという役職が存在していたらしい(伝聞なので正確なリソースなし)
フロントエンド技術的負債の代表格へ
2010〜あたりから始まっている長いサービスではまだ存在しているものもある
クラウドワークスでも現役
皆さんのサービスでもありますか?
jQueryでバリバリ開発するぜ!って人は少なくなってきた
少なくとも企業の求めるスキルからは消されつつある
もうjQueryって終わりなの…?
jQuery v4 が見えてきている
jQueryは現在も開発は進められているのはご存知でしょうか
https://i.gyazo.com/e212c7f5437ea0ddf5e3d9a3b3112cda.png https://github.com/jquery/jquery/milestone/7
やることはほぼほぼ終わってるように見える(いつリリースかは不明)
ブロッカーとなる部分を1つずつ潰している最中
ブログ記事も準備中
Internet Explorer対応の廃止は次期バージョンで移行
まだまだ「使える」技術
使うかどうかは別として
:has()にまつわるとある事件
CSSの新しい機能で:has()という疑似クラスが登場
code:css
/** img要素を含むa要素は下線を引く */
a:has(img) {
border-bottom: 1px solid rgb(18 122 200 / 100%);
}
/** dialog要素が開いている時はbodyをスクロールできないようにしておく */
body:has(dialogopen) {
touch-action: none;
-webkit-overflow-scrolling: none;
overflow: hidden;
overscroll-behavior: none;
}
上記のようななんらかの要素を含む場合のものにスタイルが付与できるように
2024年2月現在、Chrome、Edge、Firefox、Safariで使えるようになってます
事件
もともとjQueryにも:has()という要素を含むものを検出してくるメソッドがある
ここがCSSのものとで不具合を発生させていることに気づく
selectors The forgiving nature of :has breaks jQuery when used with a complex :has selector · Issue #7676 · w3c/csswg-drafts · GitHub
結果としてはCSS側の挙動を一部変更して、jQueryの互換性は守られるようになった
参考資料
Chromeに実装された疑似クラス「:has()」がjQueryの「:has()」に悪影響、一定の条件下でWebサイトが壊れる可能性 - Publickey
誇りを被った仕様の針に意図を通す | blog.jxck.io
おわりに
jQueryはまだまだ現役
使うか使わないかはそれぞれで検討しよう
既存のものに対しては敬意を持って接しましょう
リスペクトは大事だよ
jQueryに対しての認識が少しでも変わってくれたらうれしいです
Thank you for listening !
https://gyazo.com/4c1d0df4903765cc351797c10f903ba1
関連
漢は黙ってjQuery - Speaker Deck
#2024