パスワードを忘れた? アカウント作成
12035124 story
インターネット

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オブジェクトでありチェーンが可能。
    これには竹を割ったようなシンプルさと強力さがある。
    メソッドチェーンは関数型と手続き型の良い折衷だと思う。もう純手続き型DOM操作には戻りたくない。
    これがブラウザ標準のAPIだけでできるようになってくれば、jQueryを完全に捨てると思う。

    一方、お仕事ではUIが複雑なWebシステムではDOM操作は直接やらず、MVC的フレームワークを採用してバインディング機構に任せるようになってきているので、
    むしろ大型案件からjQueryの出番が無くなりつつある。
    jQueryウィジェットもbootstrapとかに置き換わりつつあるし、バックグラウンドでjQueryが動いている案件に新人を配置するとしても、積極的にjQuery自体の教育をする必要性は薄れているのが実感。

    • by Anonymous Coward

      >竹を割ったような
      という日本語はさておき、言いたいことは似たようなもの。

      いかにJavaScript本体が拡張されても、jQueryで「書ける」(「できる」ではなく)ものが全てそのまま書けるようになるわけでもないので。
      ネイティブで簡単に実現できる機能ができればそれは使うとしても、jQueryを全部やめたいとは思わないな。

      jQueryバリバリな人が書くメソッドチェーンコードにはついに親しめなかったが、それは別の話。

    • by Anonymous Coward

      bootstrapってjQuery必須じゃなかったっけ?

      • by Anonymous Coward

        ここで言いたいのは、jQueryのコードを書く必要性の有無では?

        確かに、BootstrapにはjQueryが必要だけど、
        それは必要なjQueryのコードを内包しているからであって、
        Bootstrapを使うのにjQueryのコードを書く必要があるという事ではないでしょう。

    • by Anonymous Coward
      > これがブラウザ標準のAPIだけでできるようになってくれば、jQueryを完全に捨てると思う。

      検索して対比表とかサンプルとかが豊富に出てくれば、jQueryでなくともいいかもしれませんね。
      良くも悪くも今はググって何ぼって場合が多いですから。

      拡張作ってる場合は置き換えがめんどくさそうですが。

      # 最近Backbone.jsの本読んでるけどあの辺は今後どうなるんだろ…。
    • by Anonymous Coward

      もうそこまできてるなら$は予約語にしてくれてもいいのよ

    • by Anonymous Coward

      > セレクタで対象を選択しメソッドが処理を適用、返り値もまたjQueryオブジェクトでありチェーンが可能。

      それはけっきょく暗黙の引数がある手続型としか言えない
      むろんそれが悪いというわけではない

      • by Anonymous Coward

        ちがうよそれはモナドと言うんだよ

  • 大量の要素を追加しようとしてループの最内周で使ったりすると激遅になる。
    それだけ気を付ければJavaScriptに物凄くマッチしたフレームワークだし、ずっと使われると思うけど。

    ただ、最近TypeScriptを使ってるとjQueryは静的型言語とは激しく相性が悪くて、その面でかなり厳しいと思うようになった。
    Angular2はTypeScript+WebComponentをベースにしてるっぽいから、それベースの方が今後は主流になりそうな気がする。

  • by ymasa (31598) on 2015年05月01日 22時43分 (#2807809) 日記

    いまの現状ですと、JSのみの人よりも、JSとJQの人の方が食べていけます。
    価値があるかを判断するのは人それぞれです。が、学んでもいないJQを批判するのはやってはいけないことで。
    なので、JSも学んで、JQも学んで、できればいろんなこと学んで自分の意見を持つべきだと思います。

    //JQueryを学ばないで使えない人はたぶんJSコーダーはできない。

  • 「コレクション操作指向」とはいまでっちあげた言葉ですが、.NET FrameworkのLINQやJavaのStream APIなどと同じ思想を共有しているように見えるので、JavaScriptの補完とは別の意味で役目はまだまだあると感じます。

  • by Anonymous Coward on 2015年04月30日 1時56分 (#2806607)

    そもそもjQueryはJavaScriptのネイティブなAPIの上に構築されたライブラリなんだから
    「ネイティブ機能を直接呼び出す方が高速に処理を実行可能」なのは当たり前だろう…
    ブラウザ側がjQueryライブラリに的を絞った最適化を施してたりしない限り、
    ネイティブなAPIを使って似たような実装した場合に比べて高速になるなんてありえないよ。

    > jQueryを使用することでシンプルな記述が可能となるものの
    それが目的でjQuery使ってるんだから「~となるものの」なんて切り捨てたら話が始まりませんがな。

    > モダンjQueryライブラリーは以前のバージョンよりも大幅にコードサイズが減少しているが、
    > jQueryを捨てることが正当化されるようにも感じられるという。
    複雑な機能を自前で実装してるライブラリじゃなきゃ存在価値がないとでも言うのかな…?
    シンプルなコードでDOMを操作できてメソッドチェーンが使えるだけの、単なるラッパライブラリだったとして何が悪いのかと。

    • 例えば要素をフェードアウトさせて非表示にしたければ、ライブラリなら何秒間で100から0にする1行で済むところを、ネイティブJSだとタイマー組んでミリ秒単位でopcityを下げていく処理を自分で書く必要があるし、複数効果が組み合わさってたり効果途中から次の動作が始まるとか複雑になるとやることが一気に増えます。下手なコードだと処理はライブラリより重く、不安定になります。
      誰が好き好んで100kb越えのjsファイル(使わない部分さえある)をいちいちダウンロードさせますかって。大きめの画像並みですよ。開発速度のためにユーザーに重いライブラリを強いてるんだって思いは常にあります。(サイト全体でフルに使ってれば考えたらむしろ軽い場合も当然ありますが、ちょっとの処理のためだったら大きすぎる。)

      JSに限らずライブラリやフレームワークの類いはすべてそうですね。C++でWindows向けに書いてて、WindowsAPIは最低限ウィンドウ出すまででその上の描画は全部自分で書くぜ!ってレベルの話です。それならMFCでもQtでもなんかUIフレームワークを選んだ方がよくない?って話です。

  • by takaha4 (47140) on 2015年04月30日 13時30分 (#2806833)
    自分の中では新しい知識の方だったので驚いた。
    使い始めが1.3だの1.4だの言っていた頃だから、それでも5年は経つのね。
    PHPも新しいと思っていたのに今や枯れた言語だし、時の流れが早すぎる。

    閑話休題。jQueryは残るんじゃないかな。つまり学んでおいた方がいいと。
    あと技術って積み重ねだから、jQuery自体を使わなくても前提知識として必須な気がする。
    javaのフレームワークとかでも「strutsはオワコン」と言われて久しいけど、
    やっぱり知識の根底としてそれがある体で話が進むしね。
  • by Anonymous Coward on 2015年04月29日 19時46分 (#2806418)

    $('.className')
    みたいなのは最近のブラウザ/JavaScriptでは出来るの?

  • by Anonymous Coward on 2015年04月30日 0時15分 (#2806577)

    だいたいjQueryなのでなあなあで使ってる
    JavaScriptで転がってたら多分JavaScript使うんじゃないかなー

    • ×便利なスクリプト
      ○便利なプラグイン

      Webアプリにちょっとした便利機能が欲しいってレベルの「○○したいな」ってことは、たいてい、ググれば jQuery のプラグインが見つかります。
      中身が10行程度のすげーシンプルなコードもよくありますが、たとえそういった単純なものでも、単なる「サンプルコード」よりは「プラグイン」の形の方が利用しやすいですし、
      プラグインだと、たいていライセンスが明確なのもありがたいです。

      もっとも、jQueryのサードパーティープラグインはjQuery本体と同じMITで公開されてる場合が多いのですが、
      紹介ページ(ダウンロードサイト)ではライセンスは何も表示がなく、プラグイン本体をダウンロードして中身を見ないと分からない、というのが結構多くて、ライセンスの確認は手間がかかることが多いですね。
      (たまに、ライセンスがどこにも明示されてなくて、便利そうだけど手を出せない、なんていうもどかしい思いをしたりも…)

      親コメント
    • by Anonymous Coward

      後、jQuery UIの混在も。

      お手軽にデザイン含めて、UIを作れるのは楽だよね。
      バージョン違いでイベントの仕様(参考にしてたのが1.x系で、2.x系を使ってて嵌った)が変わってて困るのはお約束だけど。

  • by Anonymous Coward on 2015年04月30日 5時12分 (#2806642)

    議論としては意味は無いと思わないか?
    代わりになると思ったもんは何かとか、その次に本当にそれでカバーできるかの話をまずしないと。

    • by Anonymous Coward on 2015年04月30日 6時55分 (#2806650)

      >代わりになると思ったもんは何かとか、その次に本当にそれでカバーできるかの話をまずしないと。

      はりきってどうぞ!

      親コメント
    • by Anonymous Coward

      とりあえず、次の候補としてはonsen-uiとかになるんじゃないだろうか。
      つまり、アプリケーションがブラウザベースかモバイルネイティブかを問わず共通化できるようなもの。
      #自分はまだいじったことはない。

typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...