OSSANS Project since 2020

「もし四十のおっさんがプログラミングを始めたらどう人生変わるのか」
このブログのメインテーマです
肩肘張らずにユルく、ときたま厳しくやっていきます
※プログラミング以外のことも書きます

web site

2023.03.07(更新)

【ページロード高速化】Google Fontsをサーバーにアップする方法

アイキャッチ画像
web site

Google Font で好きなwebフォントを使いたい ! でもサイトの表示速度が遅くなるの ? どうしよう ?

こんなお悩みに答えていきます。

本記事の内容

  • Google Font 遅延の原因
  • Google Font 高速化の方法

本記事を対象とする方

  • Webデザイナー
  • Webエンジニア
  • Webディレクター
  • Webサイトの管理者

この記事を書いている僕はプログラミング歴1年11ヶ月です。webエンジニアとして”社内転職”に成功しました。

Google Font 読み込み遅延の原因

結論から言うと、GoogleフォントのCSSファイルをダウンロードする仕組みが遅延の原因です。

どういうことか説明していきます。

皆さん、Googleフォントを使う際、htmlファイルのheadタグ内に下記コードを記述していませんか?

【example.html】

  1. <link rel="preconnect" href="https://fonts.googleapis.com">
  2. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  3. <link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@300;400;500&display=swap" rel="stylesheet">

Google Font は特定のwebサーバーにCSSファイルが置いてあって、そのファイルをダウンロードすると、スタイルが適用される仕組みです。

これはつまり、リクエスト→レスポンス→ダウンロードという手順を踏むことを意味します。図にすると下記のようなフローになります。

リクエストレスポンスの画像

サーバーへのリクエスト通信が発生する上に、ファイルのダウンロードが終わらないと、ブラウザのレンダリングが始まらないことが、遅延する原因になるのですね。

Check

レンダリングとは?

rendering、描画と訳されます。

Webサイトにおいては、htmlなどのファイルに記述されているコードを上から順番に読み込んで、ブラウザに描画(表示)することを指します。

レンダリングの画像 ※上から順番に読み込む

高速化の概要

Google Font が遅延となる原因は、リクエスト・ダウンロード・レスポンスの仕組みということがわかりました。

逆にこれらをなくせば原因を排除できるのでは?でもそんな方法あるの?

結論、あります。

シンプルに言うと、サーバーにそのフォントをアップロードしてしまえば良いのです。ではなぜサーバーにアップすると原因を排除できるのか?

webサイトで目にするフォントは、そのブラウザがそのフォントをサポートしていれば表示できますし、サポートしていなければ表示できません。

サポートしていないものは、外部フォントとして取り扱われます。

外部フォントである以上、どこからか引っ張ってこなくてはならない。

引っ張ってくる際に、すでにダウンロードされたフォントファイルが、そのサイトのwebサーバー内にあったらどうでしょう?

遅延する原因となっていたリクエスト・レスポンス・ダウンロードがなくなりますね。

リクエストレスポンスの画像

これが高速化の概要となります。

実践方法

では、具体的にどうやってやるのか、その方法を説明していきます。

まず、Google Font サイトにアクセスして、使いたいフォントをダウンロードしてください。ダウンロードは右上のボタンから可能です。

ダウンロードボタンの画像 ※右上のボタンをクリックするだけです

ダウンロードしたファイルは、.ttfという拡張子がついています。

Google Font ダウンロードした画像 ※このデモのPCはmacです

これをサーバーにアップして、一件落着!!!

とはなりません。

やることはもう三つあります。

  • フォントのライセンス関係を確認する
  • フォントファイルをコンバートする
  • CSSファイルにwebフォントを登録・設定する

フォントのライセンス関係を確認する

Google Fontは、Google社が提供する完全無料・登録不要のWebフォントサービスです。商用利用もできるため、幅広く活用できますが、権利関係(「商用利用の可否」「利用できるWebページの種類」「再配布」などに関する規約)は念の為確認しておきましょう。この癖をつけておくと、Google Font以外のwebフォントを使用する場合にも重宝します。

GoogleFontLicenseの画像 ※Licenseをチェックする癖をつけましょう

フォントファイルをコンバートする

フォントファイルと一口に言っても実は様々なものがあります。パソコン用に適しているもの、web用に適しているもの、対応しているブラウザの違い、などがあり、それによってファイルの拡張子が異なります。

各フォントファイルの詳細は下記サイトで詳しく説明されています。めんどくさがらずに読むと、エンジニアとして少し成長します。

ダウンロードしたttfファイルをコンバート(変換すること)する方法はいくつかありますが、WOFFコンバータというソフトウェアを紹介します。

まずこちらのサイトにアクセスして、ソフトをインストールしてください。

インストールが終わったらソフトを起動します。

woffコンバーターの画像 ※使い方は非常にシンプルかつ簡単です
  • 変換するファイルを選択します
  • 変換後のファイルの保存場所を指定します
  • WOFF2とEOTにチェックを入れます
  • 変換開始をクリックすれば、瞬時に変換が終了します
コンバート後のフォントファイル ※コンバート完了

コンバートしたファイルは、webサーバーにアップします。当サイトはWordPressを使用しているので、今回はその方法を紹介します。FTPでサーバーに接続し、wp-includes/fontsディレクトリの中に入れます。

サーバーアップ画像 ※自分がわかりやすければどのディレクトリでも良いです

CSSファイルにwebフォントを登録・設定する

さて、ここまで来たらもう一息です。サーバーにアップしたフォントファイルをCSSの@font-faceクエリを使って、オリジナルフォントとして取り扱えるようにします。

適用したいCSSファイルに次のように記述してください。

【style.css】

  1. @font-face {
  2.   font-family: "Quicksand";
  3.   font-display: swap;
  4.   src:
  5.   url("https://example.com/wp-includes/fonts/Quicksand-Bold.woff2")format("woff2"),
  6.   url("https://example.com/wp-includes/fonts/Quicksand-Bold.woff")format("woff"),
  7.   url("https://example.com/wp-includes/fonts/Quicksand-Bold.eot")format("eot"),
  8.   url("https://example.com/wp-includes/fonts/Quicksand-Bold.ttf")format("truetype")
  9.   ;
  10. }

urlでは、ファイルのパスを指定しますが、wordpressを利用されている方は、example.com部分をご自身のサイトURLに置き換えてください。

あとは、適用したい要素にfont-family: “Quicksand”;を指定すると、サーバーにアップしたフォントファイルを通して、ブラウザがフォントを適用してくれます。

なお、@font-faceではfont-weightなども設定できるので、気になる方はMDNで詳細をご確認ください。

@font-faceで設定したフォントは、cssファイルだけでなく、htmlファイルやjsファイルからでもアクセス可能です。例えば下記のような記述でも適用されます。

【index.html】

  1. <div style="font-family: Quicksand;">Quicksand</div>

【main.js】

  1. document.querySelector('div').style.fontFamily = "Quicksand";

本当に高速化されたのかを確認するには、PageSpeed Insightsで確認すると良いでしょう。スコアが上がっているはずです。

今回のまとめ

今回はGoogle Fontを使いつつ、webサイトの表示速度を上げる方法を紹介しました。最後までお読み頂きありがとうございました。

最低限、リクエスト・レスポンスの仕組みは理解する

フォントライセンスは念の為確認しておく

Google Fontをダウンロードし、コンバートしてサーバーにアップする

@font-faceを使ってカスタムフォントとして登録する

関連記事

  • web site
    ブログアイキャッチ画像
    web site
    2022.11.26(更新)

    ページ表示速度アップ!npmでソースファイルを軽量化する方法【サクッと簡単!】

  • web site
    ブログアイキャッチ画像
    web site
    2022.09.01(更新)

    YouTube動画を埋め込んだページの高速化、こうしたら早くなった!

  • web site
    ブログアイキャッチ画像
    web site
    2022.09.01(更新)

    こうしたら速くなった!画像を圧縮してWebページ表示速度を上げる方法

  • web site
    ブログアイキャッチ画像
    web site
    2022.09.01(更新)

    【サイト表示高速化】Webサイトにおける画像ファイルの選び方

  • web site
    ブログアイキャッチ画像
    web site
    2022.09.01(更新)

    24ビットを理解するとWeb画像がより一層楽しくなる話

CATEGORY カテゴリー別最新記事

  • CSS
    アイキャッチ画像
    CSS

    【CSS】margin?position?要素の中央寄せで使うプロパティとは?

  • Docker
    アイキャッチ画像
    Docker
    2022.10.03(更新)

    【簡単設定!】DockerでWordPressをローカル開発する方法

  • HTML
    アイキャッチ画像
    HTML
    2023.02.18(更新)

    【図解あり】aタグの入れ子ルールとHTMLの入れ子ルールを覚える方法

  • JavaScript
    アイキャッチ画像
    JavaScript
    2023.03.04(更新)

    【実例コードあり】覚えておきたいパララックスデザインの3つの基本

  • Python
    アイキャッチ画像
    Python
    2023.02.09(更新)

    【やらなきゃ損!】2日でできるPythonのExcelコピペ自動化!

  • Study
    アイキャッチ画像
    Study
    2023.02.16(更新)

    稼ぐために始めたプログラミングのこれまでの振り返り。勉強方法や役立った本も紹介。

  • web site
    アイキャッチ画像
    web site
    2022.11.26(更新)

    ページ表示速度アップ!npmでソースファイルを軽量化する方法【サクッと簡単!】

  • WordPress
    アイキャッチ画像
    WordPress
    2022.10.26(更新)

    【コピペ可】WordPressサイトをPWA化するためにService Workerを実装してみた。