Vueに関して知識が少ないため、せっかくなので学びなおして理解を深めたいと思いまとめようと思いました。
できる限り自分のような初心者でも分かるようにまとめたいと思います。
【初心者用】Vue.jsについて
1. そもそもVue.jsって何?
Vue.jsはアプリケーション開発において、UIを構築するためのJavaScriptフレームワークの一つです。
Vue.jsはプログレッシブ・フレームワークといいう概念の下で設計されています。
アプリケーション開発では、リリース後も段階的な仕様変更や新しい機能の追加などが繰り返されます。
そうなると、最初に使用していたフレームワークなどで対応が難しくなる場合があり、そのようなときVue.jsを使用することにより、要件に合わせた機能を追加していくことでアプリケーションの拡張が簡単にできるようになります。
Vue.jsは既存のアプリケーションへの導入も簡単にできるので、例えば既存のWebサイトの一部を変更しようとした際に、Vue.jsを使用したUIなどを追加で構築することができます。
2. Vue.jsの特徴
Vue.jsは主にクライアントサイドの開発をするReactやAngular.jsなどと同じようなJavaScriptフレームワークです。
UI関連の開発で使用されることが多く※MVVMを基本としています。
2-1. MVVMとは
MVVMとは、アプリケーション開発における設計手法の一つです。
Model,View,ViewModelという3つの要素で構成されており、それぞれに固有の役割があります。
以下に固有の役割についてまとめておきます。
■Model
・ドメイン領域を担っています。
ドメイン領域とは、ビジネスロジックやデータを格納するクラス、DAOなどの処理を担当する部分となります。
■View
・簡単に説明するとレイアウトのことを言います。
UIの外観と構造などを定義して、幾分かのプレゼンテーション・ロジックなども含みます。
■View Model
・ビューに表示するイベント処理に必要なデータの取得やビジネスロジックの呼び出しやデータ管理などをします。
View Modelはプレゼンテーション・ロジックとステートを含みます。
上記のような特徴があります。
3. Vue.jsのメリット
Web関連の開発で主に使用されているVue.jsですが、どのような時に使用するのかメリットを以下にまとめます。
・DOM操作を自動的に行う
・ユーザーの入力値を即反映する
・SPA開発で使用されている
・仮想DOMによる高速化
・コンポーネントを再利用できる
・学習コストが低い
・拡張性が高い
などのメリットがあります。
以下に詳細をまとめます。
3-1. DOM操作を自動的に行う
Vue.jsでは、HTMLとJavaScript間で値やイベントなどの紐づけが自動的に行われています。
そのため、DOMの操作するコードの記述量を少なくすることができ可読性も向上するため、メンテナンスがしやすく管理が簡単になります。
上記に関しては、Vue.jsにDOM操作を可能にするディレクティブという機能があるためです。
3-2. ユーザーの入力値を即反映する
Vue.jsにはリアクティブという、ユーザーがブラウザで入力した値に対して表示画面を即座に反映する機能があります。
これによりユーザーにとって使用しやすいWebページの開発や、開発者にとっても処理が簡潔で可読性が向上し、メンテナンス等も簡単になります。
また、セレクタを使用しないため階層構造を気にせず使用することができます。
3-3. SPA開発で使用されている
Vue.jsは拡張性が高く、Angular.jsやReactと同じようにSPAでの開発に使用されます。
SPAはページ全てを更新することがなく、単一ページでコンテンツ単位で更新ができるWebアプリのことを言います。
ブラウザの処理をJavaScriptで行うことでサーバーとの通信料を最小限に抑えることができ、ページ遷移の際に差分だけを更新するため、更新速度が高速になりユーザーにストレスフリーなWebページを開発することができます。
SPAはサーバーへの通信料を減らせるので、サーバーの不可も軽減できるというメリットもあります。
3-4. 仮想DOMによる高速化
仮想DOMを使用していない場合は、直接DOMを書き換えてページ全体を再読み込みを行うので表示に時間がかかってしまいます。
Vue.jsでは仮想DOMを使用しているので更新前と更新後の構造を比較することで、差分のみを反映することができます。
そのため、更新する際の処理速度が速くなり読み込む時間が少なくなります。
3-5. コンポーネントを再利用できる
Vue.jsはコンポーネント指向のフレームワークであり、Vueインスタンス内でカスタム要素として使用できるため、重複作業などをへ減らすことで開発工数を減らすことができます。
コンポーネントとは、機能を部品ごとに分けることによって、同一の機能が必要な場合に再利用できる仕組みになります。
また、Vue.jsで記述されていない既存のWebサイトの一部分にVue.jsのコンポーネントを組み込むこともできます。
3-6. 学習コストが低い
Vue.jsはHTMLと文法が似ており、構造がシンプルで直感的に理解しやすいため、覚えることが少ないので学習コストが少なく済みます。
使用環境の作成でも、CDNでファイルを読み込み、Scriptタグを1行書き込めば追加始められます。
また、日本でも需要と人気が高いので、参考資料が豊富なので学習がしやすいのもメリットになります。
3-7. 拡張性が高い
Vue.jsはシンプルに設計されている上に柔軟性が高く、他ライブラリと組み合わせて使用することも可能になります。
他ライブラリを使用して開発中のUIに不足がある場合は、Vue.jsを使用して補うこともできます。
Vue.jsは独自の規約やルールが少ないため比較的自由にアプリ開発をすることが可能となっています。
ですが、独自のルールや規則がなく自由度が高すぎるため、あらかじめルールなどを定めておかなければ中規模以上の開発は厳しくなります。
それでも、Vue.jsを使用するのであればNuxt.jsなどのVue.jsはから拡張したフレームワークをあわせて使用すル必要があります。
その反面に規模が大きくないアプリケーション開発や既存の開発に対して、組み合わせる場合などは相性が良いです。
Vue.jsはシンプルな構造のため、他のライブラリに組み合わせる作業が簡単です。
4. Vue.jsのデメリット
以下にVue.jsのデメリットについてもまとめておきます。
・ネイティブアプリ開発用としては遅れを取っている
・規模の大きな開発には不向き
の以上2点です。
以下に詳細をまとめます。
■ネイティブアプリ開発用としては遅れを取っている
Vue.jsはWebアプリケーション開発に用いられていますが、ネイティブアプリ開発用としては他のフレームワークなどと比べて新しいためです。
他のフレームワークなどと比べると開発用のライブラリやツールなどが少ないです。
■規模の大きな開発には不向き
Vue.jsは大規模な開発には向いていません。
それは、シンプルな構造で軽量なフレームワークであるためで、大規模な開発を行う際には他の適したフレームワークを使用したほうが良いです。
5. まとめ
React.jsのみしか触っていなかったため、改めて他のフレームワークについて調べるのはいい勉強になりました。
今後も一つのフレームワークだけでなく、他のフレームワークやライブラリなど調べて学んでいきたいと思います。