Next.jsとかAstroでGoogle Fontsをビルド時に取り込むときに失敗する問題
2026/05/26
Next.jsやAstroでGoogle Fontsをビルド時に取得しようとすると環境によって失敗する問題について。原因と解決策を調べつつ、それでも腑に落ちない部分を残す話。
Summary
No summary available.
これなんなんでしょうかね。 ローカルでも失敗するときはあるんですけど、それ以上にデプロイ先でのビルドが失敗しすぎる。
原因は?
Claude Codeで調べてみました。
**共通の原因:** どちらも「ビルド時にGoogleへHTTPリクエストを投げる」設計なので、CI/CD・ネットワーク制限・特定OS/コンテナ環境でfetchが失敗する。
**Next.js固有:** Alpine LinuxでのTLS/IPv6問題、Turbopack 16.2のHTTP/2バグ、Intel Mac x64での404など、バージョン・環境依存のバグが多い。
**Astro固有:** Google providerでvariableフォント指定時に非variableウェイトも一緒に落としてしまうバグがあり、Fontsource providerなら発生しない。
**解決策は一択:** フォントファイルをローカルに持ってself-hostingにする(Next.jsは `next/font/local`、Astroは `local` プロバイダーか `@fontsource` npmパッケージ)。外部通信依存がなくなるので環境を問わず確実にビルドが通る。
だそうです…が! しかし、普通に成功することもあるんですよね。これはネットワーク制限とか環境の問題じゃ説明がつかないんですよ。 まあ結局ダウンロードできるんだからこっちでCurlしたうえでローカルとして使うのがいいんでしょうけど。
あれ?でもこれだと解決してないですね。 上に挙げた解決策くらいしか究極存在しないんでしょうね。
雑談
CloudflareとかVercelってコミットのたびにデプロイをプレビューできるのを作ってくれますけど、あれどうなっているんでしょうかね、あんなにドメインバンバン増やすというか、ルーティング処理重くならないんでしょうかね。