



WithCodeMedia-1-pc
WithCodeMedia-2-pc
WithCodeMedia-3-pc
WithCodeMedia-4-pc




WithCodeMedia-1-sp
WithCodeMedia-2-sp
WithCodeMedia-3-sp
WithCodeMedia-4-sp









生徒Googleフォントを使いたいんですが、日本語だと重くなるって聞いて不安で…
ペン博士大丈夫、コツがあるよ!linkタグで読み込んで、font-display:swapとpreconnect、必要ならサブセット化すれば重さはかなり抑えられる。今日は導入から最適化まで一気に解説するね。
Webサイトに個性的なフォントを使いたいけれど、どうやって設定すればいいかわからない――そんな疑問を持ったことはありませんか。システムフォントだけではデザインに限界があり、かといってフォントファイルを自前で用意するのは大変です。そこで便利なのがGoogle Fontsです。
Google Fontsは1,500種類以上のフォントを無料で提供しているサービスで、HTMLに数行書き足すだけでサイトにWebフォントを適用できます。日本語フォントにも対応しており、「Noto Sans JP」や「Noto Serif JP」などを使えばきれいな日本語Webフォントを手軽に導入できます。
この記事ではGoogle Fontsの基本的な使い方から日本語フォントの特性、表示速度の最適化、セルフホストの方法、可変フォントの活用まで網羅的に解説します。コードはすべてコピペで使えるよう整理しています。
Google Fontsはシステムフォントにはないデザイン性の高いフォントをCDN経由で配信するGoogleのサービスです。利用は完全無料で、商用利用もOK。ライセンスはSIL Open Font License(OFL)が多く、Webサイトだけでなく印刷物やアプリにも使えます(フォントごとにライセンス確認を推奨)。

fonts.google.comにアクセスし、使いたいフォントを選びます。手順を追って解説します。
日本語フォントを探す場合は検索で「Noto Sans JP」や「BIZ UDPGothic」などと入力するか、上部の「Language」フィルターで「Japanese」を選択します。

Google Fontsの埋め込みには2つの方法があります。HTMLの<head>内に<link>タグを記述する方法が推奨です。CSSファイルの@importより先にブラウザがフォントのダウンロードを開始できるため、表示が速くなります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Google Fonts サンプル</title>
<!-- 推奨:preconnectで接続を先行確立 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Google Fontsのlinkタグ -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
</head>
<body>
<p>Hello, Google Fonts!</p>
</body>
</html>
preconnectを使うことで、ブラウザがHTMLを解析しながらGoogleのフォントサーバーとの接続を確立でき、フォントのダウンロード開始を早められます。crossorigin属性はfonts.gstatic.com(フォントファイルの実際の配信元)に必ず付けてください。
/* style.css */
body {
font-family: 'Inter', sans-serif;
font-weight: 400;
line-height: 1.6;
}
h1, h2, h3 {
font-family: 'Inter', sans-serif;
font-weight: 700;
}
.bold {
font-weight: 600;
}
font-familyには必ずフォールバック(汎用フォントファミリー)を指定してください。Webフォントの読み込みに失敗した場合に、次のフォントで代替表示されます。英語フォントならsans-serifかserif、日本語対応が必要なら後述のフォールバックスタックを使います。
CSSファイルの先頭に@importを書く方法もあります。WordPressのstyle.cssやSassファイルで管理したい場合に便利ですが、CSSの解析後に読み込みが始まるためlinkタグより若干遅くなります。
/* style.cssの先頭に記述(CSSファイル内でのみ使用する場合) */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap');
body {
font-family: 'Inter', sans-serif;
}
パフォーマンス面ではlinkタグの方が優れているため、特別な理由がなければlinkタグを使いましょう。
日本語フォントは英語フォントと比較してファイルサイズが非常に大きい特徴があります。英語の場合は使用する文字数が26文字(アルファベット)+記号程度ですが、日本語は常用漢字だけで2,136文字、それに加えてひらがな・カタカナ・記号が含まれるため、フォントファイルが数MB以上になることもあります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>日本語Webフォントサンプル</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Noto Sans JP(日本語)+ Inter(英数字) -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&family=Noto+Sans+JP:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css">
</head>
</html>
/* 日本語サイトのfont-family設定 */
body {
/* 英数字はInter、日本語はNoto Sans JP、フォールバックはシステムフォント */
font-family:
'Inter',
'Noto Sans JP',
'Hiragino Kaku Gothic ProN',
'Hiragino Sans',
Meiryo,
sans-serif;
}
/* 見出しに明朝体(Noto Serif JP)を使う例 */
h1, h2 {
font-family:
'Noto Serif JP',
'Hiragino Mincho ProN',
'Yu Mincho',
serif;
font-weight: 700;
}
英数字フォント(Inter)を日本語フォント(Noto Sans JP)より前に記述することで、半角英数字はInterで、日本語文字はNoto Sans JPで表示されます。フォントはfont-familyに記述した順に優先されますが、対応文字コードにない文字は次のフォントへフォールバックするためこの記述が機能します。
| フォント名 | 種類 | 特徴・用途 |
|---|---|---|
| Noto Sans JP | ゴシック体 | 可読性が高くWeb本文に最適。最もよく使われる |
| Noto Serif JP | 明朝体 | 落ち着いた印象。ブログ・記事サイトの本文に |
| BIZ UDPGothic | ゴシック体 | ビジネス文書向け。UD(ユニバーサルデザイン)フォント |
| BIZ UDPMincho | 明朝体 | ビジネス文書向けの明朝体版 |
| Zen Kaku Gothic New | ゴシック体 | モダンでスッキリした印象。見出しにも本文にも |
| Shippori Mincho | 明朝体 | 繊細で美しい明朝体。高級感のあるサイトに |
| M PLUS Rounded 1c | 丸ゴシック | 柔らかく親しみやすい印象。子ども向け・カジュアルなサイトに |
Webフォントの読み込みには時間がかかるため、読み込み完了前の表示方法を制御するfont-displayプロパティが重要です。Google FontsのURLにdisplay=swapを付けることで、フォント読み込み中はシステムフォントで表示し、読み込み完了後にWebフォントに切り替わります。
<!-- URLの末尾に &display=swap を付ける -->
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&display=swap" rel="stylesheet">
/* @font-faceを自前で定義する場合はfont-displayプロパティで指定 */
@font-face {
font-family: 'MyFont';
src: url('/fonts/myfont.woff2') format('woff2');
font-display: swap; /* フォント未読込み中はフォールバックフォントを表示 */
}
/* font-displayの各値の違い */
/* auto : ブラウザのデフォルト動作 */
/* block : 最大3秒非表示(FOIT) */
/* swap : ずっとフォールバック→切り替え(FOUT)← 推奨 */
/* fallback: 100ms非表示→3秒フォールバック→切り替えなし */
/* optional: 100ms以内に読み込めなければフォールバックのまま */
font-display: swapを使うとフォント切り替え時にレイアウトが少しずれる(CLS:Cumulative Layout Shift)が発生することがあります。これを最小化するには、Webフォントとフォールバックフォントのサイズ差をsize-adjust・ascent-override・descent-overrideで調整することが有効です(上級者向け)。

日本語フォントの最大の問題はファイルサイズです。Google Fontsではtext=パラメータを使ってサイトで実際に使う文字だけを指定(サブセット化)することで配信ファイルを大幅に削減できます。
<!-- ロゴや見出しに使う特定の文字だけをサブセット化 -->
<!-- 例:「株式会社ウェブデザイン」という文字だけ使う場合 -->
<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+JP&text=株式会社ウェブデザイン&display=swap" rel="stylesheet">
textパラメータはロゴのような固定テキストに非常に有効です。「全文字が必要なのは本文だけで見出しは決まった文言しか使わない」というケースでは、本文用と見出し用でフォントリクエストを分けるのが効率的です。
実は、Google Fonts自体がブラウザのUser-Agentヘッダを見て、そのブラウザが対応している形式(woff2やwoff)・必要な文字セットのみを含むCSSを返すよう最適化しています。また日本語フォントはUnicode-rangeによる分割配信(必要な文字ブロックだけを取得)も行われています。
Googleのサーバーに依存せず自分のサーバーからフォントを配信したい場合はfontsourceが便利です。fontsourceはGoogle Fontsのフォントをnpmパッケージとして提供しており、自前のサーバーからホスティングできます。
/* npmでフォントをインストール */
/* npm install @fontsource/noto-sans-jp */
/* npm install @fontsource/inter */
/* JavaScriptファイルでインポート(Next.js・Viteなど) */
/* import '@fontsource/inter/400.css'; */
/* import '@fontsource/inter/700.css'; */
/* import '@fontsource/noto-sans-jp/400.css'; */
/* またはCSSファイルでインポート */
/* @import '@fontsource/inter/400.css'; */
/* @import '@fontsource/noto-sans-jp/400.css'; */
/* 可変フォント版(@fontsource-variable)を使う場合 */
/* npm install @fontsource-variable/inter */
/* npm install @fontsource-variable/noto-sans-jp */
/* CSSでインポート */
/* @import '@fontsource-variable/inter'; */
body {
font-family: 'Inter Variable', 'Noto Sans JP', sans-serif;
}
fontsourceを使うメリットは、外部リソースへの依存がなくなりプライバシー問題(GDPR)やオフライン対応が容易になる点です。ビルド時にフォントファイルがプロジェクトに含まれるため、Googleのダウンタイムに影響を受けません。

可変フォント(Variable Font)は、1つのフォントファイルに複数のウェイト・スタイルのバリエーションが含まれた次世代フォント形式です。通常、Regular(400)・Bold(700)などのウェイトを別々のファイルで読み込む必要がありますが、可変フォントなら1ファイルで任意のウェイト・スタイルを連続的に指定できます。
<!-- 可変フォント(Inter)のlinkタグ -->
<!-- ウェイトを 100..900 の範囲で指定(2つの値をふたつのピリオドで区切る) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=Noto+Sans+JP:wght@100..900&display=swap" rel="stylesheet">
/* 可変フォントの使用例 */
body {
font-family: 'Inter', 'Noto Sans JP', sans-serif;
font-weight: 400; /* 通常の本文 */
}
h1 {
font-weight: 800; /* 任意の値が使える(100〜900の範囲) */
}
.light {
font-weight: 300;
}
.medium {
font-weight: 500;
}
/* font-variation-settingsで軸を直接指定(上級) */
.custom-weight {
font-variation-settings: 'wght' 650; /* ウェイト650 */
}
可変フォントの最大のメリットはファイルサイズの削減と柔軟性です。通常3ウェイト分のファイルが必要なところが1ファイルで済み、さらにCSSで途中の値(例:font-weight: 530)も自由に指定できます。
Google Fontsを使う際のパフォーマンス最適化ポイントを整理します。
| 対策 | 効果 | 難易度 |
|---|---|---|
| preconnectタグを追加 | 接続確立を先行してフォント取得を高速化 | 低 |
| display=swapを付ける | フォント未読込み中も文字を表示(CLSを軽減) | 低 |
| 使うウェイトだけを選択 | 不要なウェイトのダウンロードを省略 | 低 |
| 可変フォントを使う | 複数ウェイトを1ファイルで管理、柔軟に指定可能 | 低 |
| textパラメータでサブセット化 | 固定テキスト(ロゴ等)のファイルサイズを大幅削減 | 中 |
| fontsourceでセルフホスト | 外部依存排除・GDPR対応・オフライン対応 | 中 |
| フォントをpreloadする | フォントファイルを最優先で取得 | 高 |
<!-- 特定のフォントファイルを最優先で取得(セルフホスト時に有効) -->
<link rel="preload"
href="/fonts/inter-variable.woff2"
as="font"
type="font/woff2"
crossorigin>
<!-- @font-faceの定義 -->
<style>
@font-face {
font-family: 'Inter';
src: url('/fonts/inter-variable.woff2') format('woff2-variations');
font-weight: 100 900;
font-display: swap;
}
</style>
rel="preload"を使うことでブラウザがフォントを他のリソースより先に取得します。ただしGoogle Fonts CDN経由では正確なフォントファイルURLが動的に変わるため、preloadはfontsourceなどセルフホスト時に真価を発揮します。
Google Fontsの大多数はSIL Open Font License 1.1(OFL)または Apache License 2.0 のもとで提供されています。どちらも以下の用途に使用可能です。
フォント選択画面に「License」タブがあるので、使用前に必ず確認しましょう。
Googleフォントは、linkタグでの読み込みが基本で、日本語は容量対策が肝心です。ポイントは①font-display: swapで表示を止めない②preconnectで接続を先に張る③textパラメータやサブセットで容量を削る、の3点。セルフホストや可変フォントも紹介したので、デザインと表示速度のバランスで選んでください。
Google Fontsは完全無料です。商用利用も可能ですが、フォントごとにライセンス(ほとんどはOFL)を確認してください。OFLではWebサイト・印刷物・アプリへの組み込みはOKですが、フォント自体を単体で販売することは禁止されています。
日本語フォントは英語フォントの数十倍のファイルサイズになることがあるため、パフォーマンスへの影響は大きいです。対策として、①必要なウェイトだけ読み込む、②display=swapを使う、③preconnectを設定する、④サブセット化する(固定テキストのみ)、⑤可変フォントを使う、といった手順を踏むことで影響を最小化できます。
SWELLなどのWordPressテーマでは管理画面からWebフォントを選択できることがあります。テーマにない場合は、functions.phpにwp_enqueue_style()を追加してGoogle FontsのURLをエンキューします。またはwp_headフックでpreconnectとlinkタグを直接headに出力する方法も使われます。プラグイン「OMGF (Optimize My Google Fonts)」を使えばコーディング不要でセルフホストへの変換もできます。
パフォーマンス面ではlinkタグが推奨です。@importはCSSの解析が始まってからフォントの取得が開始されるため、表示がわずかに遅れます。特別な理由(CSSファイルで一元管理したいなど)がない限りlinkタグを使いましょう。
EU圏のユーザーを対象とするサービスでは、Google FontsをCDN経由で使うとユーザーのIPアドレスがGoogleに送信されるためGDPR上の問題になる可能性があります。ドイツの裁判所が問題と判断した事例もあります。EU向けサービスではfontsourceを使ったセルフホストに切り替えることでこの問題を回避できます。
CSSの実装テクニックを「レイアウト・装飾・アニメーション・基礎・トラブル解決」の目的別に探せる総まとめページを用意しています。実装で迷ったときの索引としてどうぞ。

目的に合わせて選べる「AI副業」「AI転職」「AI活用」の3コースを用意。副収入・キャリアチェンジ・日常の生産性アップまで、あなたのゴールに合わせてAIを学べます。
会員登録はカンタン30秒で完了します。まずは公式LINEから、無料でAI学習をスタートしましょう!
WithCodeでWeb制作を習得後、フリーランスエンジニアとして活動。HTML/CSS・JavaScript・WordPress案件を中心に年間20件以上の制作実績を持つ。「難しい技術をわかりやすく」をモットーに、初心者〜中級者向けの技術記事を執筆。副業・フリーランス独立を目指す方に向けた情報発信に注力している。
公式サイト より
今すぐ
無料カウンセリング
を予約!