2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
Vue CLI v3(全1記事)
リンクをコピー
記事をブックマーク
kazu_pon氏(以下、kazupon):ご紹介に預かりましたkazuponです。さっそく発表させていただきたいと思います。まず自己紹介です。
Vue.jsのコアチームメンバーとして活動しています。Vue.js Japanのユーザーグループの運営をしたり、自分が作っているVue向けのライブラリや、Vue.js日本ユーザー向けにMeetupなどのイベントを定期開催しています。
今日の私の発表ですが、Vue CLI v3について話したいと思います。
今日話さないこととしては、最新の動向とか。このあたりは今年の3月にMANABIYAさんで発表しているので、そのスライドもSpeaker Deckにあるのでそれを見てください。
それでも知りたいなら、先日開催されたVue Contoributor Daysの動画がYouTubeに上がっているので、そちらを見ていただければと思います。
あとはVue.jsはロードマップも公開しています。最近作者のEvan氏が内容更新しているのですが、そのあたりも書いてあるので、そこを見ていただければと思います。
では今日のタイトルでもあるVue CLI v3について話したいと思います。現在のVue CLIの状況なんですが、現時点ではRC.3のバージョンになっています。そろそろリリースされるという感じになってきています。
今回の勉強回、UIフレームワークということで、先ほどもあったAngularとか、このあともReactの発表がありますが、Vue CLIについて知らない方もいるかと思うので簡単に説明しておきます。
Vue CLIというのは、Vueアプリ向けのCLIベースの開発ツールです。
こちらの画面にあるようなコマンドを提供していて、それを使って開発していくツールになっています。
主な特徴は、こんな感じで画面に映っている特徴がいろいろあります。
例えばFeature Richという特徴では、Babelなどフロントエンド界隈にはいろいろツールがありますが、Vue CLIはその辺を簡単にセットアップして、Vueアプリプロジェクトで簡単に使えるようにしてくれます。
その他の特徴としては、プロトタイプ向けのserveコマンドを提供していて、Vueの特徴であるSingle File Components(以下、SFC)を書いてそのコマンドに書いたSFCを指定して実行しただけで簡単にプロトタイピングすることができような特徴を持っています。
Future Readyという特徴では、Vue CLIがES2015にネィティブに対応したブラウザ向けに最適化されたビルドや、Web Componentsをサポートするビルドも提供しています。
このように、様々なものがVue CLIの次のバージョンv3ではありますが、私としては、今日話したいv3の目玉としては、こちらの2つかと思っています。
1つはプラグインシステム。2つ目がVue CLI UIと言われているものです。プラグインシステムというのは、プラグインという名前でみなさんどのようなものかご想像できるかと思いますが、Vue CLIユーザー向けに、Vue CLIを拡張するために提供するものです。
2つ目のVue CLI UIというのは、CLIが苦手なユーザーに対してGUIを提供するツールです。さらにこのVue CLI UIなんですが、UI APIも提供していて、Vue CLI のUIに対してプラグインシステムを提供しています。
これらによって、さらにVue周りのDeveloper Experience(開発体験)の無限の可能性があるため、私としてはかなり目玉かなと思っています。
ではプラグインシステムについて話していきたいと思います。CLIプラグインというのを作成することになるんですが、主に以下のAPI、Service、Generator、そしてPromptというものがあります。
そのAPIを使って、この画面のような感じのディレクトリ構成でnpmのパッケージとして作って公開することで、Vue CLIを使うユーザーがaddコマンドで簡単にインストールして利用することができるようになります。
このCLIプラグインでできることとしては、先ほど説明した3つのものがありますが、1つ目のServiceについては、webpackの設定をします。少し画面が見づらいと思うんですけど、様々なAPIで提供しているのでwebpackの設定をカスタマイズできます。
また、npm-scriptsにServiceのタスクを登録することができるので、そのコマンドを自分でCLIプラグインで登録することができます。
2つ目、Generatorについては、その名(Generator:ジェネレータ)の通りアプリケーションプロジェクトにテンプレートを生成する機能です。こちらもAPIを使って事前に用意した既存テンプレートを使ってユーザー向けにカスタマイズできます。
最後3つ目、Promptsについてですが、Vue CLIを使ったことがある方はわかると思いますが、コマンドを実行すると、例えば「Babel入れる? 入れない?」とか対話的に出てきます。その対話的な内容を独自にカスタマイズすることができます。
実際にCLIプラグインの例として、例えば国際化(i18n)の仕組みの例ですが、これは私が作ったCLIプラグインなんですが、Generatorを使うことでvue add i18nとコマンドを実行すると、ユーザーのアプリケーションプロジェクトに対して国際化に必要な開発環境をscafolingして、国際化周りの環境構築を簡単にすることができます。
CLIプラグインのユースケースは、私としてはこちらの画面のような感じかと思っています。
そのうちの1つとしてVue向けのライブラリですね。例えば、Vue.jsのエコシステムを取り巻くライブラリとしてVuetifyなどの様々なものがあります。そのあたりのライブラリをアプリケーションプロジェクトに簡単にインストールして開発環境を構築するのにscafolldingするといった用途で使うことができます。
そのほかとしては、プロジェクト固有のコード生成するために使うこともできます。これは、自分たちのプロジェクトでテンプレートが必要なところにはGeneratorを使って環境を整えたりと。マイグレーションツールやデプロイツールなど、いろいろ応用することができます。
続いて目玉の2つ目、Vue CLI UIです。そもそもこのVue CLI UIというのは、名前がCLIがCommand line interface、UIがUser interface。それぞれinterfaceって付いて、何のことやら? って感じだと思います(笑)。
Vue Command line interface User interface……。
クエスチョンが出るようなネーミングなんですが、「なんでこういうネーミングなんだ?」ってVue.jsの作者のEvan氏に聞いたところ「Vue CLI UI is the UI for the CLI」ということです。
私はVue CLIの内部アーキテクチャがわかっているので「あ、なるほどな」って理解できましたがみなさんわからないと思うので、Evan氏が付けたということだけ覚えててください(笑)。
名付けはEvan氏ですが、作った人は違います。コアチームのGuillaume Chau氏がいきなり怒涛の開発を始めて爆誕しました。
もともと開発のロードマップになかったんですが、突然ある日GitHubのレポジトリに「ui-feat」ブランチというのができて、そこのブランチ上ですごい勢いでコミットしててできたという感じです。
Vue CLI UIのUIは、vue uiというコマンドを実行すると、ブラウザにGUIアプリが起動します。
基本的にはVue CLIのCLIベースでできることはひと通りできます。プロジェクト作成や、CLIプラグインの追加、開発サーバですね。あとアプリケーションのビルドとか、webpackの設定内容のインスペクション。こういったこともできます。
Vue CLI UIですが、どんなイメージかと言うと、プロジェクト作成はこのような画面のUIです。
これは作成するときに何のツールを使うかという場面です。開発サーバについてはこの画面のように、横にタスクが並んでいます。
webpackのインスペクションは設定ファイルの中身を見る機能なんですが、このような画面で確認することができ、素晴らしいツールになってます。
さらにGUIベースの特性を生かして、例えばプロジェクト管理やGUIベースのコンフィグレーション、プラグインの検索とか一覧で揃える機能、CLIプラグインのアップデートする仕組みなど、いろいろな機能を備えています。
プロジェクト管理は、vue uiと実行すると、このような画面で管理できます。
設定については、これはPWAの設定なんですが、このように細かく設定できるようになっています。
CLIプラグインについては、検索しやすくなっています。
Vue CLI UIは拡張性も提供しています。
UI APIを提供していて、Vue CLI UIに対してさらにいろいろなことができるようになります。こちらの画面はVue CLI UIのアーキテクチャ図です。基本的にはNode.jsでサーバとして動作していて、ブラウザ側はVueアプリケーションとして動作するようになっています。
UI APIにできることは、コンフィグレーションのカスタマイズ、タスクのカスタマイズやプロンプトのカスタマイズ、クライアントアドオンが使えるのでそれを使って拡張など。他には、カスタムビューを使って拡張できるようになっています。
UI APIがほかに提供する機能としては、Vue CLI UIのクライアントとサーバ間のデータを共有できます。CLIプラグインに対して、Node.jsサーバ側にアクションを投下することができます。IPCの機能もあるので、プロセス間と通信してコミュニケーションもできます。他に、ローカルストレージやプログレス表示、そしてフックできたりなどいろいろな機能を提供しています。
例えばコンフィグレーションのカスタマイズについては、UI APIではこちら画面のピンクの枠で囲っている部分をカスタマイズできるようになっています。
APIとしては、describeConfigというAPIを使うと細かく設定できるようになっています。
タスクのカスタマイズについては、同じようにピンクの枠の部分をカスタマイズできるようになっています。
ここで列挙されたタスクは、基本的にpackage.jsonのscriptsのタスクなんですけれども。それに対してフックをしたりとか、このような画面内容もできることもそうなんですけれども、UI APIを利用して新規にタスクを追加することもできるようになっています。
APIとしてはdescribeTaskに対して、既存のものに対して実行したときにフックを入れたりなどいろいろなことができるようになっています。
タスクに対してパラメーターも独自にnpm-scriptsで定義されていないものに対して追加することもできます。
このようにいろいろなことができるようになっています。独自のタスクはaddTaskを利用するとできるようになっています。
これはタスクのカスタマイズの例ですが、先ほども画面が出ましたが、これはwebpackを使ってビルドする画面です。
実は内部的にAPIを使ってカスタマイズしていて、ここの部分はAPIで構成されているという感じになります。
あとクライアントアドオンですね。
これについてはこの画面のピンク枠の部分に対して自分が作った独自のVueコンポーネントを動作させることができます。
クライアントアドオンを実装したものは2ヶ所使えるところがあります。1つはタスクビューで、もう1つはこのあと説明するカスタムビューに追加できるようになっています。
クライアントアドオンの作り方としては、これもVue CLI UIを使ってvue createでアプリケーションプロジェクトを作って、これまでに説明したAPIを使ってカスタマイズしていくことになります。
クライアントアドオン向けに作ったアプリケーションプロジェクトに対して、アドオン向けにClientAddon APIというのを公開していますので、そのAPIを使って自分が使ったVueコンポーネントを登録し、ルーティング処理を実装します。
Vue CLI UIはVue Routerで動いているので、その辺りのルーティング処理もカスタマイズできるようになっています。作ったクライアントアドオンをVue CLI UIに登録しないと利用できないので、ClientAddon APIを利用してできるようになっています。
使い方としては、、先ほどdescribeTaskというAPIについて説明しましたが、そのAPIにcomponentを指定するところがあるので、そこに対象となるVueコンポーネントを指定できるようになっています。
最後に、カスタムビューです。
これは何かといいますと、Vue CLI UIがユーザーにアプリのような制御可能なエリアを提供する機能です。
これもAPIを使って実装する必要があるんですが、基本的に先ほど説明したクライアントアドオンとUI APIのaddViewを使うとカスタマイズできるようになっています。
こちらの画面内容は、私が作ったものですが、実際にVue CLI UIで拡張した国際化するためのクライアントアドオンです。
このような感じでカスタムビューで拡張できるようになっています。
カスタムビューのユースケースですが、1つは先ほどやった国際化のもの、他には、Storybookライクなデザイナーと協業できるようなツール、Vue Dev Toolsみたいなデバッギングツールなどのユースケースがあります。
このように、カスタムビューは、アイデア次第で開発の生産性を高める無限の可能性があるので、私は今後推したいです。
まとめです。Vue CLI v3では、これまでのv2での問題、v2ってテンプレートベースでテンプレートを生成するだけだったので、現状のフロントエンドの開発ツールの環境周りの構築、ツールのアップグレート、テンプレートのメンテナンスが辛い問題を改善するために提供されます。
Vueアプリを開発するユーザーは素直にVue公式に提供するv3のVue CLIを利用することで、CLIプラグインベースで開発ツールのアップグレードなどが可能なため、v2よりすごく幸せになれます。
v3のリリースにより、今後は生産性の高いアプリケーションプロジェクトの環境を簡単に構築できるようになり、プラグインシステムにより独自に拡張できるようになるので、私としては非常にエキサイティングだと思っています。
これはvue-playというStorybookのようなUI開発環境を提供するVue向けのツールがありますが、これはVue.jsコアチームのメンバーのegoistさんが投げ出してしまったプロジェクトで、今はメンテナンスされていない状態です。
StorybookもVueをサポートしていますが、正直なところVue向けによいDXが提供されていると思えていません。私はVueに特化したものをOSSとしてVue CLI UI向けに作りたいと思っているので、今後ともみなさんよろしくお願いします。
最後に、みなさんご存知だと思いますが。Vue Fes Japanを11月3日に開催します。
そろそろCFPの募集を開始する予定です。また海外スピーカーのゲストも何人か来るので、その情報を来月あたりから随時公開していきます。みなさんよろしくお願いします。
ご静聴ありがとうございました。
(会場拍手)
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05