Slide 1

Slide 1 text

© 2023 Ateam Inc. Svelte/SvelteKitを採用した理由とその魅力 2023/03/24 エイチーム×レバレジーズ フロントエンド勉強会 株式会社エイチームライフデザイン シニアエンジニア 大江 和摩

Slide 2

Slide 2 text

© 2023 Ateam Inc. 株式会社エイチームライフデザイン シニアエンジニア 大江 和摩(おおえ かずま) 2 自己紹介 @oekazuma

Slide 3

Slide 3 text

© 2022 Ateam Inc. 3 Svelteの概要/特徴

Slide 4

Slide 4 text

© 2023 Ateam Inc. 4 ● UIを構築する為のコンポーネントフレームワーク ● 特徴 ○ Write less code (より少ないコードで書ける) ○ No virtual DOM(仮想DOMを使用しない) ○ Truly reactive(真にリアクティブ) Svelteとは State of JS 2022 満足度ランキング Vercelがスポンサー https://2022.stateofjs.com/ja-JP/libraries/front-end-frameworks/

Slide 5

Slide 5 text

© 2023 Ateam Inc. 5 ● Write less code (より少ないコードで書ける) ○ コード量が多ければ多いほど、バグの数は二次関数的に増える ○ 読みやすさを犠牲にしてでもできるだけコードをコンパクトにするべきだ という思想ではない ○ 学習コストが低い Svelteの概要/特徴 https://svelte.jp/blog/write-less-code

Slide 6

Slide 6 text

© 2023 Ateam Inc. 6 ● Write less code (より少ないコードで書ける) ○ コード量が多ければ多いほど、バグの数は二次関数的に増える ○ 読みやすさを犠牲にしてでもできるだけコードをコンパクトにするべきだ という思想ではない ○ 学習コストが低い Svelteの概要/特徴

Slide 7

Slide 7 text

© 2023 Ateam Inc. 7 ● Write less code (より少ないコードで書ける) ○ コード量が多ければ多いほど、バグの数も二次関数的に増える ○ 読みやすさを犠牲にしてでもできるだけコードをコンパクトにするべきだ という思想ではない ○ 学習コストが低い Svelteの概要/特徴

Slide 8

Slide 8 text

© 2023 Ateam Inc. 8 ● No virtual DOM(仮想DOMを使用しない) ○ 仮想DOMを使用せず、コンパイル時に実行可能なコードを出力する ○ フレームワークのコードが含まれないのでバンドルサイズが小さくなる ○ コンパイル時に無限ループを検知したり、使用していないCSSを削ったりできる Svelteの概要/特徴 コンポーネント数 https://dev.to/this-is-learning/javascript-framework-todomvc-size-comparison-504f

Slide 9

Slide 9 text

© 2023 Ateam Inc. 9 ● No virtual DOM(仮想DOMを使用しない) ○ 仮想DOMを使用せず、コンパイル時に実行可能なコードを出力する ○ フレームワークのコードが含まれないのでバンドルサイズが小さくなる ○ コンパイル時に無限ループを検知したり、使用していないCSSを削ったりできる Svelteの概要/特徴 https://svelte.jp/blog/virtual-dom-is-pure-overhead

Slide 10

Slide 10 text

© 2023 Ateam Inc. 10 ● Truly reactive(真にリアクティブ) ○ 独自のHooksを使用しない Svelteの概要/特徴 https://svelte.jp/blog/svelte-3-rethinking-reactivity

Slide 11

Slide 11 text

© 2023 Ateam Inc. 11 ● Truly reactive(真にリアクティブ) ○ 独自のHooksを使用しない Svelteの概要/特徴 https://svelte.jp/blog/svelte-3-rethinking-reactivity

Slide 12

Slide 12 text

© 2023 Ateam Inc. 12 ● Truly reactive(真にリアクティブ) ○ 独自のHooksを使用しない Svelteの概要/特徴 https://svelte.jp/blog/virtual-dom-is-pure-overhead

Slide 13

Slide 13 text

© 2022 Ateam Inc. 13 SvelteKitの概要/特徴

Slide 14

Slide 14 text

© 2023 Ateam Inc. 14 ● Svelteチームが開発しているSvelteがベースになっているWebアプリを構築するためのフレームワーク ● 特徴 ○ fast(高速) ○ fun(楽しい) ○ flexible(柔軟) SvelteKitとは State of JS 2022 満足度ランキング Vercelがスポンサー https://2022.stateofjs.com/ja-JP/libraries/rendering-frameworks/

Slide 15

Slide 15 text

© 2023 Ateam Inc. 15 ● fast(高速) ○ ビルドツールにViteを採用していて、HMRやビルドが高速 ○ Svelteを使っているのでビルドサイズが小さく、ページロードが高速 SvelteKitの概要/特徴

Slide 16

Slide 16 text

© 2023 Ateam Inc. 16 ● fun(楽しい) ○ バンドラーのコンフィグやルーティング、SSR、CSP、デプロイの設定などの退屈な作業に費やす必要はなく、 コーディングに集中できる ○ TypeScript、Prettier、ESLint、Vitest、PlaywrightをCLIで自動設定 SvelteKitの概要/特徴

Slide 17

Slide 17 text

© 2023 Ateam Inc. 17 ● flexible(柔軟) ○ SPA、 SSR、 SSG、ISR全てに対応 ○ ページ単位で設定可能 ○ デプロイ先を選ばない(アプリの一部のルートだけでもエッジにデプロイできる) SvelteKitの概要/特徴

Slide 18

Slide 18 text

© 2022 Ateam Inc. 18 Svelte/SvelteKitを採用した理由

Slide 19

Slide 19 text

© 2023 Ateam Inc. 19 Svelte/SvelteKitを採用した理由 エンジニア デザイナー マークアップ以外の開発業務を担当 Webデザインとマークアップを担当

Slide 20

Slide 20 text

© 2023 Ateam Inc. 20 ● PHP/Symfony、jQueryのレガシーなシステム構成をリプレイスしたい ● フロントエンドの技術選定は何がいいか? Svelte/SvelteKitを採用した理由

Slide 21

Slide 21 text

© 2023 Ateam Inc. 21 Svelte/SvelteKitを採用した理由 自分たちに一番合っているものは何か?🤔

Slide 22

Slide 22 text

© 2023 Ateam Inc. 22 ● 使っているPHP/Symfonyに慣れているのでテンプレート型がいい ● エンジニアとデザイナーが分業しやすいものがいい ● デザイナーはJavaScriptをあまり書かないものがいい ● 学習コストは低いほうがいい ● TypeScriptは使えたほうが嬉しい Svelte/SvelteKitを採用した理由

Slide 23

Slide 23 text

© 2023 Ateam Inc. 23 Svelte/SvelteKitを採用した理由

Slide 24

Slide 24 text

© 2023 Ateam Inc. 24 Svelte/SvelteKitを採用した理由 「ハナユメ」の結婚指輪情報サービス https://hana-yume.net/ring/

Slide 25

Slide 25 text

© 2023 Ateam Inc. 25 Svelte/SvelteKitを採用した理由 「ハナユメ」のウエディング診断サービス https://wedding-types.hana-yume.net/

Slide 26

Slide 26 text

© 2023 Ateam Inc. 26 Svelte/SvelteKitを採用した理由 「ハナユメ」の結婚式準備サービス

Slide 27

Slide 27 text

© 2023 Ateam Inc. 27 Svelte/SvelteKitを採用した理由 既に3つのサイトがSvelteKit 🎉

Slide 28

Slide 28 text

© 2023 Ateam Inc. 28 Svelte/SvelteKitを採用した理由 ここまで来るのに大変なことはなかったの?🤔

Slide 29

Slide 29 text

© 2023 Ateam Inc. 29 Svelte/SvelteKitを採用した理由 日本での採用実績がほぼない😣

Slide 30

Slide 30 text

© 2023 Ateam Inc. 30 ● 日本での採用実績がほぼない😣 ○ 選定した2019年頃には採用実績が日本ではほぼありませんでした。 ○ Svelteの作者のRich Harris氏が働いていたNew York Timesでは採用されていましたし、既に大規模開発で使 われている実績はありました。 Svelte/SvelteKitを採用した理由

Slide 31

Slide 31 text

© 2023 Ateam Inc. 31 Svelte/SvelteKitを採用した理由 現在の採用実績は?🤔

Slide 32

Slide 32 text

© 2023 Ateam Inc. 32 ● 2023年の採用実績 (敬称略) ○ 海外 ■ New York Times ■ Apple (Apple MusicのWeb版) ■ Spotify ■ Square ■ Yahoo ■ Bloomberg ■ Facebook ■ Brave ● など Svelte/SvelteKitを採用した理由

Slide 33

Slide 33 text

© 2023 Ateam Inc. 33 ● 2023年の採用実績 (敬称略) ○ 日本 ■ LINE ■ note ■ ニフティ ■ ネクストビート ■ M&Aクラウド ■ プレイド ■ フライル ■ エイチーム ● など Svelte/SvelteKitを採用した理由 参考:https://docs.google.com/presentation/d/16GCSVB-h_TlZtyq-CQ98_fUux5fpKy8QCybMsgH4SsI/edit#slide=id.g20e65406401_0_65

Slide 34

Slide 34 text

© 2023 Ateam Inc. 34 Svelte/SvelteKitを採用した理由 エコシステムが未成熟😣

Slide 35

Slide 35 text

© 2023 Ateam Inc. 35 ● エコシステムが未成熟😣 ○ 選定した2019年頃にはSvelteKitもありませんでした。 ○ ルーティングライブラリは? ○ ESLint?Prettier? ○ テスティングライブラリは? ○ UIコンポーネントライブラリは? Svelte/SvelteKitを採用した理由

Slide 36

Slide 36 text

© 2023 Ateam Inc. 36 ● エコシステムが未成熟😣 ○ ないなら自分たちで作ろう! ○ SEOのメタタグや構造化マークアップを管理できるライブラリを開発 Svelte/SvelteKitを採用した理由 https://github.com/oekazuma/svelte-meta-tags

Slide 37

Slide 37 text

© 2023 Ateam Inc. 37 Svelte/SvelteKitを採用した理由 現在のエコシステムは?🤔

Slide 38

Slide 38 text

© 2023 Ateam Inc. 38 ● 2023年のエコシステム ○ フルスタックフレームワーク ■ SvelteKit ○ ビルドツール ■ Vite ○ テスティングライブラリ ■ Vitest ■ Playwright ■ StoryBook ○ コード整形/リンター ■ prettier-plugin-svelte ■ eslint-plugin-svelte Svelte/SvelteKitを採用した理由 ○ スライダー ■ Splide ○ UIコンポーネントライブラリ ■ Svelte Material UI ■ Skeleton ■ Flowbite Svelte ● など ○ エディタ ■ Svelte for VS Code ■ Svelte for Atom ○ 静的診断ツール ■ svelte-check

Slide 39

Slide 39 text

© 2023 Ateam Inc. 39 Svelte/SvelteKitを採用した理由 日本語文献が少ない😣

Slide 40

Slide 40 text

© 2023 Ateam Inc. 40 ● 日本語文献が少ない😣 ○ 日本語文献がほぼないという状況が選定した2019年にはありました。 ○ Svelte Japanコミュニティができて、Svelteのドキュメントサイトに日本語翻訳が開始! Svelte/SvelteKitを採用した理由

Slide 41

Slide 41 text

© 2023 Ateam Inc. 41 Svelte/SvelteKitを採用した理由 現在の日本語文献は?🤔

Slide 42

Slide 42 text

© 2023 Ateam Inc. 42 ● 2023年の日本語文献(2023年3月24日時点) ○ Qiita ■ 336記事 ○ Zenn ■ 136 Articles ■ 7 Books ■ 59 Scraps ○ Svelte 日本語ドキュメント ■ https://svelte.jp/ ○ SvelteKit 日本語ドキュメント ■ https://kit.svelte.jp/ ○ Svelte/SvelteKitチュートリアル(β版) ■ https://learn.svelte.jp/ Svelte/SvelteKitを採用した理由

Slide 43

Slide 43 text

© 2023 Ateam Inc. 43 ● 2023年の日本語文献(2023年3月24日時点) ○ Svelte Japanコミュニティ ■ 約600人 ○ 日本語で質問ができる ○ 以下のメンバーが運営しています! Svelte/SvelteKitを採用した理由 @baseballyama_ @am_nimitz3 @oekazuma @_TheoSteiner @tomoam_mat @hmgchk @MonsieurTako myLifeAsaDog

Slide 44

Slide 44 text

© 2022 Ateam Inc. 44 最後にSvelteの今後

Slide 45

Slide 45 text

© 2023 Ateam Inc. 45 ● 直近、SvelteKitはStreamingやsnapshots、ページ単位のデプロイ設定、ISRなどv1.0をリ リースして以降も機能追加をたくさんしています! 今後はi18n サポートや画像の最適化などを予定しているみたいです。 ● SvelteはSvelte4、Svelte5に向けての作業を行っていく予定のようです。 Svelte4は比較的マイナーなバージョンアップになるようですが、Svelte5はSvelteコン パイラの大部分を再実装してもっと速くしたり、Error Boundaryのような重要な機能を 追加していく予定みたいなので、今後のSvelteにも注目です! 最後にSvelteの今後

Slide 46

Slide 46 text

No content