クライアントPCで「ローカルと見た目が違う」を解決する環境チェックリスト|現場で使える実践テクニック

C
クリオ
Web制作ディレクター / フロントエンジニア

こんにちは!

今日は「クライアントPCで『ローカルと見た目が違う』を解決する環境チェックリスト」について解説します。

なぜクライアント環境で見た目が変わるのか

僕も昔ですね、Webサイトを完成させてクライアントに納品したら「あの、画面が違うんですけど…」と連絡されたことがあります。
ローカルではめっちゃキレイに見えてたのに、クライアントのPCで見たら「あ、ほんまや」って感じで。
あの時はめっちゃ焦りました(笑)

実はこれ、Web制作の現場ではめっちゃよくあるんです。
同じHTMLとCSSなのに、環境が違うと見た目が変わってしまう。
理由は大きく分けて4つあります。

  • フォントがインストールされていない
  • ブラウザのバージョンが古い
  • ブラウザキャッシュが悪さをしている
  • OSやディスプレイの設定による差異

これらはぜんぶ、開発者側で気をつけることができるんですよ。
チェックリスト化して対処すれば、ほぼほぼ防げます。

フォント設定による違いと対処法

最も多いのがフォント問題です。
僕の経験では、クライアント環境でのトラブルの約60%がフォント関連なんです。

例えば、あなたが開発環境でfont-family: 'Noto Sans JP', sans-serif;と指定してたとします。
ローカルではGoogle Fontsから読み込んでるから見えてる。
でもクライアントのPCがネットに繋がっていなかったり、CDNがブロックされてたら?
フォントが読み込まれず、デフォルトフォントにフォールバックしてしまうんです。

対処法としては、まず外部フォントに頼り過ぎないこと。
CSSのfont-familyスタックを工夫しましょう。

良い例:

font-family: 'Noto Sans JP', YuGothic, 'Yu Gothic', 'ヒラギノ角ゴ Pro', 'Hiragino Kaku Gothic Pro', Meiryo, 'メイリオ', sans-serif;

こうすることで、Google Fontsが読み込めなくても、次々とフォールバックしていきます。
最終的にはクライアントのPCにインストールされてるフォントを使うわけです。
WindowsならMeiryoYuGothic、Macならヒラギノ角ゴとか。

それからですね、もう一つ重要なのがWebフォントの読み込み設定です。
もし外部フォントを使うなら、font-display: swap;をCSSに追加するといいですよ。
フォントの読み込みが遅れても、とりあえずフォールバックフォントで表示されるようになります。

ブラウザキャッシュと表示エンジンの問題

次が、ブラウザキャッシュです。
クライアントのPCで「昔のバージョンが表示されてる」って話、めっちゃよく聞きますよね。

これはCSSやJavaScriptが強くキャッシュされてるせいです。
ローカル開発では僕らは開発者ツールを開いて「キャッシュを無効化して再読み込み」をしてるんですが、クライアントはそんなことしません。
普通にブラウザを開いて見た時に、古いファイルが表示されちゃう。

対処法は、本番環境にアップロードする時に、CSSやJSのファイル名にバージョン番号やハッシュを付けることです。
例えば:

  • style.cssstyle.v2024010101.css
  • script.jsscript.a3f9e2b.js

こうすることで、ファイル更新のたびにURLが変わるので、キャッシュが使われません。
ビルドツール(webpackとかViteとか)を使ってれば、たいていこれが自動でやられます。

それからですね、<meta>タグでもキャッシュを制御できます。
本番環境では以下のようなタグを<head>に入れておくといいですよ:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">

あともう一つ、古いブラウザを使ってるクライアントがいたら、表示が崩れることもあります。
Internet Explorer 11とかですね。
今はIEサポートが終了してますけど、まだ使ってるクライアント、いるんですよ…
そういう時は、CSSの互換性に気をつけたり、polyfillを入れたり、グレースフルデグラデーション(古いブラウザでは完全には見えなくてもいい)を念頭に置いて作るといいですよ。

納品前の環境チェックリスト

実際に僕が現場で使ってるチェックリストを、そのままお渡ししちゃいます。
これをクライアント納品の前にやっておけば、ほぼほぼ大丈夫です。

フォント関連

  • Google Fontsなどの外部フォントが読み込めない状況を想定したfont-familyスタックになっているか
  • 文字が中途半端に大きくなったり小さくなったりしないか(font-sizeの計算ミス)
  • 日本語フォントの選択は適切か(英字フォントだけ指定してないか)
  • Woff2など最新フォント形式に対応しつつ、フォールバックもあるか

キャッシュ関連

  • CSSとJSファイルにバージョン番号またはハッシュが付いているか
  • 本番環境でのHTTPヘッダーのCache-Controlが適切に設定されているか
  • ServiceWorkerを使ってる場合、更新戦略は大丈夫か

ブラウザ互換性

  • Chrome最新版とEdge最新版での表示確認
  • 必要に応じてSafariの古いバージョンも確認(クライアントが古いMacを使ってる可能性)
  • display: flexgridの使用箇所は互換性大丈夫か
  • CSSカスタムプロパティ(変数)をIEで使ってないか

ディスプレイ・OS設定

  • 高DPI(Retina)ディスプレイでぼやけてないか
  • Windowsの「テキストサイズの変更」(拡大率100%以外)