見出し画像

【Next.js】一瞬の「ガタつき」で客は冷める!next/fontを導入したら、アプリの見た目が高級三ツ星レストランになった話


こんにちは!プロジェクトの進捗管理と、画面の美観(タイポグラフィ)には人一報こだわりがある、午年(うまどし)エンジニアの筆者です。

Next.js(App Router)でWebサイトを作っていて、ページを開いた瞬間に「画面が一瞬ガタッ…と動く現象」に遭遇したことはありませんか?

最初は普通の明朝体やゴシック体(デフォルトフォント)だったのに、0.5秒後に突然お目当てのGoogle Fontsが適用されて文字の幅が変わり、文章全体がズレるあの現象。

プログラミング用語ではこれを CLS(Cumulative Layout Shift) と呼びますが、今回はこれを「レストランのメニュー表のガタつき」に例えて、Next.jsの強力なフォント最適化機能 next/font の凄さを解説します!

📖 1. 外部フォントの読み込みは「メニュー表が後から書き換わる恐怖」

想像してみてください。あなたはちょっといい高級レストランに入り、席についてワクワクしながらメニュー表を開きました。

ところが、最初に手渡されたのは「普通のノートの切れ端に手書きされたメニュー(デフォルトフォント)」。 「おや?」と思っていると、1秒後にスタッフが飛んできて、目の前で突然「ゴールドの刺繍が入った高級なベロア調のメニュー(Webフォント)」にパッと差し替えました。

手触りも文字の大きさも変わったため、あなたが読もうとしていた「本日のスープ」の位置がズレて、指が泳いでしまいます。

…これ、かなり不格好で、ちょっとお店への不信感を抱きますよね。

従来のWebサイトでGoogle Fontsなどの外部フォントを普通に読み込むと、まさにこれと同じ「一瞬のガタつき(CLS)」がブラウザ上で発生し、ユーザーにストレスを与えていたのです。

🎨 2. next/font という「最初から完璧に印刷されたメニュー表」

この問題を一瞬で解決するのが、Next.jsの next/font です。

これを使うと、なんとアプリケーションのビルド時にフォントファイルを自動でダウンロードし、自分のサーバー(ローカル)内に組み込んで配信してくれます。

  • 従来のGoogle Fonts: ページを開く → Googleのサーバーにフォントを取りに行く → 届くまでデフォルトフォントで我慢(ガタつき発生)。

  • Next.jsのnext/font: ビルド時に厨房(サーバー)でフォントを印刷済み → ページを開いた瞬間、最初から完璧な高級フォントで表示(ガタつきゼロ!)。

外部のGoogleサーバーへ余計な通信を発生させないため、プライバシー的にも安全(GDPR準拠)で、なおかつ表示速度も爆速になります。開いた瞬間に一ミリのストレスもなく、スムーズに料理(コンテンツ)を楽しんでもらえるのです。

📊 PM視点で見る「第一印象(CLSスコア)とコンバージョン率」

プロジェクトマネージャー(PM)の視点で見ると、GoogleのSEO評価基準である「Core Web Vitals」の1つ、このCLS(レイアウトのズレ)は売上に直結する重要指標です。

スマホでボタンを押そうとした瞬間にフォントが読み込まれて画面がズレ、間違えて別の広告をタップしてしまった……なんていう最悪の体験を未然に防ぐ。

「Next.jsの標準機能を使うだけで、SEO評価が高まり、離脱率が下がる」。こんなにコスパの良い投資(実装)はありません!

📚 「見た目と使いやすさ」を極めるデザイン本

フォントの選び方や配置一つで、サイトの信頼感は10倍変わります。エンジニアこそ知っておくべき「一目で伝わるデザイン」の鉄則が詰まった大ベストセラーです。


⌨️ 「極上の文字」を快適に生み出す憧れのギア

画面の文字(フォント)にこだわるなら、それを生み出す指先のタッチにも最高のご褒美を。53日目を超えてなおコードを叩き続けるヤスさんの手首を守る、エンジニアの聖剣です。


📝 53日目の課題

  1. next/font/google から Noto Sans JP などのフォントをインポートし、アプリの layout.js(全体)に適用してガタつき(CLS)を撲滅する。

  2. Obsidianに「next/font=最初から美しく印刷されたメニュー表。Webのガタつきは一瞬で客を冷めさせる!」と太字で記録。

  3. GitHubに「next/fontを導入!極上の文字デザインでおもてなし完了」と添えてコミット!


#Nextjs #Font最適化 #Webデザイン #100DaysOfCode #エンジニア #UX #午年 #プロジェクトマネージャー #GitHub #Web開発

いいなと思ったら応援しよう!