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
Webサイトパフォーマンスを継続的に計測したい!!! / I want to continuo...
Search
Kentaro Matsushita
December 26, 2020
Programming
620
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Webサイトパフォーマンスを継続的に計測したい!!! / I want to continuously measure my website performance!!!
Kanazawa.js Remote Meetup #09
https://kanazawajs.connpass.com/event/197989/
Kentaro Matsushita
December 26, 2020
More Decks by Kentaro Matsushita
See All by Kentaro Matsushita
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
1
350
開発のアジリティ向上のためのシステムリプレイス ~DMM GAMESの事例~
kentarom
0
870
Denoで簡単なCLIツールを作ってみる / Try to make a simple CLI tool with Deno
kentarom
0
1.1k
GatsbyJSで作った個人ブログの構成を色々見直してみた / Improve my personal blog made with GatsbyJS
kentarom
1
470
Actions ToolkitではじめるGitHub Action開発 / Getting started creating a GitHub Action with Actions Toolkit
kentarom
2
2.1k
GitHub Gistを使って、アクティビティを可視化しよう / Let's try visualizing your activity using the GitHub Gist
kentarom
1
920
OGP画像を生成するNode.jsのライブラリを作ってみた / Create a Node.js module for generating Open Graph image
kentarom
1
7.6k
チームをよしなにする立場を経験して学んだこと / Things I have learned in leading the team
kentarom
0
860
AWSの既存サービスを活用して、 障害検知・復旧を迅速化するカラクリ / JAWS-UG Kanazawa x OpsJAWS
kentarom
2
5k
Other Decks in Programming
See All in Programming
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
150
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
190
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
2
170
スマート反転とウェブアクセシビリティ
camiha
0
180
typoなんかねぇよ
raspython3
0
690
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
140
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
300
ALB ログから Trace を気合で繋げる技術
fohte
7
880
Building an Out-of-Order CPU
latte72
1
750
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
280
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
55
37k
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
500
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
It's Worth the Effort
3n
188
29k
Amusing Abliteration
ianozsvald
1
290
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
Navigating Weather and Climate Data
rabernat
0
510
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
420
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Transcript
Webサイトパフォーマンスを継続的に 計測したい!!! Kanazawa.js Meetup #09 2020.12.26 @_kentaro_m
⾃⼰紹介 @_kentaro_m ⾦沢市内のゲーム会社で働くフロントエンドエンジニア レガシーなシステムを新しくする仕事をしてます 最近触っている技術 Next.js / GraphQL / Kubernetes
今⽇話すこと Webサイトパフォーマンスを継続的に計測する基盤をサーバー レスアーキテクチャで作った話 - Qiita アドベントカレンダーの内容を簡潔に話します。
Q. みなさんの職場ではWebサイトパ フォーマンス計測していますか?
A. うちは計測してます (但し書きあり)
A. うちは計測してます ⼤きなリリースなどの節⽬のタイミングでは⼈⼒で計測 継続的に計測できていない ※ 現状Chrome DevToolsからLighthouse⼿動実⾏
閑話休題:パフォーマンス計測⼿法 Synthetic Monitoring Real User Monitoring ⽬的に応じて、使い分ける必要がある。
Synthetic Monitoring Synthetic Monitoring 定められた環境からWebサイトにリクエストを送信して、 パフォーマンス計測 計測環境はばらつきが少ないが、ユーザー環境との剥離が ある可能性 ツール例:WebPageTestやLighthouse
Real User Monitoring Real User Monitoring ユーザー閲覧環境で何らかの仕組みが実⾏され、計測サー バーにパフォーマンスが送信される ユーザー環境によって、結果にばらつきが出る ツール例:Datadog
RUM
パフォーマンス計測する理由 パフォーマンスはユーザー体験に⼤きな影響を与える要素 GoogleはCore Web Vitalsを発表 Webサイトのユーザー体験の質を定量的に⽰す指標 ⾃社サイトのユーザー体験改善のために時系列でパフォーマ ンス変化を分かるようにしたい 継続的に計測しないと良し悪しがわからない
パフォーマンス計測基盤を作ってみる (アドベントカレンダーのネタにちょうどいい!)
システム要件 特定の複数URLに対して、Lighthouseを定期実⾏ 実⾏結果のストレージ保存や外部サービス送信サポート 外部サービスはDatadogやSlackなどを想定 何らかのツールを使って、実⾏結果が可視化できること 各指標ごとにグラフを作れて、時系列で推移が確認できる ものをイメージ
システム構成 (画⾯共有します。図が⼤きくて収まらなかった...)
処理フロー . 複数のURLのLighthouse実⾏命令をキューに送信 . キューからメッセージ受信、ワークフロー呼び出し . Lighthouseを実⾏ . Lighthouse実⾏結果を外部サービスに送信
定期実⾏管理 CloudWatch Eventsに登録のcron式ベースで定期実⾏ サイトリストベースでLighthouse実⾏命令をSQSに送信 SQSからメッセージ受信し、ワークフロー並列呼び出し sites: - title: Foo url:
https://foo.example.com/ - title: Bar url: https://bar.example.com/ - title: Baz url: https://baz.example.com/
Lighthouse実⾏ Chromiumをヘッドレス起動、対象URLへLighthouse実⾏ Lambda向けに最適化されたChromiumバイナリ使⽤ Lambdaメモリ割り当て1GB、タイムアウト600秒
外部サービス連携
外部サービス連携 Lighthouseの実⾏と実⾏結果の外部サービス連携 実⾏結果をS3やスプレッドシートへの送信サポート 複数のLambda連携はStep Functionsを利⽤ Lambdaの呼び出し順序や⼊出⼒値の調整 JSON形式の⾔語で定義 責務ベースでLambda分割、疎結合な連携を実現 Lambdaを増やすと、他のサービスと連携可能
データ可視化
データ可視化 Data PortalでLighthouse実⾏結果を可視化 実⾏結果データセットへBigQueryを実⾏ BigQuery Data Transfer ServiceでS3からデータ取り込み 実⾏結果はJSON形式でS3に保存 1⽇1回定期実⾏でBigQueryに取り込み
さいごに Lighthouse実⾏結果の各指標をData Portalで可視化できた まずは今後の改善に向けて、現状把握に利⽤していきたい サーバーレスアーキテクチャでやりたいことが実現できた Lighthouseの並列実⾏ 拡張性を有した外部サービス連携 Auto Web Perfというパフォーマンス計測ツールを統合する
便利なやつが最近出た これで良いのではという気持ちになっている
パフォーマンス改善の道のりはまだ始 まったばかりだ... 終