Slide 1

Slide 1 text

Copyright© M&Aクラウド ビルドツールViteを10分で解説! フロントエンドカンファレンス沖縄 2022 Akito.Tsukahara

Slide 2

Slide 2 text

Copyright© M&Aクラウド 2 自己紹介 塚原彰仁 AkitoTsukahara 株式会社M&Aクラウド AkitoTsukahara akito_tsukahara

Slide 3

Slide 3 text

Copyright© M&Aクラウド みなさんは ビルドツールViteを ご存じですか? 3

Slide 4

Slide 4 text

Copyright© M&Aクラウド 一番注目されているビルドツール

Slide 5

Slide 5 text

Copyright© M&Aクラウド Viteはいいぞ! 読みは「ヴィート」。フランス語で「素早い」。 開発者はEvan You(Vueの開発者でもある) Webプロジェクトのために、より速く無駄のない開発体 験を提供することを目的としたビルドツール 非常に高速な Hot Module Replacement (HMR) など、ネイ ティブ ESMを利用した豊富な機能拡張を提供

Slide 6

Slide 6 text

Copyright© M&Aクラウド Viteはいいぞ! Viteはいいぞ! Viteに触れたことがある人 ・周りの人にViteイケてるよ!と伝えられるように まだViteに触れたことがない人 ・Viteイケてるじゃん!と感じてもらえるように

Slide 7

Slide 7 text

Copyright© M&Aクラウド Viteはいいぞ! 今日話すこと ● なぜViteが注目されているのか? ○ フロントエンド開発におけるビルドツールの歴史から考える ● Viteの特徴 ● 他のビルドツールとの比較 今日話さないこと ● Viteのセットアップ方法やコードの詳細

Slide 8

Slide 8 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 8

Slide 9

Slide 9 text

Copyright© M&Aクラウド Viteはどのように生まれたのか?

Slide 10

Slide 10 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 1995/9 LiveScriptが誕生 (後のJavascript) 2009/5 Node.jsが誕生 (v0.0.1) 2011/2 Browserifyが 誕生(v0.0.1) 2014/2 Vue.jsが誕生 (v0.0.1) 2015/6 ECMAScript 2015のリリース 2020/4 Viteが誕生 (v 0.1) JavaScriptの歴史をざっくりお勉強📝 ・ビルドツールが使われているわけ ・Viteは従来のビルドツールと何が違うのか

Slide 11

Slide 11 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 1995/9 LiveScriptが誕生 (後のJavascript) 2009/5 Node.jsが誕生 (v0.0.1) 2011/2 Browserifyが 誕生(v0.0.1) 2014/2 Vue.jsが誕生 (v0.0.1) 2015/6 ECMAScript 2015のリリース 2020/4 Viteが誕生 (v 0.1) 1995年9月: Netscape NavigatorにLiveScript (のちのJavaScript)が搭載された。

Slide 12

Slide 12 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 初期のWeb開発ではモジュールという概念もまだなかった

Slide 13

Slide 13 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? IIFE(即時実行関数)を使用してスコープを分離する工夫も...

Slide 14

Slide 14 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 1995/9 LiveScriptが誕生 (後のJavascript) 2009/5 Node.jsが誕生 (v0.0.1) 2011/2 Browserifyが 誕生(v0.0.1) 2014/2 Vue.jsが誕生 (v0.0.1) 2015/6 ECMAScript 2015のリリース 2020/4 Viteが誕生 (v 0.1) 2009年5月: Node.jsによって ・「ブラウザ以外のJavaScript実行環境」と、大きな地位を確立 ・JavaScriptの優れたモジュールシステムがもたらされる→CommonJS

Slide 15

Slide 15 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? CommonJS ・Webブラウザーもモジュールシステムの恩恵が得られる ・Node.jsとWebブラウザーの間のコード相互運用性を高める ↓ ・モジュールバンドラーが生まれる

Slide 16

Slide 16 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 1995/9 LiveScriptが誕生 (後のJavascript) 2009/5 Node.jsが誕生 (v0.0.1) 2011/2 Browserifyが 誕生(v0.0.1) 2014/2 Vue.jsが誕生 (v0.0.1) 2015/6 ECMAScript 2015のリリース 2020/4 Viteが誕生 (v 0.1) 2011年2月: モジュールバンドラー ・複数のJavaScriptモジュールを結合して、1つのJavaScriptを生成する ・Browserify ・タスクランナーで制御(grunt,gulp) ・webpack

Slide 17

Slide 17 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 1995/9 LiveScriptが誕生 (後のJavascript) 2009/5 Node.jsが誕生 (v0.0.1) 2011/2 Browserifyが 誕生(v0.0.1) 2014/2 Vue.jsが誕生 (v0.0.1) 2015/6 ECMAScript 2015のリリース 2020/4 Viteが誕生 (v 0.1) 2014年2月: Vue.js ・当初はAngularを使いやすくシンプルにするコンセプト ・v.1.0.22 以降、テンプレート・スクリプト、スタイルを1つのファイルに記述して コンポーネントを定義するアイデア(SFCs)が採用される ・SFCs自体はRiot.jsが2014年頃に実装している

Slide 18

Slide 18 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? Vue Single-File Components(SFCs)

Slide 19

Slide 19 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 1995/9 LiveScriptが誕生 (後のJavascript) 2009/5 Node.jsが誕生 (v0.0.1) 2011/2 Browserifyが 誕生(v0.0.1) 2014/2 Vue.jsが誕生 (v0.0.1) 2015/6 ECMAScript 2015のリリース 2020/4 Viteが誕生 (v 0.1) 2015年6月: ECMAScriptのリリースでES modulesが策定された ・JSファイルから別のJSファイルを読み込む仕組み

Slide 20

Slide 20 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? RollupはESMに基づく最初のパッケージングツール

Slide 21

Slide 21 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 2017年 ついにブラウザはネイティブESMをサポート!(もちろんIEは動かないよ!)

Slide 22

Slide 22 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? @Vue/dev-server

Slide 23

Slide 23 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? 1995/9 LiveScriptが誕生 (後のJavascript) 2009/5 Node.jsが誕生 (v0.0.1) 2011/2 Browserifyが 誕生(v0.0.1) 2014/2 Vue.jsが誕生 (v0.0.1) 2015/6 ECMAScript 2015のリリース 2020/4 Viteが誕生 (v 0.1) 2020年4月: Viteが誕生 ・ネイティブESMでHMRができるように

Slide 24

Slide 24 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? Vite 0.1時の機能

Slide 25

Slide 25 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? Vite 1.0時にはvue-cliとほぼ同等の機能

Slide 26

Slide 26 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? Vite 2.0になると 多くのフレームワークで使われるようになり、処理速度もかなり向上

Slide 27

Slide 27 text

Copyright© M&Aクラウド Viteはどのように生まれたのか? JavaScriptの歴史をざっくりお勉強📝 ・ビルドツールが使われているわけ →JavaScriptは他のモジュールを呼び出すことができなかった そのためにブラウザで動かすにはビルドツールでバンドルする必要があった ESMにブラウザが対応したことによって、バンドルしなくても良くなった ・Viteは従来のビルドツールと何が違うのか →ESMに基づいた作りになっている ESMベースでかつHMRをサポートしているので、注目を集めている 実際にHMRは体感すごく速い!

Slide 28

Slide 28 text

Copyright© M&Aクラウド Viteの特徴 28

Slide 29

Slide 29 text

Copyright© M&Aクラウド Viteの特徴

Slide 30

Slide 30 text

Copyright© M&Aクラウド Viteの特徴 ポイント 1.ネイティブESMを利用したビルドセットアップ ・変更時に必要なファイルだけコンパイル ・esbuildによる依存関係の事前バンドル 2.プロダクションビルドではバンドルする 3.様々なフレームワーク・ツールで対応されている

Slide 31

Slide 31 text

Copyright© M&Aクラウド Viteの特徴

Slide 32

Slide 32 text

Copyright© M&Aクラウド Viteの特徴

Slide 33

Slide 33 text

Copyright© M&Aクラウド Viteの特徴 esbuildによる依存関係の事前バンドル ・esbuildはGoによって開発されており、 JavaScriptベースで従来の他ツールよりも10~100倍高速

Slide 34

Slide 34 text

Copyright© M&Aクラウド Viteの特徴 プロダクションではバンドルする ・プロダクションビルド時はRollupを利用している ・バンドルされていないESMをプロダクション用にリリースするのは非効率 ・esbuildもバンドル機能を提供しているが、Rollupの方が充実している

Slide 35

Slide 35 text

Copyright© M&Aクラウド Viteの特徴 様々なフレームワーク・ツールで対応されている

Slide 36

Slide 36 text

Copyright© M&Aクラウド 他のビルドツールと 比べたらどうなのか? 36

Slide 37

Slide 37 text

Copyright© M&Aクラウド 他のビルドツールと比べたらどうなのか? Storybook Performance: Vite vs Webpack 比較対象は5つ 1. webpack4 2. webpack5 3. webpack5 a. 遅延コンパイル b. コード分割 4. Vite 5. Vite a. コード分割

Slide 38

Slide 38 text

Copyright© M&Aクラウド 他のビルドツールと比べたらどうなのか?

Slide 39

Slide 39 text

Copyright© M&Aクラウド 他のビルドツールと比べたらどうなのか?

Slide 40

Slide 40 text

Copyright© M&Aクラウド 他のビルドツールと比べたらどうなのか? 話題のTurbopackと比較したらどうなのか? webpackの後継ツールで作者はTobias Koppers Viteよりも10倍速いとPR まだベータ版でNext.jsのみに対応

Slide 41

Slide 41 text

Copyright© M&Aクラウド 他のビルドツールと比べたらどうなのか? rootケース 1,000種類のコンポーネントをインポートして、まとめてレンダリングする leafケース 単一コンポーネントをインポートして、レンダリングする ベンチマークテストのリポジトリ

Slide 42

Slide 42 text

Copyright© M&Aクラウド 他のビルドツールと比べたらどうなのか? 公平な評価を心がけて欲しいとエヴァン・ユーがコメントし、 TurbopackとViteのベンチマークテストのリポジトリが公開されました。 指摘内容は ・ベンチマークテストされたアプリケーションの構成が揃っていない ・30,000以上のモジュールがある場合を想定されているが現実的ではない ・ブラウザ評価時間ではなく、再レンダリングにかかる時間を見るべき →OSSの競争はオープンなコミュニケーション、公正な比較、相互尊重が大事だよね 後日Vercelはベンチマークテストの詳細情報を公開しました。

Slide 43

Slide 43 text

Copyright© M&Aクラウド 本日のおさらい 43

Slide 44

Slide 44 text

Copyright© M&Aクラウド まとめ ● ViteはESMを活用したビルドツール ○ より速く無駄のない開発体験を提供することが目的 ○ JavaScriptのライフサイクル転換によって誕生 ● 非常に強力なHMR機能を提供してくれる ○ 変更時には必要なモジュールだけ変更 ○ esbuildの事前バンドル ● 様々なフレームワーク・ツールで利用されている

Slide 45

Slide 45 text

Copyright© M&Aクラウド 参考資料 ● https://viteconf.org/2022/replay/vite_keynote ● https://qiita.com/qnighy/items/16fdd8e58309a1f706a0 ● https://dev.to/iggredible/what-the-heck-are-cjs-amd-umd-and-esm-ikm ● https://jakearchibald.com/2017/es-modules-in-browsers/ ● https://ja.vitejs.dev/guide/why.html

Slide 46

Slide 46 text

Copyright© M&Aクラウド ありがとうございました! 46