JavaScriptでは度々フレームワークが使われますが、なぜフレームワークを使うのでしょうか。
フレームワークの違いを比較しながら、おすすめのフレームワークやトレンドを見ていきましょう。
フレームワークのメリット・デメリット
なぜフレームワークを使うのか、メリットとデメリットをみていきましょう。
フレームワークを使うメリット
Webサイトやアプリケーションを作成するには、多くの作業を行うことが必要となります。
フレームワークとは簡単にいうと、Webサイトやアプリケーション作成においての土台となるものです。
そのためフレームワークを利用すれば開発者は、その目的に対してそのフレームワークでは補えない部分を集中的に開発することができます。
プログラムの記述量が大幅に減らせ、作業の数を減らすことができることで開発までの時間を短くすることができます。
いい過ぎかもしれませんが、フレームワークを使うということはWebサイトやアプリケーションなどの作成をより簡単にするということです。
フレームワークのデメリット
とても使い勝手のいいフレームワークですが、初めの学習コストが高くなります。
つまり習得するまでに覚えないといけないことが多くあるのです。そうなると技術そのものを習得するまでに時間がかかってしまいます。
フレームワークを使ってWebサイトやアプリケーションを開発するなら、まずフレームワークを使う技術を習得することから必要となるでしょう。
しかし一度技術を習得してしまえば、以後の開発作業の効率は大きく上がることは間違いありません。
Webサイトやアプリケーションを開発していく上で作業効率が上がり、開発までの時間を短縮していくことはとても大切なことになります。
そのため学習コストが高い技術だとしても、習得しておくべき技術でしょう。
フレームワークの利用は開発者にとって大きな利益を生みます。
JavaScriptのフレームワークは沢山の種類がある
JavaScriptのフレームワークといっても様々なものがあります。
一つのフレームワークを習得すれば、全てのフレームワークを利用できるというわけではありません。
それぞれのフレームワークで、使い方やその特性も違います。
何故様々なフレームワークが存在するのか
フレームワークそれぞれで特徴や特性、使いやすさなど違います。なぜいろいろなフレームワークが存在するのでしょう。
フレームワークとライブラリは明確に違うものなのですが、その境界線は曖昧なものになっています。
フレームワークの中にライブラリが含まれているものもあれば、ライブラリがフレームワークのように構築されているものもあるのです。
そのため、人によってその認識が違っていることも多いので注意しましょう。
ここではライブラリもフレームワークとして解説します。
JavaScriptには公式のフレームワークやライブラリは存在しません。
つまりさまざまな企業や個人がJavaScriptを使って、フレームワークやライブラリを自由に開発していきました。
そのため世界中に色々なフレームワークが存在するようになったのです。
また、JavaScriptの特徴の一つですが、JavaScriptは他のプログラミング言語と併用して利用できます。
ある機能に特化したフレームワークや多種多様の用途に用いられるフレームワークなど、さまざまなフレームワークが開発されました。
そのためそのフレームワークの特徴や特性を考えながら、マスターするフレームワークを選ぶことが大切になります。
どのフレームワークを選べばいいのか
一言にJavaScriptのフレームワークといっても、多種多様のフレームワークがあることが分かりました。
どういったフレームワークを選べばいいのでしょうか。
フレームワーク選びはとても重要
JavaScriptのフレームワークには、作成するWebサイトやアプリケーションの特徴によって、向き不向きがあります。
元々フレームワークを利用する目的は開発の効率を上げ、生産性を上げることにあります。
しかし利用するフレームワークが目的に対して不向きなものを選択してしまうと、開発に時間もかかってしまうでしょう。
効率性を上げるどころか下げてしまうことになる可能性もあるのです。
そのため一度選択したフレームワークを途中で変えることは難しくなります。
目的にあったフレームワークを始めに選ぶことはとても重要なことです。
学習コストを考える
フレームワークを選ぶに至って、学習コストも大切です。学習コストが高いと、習得に時間がかかってしまいます。
時間をかけただけの生産性の向上が見込めるのであれば習得し、導入する意味はあるでしょう。
重要なのは効率性や生産性を上げることです。
逆に学習コストが低くても、効率性や生産性が上がらなければ導入してもあまり意味がありません
フレームワークの習得からプログラムの開発までの学習コストと生産性の向上のバランスが大切になります。
JavaScriptのおすすめフレームワーク(ライブラリ)
どういったフレームワークがあるのでしょうか。
ここでは以下ののJaptvaScriのおすすめのフレームワーク(ライブラリ)4種類を紹介していきます。
- Angular、AngularJS
- Vue
- React
- jQuery
これらのフレームワークやライブラリの特徴、またどういった目的で使っていけば良いのかなどをみていきましょう。
Angular、AngularJSとは
AngularとAngularJSは同じGoogleが開発したフレームワークです。
AngularとAngularJSは違う
AngularJSは最初に開発されたフレームワークです。しかしAngularJSには欠点がありました。
「重い」や「記述が複雑」などの欠点を受け、開発者がコードを1から書き直したものがAngularとなります。
バージョン2,0以降は「JS」を除いてAngularとなりました。
一部の機能は受け継がれていますが、違いがあります。
推奨言語がJavaScriptからTypeScriotになり、 Scopeやコントローラーの概念もなくなりました。
コンポーネントもベースで構築されるなど多くの違いがあります。
この双方のフレームワークは基本的に違うものと考えた方が良いでしょう。
Angularのメリット
Angularはすでにしっかりと設計が組み込まれています。
その設計に沿って開発していくことによって、Angularは開発において大きな生産性を見せました。
サーバーとの連携もできるので、どんなこともできてしまうといっても良いでしょう。
無償で利用でき、使い方も分かりやすくできています。そのため非常に人気のあるフレームワークです。
Angularの考えに従った開発をしていけば、他のフレームワークではできないスピードで開発していくことができます。
しかし動作に少し癖があり、融通が効きにくい点というのが短所です。
Angularの特徴
特徴としてはMVC(MVW)、双方向データバインディング、コンポーネントなどがあります。
MVC(MVW)とは
MVCとは、アプリケーションなどを設計するときの考え方です。
「Model」、「View」、「Controller」もしくは「Whatever」の頭文字を取っています。
- データを扱う部分(M)
- HTMLやCSSなど画像を作る部分(V)
- その間で他の細かい作業を行う部分(C or W)
役割によってプログラムを分けていき、これらを組み合わせわせて動かすという考え方です。
この考え方はプログラムが混在していないため、設計がスムーズに行えます。
双方向データバンディングとは
どんなアプリケーションでも、画像(View)で操作した内容をデータ(Model)に反映します。
そして、データ(Model)の内容が変わったことを画面(View)に反映したりしなければなりません。
その双方向のデータのやり取りを自動処理し、その双方を同期し続ける機能が双方向データバンティングです。
コンポーネントとは
コンポーネントとは複雑なHTMLを部品化してしまうことです。
部品としてしまうことで再利用できる機能を指します。
これにより同じような要素を多くのページで使いまわせたり、各ページでHTMLが読み書きしたりしやすくなります。
要素を修正する場合などコンポーネント内の部分を変更するだけで良いのがポイントです。
こうすることで、各ページで修正する必要がなくなります。
Angularが向いている開発
Angularはシステム管理のアプリケーションやページ数の少ないWebアプリケーションなどに向いています。
仕様が決まっているシステム管理などのアプリケーション開発にはAngularの設計に沿って開発をやっていけるのです。
作業効率を上げ、生産性も高くなるでしょう。
またページ数の少ないWebアプリケーションは動作端末が多くなってしまうため、HTMLやCSSを操作することまで多くなるでしょう。
Angularでは双方向データバンディングを使い、簡単に開発することができます。
Vueとは
Vueの特徴
Vueの一番の特徴は、その自由度でしょう。
VeuはAngularと比べて、とてもシンプルに構造されています。
そのため開発時の自由度が高く、開発していく段階で自分好みに設計していくことも可能です。
他のライブラリとの携もやりやすいので、他のライブラリで足りない部分を補うこともできます。
ただし自由ということは自分で考えることも多くなるということです。その分時間はかかり、生産性は下がってしまうのがデメリットでしょう。
また、VueにはコンポーネントやMVVMなどができる特徴もあります。
MVVMとは
「Model」「View」「ViewModel」にプログラムの役割を分けて開発することです。
この分割でプログラムを見やすくし、追加や修正がしやすくなります。
Vueのメリット
学習コストの低さもメリットの一つです。HTML、CSS、JavaScriptの基礎さえ学んでいれば使い始められます。
これは構造がシンプルなためです。
しかも自分好みのWebアプリケーションを作れ、途中で他のフレームワークに切り替えることも比較的簡単にできます。
Vueが向いている開発
幅広い規模のアプリケーション開発に向いています。
開発者が考える自由度の高いアプリケーションを開発する時、また既存のWebサイトに組み込んだりするときに便利でしょう。
Reactとは
Reactはカテゴリーではライブラリになりますが、フレームワークとして捉えられていることが多いです。
Reactの特徴
開発はFacebook社です。
オープンソースとして公開されているので、日々様々な改良が加えられています。
シンプルで柔軟性が高く、使いやすいのですがライブラリであることは理解しておきましょう。
つまり、Reactは設計ができていません。
自分で目的にあったライブラリでチームを作っていき、設計を作り組み立てて、あてはめていく必要があるのです。
公式に「おすすめスターターキット」も用意されています。
ユーザーインターフェースを(UI)が作りやすいことも特徴でしょう。
ユーザーとコンピューターがやり取りするための操作画面や操作方法がUIですが、それが作りやすくなっています。
コンポーネント指向という概念を用いられているので、複雑なUIを部品化して管理を簡単にしてくれるのです。
また一度学んでしまえばいろいろなところで活躍するものです。ライブラリであることから開発途中から利用もできます。
新しい機能を追加するときも、その部分だけをReact使い、追加することができます。
Reactの向いている開発
利用率がそんなに高くはないですが、近年人気が高くなっています。
Webサイトよりアプリケーション開発に使われることが多いようです。
何かに特化したWebサイトやアプリケーションを開発したい方に適しています。
jQueryとは
jQueryの開発者はジョン・レング。カテゴリーはライブラリになります。
もっとも有名なライブラリです。
jQueryの特徴
jQueryの特徴といえば、使用率の高さでしょう。全Webサイトの70%以上で使われています。
つまり最も有名で最も使われているライブラリなのです。
システムは簡単にいうとJavaScriptを使いやすいように拡張したものです。とても単純ですが、HTMLやCSSを操作することは大変な作業が必要になります。
それを簡単にすることができるのです。
どんなブラウザにも対応できることが最も使われている最大の理由でしょう。
Internet ExplorerやGoogle Chrome、Safariと、ほとんどの人が使っているブラウザに対応しているのでこれだけ使われているのですね。
ライブラリなので目的に対しての構築や考察は大変です。しかし基本となるライブラリになっていると考えられます。
jQueryの向いている開発
多くのWebサイトで使われています。主に商用のホームページやECサイトなどで使われることが多いです。
Webアプリでも小中規模のものは使われています。
jQueryはプラグインで機能も簡単に追加でき、ブラウザの違いを気にすることもないことが理由でしょう。
どう選びどう使うか
ここまで何種類かのフレームワークを紹介してきました。
それぞれの特徴や、どのフレームワークがどういった目的に使われているかが分かったでしょうか。
ここで紹介した以外のフレームワークも多くあります。それぞれに特徴や特性があります。
フレームワークのトレンドから選ぶ
フレームワークには流行があります。
たとえば、2015年頃はjQueryが人気でした。
しかし近年jQueryの人気は下がり、他のフレームワークの人気が上がってきています。
2019年前後で上がってきているのはVue、Reactです。
今後も動きはあると考えられますが、こういったところから利用するフレームワークを選ぶことも大切になります。
まとめ
ここで紹介した4つのフレームワークは、仕事として使いやすいものだと考えられます。
どういった目的で、どういったエンジニアや開発者でやっていくのか。しっかりとしたビジョンを持つことが大切です。
そうすれば自ずと、どのフレームワークを使うべきかも分かってくるでしょう。
JavaScriptのフレームワークはエンジニアや開発者にとって必要不可欠なものです。
目的や自分に合ったフレームワークを選び、使っていきましょう。