最近は SPA とか React といった話題が尽きないが、自分は結局 フロントエンド JavaScript は jQuery が最もいいと感じている。それはそれら SPA の JavaScript をいじった経験を踏まえての感想。
理由としては、「 やりたいことができにくい 」これに尽きる。
最新を追うということ
自分が最初にSPAを触ったのは AngularJS だった。なるほど、この ng-repeat や $route, $scope などを使えば、今までサーバサイドでやってたようなレンダリングが表側で制御できるようになる!と感動したものだった。この気持ち良さはきっとサーバーサイドでごにょごにょやっていた経験のある人ならなおさら感動するものだ。
さて、じゃあといって「次作るのは SPA のサービスにしよう!」と意気込んで初めて見たとする。それで作っただけで話題になるし、エンジニアとしては誇らしい。 しかししばらくすると徐々に問題が起きてくる。。
例えば、 グラフを作りたいだとか、クールなUIを実装したいとなった時。調べてみると大抵 jQuery ~~ とあって、 Angular や React 用のがなかったりして、結局 jQuery と混在させなきゃいけなくなったりすることがよくある。それがやりたくなければ、自分で実装するしかない。(今ならあるかもしれないが、当時できたてのAngularJSにはもちろんそのようなものがなかった)
自分で実装しようとした時、いきなり問題に直面する。どうやってこの複雑な機能をこのフレームワーク内で実装するのだろうか。そこは勉強不足の点もあっただろうが、場合によってはフレームワークの奥まで知らなければならないことがある。そこまで頑張って追って実装したあと、それをメンテナンスするのは誰だろう?
そして頻繁なフレームワークのアップデート。それらに対応しなければならない。もしうまくいかなかった時は最悪だ。 StackOverflowを見渡して見つからなかければ1日以上かけて問題の解決のためにソースを読まなければならない。あなたはそこまでする覚悟があるだろうか?
乱立するフレームワーク
ちょっと前までは backbone.js が一番人気だった。これこそが次なるJavaScriptだ、と言われていた。が、今になってみれば全くそれ関連の記事が見当たらない。当時 backbone.js を触っていた人はそれでちょっとしたのをつくれるようになったかもしれないが、誰もメンテナンスできないサービスが完成したことだろう。
今は react.js だが、これも本当に続くものだか全くもっての疑問だ。そんなの気にせずに時間をかけてでもそのフレームワークを愛するというのであれば話は別だけども。
テスト?
SPAで処理をするということは、本来サーバ側でやっていたロジックをJavaScript側にやらせることが多くなる。そんな時はJavaScriptでテストを書きたくなってくる。ただページ遷移とかも全てJavaScriptで制御しているので、その状態まで持ってきた状態のテストを書くといったことが必要だ。これがなかなか大変。 そうなるとテストを書かないでいろいろ実装してしまうことになる。果たしてこれがいいのだろうか。
jQuery について
基本的にロジックはサーバーサイドで実行させて、細かい動きのところだけ jQuery をちょろっと使う。これがやはり本来あるべき JavaScriptの存在意義なのではないだろうか。それ以上に JavaScriptに仕事をさせようとすると、メンテナンスが一気に大変になる。
jQuery はやはり強力だ。 jQuery ~~ でググれば大抵のプラグインは手に入る。ちょろっと入れれば簡単に導入できる。そしてたくさんの知見がネット上に転がっている。
ReactやAngularのバインディングの仕組みは確かに素晴らしいし書いていてクールだ。だけどそれ以外のことに目を向けると、jQuery、やはりまだあなたが自分には必要だ。