Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Core Web Vitals を改善する Next.js の機能群
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
sutetotanuki
February 02, 2024
Technology
2.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Core Web Vitals を改善する Next.js の機能群
sutetotanuki
February 02, 2024
More Decks by sutetotanuki
See All by sutetotanuki
数案件を同時に進行するためのコンテキスト整理術
sutetotanuki
2
490
高速開発のためのコード整理術
sutetotanuki
1
1.1k
Next.js 16の新機能 Cache Components について
sutetotanuki
0
750
Vercel AI SDK を使って Next.js で AIアプリケーションを 作成する方法のご紹介
sutetotanuki
0
2k
WEBエンジニア向けAI活用入門
sutetotanuki
0
1.1k
ブラウザ上で実行され、 AIアシスタント付きデータベース postgres.new を触ってみた
sutetotanuki
0
610
今時のCookie事情
sutetotanuki
0
780
高速案件立ち上げで使われるマッハテンプレートのフロントエンド技術選定
sutetotanuki
2
2.2k
サーバーレスRDBの選択肢
sutetotanuki
0
1.7k
Other Decks in Technology
See All in Technology
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
670
インバスケット試験対策アプリを 作って見えたAIエージェント構築 ナレッジ2選
shichijoyuhi
1
110
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
160
GitHub Agentic Workflows を触ってみる
htkym
2
910
『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発
mot_techtalk
1
160
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
180
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
270
AI臭い文章とは何なのか
nasuvitz
38
76k
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
310
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
510
Swap and Memory Reclaim - Squeezing Out More RAM
ennael
PRO
1
1.5k
TiDBファミリーにDWHが新登場!! TiDB最新情報 / TiDB update 202609
yoshiakiyamasaki
0
180
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Amusing Abliteration
ianozsvald
1
320
A designer walks into a library…
pauljervisheath
211
25k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
sira's awesome portfolio website redesign presentation
elsirapls
0
430
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Chasing Engaging Ingredients in Design
codingconduct
0
340
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Transcript
Core Web Vitals を改善するNext.js 機能群 2
3 Core Web Vital と ?
4 Core Web Vitalと ? Googleが提唱するエンドユーザー WEB体験を計測し向上させるため 指標であるWeb Vital うち最も重要とされる3つ
指標 • Largest Contentful Paint (LCP) 主要コンテンツが表示され るまで 時間 • First Input Delay (FID) 最初 操作後 待ち時間 • Cumulative Layout Shift (CLS) レイアウト ずれ • Time To First Byte(TTFB) 最初 バイト到着時間 • First Contentful Paint(FCP) 最初 コンテンツ表示 • Total Blocking Time(TBT) 入力ブロッキング時間
5 Core Web Vitalと ? 測定可能でユーザー中心 体験 向上を実現するため 指標 今
技術で現実的に測定が不可能だったり ユーザー体験を改善しない指標 採択されない 全て 指標に75%タイル以上 推奨値がある モバイルとデスクトップで別々に測る必要がある
6 Core Web Vitalがなぜ必要? WEBページ ユーザー体験を改善していくために 計測と指標が必要 また、Google検索 ランキングアルゴリズム 評価対象にもなっておりSEO
対策 一つとして必要 Google コア ランキング システム 、優れたページ エクスペリエンスを提供するコンテンツを 高く評価するように設計されています https://developers.google.com/search/docs/appearance/page-experience?hl=ja
7 Largest Contentful Paint (LCP) ビューポート(ブラウザ 表示領域)に表示される 最も表示面積が大きい、画像また テキストブロック コンテンツが表示されるまで
時間 ユーザーがページにアクセスしてから、そ ページが 表示され、コンテンツを認識できるまで 時間が 短けれ 短いほど体験として良い 2.5秒以下が推奨値 https://web.dev/articles/lcp?hl=ja#examples
8 First Input Delay(FID) ユーザーが最初に操作(リンク、ボタン)してから ブラウザが処理を開始するまで 時間 WEBページ 第一印象になる 第一印象が悪いと体験が悪くなり離脱に繋がりやすい
100ミリ秒以下が推奨値 https://web.dev/articles/fid?hl=ja
9 Cumulative Layout Shift(CLS) コンテンツが元々表示されていた位置から 移動しずれた(レイアウトシフト)距離 指標 レイアウトシフト 発生 ユーザーにとって煩わしく
誤クリックを招きやすくなる 「影響 割合」* 「移動距離」で計算された数値が 0.1以下になる が推奨値 https://web.dev/articles/cls?hl=ja
ビューポートに対して コンテンツがシフトした前後で占める面積(75%=0.75) 移動距離(25%=0.25) をかけた数 75% x 25% = 18.75% =
0.1875 10 Cumulative Layout Shift(CLS) 計算式
11 Core Web Vital を悪くする原因
12 Largest Contentful Paint(LCP) を悪くする原因 LCP 主に4つ サブパートにわかれそれぞれ悪化させる原 因がある
13 LCPを改善する SSR、SSG SPAだと初回アクセス時に全て ページで使用するJavaScript ファイルをダウンロードしハイドレーションを行い、そこから ページ レンダリングをする必要がある。SSR、SSGだと最初 からHTMLをダウンロードさせることができる
14 ページ単位で ファイルを分割 Next.js JS等 ファイルを分割、配信することによって ユーザー アクセス あったページに必要なファイルだけを ダウンロードさせることできる
ユーザーがアクセスしたページに必要なコンポーネント みをダウンロードする
15 サイズや形式が最適でない画像 端末毎に異なるビューポートに対してサイズが大きすぎる画 像を配信したり 最適な形式でない画像を配信することで初期表示を遅くさせ てしまう
16 <Image> コンポーネント On-demand Optimization ビューポート 幅に適切なサイズ 画像を作成、表示 画像URLにビューポート 幅をクエリパラメータで渡し
Next.jsが幅に応じた適切なサイズ 画像を生成 それをディスクに書き出しキャッシュする
17 <Image> コンポーネント On-demand Optimization 現状webp ような軽量かつ高画質なフォーマットが 存在しているが、未サポート ブラウザもあり、JPEG、PNGも 用意しておかないといけない
webp以外 サイズ 大きい画像をwebp対応ずみ ブラウ ザに対してダウンロードさせる 無駄が多い Next.js Accept ヘッダからブラウザがwebpに対応してるか 判断し、対応してる場合 webpを作成しクライアントに返す
18 <Image> コンポーネント On-demand Optimization クライアントから送信された Accept HTTPヘッダから ブラウザが使用できる最適な画像形式 画像を生成して
それを返却する
19 画像 lazyロード ビューポート外 画像をダウンロードする 無駄になる可能性があります Next.js Imageコンポーネントを使うと出力される <img>タグ loading属性に自動で
lazy が設定される
20 Image コンポーネント Priority設定 ビューポート コンテンツ 大部分を占める、 例え ヒーロー画像 ようなコンテンツ
優先的に ダウンロードし表示してほしい場合がある Next.js Imageコンポーネント Priorityプロパティをtrue に設定すると、極力画像がプリロードされるように配慮され、 loading=”lazy” が設定されないようになります
21 Loading UI と Streaming Rendering Next.js Suspenseを使用しHTMLを段階的に配信できる。 サーバーで全て 処理
完了をHTMLを配信できるため TTFB 向上が期待できる import { Suspense } from 'react' import { Recommend } from './Components' export default function Posts() { return ( <section> <Image src=”/image.png” /> </section> <section> <Suspense fallback={<p>Loading feed...</p>}> <Recommend /> </Suspense> </section> ) }
22 First Input Delay(FID) を悪くする原因 • 初期表示時 JS メインスレッド 実行時間が長い
◦ 大きなライブラリ 読み込み ◦ 時間 かかるタスクをメインスレッドで実行する
23 Dynamic Import 必要になるまでライブラリ 読み込みを遅らせることで FIDを改善できる可能性がある Next.js SSRでもES2022 Dynamic Import
が使える クライアントで処理するハンドラ内で import することで初期 JS ロードがオフロードされユーザー 入力からハンドラ が開始されるまで 時間が改善する onChange={async (e) => { const Fuse = (await import('fuse.js')).default; const _ = (await import('lodash')).default; }
24 Content Layout Shift (CLS) を悪くする原因 初期表示位置からコンテンツがズレる原因 • 画像 レンダリング
• フォント フォールバック
25 <Image> コンポーネント Avoid CLS 画像がレンダリングされるサイズをあらかじめ指定し コンテンツが初期位置からズレる を防ぎます <Image src="/large-image.jpg"
alt="Large Image" width={3048} height={2024} /> import largeImage from "../public/large-image.jpg"; <Image src={largeImage} alt="Large Image" /> サイズを直接指定 ローカルファイルならビルド時に画像ファイルよりサイズを取得
26 next-font Font Optimization フォントファイルをセルフホスティングすることで レイアウトシフトが起きる可能性を防ぎます
27 フォントがレイアウトシフトを起こす原因 フォント アスペクト比がフォント フォールバックによって変 わってしまうことでレイアウトシフトが発生 フォント アスペクト比と 、英語 小文字に対する
大文字 高さ 比率 通常フォント アスペクト比 font-family 最初 フォントに 最適化されるが、そ フォントから他 フォントにフォール バックされるとレイアウトシフトが起る
28 next-font ビルド時にフォントファイルをダウンロードしておき 画像ファイル等と共に静的ファイルとして Next.js からダウン ロードできるようしている クライアントからフォント 配布先にアクセスする 必要がなくなり、パフォーマンス
向上、安定性が向上し、 CLSが起きる可能性がなくなる
29 Core Web Vital を計測方法
30 PageSpeed Insights Googleが提供しているWEBページに関する計測できるWEB サービス。ページにアクセスし計測したいURLを入力するだ けで計測ができる。実際に使ってるユーザー 計測結果も 確認でき、WEB Vitalも計測できる
31 Lighthouse Google Chrome DEVツール タブから実行可能 計測に少し時間かかるが、パフォーマンスから アクセシビリティまで幅広く計測でき、 問題点と解決方法 提示を受けることができる
32 Next.js 14 で追加された新機能
33 Partial Pre Rendering Next 14 で導入されたエクスペリメンタルな機能 1つ ページ 静的部分と動的部分を別々にレンダリングす
る手法 ページ内に静的な箇所と動的な箇所に分かれてて、 静的な箇所 み高速にレンダリングしたい場合に有効 今後 デフォルト レンダリングになるらしい
34 まとめ • Core Web Vital UXを向上させるため 指標 ◦ Core
Web Vital が良いとSEO的に有利 • Next.js コンポーネントを使うと Core Web Vital が自然と 改善する • Core Web Vital 簡単に計測できる で継続して改善を 続けていくことができる
35