今すぐ辞めて欲しい、「jQuery勉強してます」「Backbone.js勉強してます」 - diary.jgs.me

最近、といってもここ2年ぐらいからだけど、「jQueryの勉強してます」とか「Backbone.jsの勉強してます」とか、そういう人からのプログラミングの修得の相談とかを頂いたりする機会が多い。
それらの中で、非常に口をすっぱくして言っているんだけど、なかなか理解して頂けないのが、『「jQuery」や「Backbone.js」を使うな』という個人的なアドバイスだ。これは個人的には本当に守ってほしい、絶対に手を出してほしくない、Framework達である。
なぜかみんな「jQueryってイケてる技術だよね」「jQueryだったらこんなこともいとも簡単にできちゃうんだよね」みたいな印象を持っている。もちろん、それは間違いではない。jQueryは早い。ライブラリもたくさんある。コミュニティも活発だ。リッチなウェブサイトなんて昔は数人月かけて作ったものだが、いまはjQueryとプラグインなんて使えば、1人日で出来てしまうほどのものだ。
だからもちろん、jQueryを覚えたい、ということには賛同する。メリットは間違いなくでかい。
ただし、jQueryはあくまでWEB開発においての常識(Query)を集めた、Javascript言語用のFrameworkである。FrameworkはあくまでFramework。自動車のABS(アンチロック・ブレーキ・システム)なんかとは全く違う。ABSはあくまでブレーキがロックしてしまう事象を発生しないようにアシストしてくれるシステムである。Frameworkは違う。

ソフトウェアフレームワーク(英: software framework)とは、プログラミングにおいて、一般的な機能をもつ共通コードをユーザーが選択的に上書きしたり特化させたりすることで、ある特定の機能をもたせようとする抽象概念のことである。単にフレームワークとも呼ばれる。

「一般的な機能を持つ共通コード」を自身で書ける人が、それを再利用可能なものにするために、枠組みとして提供するソフトウェアがFrameworkである。
たとえば、jQuery1.0系の時からよくある「DOMの挿入」DOMから要素を選択する場合下記のようなコードが必要になる。(Javascript)

(function() { var test = document.getElementById(‘test’); test.nodeValue = 'str’; })();

しかし、jQueryを使った場合たった1行でDOMの挿入ができる。

$(document).ready(function() { $(’#test’).text('str’); });

これは尋常ではない。まるで核ミサイルの発射スイッチのようである。
核の発射スイッチはむしろまだ単純だ。押したら破裂する。結果が明白である。
一体、「jQuery勉強してます」「Backbone.js勉強してます」といった人の内どれだけが、この自動生成された各種のコードを理解しているのだろうか?
'document’, 'getElementById’, 'nodeValue’
どれもプログラマにとっては当たり前のキーワードだが、オートインクリメントって何?って人がほとんどなのではないだろうか?
「高効率」「最先端」みたいなキーワードに踊らされている初心者が多すぎるのではないだろうか?
正直な所、私もjQueryを使いこなせているとは言いがたい。jQueryのコミュニティは非常に活発だし、オープンソース・ソフトウェアもたくさんあってすごく便利だ。ajaxメソッドなんて、jQuery1.0からあるが、すごくどうでも良さげな機能だが、XMLHttpRequestでいいじゃないかと思ってしまうが、継続的インテグレーションになるとほぼ必須の機能になってくる。
jQuery1.0系の頃はまだよかった。まだその程度の機能量ですんでいた。
jQuery2.0なんて狂気の沙汰だ。デフォルトでInternet explorer 6のサポート切り捨てなんて、普通のサービスが使いはじめるレベルの機能じゃない。機能の拡張と削除のスピードが半端無さすぎる。ぶっちぎりである。prototype.jsなんて2年ぐらいほとんど変わってないのに、jQueryの変わり具合は半端ない。
まじめに保守するサービスじゃないと、アップデートにはついていけない。もちろん、エンジニアのスキルセットも。
私も、jQuery1.0の機能でさえ、ほとんど使えていないだろう。コミュニティの恩恵を授かっているに過ぎない。(Frameworkのデフォ機能ではなく)
なんというか、例えるなら、教習場で免許を取ろうとしている人が、教習車に、F1用のばりばりのレースカーを毎週専門家にチューンさせながら使う、ようなもののように感じる。基本のスキル、教養なしに、パワフルすぎるものを扱っている感じ。ちょっとこの喩えもあまり適切ではないが。。。
正直、「背伸びのしすぎ」としか言い様がない。要らない知識を取得するために必要な知識を修得するための時間を捨てているようにしか思えない。GETとPOSTの違いもわからない人が、ルーティングやらフォームの自動生成やら使えるわけがない。自動化は「既にルーチン化できるようになったもの」に対して行うべきだ。未知のものを自動化するのは狂気だ。
というわけで、本記事のまとめ。

July 25th, 2013 12:53am