Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
フロントエンドの チューニングに挑戦してみる 2025/03/01 ひろしまフロントエンド勉強会 Vol.39 @jdkfx
Slide 2
Slide 2 text
アジェンダ 1. はじめに 2. パフォーマンスチューニングについて 3. 具体的にどうすればよいのか 4. 実践編 5. モブプロ
Slide 3
Slide 3 text
自己紹介 ● 田添春樹 / @jdkfx ● 株式会社GoQSystem ● やっていること ○ PHPを用いたバックエンド開発、Vue.js製のOSSをちょこっと... ● よく使う技術 ( 使っていた技術 ) ○ PHP, JavaScript, Vue.js, Svelte … ○ Vue.jsでのE2Eテストに苦戦中
Slide 4
Slide 4 text
パフォーマンスチューニングについて
Slide 5
Slide 5 text
あなたはとあるWEBサイトを訪問しました ● たとえばとあるインターネットニュースサイト ● SNSで見たタイトルに惹かれ詳しく読みたい!と思った ● 遷移してみると...
Slide 6
Slide 6 text
広告が多くてサイトが重い ● ページの大半が広告 ● 広告画像の読み込みの時間が長く スクロールに時間がかかる ● もちろんユーザーの持っている 端末のスペックによるが、一般的なユーザーが 高スペックな端末を持っているとは限らない
Slide 7
Slide 7 text
サイトが重いことによるデメリット ● ユーザー体験(UX)の悪化 ● ページ離脱 ● 二度と利用してもらえない可能性さえ ● SEOにも影響 単に広告が悪いと言うわけではないけど…
Slide 8
Slide 8 text
では、あなたのサービスは? ● 読み込みに時間がかかっていませんか? ● クリック、スクロールに大幅な遅延がありませんか?
Slide 9
Slide 9 text
パフォーマンスを改善し、 ユーザーに最高の価値を届けましょう
Slide 10
Slide 10 text
具体的にどうすればよいのか
Slide 11
Slide 11 text
まずはボトルネックの確認 ● 問題となりそうな箇所を見つける ● Chrome Devtools ○ Lighthouse ○ Network ○ Performance ● その他計測ツールはたくさん…
Slide 12
Slide 12 text
自作ブログをLighthouseで計測 https://blog.jdkfx.com/
Slide 13
Slide 13 text
これを読もう ● 大体のことは書いてあるはず ● 先述のChrome Dev Tools活用法についても しっかり記載されている WEB+DB PRESS plusシリーズ 超速! Webページ速度改善ガイド ──使いやすさは「速さ」から始まる https://gihyo.jp/book/2017/978-4-7741-9400-4
Slide 14
Slide 14 text
実践編
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
Web Speed Hackathon 2024 ● "Web Speed Hackathon 2024" は、非常に重たい Web アプリをチューニン グして、いかに高速にするかを競う競技です。 ● 今回のテーマは、架空の漫画サイト「Cyber TOON」です。 レギュレーショ ンを守った上で、Cyber TOON のパフォーマンスを改善してください。 ● https://github.com/CyberAgentHack/web-speed-hackathon-2024
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
Bundle Size Analyzer https://esbuild.github.io/analyze/
Slide 19
Slide 19 text
configまわり ● NODE_ENV: process.env['NODE_ENV'] || 'production' ● minify: true, ● sourcemap: false, ● target: Chromeの最新版へ ● etc. ● client.global.js 47.0mb => 36.5mb
Slide 20
Slide 20 text
いろいろやる ● フォントファイルは使ってないので削除 ● faviconをbase64形式からico形式に ● SVGファイルを圧縮
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
画像の正体 ● base64 エンコードされた画像 ● base64 → png → webp ● src=”/assets/hero.webp” ● client.global.js 36.5mb => 23.8mb
Slide 25
Slide 25 text
画像を軽量化した
Slide 26
Slide 26 text
画像を軽量化した
Slide 27
Slide 27 text
こんな感じでミニマムに ● 必要ないものを削除 ● 小さくできるものは小さく
Slide 28
Slide 28 text
画像の遅延ロード ● loading='lazy' ● スクロール前の画像を読み込まない
Slide 29
Slide 29 text
デモ
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
ライブラリ周りを改善 ● @mui/icons-material 気になる
Slide 33
Slide 33 text
結果(before)
Slide 34
Slide 34 text
結果(after)
Slide 35
Slide 35 text
最後に
Slide 36
Slide 36 text
No content