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
良好URLを1%から99%に爆増させたパフォーマンス改善の話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
coconala_engineer
July 12, 2023
Technology
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
良好URLを1%から99%に爆増させたパフォーマンス改善の話
coconala_engineer
July 12, 2023
More Decks by coconala_engineer
See All by coconala_engineer
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
3
1.7k
『誰の責任?』で揉めるのをやめて、エラーバジェットで判断するようにした ~感情論をデータで終わらせる、PMとエンジニアの意思決定プロセス~
coconala_engineer
2
3.2k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
2.1k
「守りのIT」から「攻めの基盤」へ!上場前後でやりきった情シス・モダナイゼーション
coconala_engineer
0
160
障害対応訓練、その前に
coconala_engineer
0
410
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
52k
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
1.2k
SwiftTestingによる_モダンなiOSテスト手法とBDD.pdf
coconala_engineer
1
500
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
1.4k
Other Decks in Technology
See All in Technology
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
300
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
360
Local CI × GitHub Actions
gogutan
3
230
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
WasmをRustにする
sansantech
PRO
0
280
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
280
大型犬好きによるPugの紹介
yamanoku
1
160
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
130
hackers_champloo_2026_tidb
makocchi
0
170
AIにシークレットを見せない、WSL2で安全な開発環境
yazm
0
310
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
670
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
2
140
Featured
See All Featured
The SEO Collaboration Effect
kristinabergwall1
1
590
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
330
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Marketing to machines
jonoalderson
1
5.9k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
Everyday Curiosity
cassininazir
0
360
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.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 パフォーマンス改善の内容は テックブログでも公開しています
一人ひとりが 「自分のストーリー」を 生きていく世の中をつくる ユーザーにとって見えていなかった無数の可能性の扉を開く、 そこにエンジニアとして一緒に貢献しませんか。