Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
良好URLを1%から99%に爆増させたパフォーマンス改善の話
Search
coconala_engineer
July 12, 2023
Technology
0
240
良好URLを1%から99%に爆増させたパフォーマンス改善の話
coconala_engineer
July 12, 2023
Tweet
Share
More Decks by coconala_engineer
See All by coconala_engineer
SwiftTestingによる_モダンなiOSテスト手法とBDD.pdf
coconala_engineer
0
170
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
320
SIEMを利活用した信頼性向上プロセスと実践
coconala_engineer
0
31
Cursorを使って 新機能開発してみて 感じたこと
coconala_engineer
0
140
社内にAIレビューツール導入してみた
coconala_engineer
0
140
犯人はE2Eテスト? 並列実行で開発チームを救え!
coconala_engineer
0
59
サービスを止めるな! DDoS攻撃へのスマートな備えと最前線の事例
coconala_engineer
2
300
SREの次のキャリアの道しるべ 〜SREがマネジメントレイヤーに挑戦して、 気づいたこととTips〜
coconala_engineer
2
6k
ココナラiOSチームの生成AI利用
coconala_engineer
0
49
Other Decks in Technology
See All in Technology
AWS re:Invent 2025事前勉強会資料 / AWS re:Invent 2025 pre study meetup
kinunori
0
900
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
190
IBC 2025 動画技術関連レポート / IBC 2025 Report
cyberagentdevelopers
PRO
2
230
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
18
13k
Open Table Format (OTF) が必要になった背景とその機能 (2025.10.28)
simosako
3
550
AI駆動で進める依存ライブラリ更新 ─ Vue プロジェクトの品質向上と開発スピード改善の実践録
sayn0
1
360
実践マルチモーダル検索!
shibuiwilliam
2
470
AIの個性を理解し、指揮する
shoota
3
560
datadog-incident-management-intro
tetsuya28
0
110
GCASアップデート(202508-202510)
techniczna
0
150
re:Invent 2025の見どころと便利アイテムをご紹介 / Highlights and Useful Items for re:Invent 2025
yuj1osm
0
460
[Journal club] Thinking in Space: How Multimodal Large Language Models See, Remember, and Recall Spaces
keio_smilab
PRO
0
100
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
190
Code Review Best Practice
trishagee
72
19k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Raft: Consensus for Rubyists
vanstee
140
7.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Agile that works and the tools we love
rasmusluckow
331
21k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
A better future with KSS
kneath
239
18k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Transcript
Copyright coconala Inc. All Rights Reserved. 良好URLを1%から99%に爆増させた パフォーマンス改善の話
Copyright coconala Inc. All Rights Reserved. アジェンダ 自己紹介 会社紹介 Core
Web Vitals やったこと 2 1 2 3 4
Copyright coconala Inc. All Rights Reserved. 自己紹介 Chapter 01 3
Copyright coconala Inc. All Rights Reserved. 自己紹介 1 4 株式会社ココナラ
プロダクト開発部 フロントエンド開発グループ Team Manager 飯塚 譲二(いいづか じょうじ) • ココナラ歴1年半 • 初心者ながらにココナラのテニス部に所属 • 足のサイズ 30cm アイコンはココナラで発注!
Copyright coconala Inc. All Rights Reserved. 自己紹介 1 5 株式会社ココナラ
プロダクト開発部 フロントエンド開発グループ 加藤 大河(かとう たいが) • ココナラ歴8年 • 趣味:ランチ探検 ◦ 渋谷 550軒 ◦ 五反田 400軒 アイコンはココナラで発注!
Copyright coconala Inc. All Rights Reserved. 会社紹介 Chapter 02 6
Copyright coconala Inc. All Rights Reserved. 会社紹介 2 7
Copyright coconala Inc. All Rights Reserved. 会社紹介(coconala.comで使用している技術スタック) 2 8 フロントエンド
API ※一部CakePHPで動いている画面もあり ゲートウェイ gRPC gRPC
Copyright coconala Inc. All Rights Reserved. Core Web Vitals Chapter
03 9
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
Copyright coconala Inc. All Rights Reserved. LCPとは、Largest Contentful Paintの略で「 ビューポート内に表示される最も大きいコンテ
ンツ(画像やテキスト ブロック)のレンダリング時間」を表す指標になります Core Web Vitals 3 LCPとは 11 引用元:https://web.dev/
Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3
12 PC モバイル ココナラのサービスページ
Copyright coconala Inc. All Rights Reserved. 13 どうやって Core Web
Vitalsを モニタリングしているの?
Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3
モニタリング方法 14 ・Google Search Console ・Grafana
Copyright coconala Inc. All Rights Reserved. メリット ・Googleが提供しているツールなので値に正確性がある
デメリット ・検索ができない(過去のデータを探せない) ・最新のデータ反映が遅い Core Web Vitals 3 Google Search Console 15
Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3
16
Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3
Grafana 17 メリット ・反映が早い ・過去のデータが残っており、期間やページ単位で検索ができる デメリット ・自前で実装する必要があるため、準備に工数がかかる ※ web-vitalsというライブラリを使用してlogを出し、Grafanaで可視化しております。 ・データが増えると重い
Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3
18
Copyright coconala Inc. All Rights Reserved. 19 どうやって ボトルネックを 判断しているの?
Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3
ボトルネック調査 20 ・PageSpeed Insights ・Google Chrome DevToolsのLighthouse ・Google Chrome DevToolsのPerformance Insights
Copyright coconala Inc. All Rights Reserved. 21 パフォーマンス改善を行った 結果、こうなりました!
Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3
良好URL数が1% → 99% 22 1%から 99%へ! 一度50%達成 => 30%弱までダウン
Copyright coconala Inc. All Rights Reserved. Core Web Vitals 3
改善結果 23
Copyright coconala Inc. All Rights Reserved. やったこと Chapter 04 24
Copyright coconala Inc. All Rights Reserved. 25 目次 1. ロジック
2. 画像 3. バンドルサイズ 4. その他 5. 結果
Copyright coconala Inc. All Rights Reserved. 無駄な処理の改善 初期表示に不要な処理は後回しにする 無駄な直列処理(特にAPIコール)を修正 NuxtであればnuxtServerInitなど、全ページで共通の処理は
影響が大きいため要確認 ヘッダーなどの共通コンポーネントも影響大 やったこと:ロジック 4 ロジックの修正 26
Copyright coconala Inc. All Rights Reserved. 画像の属性 imgタグには原則 loading="lazy" decoding="async"
を付け ておく ただし画像がLCP要素の場合は付けず、代わりに fetchpriority="high" を付ける loading="lazy" : 画像を遅延読込させる decoding="async" : 画像のデコード処理を非同期化する fetchpriority="high" : 読み込みの優先度を高める やったこと:画像 4 画像の最適化 27
Copyright coconala Inc. All Rights Reserved. 画像の圧縮(次世代フォーマット化) ユーザーがアップロードした画像を、WebPやAVIFに変換して 圧縮 Akamaiの「Image
& Video Manager」というサービスを利用 して、CDN上で自動的に変換 やったこと:画像 4 画像の最適化 28
Copyright coconala Inc. All Rights Reserved. Webpack Bundle Analyzer Webpack
Bundle Analyzerでバンドルサイズを可視化 大きなプラグインや無駄にインポートされているコンポーネント など、問題点を分析 やったこと:バンドルサイズ 4 バンドルサイズの分析 29
Copyright coconala Inc. All Rights Reserved. やったこと:バンドルサイズ 4 バンドルサイズの分析 30
Copyright coconala Inc. All Rights Reserved. プラグインの削減 サイズが大きい割に一部でしか使っておらず、自前で代替で きるようなプラグインは削除 全ページで読み込む必要のないプラグインは該当箇所でのみ
読み込むようにする サーバー側で不要なプラグインはクライアント側で読み込むよ うにする やったこと:バンドルサイズ 4 バンドルサイズの削減 31
Copyright coconala Inc. All Rights Reserved. ポリフィルの削減 無駄に古いブラウザをサポートしているとポリフィルのサイズ が大きくなるため、古いままだった推奨動作環境や社内のサ ポート基準を見直して更新
ターゲットブラウザの設定(browserslist)を合わせて更新する ことでポリフィル削減 IE用のプラグインも削除 やったこと:バンドルサイズ 4 バンドルサイズの削減 32
Copyright coconala Inc. All Rights Reserved. ダイナミックインポート化 通常のインポートだとその場でインポートされるが、条件に よって使われない場合があると無駄になる ダイナミックインポートにして、使われる場合のみインポートさ
れるようにする やったこと:バンドルサイズ 4 バンドルサイズの削減 33
Copyright coconala Inc. All Rights Reserved. 組み合わせで事故の危険性あり サーバーとクライアントのレンダリング結果が一致しないとエ ラーになるため、サーバーとクライアントで結果が変わる出し 分けがある箇所に対してはダイナミックインポートを使わない
よう注意 ダイナミックインポートにした子コンポーネントの中の、孫コン ポーネント内の出し分け等も確認する必要あり やったこと:バンドルサイズ 4 ダイナミックインポートの注意点 34 (isPC はブラウザの横幅によって変わるフラグ)
Copyright coconala Inc. All Rights Reserved. webpack-bundle-analyzer(削減結果) app.jsは約40%削減 vendors/app.jsは約22%削減 やったこと:バンドルサイズ
4 バンドルサイズの削減結果 35 2022/06 2023/06
Copyright coconala Inc. All Rights Reserved. 初期表示に不要な要素をCSR化 LCP要素を優先して不要なものは後回しにするため、初期表 示に不要な要素はクライアントサイドでレンダリングさせる クリックしたら出るモーダルや、遅れて表示されても問題ない
バルーンなど やったこと:その他 4 クライアントサイドレンダリング化 36
Copyright coconala Inc. All Rights Reserved. 通信経路を短縮 サーバーサイドのAPI通信はAWS内部で通信させるようにす る クライアントサイドの通信はインターネット経由のままにするた
め、CSRとSSRでAPIのURLを変える やったこと:その他 4 API通信の内部化 37
Copyright coconala Inc. All Rights Reserved. Node.js(&V8エンジン)のアップデート Node.jsが古いと、内部のJavaScript実行エンジン(V8エンジ ン)も古い アップデートすることでサーバーサイドのパフォーマンスが改
善できた やったこと:その他 4 Node.jsのアップデート 38
Copyright coconala Inc. All Rights Reserved. やったこと:結果 4 結果 40回弱リリースを繰り返し、徐々に改善
良好URL1%から99%へ 39
Copyright coconala Inc. All Rights Reserved. 40 最後に Chapter 05
40
Copyright coconala Inc. All Rights Reserved. 最後に 5 ココナラでは エンジニアを募集しております
41
人生の可能性を広げたユーザーストーリー わたしのスキル解放記 https://blog.coconala.co.jp/m/me8a586112ad2 ココナラの人と組織を伝えるブログ ココナラLIVE https://blog.coconala.co.jp/m/m4e4abe8b17e5 More Info 42 ココナラに所属するエンジニアによるブログ
テックブログ https://zenn.dev/coconala エンジニア採用ホームページ https://coconala.co.jp/recruit/engineer 採用ホームページ https://coconala.co.jp/recruit
Copyright coconala Inc. All Rights Reserved. 43 パフォーマンス改善の内容は テックブログでも公開しています
一人ひとりが 「自分のストーリー」を 生きていく世の中をつくる ユーザーにとって見えていなかった無数の可能性の扉を開く、 そこにエンジニアとして一緒に貢献しませんか。