JavaScriptを使用する開発者にとって、jQueryを学ぶ価値は現在でもあるのか 69
ストーリー by headless
複雑 部門より
複雑 部門より
過去10年近くにわたってWeb開発でJavaScriptを使用する際の重要な基盤に成長したjQueryだが、モダンブラウザーはかつてjQueryが補ってきた機能の多くを備えている。それでもjQueryを学ぶ必要はあるのだろうか(Dice Newsの記事、
本家/.)。
jQueryで実現可能なことはjQueryを使用しなくても実現できる。jQueryを使用することでシンプルな記述が可能となるものの、JavaScriptのネイティブ機能を直接呼び出す方が高速に処理を実行可能だ。jQueryでは、古いWebブラウザーだけが必要としていたコードを削り、モダンブラウザーのみをターゲットにしたバージョンの開発も進められている。その結果、モダンjQueryライブラリーは以前のバージョンよりも大幅にコードサイズが減少しているが、jQueryを捨てることが正当化されるようにも感じられるという。
多くの人がjQueryを不要と主張する一方で、現在もjQueryが必要となる大きな理由としてレガシーコードの存在がある。また、jQueryを使用することでコードがシンプルでエレガントになることを好む人々は、たとえ不要であってもjQueryを使い続ける可能性があるとのことだ。皆さんのご意見はいかがだろう。
jQueryで実現可能なことはjQueryを使用しなくても実現できる。jQueryを使用することでシンプルな記述が可能となるものの、JavaScriptのネイティブ機能を直接呼び出す方が高速に処理を実行可能だ。jQueryでは、古いWebブラウザーだけが必要としていたコードを削り、モダンブラウザーのみをターゲットにしたバージョンの開発も進められている。その結果、モダンjQueryライブラリーは以前のバージョンよりも大幅にコードサイズが減少しているが、jQueryを捨てることが正当化されるようにも感じられるという。
多くの人がjQueryを不要と主張する一方で、現在もjQueryが必要となる大きな理由としてレガシーコードの存在がある。また、jQueryを使用することでコードがシンプルでエレガントになることを好む人々は、たとえ不要であってもjQueryを使い続ける可能性があるとのことだ。皆さんのご意見はいかがだろう。
DOM操作のメソッドチェーン (スコア:2)
(早まってタレコミの方にコメントしていたのでコメし直し。)
セレクタで対象を選択しメソッドが処理を適用、返り値もまたjQueryオブジェクトでありチェーンが可能。
これには竹を割ったようなシンプルさと強力さがある。
メソッドチェーンは関数型と手続き型の良い折衷だと思う。もう純手続き型DOM操作には戻りたくない。
これがブラウザ標準のAPIだけでできるようになってくれば、jQueryを完全に捨てると思う。
一方、お仕事ではUIが複雑なWebシステムではDOM操作は直接やらず、MVC的フレームワークを採用してバインディング機構に任せるようになってきているので、
むしろ大型案件からjQueryの出番が無くなりつつある。
jQueryウィジェットもbootstrapとかに置き換わりつつあるし、バックグラウンドでjQueryが動いている案件に新人を配置するとしても、積極的にjQuery自体の教育をする必要性は薄れているのが実感。
Re: (スコア:0)
>竹を割ったような
という日本語はさておき、言いたいことは似たようなもの。
いかにJavaScript本体が拡張されても、jQueryで「書ける」(「できる」ではなく)ものが全てそのまま書けるようになるわけでもないので。
ネイティブで簡単に実現できる機能ができればそれは使うとしても、jQueryを全部やめたいとは思わないな。
jQueryバリバリな人が書くメソッドチェーンコードにはついに親しめなかったが、それは別の話。
Re: (スコア:0)
bootstrapってjQuery必須じゃなかったっけ?
Re: (スコア:0)
ここで言いたいのは、jQueryのコードを書く必要性の有無では?
確かに、BootstrapにはjQueryが必要だけど、
それは必要なjQueryのコードを内包しているからであって、
Bootstrapを使うのにjQueryのコードを書く必要があるという事ではないでしょう。
Re:DOM操作のメソッドチェーン (スコア:1)
> Bootstrapを使うのにjQueryのコードを書く必要があるという事ではない
はい、言いたかったのはまさにその通りです。
Re: (スコア:0)
検索して対比表とかサンプルとかが豊富に出てくれば、jQueryでなくともいいかもしれませんね。
良くも悪くも今はググって何ぼって場合が多いですから。
拡張作ってる場合は置き換えがめんどくさそうですが。
# 最近Backbone.jsの本読んでるけどあの辺は今後どうなるんだろ…。
Re: (スコア:0)
もうそこまできてるなら$は予約語にしてくれてもいいのよ
Re: (スコア:0)
$は予約文字だったのにjQueryが勝手に占有したせいで予約文字じゃなくなったのよ
Re: (スコア:0)
$使い始めたのはjQueryではなくprototype.jsでは?
Re:DOM操作のメソッドチェーン (スコア:3)
Prototype JavaScript Frameworkが2005年2月でjQueryが2006年8月なので、確かにprototype.jsのほうが先ですね。
Re: (スコア:0)
> セレクタで対象を選択しメソッドが処理を適用、返り値もまたjQueryオブジェクトでありチェーンが可能。
それはけっきょく暗黙の引数がある手続型としか言えない
むろんそれが悪いというわけではない
Re: (スコア:0)
ちがうよそれはモナドと言うんだよ
使い方を誤まると1000倍近く遅くなることがある (スコア:2)
大量の要素を追加しようとしてループの最内周で使ったりすると激遅になる。
それだけ気を付ければJavaScriptに物凄くマッチしたフレームワークだし、ずっと使われると思うけど。
ただ、最近TypeScriptを使ってるとjQueryは静的型言語とは激しく相性が悪くて、その面でかなり厳しいと思うようになった。
Angular2はTypeScript+WebComponentをベースにしてるっぽいから、それベースの方が今後は主流になりそうな気がする。
たぶん (スコア:2)
いまの現状ですと、JSのみの人よりも、JSとJQの人の方が食べていけます。
価値があるかを判断するのは人それぞれです。が、学んでもいないJQを批判するのはやってはいけないことで。
なので、JSも学んで、JQも学んで、できればいろんなこと学んで自分の意見を持つべきだと思います。
//JQueryを学ばないで使えない人はたぶんJSコーダーはできない。
コレクション操作指向(?)の潮流のひとつとして使われ続けるのでは? (スコア:1)
「コレクション操作指向」とはいまでっちあげた言葉ですが、.NET FrameworkのLINQやJavaのStream APIなどと同じ思想を共有しているように見えるので、JavaScriptの補完とは別の意味で役目はまだまだあると感じます。
そもそも速度のために使ってるんじゃない (スコア:1)
そもそもjQueryはJavaScriptのネイティブなAPIの上に構築されたライブラリなんだから
「ネイティブ機能を直接呼び出す方が高速に処理を実行可能」なのは当たり前だろう…
ブラウザ側がjQueryライブラリに的を絞った最適化を施してたりしない限り、
ネイティブなAPIを使って似たような実装した場合に比べて高速になるなんてありえないよ。
> jQueryを使用することでシンプルな記述が可能となるものの
それが目的でjQuery使ってるんだから「~となるものの」なんて切り捨てたら話が始まりませんがな。
> モダンjQueryライブラリーは以前のバージョンよりも大幅にコードサイズが減少しているが、
> jQueryを捨てることが正当化されるようにも感じられるという。
複雑な機能を自前で実装してるライブラリじゃなきゃ存在価値がないとでも言うのかな…?
シンプルなコードでDOMを操作できてメソッドチェーンが使えるだけの、単なるラッパライブラリだったとして何が悪いのかと。
開発速度のために使ってるんだ (スコア:0)
例えば要素をフェードアウトさせて非表示にしたければ、ライブラリなら何秒間で100から0にする1行で済むところを、ネイティブJSだとタイマー組んでミリ秒単位でopcityを下げていく処理を自分で書く必要があるし、複数効果が組み合わさってたり効果途中から次の動作が始まるとか複雑になるとやることが一気に増えます。下手なコードだと処理はライブラリより重く、不安定になります。
誰が好き好んで100kb越えのjsファイル(使わない部分さえある)をいちいちダウンロードさせますかって。大きめの画像並みですよ。開発速度のためにユーザーに重いライブラリを強いてるんだって思いは常にあります。(サイト全体でフルに使ってれば考えたらむしろ軽い場合も当然ありますが、ちょっとの処理のためだったら大きすぎる。)
JSに限らずライブラリやフレームワークの類いはすべてそうですね。C++でWindows向けに書いてて、WindowsAPIは最低限ウィンドウ出すまででその上の描画は全部自分で書くぜ!ってレベルの話です。それならMFCでもQtでもなんかUIフレームワークを選んだ方がよくない?って話です。
jQueryが10年?! (スコア:1)
使い始めが1.3だの1.4だの言っていた頃だから、それでも5年は経つのね。
PHPも新しいと思っていたのに今や枯れた言語だし、時の流れが早すぎる。
閑話休題。jQueryは残るんじゃないかな。つまり学んでおいた方がいいと。
あと技術って積み重ねだから、jQuery自体を使わなくても前提知識として必須な気がする。
javaのフレームワークとかでも「strutsはオワコン」と言われて久しいけど、
やっぱり知識の根底としてそれがある体で話が進むしね。
クラス名によるDOM取得 (スコア:0)
$('.className')
みたいなのは最近のブラウザ/JavaScriptでは出来るの?
Re:クラス名によるDOM取得 (スコア:2)
CSSセレクタを解釈して本当に '.className' で取得するなら、
https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll [mozilla.org]
CSSセレクタを解釈する必要がなくクラス名で取得するだけなら、
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementsByClassName [mozilla.org]
Re: (スコア:0)
最近のブラウザなら、querySelector系でセレクタから取得もほぼ一発ですね。
クラスならgetElementsByClassNameでさらに高速取得できます。
Re: (スコア:0)
getElementsByClassNameはかなり前(IE9から?)あるのでよほどレトロなブラウザをサポートしたいと思わなければネイティブコードで大丈夫。
もう、jQueryで書くことが目的化している人が大部分のように思うけど。
Re:クラス名によるDOM取得 (スコア:1)
IE9がかなり昔って随分未来から来た人なんだなぁ
Re:クラス名によるDOM取得 (スコア:1)
犬かもしれない
Re: (スコア:0)
かなり前ある
Re: (スコア:0)
document.querySelector系のAPIでDOMオブジェクトは取ってこれるけどメソッド名は長いしメソッドチェーンにはならない。
ただし、Chromeなんかでは開発者コンソール上限定だが$でDOMオブジェクトの取得とかは出来るようになっている。
これを「最近のブラウザ/JavaScriptでは出来る」と呼ぶか呼ばないかは…人によるんだろうなぁ…
そこら辺に転がってる便利なスクリプト (スコア:0)
だいたいjQueryなのでなあなあで使ってる
JavaScriptで転がってたら多分JavaScript使うんじゃないかなー
Re:そこら辺に転がってる便利なスクリプト (スコア:1)
×便利なスクリプト
○便利なプラグイン
Webアプリにちょっとした便利機能が欲しいってレベルの「○○したいな」ってことは、たいてい、ググれば jQuery のプラグインが見つかります。
中身が10行程度のすげーシンプルなコードもよくありますが、たとえそういった単純なものでも、単なる「サンプルコード」よりは「プラグイン」の形の方が利用しやすいですし、
プラグインだと、たいていライセンスが明確なのもありがたいです。
もっとも、jQueryのサードパーティープラグインはjQuery本体と同じMITで公開されてる場合が多いのですが、
紹介ページ(ダウンロードサイト)ではライセンスは何も表示がなく、プラグイン本体をダウンロードして中身を見ないと分からない、というのが結構多くて、ライセンスの確認は手間がかかることが多いですね。
(たまに、ライセンスがどこにも明示されてなくて、便利そうだけど手を出せない、なんていうもどかしい思いをしたりも…)
Re: (スコア:0)
後、jQuery UIの混在も。
お手軽にデザイン含めて、UIを作れるのは楽だよね。
バージョン違いでイベントの仕様(参考にしてたのが1.x系で、2.x系を使ってて嵌った)が変わってて困るのはお約束だけど。
何々を使う価値が有るかとか・・・ (スコア:0)
議論としては意味は無いと思わないか?
代わりになると思ったもんは何かとか、その次に本当にそれでカバーできるかの話をまずしないと。
Re:何々を使う価値が有るかとか・・・ (スコア:1)
>代わりになると思ったもんは何かとか、その次に本当にそれでカバーできるかの話をまずしないと。
はりきってどうぞ!
Re: (スコア:0)
とりあえず、次の候補としてはonsen-uiとかになるんじゃないだろうか。
つまり、アプリケーションがブラウザベースかモバイルネイティブかを問わず共通化できるようなもの。
#自分はまだいじったことはない。
Re: (スコア:0)
老害って、ガチでこういう思考なんだな。参考になる。
Re: (スコア:0)
残念やが老害じゃなくて、意識高いゆとり系の思考パターンやで。
Re: (スコア:0)
こういう人は「最後に立ってた奴が勝ち」っていう発想なのかな。
でも商売って「立ってた時間の長い奴が勝ち」の場合がほとんどだよね。
Re: (スコア:0)
基幹系だけが商売と思い込んでる人には世の中がそう見えてるんだね。
勉強になるなあ。
Re: (スコア:0)
昔はブラウザの機能差異激しいわ碌なAPIないわでサポートライブラリ無しでJavaScript書く気が起きないレベルだった。
いまはWeb JavaScriptをとりまく環境が大分マシになったらしいので、もうjQueryに頼らなくても大丈夫じゃねって話。
ライブラリの盛衰を嫌って使わないという事は素のJavaScriptを使うという事。
5年前ぐらいのプロジェクトでその選択を正解と言う人は少ないだろうな。
Re: (スコア:0)
JavaScriptが20年なので、jQueryがなんとか10年近くつづいたのは十分長い方でしょ。
しかもそのJavaScriptだって20年前といまとでは全然別物だからね。
ブラウザも10年前とは全く別の位置づけにあり、その機能も大きく増えていることをかんがえれば、
その10年前に生まれたjQueryが担っていた意味というのが、現在ではほとんど消えかかっています。
だから、jQueryが直面しているのはレガシー化というよりは、存在意義が無意味化しているというように見るべきだと思います。
で、アジャイルはそういう早い世界にあることのほうを前提にするときの活動であるということです。
土台の変化が遅い世界とは前提が違います。
Re: (スコア:0)
jQueryよりもブラウザのAPIの偏移の方がよっぽど速いよ。
基幹とWEBは世界観が違うので、COBOLの議論だけされればよいかと。
Re: (スコア:0)
元ACです。どこにぶら下げるか悩んだけどここにぶらさげます。
世界観が違うのは重々承知。でもこの議論の根本はCOBOL側・基幹側にも関係あるんですわ。
最近、基幹屋の領域にSOAとしてWeb屋が侵略しつつあります。当然ウォーターフローからアジャイルへの変革も提案書に含めて。ですが彼らのSLA感覚は非常に低く、俺から見た老害(24365の99.999%稼働が至上主義)の首を縦に振らせることができません。
彼らがもし、土台の変化が遅い世界へのカンフル剤のつもりでドヤってるなら、こーゆーくっだらねー議論とか脊髄反射してる限り、(本当は俺自身も望んでいる)基幹部のアジャイル化の道のりは遠いなと納得せざるを得ないわけです。だってどうせこれ、jQueryに限らない話だし。こういうことが予想できないなら、最初から使うなよと。
ちなみに俺は、jQuery1時代にマイナーバージョンが変わった程度でプラグインが動かないとか騒いでるあたりから、こいつは長く持たないと早々に見切りをつけました。jQuery2で「それ見たことか」だったし。おもちゃとしちゃ面白いんだけどね。
Re:学ぶ価値があるのかって議論をする価値があるのか (スコア:2)
Re: (スコア:0)
ボールドを使ったコメントの9割9部はくそコメなのでぱっとみでスルーできて助かります(ぱっとみでコメント
Re: (スコア:0)
大丈夫。フロント側の人って、基幹側は不便なAPI程度にしか思ってないから。
Re: (スコア:0)
あなたに売込みしている人に対してなら、
そうやって自分の価値観を絶対視して、
ドヤ顔をしていても聞いてくれるんでしょうけど。
ここで言っても、
この人のところに売込みに行っても儲からんな、
と思われるのはせいぜいですよ。
とりあえず、なぜ予測できないと思ったのか。
むしろそうならないと予測しいたら採用してませんよ。
近いうちにCOBOLと同じ道をたどると予想できるってことですから。
Re: (スコア:0)
異なるバージョンで破壊的変更多すぎてアホらしかったよ。
もう二度とWebには関わりたくない。
Re: (スコア:0)
おっとRoRの悪口はそこまでだ
Re: (スコア:0)
そりゃあ企画立てて完成するまで数年完成したら機能保守しながらン十年使おう、という基幹系の世界の時間軸で
ドッグイヤーでどんどん新技術が入ってきて作ってみても駄目そうならどんどん捨てていくWebの世界を見たら
あっという間に技術が入れ替わっているように見えるだろうよ
Re: (スコア:0)
うわっ。こりゃまた価値のない議論だな。
Re: (スコア:0)
#2806536もそうですけど、
腹立たしさを理屈で指摘できないまま罵倒するエンジニアって最低の部類ですね。
Re: (スコア:0)
元コメの人と君以外は全員わかってるんだけどな。
下限に合わせなきゃダメか?