べんりワザ・作ったものを公開する

表示が遅いサイトを速くする——初心者ができる5つ

重いサイトの原因は、ほとんどが画像です。loading="lazy"やwidth・heightの指定など、HTMLとCSSだけでできる改善5つと、PageSpeed Insightsでの測り方をまとめました。

サイトが重い原因は、ほとんどが画像です。難しい技術を覚えなくても、HTMLとCSSだけでできることが5つあります。まずはここから手を付けてください。

1. 画像のファイルサイズを小さくする

いちばん効きます。スマホで撮った写真は3〜5MBありますが、Web用なら200KB以下で十分に見られます。

  • 大きすぎる画像は、表示する大きさに合わせて縮小する(幅1600pxあれば大抵足りる)
  • 圧縮ツールで軽くする
  • 写真はWebP形式にすると、同じ見た目でさらに小さくなる
べんりワザ画像を軽くしてページを速くする画像を軽くする具体的な手順はこちらの記事へべんりワザ画像をWebPに変換する方法WebPへの変換方法はこちら

2. 画像にloading=“lazy”を付ける

スクロールしないと見えない画像を、見えるまで読み込まないようにする指定です。属性を1つ足すだけで効きます。

<img src="gallery1.jpg" alt="雪の中のシマエナガ" loading="lazy">

ページの下のほうにある画像が多いほど、効果が大きくなります。

3. 画像にwidthとheightを書く

読み込み中に場所を取っておくための指定です。書いておかないと、画像が読み込まれた瞬間に下の文章がガタッとずれます

<img src="shima.png" alt="シマエナガ" width="800" height="600">
img {
  width: 100%;
  height: auto;
}

HTMLの数値は縦横の比率を伝えるためのもの。CSS側でwidth: 100%height: autoにしておけば、レイアウトは崩れません。

4. Webフォントを絞る

Google Fontsなどの見た目のよいフォントは、1書体ごとにファイルを読み込みます。特に日本語フォントは容量が大きく、数百KBから数MBになることもあります。

  • 使うのは1〜2書体まで
  • 太さ(ウェイト)も使うものだけ選ぶ(400と700だけ、など)
  • 見出しだけWebフォント、本文は端末標準のフォント、という使い分けも有効
べんりワザGoogle Fontsで文字の顔を変えるGoogle Fontsの読み込み方と絞り方はこちらの記事で

5. 読み込む順番を整える

CSSは<head>、JavaScriptは</body>の直前(またはdefer付き)が基本です。

<head>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <!-- 中身 -->
  <script src="script.js" defer></script>
</body>

deferは「HTMLを読み終えてから実行する」という指定です。これがないと、JavaScriptの読み込みでページの表示が止まってしまいます。

測り方——PageSpeed Insights

推測ではなく、実際に測ります。公開中のURLを入れるだけで、スマホとパソコンそれぞれの点数と改善案が無料で出ます。

PageSpeed Insightsのトップページ。ウェブページのURLを入れる欄と分析ボタンが表示されている
URLを入れて数十秒待つと、点数と「改善できる項目」の一覧が出ます。

PageSpeed Insights

出てくる用語のうち、初心者が気にすればよいのは2つだけです。

指標意味効く対策
LCPいちばん大きな要素が表示されるまでの時間画像を軽くする
CLS読み込み中にレイアウトがずれた量画像にwidth・heightを書く

順番としては、画像から

やることが多く見えますが、優先度ははっきりしています。

  1. 画像を軽くする——効果の8割はここ
  2. loading=“lazy”とwidth・height——属性を足すだけ
  3. フォントを絞る——書体を減らす
  4. defer——1語足す

上から順に手を付ければ、たいていのサイトは十分に速くなります。

まとめ

  1. 表示が遅い原因の大半は画像。軽くするのがいちばん効く
  2. loading="lazy"画面外の画像だけに。widthheightでガタつきを防ぐ
  3. PageSpeed Insightsで測って、出てきた改善項目を上から直す

速いサイトは、それだけで「ちゃんと作られている」と伝わります。

よくある質問

Webサイトの表示速度を測るにはどうすればいいですか?
GoogleのPageSpeed Insightsに公開中のURLを入力すると、スマホとパソコンそれぞれの点数と改善案が無料で出ます。
loading="lazy"はすべての画像に付けてよいですか?
最初の画面に見えている画像には付けないでください。読み込みが後回しになって、かえって表示が遅く見えます。スクロールしないと見えない画像に付けるのが正しい使い方です。
画像にwidthとheightを書くとレイアウトが崩れませんか?
CSSでwidth:100%とheight:autoを指定していれば崩れません。HTML側の数値は「縦横の比率」を伝えるためのもので、読み込み中の場所取りに使われます。