AUTHOR: schwarz1009
TITLE: JavaScriptフレームワークの誕生
BASENAME: 2021/02/05/170240
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 0
DATE: 02/05/2021 17:02:40
CATEGORY: JavaScript
JavaScriptと聞くと、僕のような昔の世代は、
「Webページを読みづらくするお邪魔なスクリプト」と
思う人がいるかもしれません。
JavaScriptは、WebブラウザのNetscape社が開発した言語で、
Webページをブラウザ上で書き換えたり、
ブラウザに組み込まれた機能を使って、
さまざまなことができるマクロ言語として、
開発されました。
当時、Javaと言えば、
サン・マイクロシステムズによって開発された、
Java言語が知られていました。
Javaはさまざまな環境で動くオブジェクト指向言語でしたが、
インターネットユーザーによく知られていたのが、
アプレットと呼ばれる機能で、
Webブラウザ上で描画領域を表示したり、
アニメーションをしたり、
HTMLでは簡単にできない計算処理ができました。
アプレットから、Javaの存在を知った方も多いでしょう。
また、当時はオブジェクト指向が大流行しており、
C++に代わる新しい設計のJavaは大成功していました。
JavaScriptは、このJavaの成功にあやかって、
アプレットと同じようにブラウザ上で動く言語として、
サンとネットスケープの業務提携から、
JavaScriptという名前になりました。
しかしながら、この2つは、
名前が似ているだけで全く異なる言語です。
Javaは、仮想マシンのサンドボックス環境で、
ブラウザとは全く異なるVMの上で実行されます。
これに対して、JavaScriptでは、
ブラウザのHTMLをツリー構造にした、
DOMツリーを直接操作でき、
エンジンも完全にブラウザに組み込まれています。
さて、そのようなJavaScriptですが、
Webの世界では嫌われ者でした。
ポップアップ広告を勝手に表示したり、
ブラクラとしてブラウザをクラッシュさせたりなど、
まともでない用途に使われることが多かったためです。
もう少しマシな用途では、
文字列を横スクロールさせたり、
画面に雪を降らせたりなど、
ほとんどが「ページを見づらくするだけ」だったのです。
しかしながら、JavaScriptには潜在的な可能性があり、
それに目を付けたのがGoogleです。
Googleは、Google Mapsという地図アプリで、
Ajaxと呼ばれる非同期通信技術を用いて、
JavaScriptをふんだんに使った、
GUIのウィンドウアプリケーションと同等の、
使いやすいサービスを開発しました。
これが「Ajaxブーム」を引き起こします。
その後も、GoogleはGmailなど、
多くのアプリケーションをJavaScriptで作成します。
ここから、「JavaScriptは上手に使えば良いものである」と人々は気付き、
従来PHPなどで行っていたことを、
Ajaxを使えばインタラクティブにできると知られます。
次のキーパーソンは、Railsです。
RailsをはじめとするMVCフレームワークは、
Webにとっての一種の革命で、
モデル、ビュー、コントローラの構成で、
繰り返しを排除し、設定より規約を守ることで、
とても簡単にWebアプリケーションを開発できるようになりました。
従来PHPなどで行っていたことが、
RubyとRailsによってとても生産性が向上したのです。
しかしながら、RailsのようなMVCフレームワークは、
モデル、ビュー、コントローラを、
全てサーバーサイドで処理していました。
データベースを担当するモデルや、
全体のコントロールを担当するコントローラは、
確かにサーバーサイドの処理が必要ですが、
HTMLを担当するビューについては、
JavaScriptを上手く使うことで、
クライアントサイドでも実現できるということが、
次第に分かってきました。
また、先のAjaxのように、
Web業界が高度化し、
JavaScriptアプリケーションが複雑になるにつれて、
サーバーサイドのMVCフレームワークだけでなく、
クライアントサイドのHTML/CSS/JavaScriptの環境でも、
同様の生産性の高いフレームワークが要求されます。
ここに登場したのが、React, Angular, Vue.jsをはじめとする、
JavaScriptフレームワークです。
はじめのうち優勢だったのはGoogleのフルスタックのAngularでしたが、
今ではビューだけに特化したFacebookのReactが勝っています。
また、簡単なテンプレート処理にも使えて、
少しずつたくさんの機能を使えていける、
Vue.jsは日本などのアジア地域で、
Reactと同じくらい流行しています。
これに加えて、サーバーサイドもJavaScriptで書いてやろうという、
Node.jsも流行っています。
JavaScriptは、DOMなどの事実上の標準APIについては、
ECMAScriptのような形で、
Netscapeの後継であるMozilla.orgなどが標準規格を定めていますが、
サーバーサイドにはそれがありません。
そのため、JavaScriptには標準のファイル操作APIもありません。
そのため、CommonJSという規格があります。
Node.jsはこのCommonJSに則り、
サーバーサイドに必要なモジュールを提供しています。
Node.jsは、たとえば、
非同期のファイル操作APIなどを提供しています。
(詳しくはパーフェクトJavaScript (PERFECT SERIES 4)が参考になります。)
気持ち悪いままを保ち、
そのままで治せば精神は治る。
休まずに動こうが、動きが変わろうが、
そのままで治そうとすれば治るものである。
また、気持ち悪いもの全てを治そうとすると、
「逆に真の意味で治ろうとしている良いものまで治してしまっている」。
あえて気持ち悪いままを保つことで、
脳が精神を治すだけではなく、精神が脳を治すこともある。