Vue.jsとは
Vue.jsとは、オープンソースのJavaScriptフレームワークを指します。ユーザインターフェース構築に利用します。プログレッシブフレームワークと名付けられており、ビュー層のライブラリ利用から段階的に導入することができます。動的にサーバーと通信する、SPA(シングルページアプリケーション)まで対応します。 【参考】:Vue.js
Vue.jsのコミュニティ
Vue.jsのコミュニティは活動は盛んで、日本にも、Vue.js 日本ユーザーグループがあります。Vue.jsの普及と、Vue.jsエコシステムへの貢献を行っています。大規模カンファレンスである、「Vue Fes Japan」を年に一度実施しており、2022年も10月16日オンライン開催を予定しています。 【参考】:Vue.js JP 【参考】:Vue Fes Japan
Vue.jsの活用事例
Vue.jsの活用事例ですが、国内外問わず利用が拡大しています。最新の事例は、Vue.js 日本ユーザーグループが主催する「Vue Fes Japan」でも公開されています。
コミュニティを通じた活用事例発表の他にも事例は多くありますが、今閲覧しているサイトにVue.jsが使われているかどうかは簡単にわかります。具体的には、Chrome拡張機能の「Vue.js Devtools」をインストールすると、Vue.jsで開発されているサイトがロードされる際に、「Vue.js Devtools」のアイコンが緑色(アクティブ)になります。 【参考】:chrome ウェブストア Vue.js devtools
アイコンが緑色になるサイトの代表例は、「Apple SwiftUI Tutorials」「ZOZOTOWN」「WORKMAN」「マイニンテンドー」など多数あります。 【参考】:Apple SwiftUI Tutorials 【参考】:ZOZOTOWN 【参考】:WORKMAN 【参考】:マイニンテンドー
Vue.jsのメリット
Vue.jsは、Evan Youによって開発されましたが、AngularJSを使用したアプリ開発の経験からAngularの気に入っている部分を抽出し開発した経緯があります。そのメリットですが、以下のような点が挙げられます。 【参考】:Vue.js
構造がシンプル
リアクティブという、単純で直観的に管理できるJavaScriptオブジェクトシステムを採用しています。構造がシンプルで拡張しやすいというメリットがあります。プログレッシブフレームワークという段階的導入に対応し、ビュー層のみのライブラリ利用から段階的に導入することができます。
学習しやすい
ドキュメントが豊富で、JavaScriptオブジェクトモデルの構造が理解しやすくなっています。そのため、学習効果が高く、他のフレームワークよりも覚えやすい特長があります。
コーディングしやすい
HTML・CSSとJavaScriptを完全に分離しているため、コーディングしやすい特長があります。アプリはコンポーネントという分割単位で管理され、再利用できます。また、プラグイン機能を利用することで、コードの再利用を容易にしています。
DOM操作が不要
JavaScriptのフレームワークでは、通常DOM(Document Object Model)の操作が必要です。Vue.jsではディレクティブ機能があり、HTMLに属性を付与することで自動的にDOM操作を行うことができます。そのため、コードがシンプルになりメンテナンスも容易です。
手間が少ない
サーバー通信量を抑えるSPA(シングルページアプリケーション)をベースとしており、ルーティングによる移行遷移のマッピングを容易にしています。また、トランジションコンポーネントにより、DOM操作を自動的に行うこともできます。
Vue.jsのデメリット
Vue.jsは、作者のEvan YouがAngularの良いとこどりから着想を得ていますので、総じて目立ったデメリットはありません。Vue.jsのデメリットですが、あえて挙げるならば以下のような点が挙げられます。
大規模プロジェクトがカバーされない
Vue.jsは、軽く動作することを主眼に置いて設計されており、比較的小規模なプロジェクト用を想定しています。そのため、大規模プロジェクトで想定している、モジュール連携や制御が十分ではありません。
ウェブシステムに限定される
JavaScript用フレームワークですので、利用がウェブサイトやウェブアプリなどのウェブシステムに限定されます。スマホに代表されるモバイル端末等では、App StoreやGoogle Payなどからネイティブアプリをダウンロードし利用できますが、このような用途では利用することができません。
他のフレームワークやライブラリとの違い
Vue.jsは、他のフレームワークやライブラリからの移行も進んでいます。ここでは代表的なライブラリであるjQueryやReact、およびフレームワークであるAngularを取り上げてVue.jsと比較していきます。特長や用途の違いについて解説していきます。
jQueryとの違い
jQueryは、JavaScriptライブラリの1つでコードをシンプルに開発するために考案されました。イベントハンドラ・アニメーション・Ajax用のAPIが提供されます。 【参考】:jQuery
Vue.jsとjQueryの違いは、簡単に言うとVue.jsがフレームワークで、jQueryは単なるライブラリです。jQueryは最小のコード量で、より多くの事を実装することを目標として開発されており、導入がしやすく多くのフロントエンドアプリケーションで使用されています。
その反面、DOM操作を手動で行う必要があり多少手間がかかります。また、SPA(シングルページアプリケーション)のニーズに対応できないため、高度な処理には不向きです。
Reactとの違い
Reactは、ユーザーインターフェース構築のためのJavaScriptライブラリです。Facebook(現Meta)とコミュニティによって開発されました。 【参考】:React
Reactでは、ライブラリながらいくつかVue.jsと同等の機能を実装しています。具体的には、仮想DOMを利用しており、DOMの状態をメモリ上にキャッシュし効率化を図っていることが挙げられます。コンポーネントをベースにしていますので、小さなコンポーネントを組み合わせて複雑なインターフェースを構築していきます。
Reactはライブラリのみなので、コードサイズが小さい特長があります。加えて中・大規模の開発向けにも利用できます。Vue.jsの場合は、コードが読みやすいため学習効果が高く簡単に記述できるメリットがあります。そのため、ReactからVueへ移行するのも簡単です。
Angularとの違い
Angularは、Googleと個人やコミュニティによって開発されました。JavaScriptのスーパーセットであるTypeScriptベースで、フルスタックのフレームワークです。 【参考】:Abguolar
Angularは、TypeScriptをベースとしています。TypeScriptは、JavaScriptを大規模プロジェクトで利用できるように改良したものです。そのためAngularは、大規模アプリの開発に適しています。その反面、TypeScriptの知識が必要ですので多少知識のハードルがあがります。
フルスタックのフレームワークであり、ウェブユーザインターフェースの構築以外にも対応できます。SPA(シングルページアプリケーション)開発で、複雑なウェブアプリケーションに対応できます。必要な機能が揃っているため、コードサイズに関しては多少大きくなります。
Vue.jsは、Angularに影響を受けて開発されたフレームワークですので、構文が似ています。すでにフレームワークを利用している方は、理解しやすいメリットがあります。そのためVue.jsは、学習効果が高く簡単に記述できると言えます。
Vue.jsの使い方
Vue.jsの使い方ですが、HTMLにScriptの要素となる<script>を記述し、JavaScriptコードを作成します。JavaScriptコードはHTMLと同じファイルでも別ファイルでも構いません。最初に「Hello World の例(Hello Vue)」を見ておくと、理解が進むでしょう。
【参考】:Vue.js 基本的な使い方 【参考】:Vue.js はじめに 【参考】:Codepen Hello Vue
Vue.jsのインストール
Vue.jsのインストール方法はいくつかあります。自身の環境に合わせて利用します。 【参考】:Vue.js インストール
・CDNを使う ローカルに保存せずに、CDN(コンテンツデリバリネットワーク)のサイトを利用し、コードに取り込みます。
<script src="https://unpkg.com/vue@next"></script>
・ローカルに保存する CDNサイトからダウンロードし、ローカルに保存しておきます。使用する際には、<script>でローカルファイルを指定します。
・npmを用いる パッケージ管理ツールであるnpmでローカルに保存します。
Vue.jsの環境に慣れてきたら、CLIをインストールしてより高速に処理を進めることもできます。
Vue.jsのコードの具体例
具体例ですがメッセージを表示するには、HTMLに次のようにコードを追加します。こちらの記述方法は、Hello World(Hello Vue)でも確認できますので、すぐに理解できるでしょう。
<div id="app">
{{ message }}
</div>
JavaScriptコードは次に様に記述することで、”メッセージの表示”がされます。
const App = {
data() {
return {
message: 'メッセージの表示'
}
}
}
Vue.createApp(App).mount('#app')
触ってみて違いを理解しましょう
Vue.jsのような、ウェブアプリケーションの開発フレームワークでは、机上で理解するよりも実際に使用した方が、画面の遷移や制御の理解がしやすくなります。ある程度特徴が理解できたら、実際に操作してみて感覚をつかむことで、一層理解が進むでしょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから