本文へ移動

ホーム / デザイナー / 第4部 体験を左右する実装

第4部 体験を左右する実装・第10章

パフォーマンス(画像・フォント・アニメーション)

★★☆ 重要7トピック・面接 3問

見た目を保ちながら速く表示するための知識を押さえます。画像・フォント・アニメーションのコストと、速さの指標、体感の速さの工夫を扱います。

10.1画像の形式と大きさ

用語★★☆ 重要
ひとことで

写真は WebP・AVIF、アイコンは SVG など、素材に合った形式と、表示する大きさに合った画像で軽くする。

表示の速さはデザインで大きく変わります。大きな画像・多くのフォント・重いアニメーションは、特に回線が遅い・性能が低いスマホで表示を遅くします。見た目を保ちながら軽くする方法を、エンジニアと一緒に考えます。

素材向いている形式気をつけること
写真WebP・AVIF(なければ JPEG)表示する大きさに合わせて書き出す。高密度の画面用に 2 倍までを用意
アイコン・ロゴSVGどの大きさでもくっきり。色をトークンで変えられる
透過のある画像・スクリーンショットPNG・WebP写真を PNG にすると重くなりやすい
動く画像動画(MP4 など)GIF は重い。自動再生は音なし・止められるように
形式を選ぶ大きさを合わせる写真WebP・AVIF(なければ JPEG)アイコン・ロゴSVG透過・スクリーンショットPNG・WebP動く画像動画(GIF は重い)表示する幅 400px(1x)高密度の画面用 800px(2x)元の写真 4000px:大きすぎる縦横比を決めておくと、読み込み中も場所を確保でき、画面がずれない
画像の形式と大きさ。表示の幅の2倍までで十分なことが多い

写真は、表示する幅の2倍程度の大きさがあれば、高密度の画面でもきれいに見えることが多いです。それ以上大きくしても、見た目はほとんど変わらず、重さだけが増えます。

面接ではこう答える

表示の速さは、デザインで使う素材で大きく変わります。写真は WebP や AVIF、なければ JPEG、アイコンやロゴは SVG、透過のある画像は PNG や WebP、動く画像は GIF ではなく動画にする、というように素材に合った形式を選びます。大きさは表示する幅の2倍程度までで十分なことが多く、それ以上は重さが増えるだけです。特に最初の画面の大きな画像は、表示の速さの指標に直接響くので気をつけています。

ひとことで

Google が示す Web の体験の指標。表示の速さの LCP、操作への反応の INP、画面のずれの CLS の3つで、それぞれ「よい」の基準がある。

Core Web Vitals:3つの「よい」の基準LCP(表示)2.5秒以内いちばん大きな要素が出るまでINP(反応)200ミリ秒以内操作してから画面が反応するまでCLS(ずれ)0.1以下読み込み中に画面がずれる量ユーザーの 75% がこの基準を満たしているかで判断する
Core Web Vitals の3つの指標と「よい」の基準

Core Web Vitals は、Google が示している Web の体験の指標です。検索の順位の要素の1つにもなっているため、多くの Web サービスが目標にしています。

指標測るものデザインで効くこと
LCP(Largest Contentful Paint)いちばん大きな画像や文字の塊が表示されるまで最初の画面の大きな画像の重さ・Web フォント
INP(Interaction to Next Paint)操作してから画面が次に描かれるまで重いアニメーション・一度にたくさんの要素を描く画面
CLS(Cumulative Layout Shift)読み込み中に要素がずれる量画像の縦横比を決めていない・後から差し込まれるバナーやお知らせ

特に CLS はデザインの影響が大きい指標です。「読んでいたら広告が差し込まれて文字が下にずれ、違うものを押してしまった」は、CLS が悪い典型です。後から出るものは、場所を先に確保するデザインにします。

Web エンジニア向け:Core Web Vitals

面接ではこう答える

Core Web Vitals は、Google が示している Web の体験の指標で、3つあります。LCP は画面でいちばん大きな要素が表示されるまでの時間で 2.5 秒以内、INP は操作してから画面が反応するまでの時間で 200 ミリ秒以内、CLS は読み込み中に画面がずれる量で 0.1 以下が「よい」の基準です。デザインとの関係では、最初に見える大きな画像やフォントが LCP に、画像の大きさを決めていないことや後から差し込まれるバナーが CLS に効きます。

ひとことで

画面の大きさや密度に合わせて複数の大きさの画像を出し分け(srcset)、画面の外の画像は見えそうになってから読む(遅延読み込み)。縦横比を決めてずれを防ぐ。

大きさが決まっていない・画像が届くまで高さ 0・届いた瞬間に下の文字がずれる・CLS が悪くなる縦横比を決めている・先に場所を確保(灰色の枠)・届いたら中身が入るだけ・ずれない
画像の縦横比を決めると、読み込み中のずれがなくなる

画像は、画面の大きさに応じてエンジニアが複数のサイズを出し分けられます(srcset)。デザインでは、画像の縦横比を決めておくと、読み込み中に場所を確保でき、後から画面がずれる(レイアウトのずれ)を防げます。画面の最初に見える大きな画像は、表示の速さの指標(LCP)に直接響きます。

手法やることデザインで決めること
出し分け(srcset)画面の幅・密度ごとに大きさの違う画像を用意画像の枠の幅(画面幅ごと)
縦横比の指定画像が届く前に場所を確保画像の縦横比
遅延読み込み画面の外の画像は見えそうになってから読む最初の画面に入る画像はどれか
優先して読む最初の画面の大きな画像を早く読む最初の画面のいちばん大きな画像

面接ではこう答える

画像は、画面の幅や密度に合わせて、エンジニアが複数の大きさを用意して出し分けられます。これを srcset といい、スマホに PC 用の大きな画像を送らずに済みます。画面の外にある画像は、スクロールで見えそうになってから読む遅延読み込みで、最初の表示を軽くできます。デザインでは、画像の縦横比を決めておくと、読み込み中に場所を確保でき、画面のずれを防げます。逆に、最初の画面のいちばん大きな画像は遅延させず、早く読む指定をしてもらいます。

ひとことで

日本語の Web フォントは文字数が多く重い。太さの種類を絞り、必要な文字だけ読み、届くまでの表示(代わりのフォントで先に出すか)を決める。

Web フォントが届くまでの表示の違い時間先に代わりの文字代わりのフォントで表示届いたら切り替え(ずれに注意)届くまで隠す文字が見えない届いたら表示CSS の font-display で選べる。多くの場合は「先に代わりの文字」(swap)にする
フォントの読み込みと表示のしかた

フォント:日本語のフォントは文字数が多いため、1つの太さで数 MB になることもあります。太さの種類を絞る、OS に入っているフォント(システムフォント)を使う、使う文字だけに減らす(サブセット)などで軽くします。Web フォントが届くまでの表示(代わりのフォントで先に出すか)も決めておきます。

工夫効果
太さの種類を絞る(例:通常と太字の2つ)読むファイルの数が減る
システムフォントを使う読み込みが要らない。OS ごとに見た目は少し違う
必要な文字だけにする(サブセット)ファイルが小さくなる。ユーザーが入れる文字は足りないことがある
小分けにして必要な分だけ読むGoogle Fonts などが使う方法(unicode-range)
届くまでの表示(font-display)swap なら代わりの文字で先に表示する

面接ではこう答える

日本語のフォントは文字数が多いため、1つの太さだけでも大きなファイルになります。Web フォントを使う場合は、太さの種類を絞る、OS に入っているシステムフォントで十分な場所はそれを使う、使う文字だけに減らす、といった工夫で軽くします。Google Fonts などは文字を小分けにして、使う分だけ読む仕組みを持っています。また、フォントが届くまでは代わりのフォントで先に表示するのか、隠すのかを選べるので、文字が見えない時間を作らないよう、先に表示する形にすることが多いです。

ひとことで

位置の移動・拡大縮小・透明度の変化は軽く、幅・高さ・余白を動かすと配置の計算がやり直しになって重い。

重くなりやすい・幅・高さ・余白を動かす・配置の計算をやり直す・大きな影・ぼかしを動かす軽い・位置の移動(transform)・拡大縮小・回転・透明度(opacity)
軽い動きと重い動き

画面の動きは、何を動かすかで重さが変わります。ブラウザが画面を表示する流れ(ブラウザが画面を表示するまで)のうち、どこからやり直しになるかが違うからです。

動き重さ代わりの表現
横から入ってくる軽い(移動)―
ふわっと出る軽い(透明度)―
カードが大きくなる幅・高さを動かすと重い拡大縮小で表現できないか
アコーディオンが開く高さを動かすので重め短い時間にする・中身は透明度で出す
背景のぼかしを動かす重いぼかしは固定にする
たくさんの要素が同時に動く重い動かす数を絞る・少しずつずらす

重さは端末の性能に強く左右されます。新しい PC やスマホでなめらかでも、数年前の安いスマホではかくつくことがあります。確認するときは、性能の低い端末でも一度見てもらうようにします。

面接ではこう答える

アニメーションの重さは、何を動かすかで大きく変わります。位置の移動や拡大縮小、透明度の変化は、配置の計算をやり直さずに済むので軽く、なめらかに動きやすいです。一方、幅や高さ、余白を動かすと、周りの要素の配置も毎回計算し直すので重くなり、性能の低いスマホではかくつきます。同じ見た目の動きでも、拡大縮小や移動で表現できないかをエンジニアと相談します。

ひとことで

実際の速さを変えなくても、届いた順に出す・先に反応する・進み具合を見せることで、待ち時間は短く感じられる。

同じ3秒でも、見せ方で短く感じられる何も出ない真っ白のまま待つ順に出す骨組み文字画像届いたものから順に出し、今何が起きているかが分かると、待ち時間が短く感じられる
体感の速さの工夫
工夫例
すぐに反応する押した瞬間にボタンの見た目を変える。0.1秒以内の反応が目安
届いた順に出す骨組み(スケルトン)→ 文字 → 画像
先に画面を変える楽観的 UI(いいね)
先に読んでおく次のページの内容を、押しそうになった時点で読み始める
進み具合を見せる長い処理は段階や残りの見込みを出す
後回しにする画面の外のものは見えそうになってから読む

体感の工夫はどれも、デザインと実装の両方で決めることです。「どこを先に出したいか」をデザイナーが優先順位として示すと、エンジニアが読み込みの順番を決めやすくなります。

面接ではこう答える

体感の速さは、実際の時間だけでなく見せ方で変わります。何も出ない画面で3秒待つより、骨組み、文字、画像と届いた順に表示するほうが短く感じられますし、押した瞬間にボタンが反応するだけでも遅さを感じにくくなります。ほかに、次に使いそうなデータを先に読んでおく、長い処理では進み具合や段階を見せる、といった工夫があります。ただし、実際の遅さを隠すだけでは限界があるので、エンジニアと実際の速さの改善もあわせて考えます。

パフォーマンスバジェットは、表示の速さを保つために、チームで決める「上限」です。上限があると、新しい画像やフォントを足したくなったときに、何かを減らすかを話し合うきっかけになります。

決める上限の例内容
指標LCP 2.5秒以内・CLS 0.1以下(Core Web Vitals の「よい」の基準)
最初の画面の画像最初の画面に入る画像の合計の大きさ
フォント使うフォントの種類と太さの数
外部の読み込み広告・計測・チャットなどの外部の仕組みの数

数値はプロダクトによって違うので、エンジニアと今の状態を測ってから決めます。デザインを変えたときに上限を超えないかを、プレビュー環境で Lighthouse などを使って確かめると、リリース後に遅くなっていた、を防げます。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • 表示の速さはデザインで大きく変わる。大きな画像・多くのフォント・重いアニメーションに注意
  • Core Web Vitals(LCP・INP・CLS)は、表示・反応・ずれの3つの指標
  • 実際の速さに加えて、待ち時間を短く感じさせる見せ方もデザインの仕事
  • 画像の形式と大きさ:写真は WebP・AVIF、アイコンは SVG など、素材に合った形式と、表示する大きさに合った画像で軽くする。
  • 表示の速さの指標(Core Web Vitals):Google が示す Web の体験の指標。表示の速さの LCP、操作への反応の INP、画面のずれの CLS の3つで、それぞれ「よい」の基準がある。
  • 画像の出し分けと遅延読み込み:画面の大きさや密度に合わせて複数の大きさの画像を出し分け(srcset)、画面の外の画像は見えそうになってから読む(遅延読み込み)。縦横比を決めてずれを防ぐ。
  • フォントの重さと表示:日本語の Web フォントは文字数が多く重い。太さの種類を絞り、必要な文字だけ読み、届くまでの表示(代わりのフォントで先に出すか)を決める。
  • 軽いアニメーションと重いアニメーション:位置の移動・拡大縮小・透明度の変化は軽く、幅・高さ・余白を動かすと配置の計算がやり直しになって重い。
  • 体感の速さ(待ち時間を短く感じさせる):実際の速さを変えなくても、届いた順に出す・先に反応する・進み具合を見せることで、待ち時間は短く感じられる。

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1デザインで表示の速さを意識していることはありますか?

模範回答

画像・フォント・アニメーションの3つを意識しています。画像は表示する大きさの2倍程度までで書き出し、写真は WebP や AVIF、アイコンは SVG にします。縦横比を決めておくと、読み込み中も場所を確保でき、画面がずれません。

フォントは、日本語のフォントが重いので太さの種類を絞り、システムフォントで十分な場所はそれを使います。アニメーションは、位置の移動や透明度の変化のような軽いものを中心にし、動きを減らす設定のときの見せ方も決めます。重い表現を使いたいときは、エンジニアに負担を聞いて、軽い代わりの案と比べます。

深掘りされたら

  • 最初に見える大きな画像(ヒーロー画像)は、どう扱いますか?

見られているポイント画像・フォント・動きのコストと代替

Q2Core Web Vitals とは何ですか?デザインはどう関係しますか?

模範回答

Google が示している Web の体験の指標で、3つあります。LCP は画面でいちばん大きな要素が表示されるまでの時間で 2.5 秒以内、INP は操作への反応の時間で 200 ミリ秒以内、CLS は読み込み中の画面のずれで 0.1 以下が「よい」の基準です。

デザインとの関係では、最初の画面の大きな画像やフォントが LCP に、画像の縦横比を決めていないことや後から差し込まれるバナーが CLS に、重いアニメーションや一度にたくさん描く画面が INP に効きます。なので、最初の画面の画像は軽く、後から出るものは場所を先に確保するデザインにしています。

深掘りされたら

  • CLS を悪くしやすいデザインの例は?

見られているポイント3つの指標の意味と、デザインとの具体的な関係

Q3日本語の Web フォントを使いたいと言われたら、どう考えますか?

模範回答

使う目的と重さの両方で考えます。日本語のフォントは文字数が多く、1つの太さでも大きなファイルになるので、ブランドの表現に本当に必要な場所かどうかをまず確かめます。見出しだけに使い、本文はシステムフォントにする、という分け方もよくあります。

使う場合は、太さの種類を2つ程度に絞る、小分けにして必要な文字だけ読む仕組みを使う、フォントが届くまでは代わりのフォントで先に表示する、を相談します。切り替わるときに行の長さが変わって画面がずれないかも確かめます。

深掘りされたら

  • システムフォントにすると、何が変わりますか?

見られているポイント表現の目的と速さのトレードオフを判断できるか