目次

はじめに

本書の構成
謝辞
表記関係について
免責事項
底本について

第1章 Vue.jsことはじめ

1.1 フロントエンドフレームワークが必要なわけ
1.2 Vue.jsとは
1.3 Progressive Framework
1.4 コミュニティ
1.5 ガイド
1.6 派生プロジェクト
1.7 何故 Vue.jsを選ぶのか
1.8 まとめ

第2章 Vue.jsのはじめかた

2.1 JSFiddleを使う
2.2 CDNを使う
2.3 npmを利用して環境を構築する
2.4 vue-cliを利用して環境を構築する
2.5 Ruby on Railsで使う
2.6 Laravelで使う
2.7 まとめ

第3章 Vue.jsの基本的な使い方

3.1 Vueインスタンスの作成
3.2 ライフサイクル
3.3 リアクティブシステム
3.4 ディレクティブ
3.5 算出プロパティ(computed)
3.6 コンポーネント
3.7 まとめ

第4章 ToDoリストを作る

4.1 フォームを作る
4.2 リストの作成
4.3 listに追加できるようにする
4.4 ToDoを完了できるようにする
4.5 まとめ

第5章 単一ファイルコンポーネント

5.1 単一ファイルコンポーネントとは?
5.2 利点
5.3 まとめ

第6章 Vuex

6.1 Vuexとは
6.2 コア機能
6.3 module
6.4 まとめ

第7章 vue-router

7.1 vue-routerとは
7.2 動的ルートマッチ
7.3 ネストされたルートで表現するコンポーネントのネスト
7.4 プログラムで遷移させる
7.5 リダイレクト
7.6 コンポーネント内で動的なセグメントの値を取得したいとき。
7.7 まとめ

おわりに

著者紹介

はじめに

 本書はJavaScriptのフロントエンドフレームワークVue.jsの入門書です。

 Vue.jsに興味のある人や、初めて触るけどとっかかりがないという人を想定読者とし、Vue.jsの使い方とそのエコシステムについて学べるように本書は書かれています。ES2015JavaScriptを書いたことがある人であれば容易に理解できます。

 またVue.jsの詳しい機能や高度な使い方についての紹介が不十分だと感じられるかも知れません。そのような時には公式ドキュメントが不十分さを補ってあまりあるほどの情報量を提供してくれます。

 本書を通じてVue.jsやその周辺技術について学んでいただければ幸いです。

本書の構成

第1章 Vue.jsことはじめ

Vue.jsがどのようなフレームワークなのか、そのエコシステムについて紹介します。

第2章 Vue.jsのはじめかた

Vue.jsの学習やプロジェクトをどう進めていけばよいかについて紹介します。

第3章 Vue.jsの基本的な使い方

Vue.jsのライフサイクルや機能について、よく使う項目を紹介します。

第4章 ToDoリストを作る

実際にVue.jsでToDoリストの作成をおこないます。

第5章 単一ファイルコンポーネント

Vue.jsの強力な機能の一つ、単一ファイルコンポーネントについて紹介します。

第6章 Vuex

状態管理を行うライブラリVuexについて紹介します。

第7章 vue-router

ルーティングのライブラリvue-routerについて紹介します。

おわりに

本書のまとめです。

謝辞

 本書の作成には多くの人に助けられました、特に家族には自宅での作業中あまり相手をしてあげることができず申し訳なく思っておりました。会社の同僚には忙しい中レビューをしていただき本当に助かりました。この場を借りて感謝を申し上げます。

 Vue.jsの公式ガイドは、本書を執筆する上でとても参考にさせていただきました。ガイドの翻訳を行っているVue.js日本語ユーザグループの皆様にも深く御礼を申し上げます。

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

底本について

 本書籍は、技術系同人誌即売会「技術書典3」で頒布されたものを底本としています。


第1章 Vue.jsことはじめ

Vue.jsとは一体どのようなフレームワークなのでしょうか。この章ではフロントエンドフレームワークそのものについて触れつつ、Vue.jsとそのエコシステムについて説明します。

1.1 フロントエンドフレームワークが必要なわけ

 昨今のWebアプリケーション開発は、複雑化の一途をたどっています。以前はもっぱらjQueryを用いて動的なWebアプリケーションが構築されていましたが、jQueryで動的にDOMを操作すると思わぬ挙動をしてしまい、アプリケーションが壊れるという問題などを抱えていました。

 例えば、ある要素にクラス名を用いてjQueryでイベントハンドラを登録し、そのクラス名をのちの変更で変えてしまったとします。するとそのイベント発火はクラス名に依存しているため、もう発火することがありません。しかもjQueryのイベントハンドラの登録はエラーにならないため、動かなくなったとしても何が原因で動かなくなったのかがわからなくなってしまいます。ビューと密接に結合したJavaScriptならではの問題点と言えるでしょう。

 そこでjQueryに代わるビューを扱うフレームワークが多く誕生しました。初期はBackbone.jsKnockout.jsが使われ、この分野が成熟して行くにつれAngular.jsEmber.js、さらにJSフレームワークのパラダイムシフトのきっかけとなったReact.jsなど様々なフレームワークが生まれました。

 さらに、最近はWebアプリケーションの体感スピードの改善のためにシングルページアプリケーションで構築しようという動きが顕著になっています。シングルページアプリケーションの構築をJSフレームワークなしで行うのは困難なため、最適なフレームワーク選びが求められています。

1.2 Vue.jsとは

 Vue.jsは、インタラクティブ性のあるユーザインタフェースを構築するためのフロントエンドフレームワークです。

 Vue.jsはEvan You(https://github.com/yyx990803)さんの個人プロジェクトとして2013年に開発が開始され、2015年10月に1.0、2016年10月に2.0をリリース、現在(2018年3月)最新のバージョンは2.5.13となっています。Evanさんは現在フルタイムでVue.jsを開発しており、開発の支援も様々な企業や個人スポンサーから受けているため、ほぼ万全の体制でVue.jsの開発が出来ている状態と言えます。

 Vue.jsの機能面での特徴としてはMVVM(Model-View-ViewModel)のソフトウェアアーキテクチャパターンの影響を受けていることと、Webコンポーネントのようにカスタム要素を作り出し、再利用可能なビューを構築できることです。

 データバインディングによるリアクティブなビューの変更と、保守性の優れたカスタム要素の作成で、小規模なアプリケーションから大規模なアプリケーションまで幅広く対応出来るフレームワークとなっています。

1.3 Progressive Framework

要求の変化に対応出来るフレームワークとしてのVue.jsとそのエコシステム

 Vue.jsの特徴として、Progressive Frameworkという概念にもとづいて開発されているということがあります。

 Progressive FrameworkとはEvanさんが提唱した概念で、アプリケーションの要求に応じて使い方を変えていくことのできるフレームワークのことを指します1

 ある課題があったとき、それを解決するフレームワークがその課題に対して不十分だったり、逆にオーバースペックであった場合、フレームワークの複雑性に引きずられて余計なコストがかかってしまいます。また、アプリケーションは作って終わりではないため、ユーザーの要望によって機能拡張が行われます。フレームワークがその変化に対応できなければ、これもまたコストがかかります。

 Progressive Frameworkであることが意識されたフレームワークは課題に対して適切な使い方を提示でき、規模が拡大したとしてもそれに応じて変化することが出来ます。

 Vue.jsとそれを取り巻くエコシステムは、常に変化する課題に柔軟に対応することが出来るように作られています。ビュー層をデータバインディングでリアクティブに変化させるVue.js、シングルページアプリケーションを作成するためにフロントエンドでのルーティングを可能にするvue-router、コンポーネント間の状態管理をシンプルに解決するVuexなど、状況に応じたライブラリが用意されています。

段階的に解決していく技術的領域

 Progressive Frameworkは、5つの技術的領域を段階的に解決していきます。

1.宣言的レンダリング(Declative Rendering)

 まずはじめに、リアクティブな仕組みを使ってフォームを作りデータを送る要求のみ満たすためにVue.jsを使うとします。これだけならばscriptタグでVue.jsを読み込み、HTMLに直接ディレクティブ(Vue.jsの為にタグに追加する属性)を書くだけで十分です。ここで解決された領域は「宣言的レンダリング」です。

2.コンポーネントシステム(Component System)

 次にformを再利用したいという要求が出てきたとき、Vue.jsのコンポーネントの機能を使用することで満たすことが出来ます。Webコンポーネントのようにカスタム要素を作成し、要求に応じて再利用するなどして解決された領域は「コンポーネントシステム」です。

3.クライアントサイドルーティング(Client-Side Routing)

 これまでの要求はいわゆるWebサイトとしての要求でしたが、シングルページアプリケーションなどのより「Webアプリケーション」らしいものにしていきたいと考えたとき、vue-routerなどを使用してその要求を満たします。ここで解決された領域は「クライアントサイドルーティング」です。

4.大規模向け状態管理(Large Scale State Management)

 さらにWebアプリケーションとして規模が大きくなってくると、状態管理をしっかりとやる必要が出てきます。そこではVuexを使用することで要求を満たすことが可能です。ここで解決された領域は「大規模向け状態管理」です。

5.ビルドシステム(Build System)

 ここまでWebアプリケーションとして開発していくと、Vue.jsのコンポーネントの機能だけではコードが見辛くなる事があると思います。そのときはコンポーネントごとに.vueファイルに分割し、各種バンドルツールに応じたVue.jspluginを利用することでファイルの分割とビルドの仕組みを構築することが出来ます。ここで解決された領域は「ビルドシステム」です。

 以上のようにVue.jsとそれを取り巻くエコシステムは、簡単なWebページからWebアプリケーションまで様々な要求に対応することが可能です。主要なものはEvanさんにより公式なサポートが行われているため、連携も自然に出来るようになっておりエコシステム全体でProgressive Frameworkを体現しています。

試し読みはここまでです。
この続きは、製品版でお楽しみください。