この記事は、以下のような人にオススメです。
こんにちは!Webディレクターのオスカーです。
今日はInteraction to Next Paint (INP)を改善する方法について話したいと思います。
最後に参考コーディングもありますので、ぜひ最後までご覧になっていただけますと幸いです。
Interaction to Next Paintは前回の記事にも話しましたように、
「コンテンツの反応速度です。」
あるボタンを押した後に、5秒経ってもページが移動されていないときに、
「あれ?私ちゃんとクリックしましたっけ?」と思ったら、ページ遷移されました。というような経験はあると思います。
↑これはUX的によくないということです。(そもそも遷移するのに、5秒かかるのはよくないですが、それはさておき。)
INPの基準は、たとえ次のページへ移動するのに5秒かかっていても、0.2秒以内に何かしら、「あなたクリックしましたよ」というサインをユーザーに示すことができれば合格ということです。
前回の記事でInteraction to Next Paint (INP)についてさらに説明していますので、ご確認されたい方はこちら:
新しい指標Interaction to Next Paint (INP)について
Google Chromeの拡張機能をおすすめします。
サイトを使いながら、INPが継続的に測ってくれます。
1つずつアクションを取って、確認すれば、INPが遅いところが検証できます。
改善すべき部分がすぐ見つかりますので、Web制作やSEO、もちろんWebディレクターにも必要なツールです。
さて、本題です。
正直、このINPってのは結構ゆがんだ性格を持っています。サイトの悪いところばっかりを見ています。
例えば、あなたのサイトが99%完璧にできていて、ほとんどのページのReactionが一瞬で反応していたとしても、1つでも遅かったら、そのサイトのINPが低くなります。
そのため、PageSpeed Insightsを使って、INPを確認しても、どこに問題があったのかわからないです。
例えば、あなたはすごい人気なサイトを管理していて、瞬間風速がすごく、サーバが重くなった時に、画像がクリックされても、拡大表示が遅くなっているとします。(とても極端な話ですがご了承ください。)
拡大表示の画像LOADINGが完了するまで、表示されない場合、INPが遅くなってしまいます。
となれば、画像をLOADINGする「前」に、「LOADING画面」または文字を表示すれば、INPの評価が良くなります。
以下がそのコーディングの例になります。
const LOADINGエリア = document.getElementById("LOADINGエリア");
const サムネイル1 = document.getElementById("サムネイル1");
サムネイル1.addEventListener("submit", (evt) => {
evt.preventDefault();
LOADINGエリア.innerText = "頑張ってLOADINGなう";
let headers = new Headers({ Accept: "application/json" });
let formData = new FormData(サムネイル1);
fetch("/form-endpoint", { method: "POST", headers, body: formData })
.then(function (response) {
return response.json();
})
.then(function (jsonData) {
サムネイル1.reset();
LOADINGエリア.innerText = jsonData.message;
});
});
上記のコードを読める方にお勧めのサービスです。
INPの改善方法を紹介しました。
CODINGの部分はご参考までに、読めない場合は無視してください。
今日も見ていただきありがとうございました。
少しでもお役に立てればと幸いでございます。
それでは。