2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
performance improvement strategy(全1記事)
リンクをコピー
記事をブックマーク
toshick氏:パフォーマンスについての発表を始めたいと思います。はじめまして。世界のtoshickといいます。私は2020年の3月に株式会社メルペイにジョインして、開発を続けています。カポエイリスタです。もしカポエイリスタがいたら、次のホーダでお会いしましょう。ホーダとはカポエイリスタの会合みたいなものです。
それでは始めます。この回では、Merpay Frontendがどのようにパフォーマンスに取り組もうとしているのか、現状のパフォーマンスをどのように把握しているのかを発表したいと思います。結論から言うと、Web Vitalsのスコアをベースにしています。
Jakob Nielsen氏の言葉を引用すると、「遅延が10秒までになると、ユーザーがコンピュータに振り回されている気持ちになり、ストレスを感じ始める。10秒以上遅くなると、サイトからの離脱率が高くなる」。これを、コンテンツ以外の要因で離脱されることを防ぐためには、パフォーマンスは非常に重要になると解釈しました。
ところで、お客さまが満足するパフォーマンスが出せているのか、いったいどうやったら証明できるのでしょうか?
この答えはWeb Vitalsにあると思います。Web Vitalsは、「Google」が主導している品質指標のガイダンスで、どれだけ良好なユーザー体験を提供できているのかを標準化し、計測できるものです。中でもこの「LCP」「FID」「CLS」というバイタルは「Core Web Vitals」と呼ばれていて、かなり重要視されています。
私たちMerpay Frontendは、4つの指標を計測して追いかけていくことにしました。LCP(Largest Contentful Paint)、CLS(Cumulative Layout Shift)、TBT(Total Blocking Time)、そしてTTI(Time To Interactive)です。
それらを非常に簡単に説明すると、こうなります。LCPは「メインのコンテンツをなるべく速くロードせよ」ということです。CLSは「Stop layout shifts!」。layout shiftはガタツキのことです。ロードがし終わったあとに、カクついたりするあの現象のことです。それをなるべく減らすこと。TBTは、ページをロードする際に、インタラクティブじゃない状態の時間をなるべく少なくすること。TTIも非常に似ていて、ユーザーに対してのレスポンスを可能なかぎり素早く行うこと。これらが4つの指標です。
先ほど重要だと言っていた「FID」(First Input Delay)は、Lighthouseというコマンドがあって、それがスコアを弾き出してくれるんですが、シミュレートされた環境でしか弾き出せないので、ユーザーをトリガーとしたアクションを測ることはできません。そのため、4つの指標から外しています。
「field metric」と呼ばれているものは、現場で起きるパフォーマンスのことで、私たちが今から測ろうとしている、CIなどのいろいろな実行結果のスコアのことを「lab metric」と呼ぶそうです。
一方で、lab metricであるTBTの改善が、直接FIDの改善につながるというWeb Vitalsのドキュメントもあるので、私たちはFIDをいったん諦めて、TBTにフォーカスしています。
「Looker」のグラフがありますが、1つのURLに対して、追っかけようとしている4つの指標の結果をグラフ化しています。
Lookerのグラフの生成は「Lighthouse」というコマンドで、対象ページのさまざま指標のスコアをJSONで出力できます。これを加工して「BigQuery」に保存します。そのBigQueryのデータを吸い上げて、Lookerでビジュアライゼーションを行っています。
JSONにはさまざまなデータがあるのですが、その中で重要なのはscoreとnumericValueの2つだと思います。scoreは、実際の指標を100点満点で結果を出力してくれます。numericValueは、scoreのミリセカンドなど、リアルな数値を出力してくれます。これらを使ってグラフを生成します。
青いバーと赤い折れ線グラフが見えると思います。青いバーは、0~100の100点満点のスコアで、赤いラインがミリセカンドの数値です。スコアをパッと見た時に、良いのか悪いのかが直感的にわかるように、後ろにバーを表示しています。バーが上下最大になっている場合は、100点に近くてとても良いパフォーマンスが出ているということです。
スコアはいったいどう決まっているのかをお話しします。赤いラインと緑のラインで、それぞれ4,000ミリ秒と2,500ミリ秒になっていますが、これはWeb Vitalsチームが決めている指標ごとのGood/Needs Improvement/Poorの境界値です。
LCPは、2,500ミリ秒よりも少なければGoodということになります。このスコアを目指すことによってサイトの健全化の指標を追っかけられます。
改善の確認についてです。自分の修正の結果が実際にうまくいったかどうか、1回のスコア算出で喜んでよいのでしょうか。実際、スコアはかなりブレがあって、毎回変動します。なので、数日から1週間ぐらいの単位で改善したかどうかを見る必要があると思います。
私たちはテスト環境に対してチェックを行っていて、オリジナルのグラフとは別に、改善の施策を講じたものもグラフ化しています。Lookerのグラフを手動で作成するとかなりコストがかかるので、ビルドスクリプトを用意して、簡単にグラフが出力できるようになっています。
メルペイでは、テスト環境のPR(Pull Request)ごとにそれぞれのバージョンを好きなだけデプロイできるので、それを使って既存のものと改善したもののスコアを見比べて、改善したかどうかを確認しています。
パフォーマンスチームの次のアクションとして、ベストプラクティスを探して共有すること、ペイロードサイズを監視してパフォーマンスが悪くならないようにすること、あとはパフォーマンスがビジネスに与える影響を計測したり、先ほど諦めたユーザーのfield metricsであるFirst Input Delayなどの項目もチェックしたりといったような仕組みを整えていきたいと思っています。
Merpay Frontendではパフォーマンス改善に興味のある仲間を募集しているので、ぜひ応募をよろしくお願いします。一緒にベストプラクティスを見つけましょう。以上でパフォーマンスの説明を終わります。
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05