7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PageSpeedInsights APIを使ってみたい(下調べ)

Posted at

はじめに

  • 計測したいページごとにPageSpeed Insightsの結果を確認するのは面倒くさいし記録を残したいってなると尚更なので何か解決策ないかなと思い調べたところAPIが公開されてるようなので備忘録的にまとめようかなと思います。
  • 今回は、ウェブサイトの方の結果とCurlで叩いた結果を比較しながら、レスポンスの中身を見ていこうと思います。(実装はまた今度。)

PageSpeed Insightsとは

  • Webサイトのページ速度を計測する際に用いるツールです。
  • Lighthouseとの大きな違いとしてLighthouseは手元のPCで動作するのに対して、PageSpeed InsightsはGoogleが用意したサーバ上で動作するようです。
  • パッとみたところによるとフィールドデータ(とOrigin Summary)とラボデータというものがあります。(下画像参照)
  • フィールドデータは、過去28日間に特定条件でアクセスしたユーザーのデータに基づく結果
  • ラボデータは、今時点のシミュレーション結果
  • ということはフィールドデータを確認したいならばLighthouseでもPageSpeed Insightsでもどちらでも良さそうですね。
  • また、ラボデータを取るならば、Googleが用意したサーバ上で動作するPageSpeed Insightsの方が結果が安定しそうだなといった印象です。

スクリーンショット 2021-11-03 15.05.19.png

指標 表している結果
フィールドデータ 過去28日間に特定条件でアクセスしたユーザーのデータに基づく結果
Origin Summary ドメイン全体におけるフィールドデータ
ラボデータ 今時点のシミュレーション結果

PageSpeed Insights APIを試す

  • ご丁寧に使い方は公式がしっかりと書いてくれています。
  • 今回は結果のJsonが欲しいだけなのでAPIキーの取得はせずterminalから以下のようにCurlコマンドを実行し、結果をファイルに出力します。
$ curl "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://developers.google.com" > result.json

出力されたJson

  • 第一階層はこんな感じになってます。
  • リファレンス見たところ、以下の3つが「フィールドデータ」「Original Summary」「ラボデータ」に該当しそうですね。
{
  "captchaResult": "CAPTCHA_NOT_NEEDED",
  "kind": "pagespeedonline#result",
  "id": "https://developers.google.com/",
  "loadingExperience": {...},
  "originLoadingExperience": {...},
  "lighthouseResult": {...},
  "analysisUTCTimestamp": "2021-11-03T05:48:54.232Z"
}
プロパティ名 説明
loadingExperience エンドユーザーのページ読み込みエクスペリエンスの指標。
originLoadingExperience オリジンの集約されたページ読み込みエクスペリエンスのメトリック
lighthouseResult オブジェクトとしての監査URLに対する灯台の応答。

灯台?(笑)

結果の突合

フィールドデータとloadingExperience

スクリーンショット 2021-11-03 16.17.09.png

ラボデータとlighthouseResult

  • ラボデータは上述のとおり、シミュレーション値なのでちょっと値ずれました。リクエストごとにちゃんとシミュレーションしてるんですね。(でも、大体結果としては一致)

スクリーンショット 2021-11-03 16.25.29.png

最後に

  • なんかJsonの結果とサイト画面上の結果が合わないなと思ってたのですが、サイト画面上はデフォルトでモバイルの結果を表示しており、APIはデフォルトでデスクトップの結果を返すみたいです。クエリパラメータに strategy=mobile を付加してあげればモバイル版の結果を取得することができました。
$ curl "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://developers.google.com&strategy=mobile" > result_mobile.json
  • フィールドデータは定期的にラボデータはページの更新を行った際に計測すると良さそうですね。
  • 次回はAPIキーを発行して、プログラム上から実行してみたいと思います。

cf.

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?