読者です 読者をやめる 読者になる 読者になる

Fuzoku実践入門ブログ

Amazon で好評発売中の『Fuzoku実践入門』に関するエピソードなどを紹介するブログです。

私の中のJavaScriptライブラリの歴史

コラム

最近、JS界隈ではReactが大いに盛り上がっていますが、私のような一介の風俗解説本の著者からみると、何の話だろうといった感じです。

そこで、一度自分の中のJavaScriptライブラリの流れを整理してみようかなと思ってメモしたので公開してみます。

Ajax登場

2004年くらいまでは、

  • JSは危険だからブラウザでオフにしよう
  • JSなしでも見られるページ作りをしよう

という考え方が、Webに詳しい人達のわりと一般的なコンセンサスだったが、Ajax(主にGmailGoogle Maps)の登場により世界は一変。Webの世界は、はっきり言ってJSなしでは生きられなくなった。

ちなみに、それまでのJSといえば、右クリックを禁止したり、ポップアップウィンドウを開いたりする、ただただウザい存在でしかなかったので、上記の考え方は別に尖っているわけではなかった。

素のJS書くのつらい → 最初の有名ライブラリprototype.jsの登場

JSなしでは生きられなくなり、世のWeb制作者はJSを書くことと真剣に向き合いはじめた。しかし、そこには大きな問題があった。

いざJSを書きはじめてみると、HTMLはIDまみれになり、JSのソースコードはdocument.getElementByIdの嵐になったのである。せめて getElementByClassNameくらいは欲しい。誰もがそう考えた。

そこで登場したのが、prototype.jsだった。

prototype.jsは素のJSより書き易いだけでなく、簡単なアニメーションを実現するメソッドまで提供してくれた。これが世間でバカ受け。その流れを組んで登場したのが、script.aculo.usだった。

script.aculo.us によるアニメーション競争勃発

script.aculo.usがまだ自然にタイプできた自分に驚きつつ、.usというドメインが懐しく感じる今日では、アニメーションはJSよりもGPUアクセラレーションの効くCSSの仕事となっている。

しかし、当時は違った。なぜならば、CSSはまだ2.0であり、CSSでアニメーションなんて誰も考えていなかったからだ。

なので、WebでアニメーションをさせるにはJSかFlashしかなく、当時プロプラな環境だったFlashが使えない人はJSのライブラリに頼るしかアニメーションを実現する方法がなかったのである。

当時はネット環境も貧弱でCDNもなく、差別化の要素はカッコいいアニメーションだけでなく軽量という要素も重要だった。当時3Kbだったmootoolsなどが受けていた記憶がある。ただ、王道としてはprototype.js + script.aculo.usが鉄板だった。

しかし、JSは難しい。なぜなら、プログラミング的な知識以外にもDOMの知識が必要不可欠だからだ。なので、prototype.jsを使ったからと言って、誰でもJSが書けるという訳ではなかった。

何とかならないものか。そこで登場したのがjQueryだった。

jQuery幕府時代

わたしです

jQueryの登場は、いまから考えると日本における鎌倉幕府みたいな感じだ。

$を使うことで、誰もが簡単にDOMを扱えるようになり、メソッドチェーンを使って適当に書いたらなぜか動いた。これが世界を変えた。

数多のプラグインが作られ、当時世間を変えつつあったスマホにも対応するjQuery Mobileなど、カッコいいjQueryワールドに世界が包まれ、誰もが天下太平を予感した。

しかし、jQuery幕府は永遠ではなかったのだ。

テスト書けなくね? メンテナンス厳しくね? よろしい、ならばJSフレームワークだ。

まぁ、新たなものが生み出されるきっかけは色々とあるし、まだ歴史の途中なので、個人的な感覚でしかないが、jQueryの欠点としては、テストが書きづらく集団メンテナンスが厳しいと感じる人が現れたのがきっかけな気がする。

要するに、独りでゴリゴリ書くのは良いが、高度化するWebアプリケーションにおいて、jQueryだと設計とか保守性を担保するのが難しかった。

時代も変わり、誰もがWeb Application Frameworkを使うようになった。そこで、誰かが言ったのだ。『よろしい、ならばJSフレームワーク』だと。

JSフレームワーク戦国時代

そして、気付けばJSフレームワークが始まっていた。

まず、中央に踊り出たのはBackbone.jsだった。WAFの王者RoRで採用されたのも大きい。

しかし、勢力争いは留まるところを知らない。MVCからMVVM、アルファベットがどんんどん並び、Ember.jsAngularJS、よくわからんけど凄そうなヤツらがぼんぼん現れる。

まるでラグナロクであり、門外漢からして、この世の終りを感じた。

正直、フロントは難しい。しばらく静観しよう。誰もがそう考えた。そして、気付けば、Reactが生き残っていた。

React ← いまここ

WAFのMVCでは、JSはVに所属している。しかし、JSの中でもMVCがあるのは、神戸牛ステーキの上に松坂牛ステーキを乗せるようなものである。

JSなんだから、Vだけでよくね?Reactは当たり前のことを言った。そしたら、驚くほど使い勝手がよくなり、誰もが理解できるようになった。

そして世界は平和に包まれつつあった。To be continued...

別方面の戦い。それがAltJS。

JS界隈ははっきり言って過激だ。ライブラリ以外にも負けられない戦いがある。それがAltJSだ。

現状、生き残っているのは、Coffee ScriptTypeScriptが最有力候補で、Dartが瀕死の模様。最近のGoogleは負けが込んできている。

最近は、AltJSだけでなく本家とも言えるES6が注目を集め、AltJSに頼らなくても良くなるのか?という機運も高まりつつある。

しかし、現状では何とも言えない。たったひとつの真実があるとすれば、JSは滅びないということだけなのである。愛と同じだ。

つまり、JSは愛だったのだ。

というわけで、みなさまJSの歴史は分からないけれど、風俗の歴史はよく分かるFuzoku実践入門を宜しくお願いします。

Fuzoku実践入門: 裏打ちされた知識で正々堂々とデビューする

Fuzoku実践入門: 裏打ちされた知識で正々堂々とデビューする