Upgrade to Pro — share decks privately, control downloads, hide ads and more …

良好URLを1%から99%に爆増させたパフォーマンス改善の話

 良好URLを1%から99%に爆増させたパフォーマンス改善の話

coconala_engineer

July 12, 2023
Tweet

More Decks by coconala_engineer

Other Decks in Technology

Transcript

  1. Copyright coconala Inc. All Rights Reserved. 自己紹介 1 4 株式会社ココナラ

    プロダクト開発部 フロントエンド開発グループ Team Manager 飯塚 譲二(いいづか じょうじ) • ココナラ歴1年半 • 初心者ながらにココナラのテニス部に所属 • 足のサイズ 30cm アイコンはココナラで発注!
  2. Copyright coconala Inc. All Rights Reserved. 自己紹介 1 5 株式会社ココナラ

    プロダクト開発部 フロントエンド開発グループ 加藤 大河(かとう たいが) • ココナラ歴8年 • 趣味:ランチ探検 ◦ 渋谷 550軒 ◦ 五反田 400軒 アイコンはココナラで発注!
  3. Copyright coconala Inc. All Rights Reserved. Web Vitalsとは、ウェブ上でより優れたユーザーエクスペリエンス(UX)を提供するため に、Googleが提唱している指標のこと
 


    Core Web Vitalsとは、Web Vitalsの中でも特に重点的に計測する必要がある以下3つ の指標のこと
 ・LCP(Largest Contentful Paint)
 ・FID(First Input Delay)
 ・CLS(Cumulative Layout Shift)
 Core Web Vitals 3 Core Web Vitalsとは 10
  4. Copyright coconala Inc. All Rights Reserved. LCPとは、Largest Contentful Paintの略で「 ビューポート内に表示される最も大きいコンテ

    ンツ(画像やテキスト ブロック)のレンダリング時間」を表す指標になります 
 Core Web Vitals 3 LCPとは 11 引用元:https://web.dev/
  5. Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3

    12 PC モバイル ココナラのサービスページ
  6. Copyright coconala Inc. All Rights Reserved. 13 どうやって Core Web

    Vitalsを モニタリングしているの?
  7. Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3

    モニタリング方法 14 ・Google Search Console ・Grafana
  8. Copyright coconala Inc. All Rights Reserved. メリット
 ・Googleが提供しているツールなので値に正確性がある 
 


    
 デメリット
 ・検索ができない(過去のデータを探せない)
 ・最新のデータ反映が遅い
 Core Web Vitals 3 Google Search Console 15
  9. Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3

    Grafana 17 メリット
 ・反映が早い
 ・過去のデータが残っており、期間やページ単位で検索ができる
 
 
 デメリット
 ・自前で実装する必要があるため、準備に工数がかかる
  ※ web-vitalsというライブラリを使用してlogを出し、Grafanaで可視化しております。 
 ・データが増えると重い

  10. Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3

    ボトルネック調査 20 ・PageSpeed Insights ・Google Chrome DevToolsのLighthouse ・Google Chrome DevToolsのPerformance Insights
  11. Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3

    良好URL数が1% → 99% 22 1%から 99%へ! 一度50%達成 => 30%弱までダウン
  12. Copyright coconala Inc. All Rights Reserved. 25 目次 1. ロジック

    2. 画像 3. バンドルサイズ 4. その他 5. 結果
  13. Copyright coconala Inc. All Rights Reserved. 画像の属性 imgタグには原則 loading="lazy" decoding="async"

    を付け ておく ただし画像がLCP要素の場合は付けず、代わりに fetchpriority="high" を付ける loading="lazy" : 画像を遅延読込させる decoding="async" : 画像のデコード処理を非同期化する fetchpriority="high" : 読み込みの優先度を高める やったこと:画像 4 画像の最適化 27
  14. Copyright coconala Inc. All Rights Reserved. 画像の圧縮(次世代フォーマット化) ユーザーがアップロードした画像を、WebPやAVIFに変換して 圧縮 Akamaiの「Image

    & Video Manager」というサービスを利用 して、CDN上で自動的に変換 やったこと:画像 4 画像の最適化 28
  15. Copyright coconala Inc. All Rights Reserved. Webpack Bundle Analyzer Webpack

    Bundle Analyzerでバンドルサイズを可視化 大きなプラグインや無駄にインポートされているコンポーネント など、問題点を分析 やったこと:バンドルサイズ 4 バンドルサイズの分析 29
  16. Copyright coconala Inc. All Rights Reserved. プラグインの削減 サイズが大きい割に一部でしか使っておらず、自前で代替で きるようなプラグインは削除 全ページで読み込む必要のないプラグインは該当箇所でのみ

    読み込むようにする サーバー側で不要なプラグインはクライアント側で読み込むよ うにする やったこと:バンドルサイズ 4 バンドルサイズの削減 31
  17. Copyright coconala Inc. All Rights Reserved. ポリフィルの削減 無駄に古いブラウザをサポートしているとポリフィルのサイズ が大きくなるため、古いままだった推奨動作環境や社内のサ ポート基準を見直して更新

    ターゲットブラウザの設定(browserslist)を合わせて更新する ことでポリフィル削減 IE用のプラグインも削除 やったこと:バンドルサイズ 4 バンドルサイズの削減 32
  18. Copyright coconala Inc. All Rights Reserved. 組み合わせで事故の危険性あり サーバーとクライアントのレンダリング結果が一致しないとエ ラーになるため、サーバーとクライアントで結果が変わる出し 分けがある箇所に対してはダイナミックインポートを使わない

    よう注意 ダイナミックインポートにした子コンポーネントの中の、孫コン ポーネント内の出し分け等も確認する必要あり やったこと:バンドルサイズ 4 ダイナミックインポートの注意点 34 (isPC はブラウザの横幅によって変わるフラグ)