JavaScriptライブラリの必要性と3つのメインストリームの概略

Programming JavaScript

内容は個人的な勉強としてまとめたものです。
より正確な情報が欲しい場合はReact、Angular、Vue.jsの本家サイトをご覧になることをおすすめします。

ちなみに、本記事の3つのメインストリームとは、React、Angular、Vue.jsを指します。
jQueryにも言及していますが、これは含んでません。

あくまでこれは簡潔にまとめた(つもり)の記事です。
(語尾が一定しないのはご容赦下さい)

そもそもJavaScriptライブラリ(フレームワーク)を導入するメリット

JavaScriptはWebアプリ作成に不可欠なもの

WebにおいてJavaScriptの重要性を一気に押し上げたサービスと言えるのが、2005年に公開されたGoogle Mapsと、その後に一般公開されたGmail。

Google Mapsの注目された点は、従来、マップのリロードにはページ全体の遷移が伴っていたものが、Google Mapsではページの一部だけを読込むことで、劇的にレスポンスを改善した点。
これにより、デスクトップアプリケーションと同等の操作性をWebアプリが実現できた、という点にインパクトがあった。

そして、それを実現した技術がAjaxと呼ばれるJavaScript(とXML)を応用した技術である。
従来、JavaScriptはポップアップメッセージを表示させるなど簡単な装飾的効果を加える目的でしか使用されていなかったが、Ajaxが注目されて以降、Webサービス構築に不可欠な存在として注目される。

AjaxとHTMLに対するDOM操作(DOMとは要はJavaScriptなどのプログラムからHTMLをオブジェクトとして操作できる仕組み)は、Webアプリを開発する上で重要なものとなる。

複雑なJavaScriptのコーディングを簡単に実装できるライブラリもこの頃から登場する。
2006年に登場したjQueryが代表例で、現在でもよく利用されるJavaScriptライブラリである。

また、その後に登場したHTML5、ECMAScript 2015のも大きい。

下の引用は、W3Cが2014年にHTML5を勧告した際のアナウンス。

HTML5は、アプリケーション開発者やアプリケーション産業がこの先何年に渡って信頼するに足る、アプリケーション開発のための機能を提供します。

HTML5勧告–オープン・ウェブ・プラットフォームの重要なマイルストーンを達成 – W3C, 2014

従来、HTMLはWebページの構造を記述することが役割だったが、HTML5以降、Webアプリケーション開発の機能を充実するようになる。
※現在の最新は2017年勧告のHTML5.2

次に、ECMAScriptの2015年の大幅な改定がある(この時は第6版)。
以下は、言語仕様のドキュメントからの抜粋したもの。

. . . most extensive update to ECMAScript since the publication of the first edition in 1997
(拙訳:(第6版は)1997年における最初の出版以来、ECMAScriptの最も広範囲なアップデートである)

ECMAScript® 2015 Language Specification

そして、その眼目が以下のように書かれている。

Goals for ECMAScript 2015 include providing better support for large applications, library creation . . .
(拙訳:ECMAScript 2015の目標は、大規模アプリケーションとライブラリ作成に対するこれまで以上のサポートを提供…)

ECMAScript® 2015 Language Specification

繰り返すが、今風のリッチなインターフェースのWebアプリを作成するには、HTML5だけではなく、JavaScriptも中心的な存在なのである。

ライブラリ(フレームワーク)で実装が簡単にできる

以上のようにJavaScriptは現在のWebアプリケーション開発に欠かせない存在だが、JavaScriptの実装をゼロから行うより、予め実装が簡単にできるよう設計されたライブラリもしくはフレームワークを用いれば効率的にコーディングが可能である(そもそもフレームワークを導入する意義がそれ)。

prototype.jsなどjQueryと同時代に登場したものも存在するが、現在よく見かけるのは、jQuery、React、Angular、そしてVue.jsだと思う。

有名なJavaScriptライブラリ(orフレームワーク)

最初期に登場したjQueryが有名ではあるが、今の注目株はReact、Angular、Vue.jsである。

下は2016年1月からのGoogle Trends(日本のみ)のデータだが、jQueryは検索数を落とし、React、vue.jsの検索数が上がっている様子。
(jsなしのVueでも認知されてるようなので、vueで検索)

ちなみに、全ての国で検索した場合はこちら。
Vue.jsが2020年2月から急降下していますが、理由はなんでしょうね。

ともかく、少なくとも日本ではVue.jsとReactは注目されているJavaScriptフレームワークであると言えます。
そして、Vue.jsのほうが若干検索数が多いですね。

jQuery

開発元 The jQuery team
公式サイト https://jquery.com/
ライセンス MIT License
リリース年 2006
最新バージョン 3.5.1 (2020/5/4)

JavaScriptのフレームワーク(的存在)としては古く、恐らく、有名。
今でも使用しているWebアプリケーションは多く、長年広く利用されきたものである。

ただ、仮想DOMの仕組みを備えていないため、パフォーマンス面で難がある。

補足かつ細かい点だが、公式サイトのトップページで”jQuery is a fast, small, and feature-rich JavaScript library . . .” (jQueryは高速で、小さく、機能豊富なJavaScriptライブラリ)と説明されているように、公式ではライブラリと位置づけられているようである。
一般に、ライブラリはアプリケーションの大枠にはならず、適宜、単に機能が呼び出されるもの。
対してフレームワークはアプリケーションの大枠を決める。
ちなみに、個人的印象では後者のイメージが強い。

React

開発元 Facebook and community
公式サイト https://ja.reactjs.org/
ライセンス MIT License
リリース年 2013
最新バージョン 16.13.1 (2020/3/19)

Facebookとそのコミュニティが開発・提供するJavaScriptライブラリ。
ちなみに、フレームワークではなくライブラリであり、日本語トップページにも「ライブラリ」と表記されています。

初めて仮想DOMを実装したライブラリ。
これにより、jQueryよりも高速なデータの反映・描画が可能になった。

後述するVue.jsに比べ、JavaScriptの知識がないと使えない。
また、テンプレートにJSXが使用できるのもポイント。

上述した通り、Vue.jsとReactの人気が最も高いが、全世界的にはReactの注目度が高そう。

公式に日本語ページもあり、情報源は充実している印象。

ちなみに、Laravelは当初Vue.jsをのみをサポートしていたようだが、今ではReactもサポートしている。

Angular

開発元 Google
公式サイト https://angular.io/
ライセンス MIT License
リリース年 2016
最新バージョン 10.0.1 (2020/6/26)

Googleが開発・公開しているJavaScriptフレームワークだが、今回は割愛。

ネットで情報を探すと「難しい」で有名らしい。

Vue.js

開発者 Evan You
公式サイト https://vuejs.org/
ライセンス MIT License
リリース年 2014
最新バージョン 2.6.11 (2019/12/13)

上のGoogle Trendで書いた通り、中国・日本などアジア圏で注目されているJavaScriptフレームワーク。
そもそも作者が中国の方である(現在は知らないがアメリカの大学に留学か在学していたらしい)。

Reactとは違い、JavaScriptの知識が全面的に必要というよりは、Vue.jsの仕組みに沿って作る。

どれを選ぶべきか?

ネットで色々ググりましたが、実は私にも決定打が掴めません。

ただ、ReactとVue.jsの実装方法をざっとですが勉強した感想として、Webシステムが大規模になるとVue.jsは内部のコードの整理がごちゃごちゃにならないか、若干不安に思えた。

また、世界的には利用者が多い点、ReactはFacebookが開発しているという点で、Reactの将来性・発展性があるように思える。

ただ、本当のプログラミング初心者の立場からすると、Vue.jsよりReactのほうがハードル高めと感じるかもしれない(JavaScriptの知識が必須だし学習量が多そう)。

実行時のパフォーマンスについては色々な記事が見つかったが、日本のサイトではVue.jsは遅いとする記事があるものの、海外ではあまり変わらないと評する記事が多い(パフォーマンスの計測方法がそもそも違うが)。

どれを選ぶかについては、最終的には、どれが好きかという問題にもなりそう。

 

以上です。
終わり。