jQueryはもう古い?

知人で「jQueryはもう古い」と言っている人がいました。

セレクタを柔軟に書けたり、ajaxが簡単だったり、Deferredが使えるようになってからは非同期処理も柔軟に扱えるようになったりと、jQueryは非常に便利です。個人的には生でXHRを書くのはしんどいとおもいますし、jQueryに限らず各種OSSライブラリを一切使わずにJavaScriptでそこそこ大きなプログラムを書けるかと言われると面倒なので書きたくないですね。ですよね?

jQueryを使うなと言われたら、結局ajaxやDOM操作を簡単にできるjQueryっぽい手前味噌のライブラリ群を作ることになるでしょう。そしてそれを使いまわすでしょう。であれば既に同じような目的を達成できているjQueryを使わない理由は皆無で、すでにデファクトスタンダードと言ってよいほどの普及率を誇っているのですから大体どんなプロジェクトでも通用しますし、このままで良いじゃん。…と、冒頭の発言を聞いた3秒間くらいで漠然とこんなことを思いつきました。

しかしながら、そのjQueryは古い、と言ったひとが続けて「これからはReact.jsとかが来る」と言ったのを効いて、ああなるほどと合点が行きました。

つまり、彼が言いたかったことは「セレクタでチマチマいじるのはもうしんどい」という事なのだと思います。

javascriptでゴリゴリDOMを書き換えるようなコードを書くような場合、jQueryでは対応するのがしんどくなってくるボリュームがあると思います。特にシングルページアプリケーションのようなリッチUIを備えたアプリを作る場合はjQueryだけでやる人はいないでしょう。つまり、jQueryは便利だけど限界もあるよね、というのがまず1点言えると思います。

その次に私が問題だと思っているのは、ページ表示時点でのHTMLとJavaScriptでゴリゴリやったあとのDOMツリーが完全に分離されてしまっている事です。jQueryのコードを追って行っても最終的に構築されるDOMがどの様なものになるかすぐには分かりません。一方で、Angular,jsやKnockout.jsのようなMVなんとかフレームワークであれば静的なHTMLタグを見ただけで実際に表示したときのDOMがどの様な構造になるのかすぐに理解することができます。

 

今後、あらゆる場面においてjQueryが使われることは無くなり、すべてAngularやKnockoutやReactに置き換わるかと言われればそれは無いと思います。しかしある程度リッチなUIを構築しようと思った時にjQueryよりもその他のライブラリの方が向いているようなケースはたくさんあるはずで、そういう領域においてはjQueryは廃れると思います。

あとこれは昔からの個人的な考えなのですが、Webにおいてビューの構築というのは必要なデータさえあればクライアント側で出来ることなのだから計算資源の節約のためにもクライアント側で出来ることは積極的にクライアント側でやらせるべきと思っていまして、その意味においてもテンプレートエンジンでゴリゴリ動的なHTMLを出力するよりだったら、必要なデータは全部jsonで渡しちゃってあとはクライアント側で何とかしてね、って思うんです。ですから、個人的にはサーバ側はRESTなAPIや最小限の静的リソースを吐くくらいにしてもらって、あとは全部クライアントで何とかしてね、みたいな設計手法のほうが好きです。デバッグしやすいし、チーム開発もしやすいし。

まーいずれにせよ、jQueryだけ覚えてればフロントエンドはばっちり、みたいなことは今後通用しなくなってくるのかなという気がしています。