新しいプロジェクトを立ち上げた際、ブラウザのタブにあの紫色の Gatsby ロゴが残っていることに気づいたことはありませんか?それは「チュートリアルを終えたばかりです」と宣伝しているようなものです。Gatsby は非常に優れたパフォーマンスを誇りますが、そのファイル構造ゆえに、favicon for gatsby site の設定という単純な作業が意外と面倒に感じることがあります。

誰もが経験することですが、favicon.ico をルートに置いてリロードを繰り返しても、何も変わらないことがあります。これは Gatsby のビルドプロセスが、標準的な HTML サイトとは異なる方法でアセットを処理するためです。Stripe や GitHub のようなプロフェッショナルな外観を実現するには、マルチ解像度や PWA の要件を自動で処理する戦略が必要です。

推奨:gatsby-plugin-manifest を使う方法

2026 年現在でも、ベストプラクティスは gatsby-plugin-manifest を使用することです。なぜなら、単にアイコンを追加するだけでなく、Android、iOS、デスクトップ向けに最適なサイズを自動生成してくれるからです。また、PWA に不可欠な manifest.webmanifest も作成されます。詳細は manifest 設定ガイド をご覧ください。

ステップ 1: プラグインのインストール

まず、プロジェクトにプラグインがインストールされているか確認しましょう。多くのスターターには標準装備されています。

npm install gatsby-plugin-manifest

ステップ 2: gatsby-config.js の設定

ここで、高解像度のソース画像(512x512 ピクセル以上)を指定します。ビルド時にプラグインが適切なサイズにリサイズしてくれます。

module.exports = {
  plugins: [
    {
      resolve: 'gatsby-plugin-manifest',
      options: {
        name: 'マイサイト',
        short_name: 'サイト',
        start_url: '/',
        background_color: '#ffffff',
        theme_color: '#663399',
        display: 'minimal-ui',
        icon: 'src/images/icon.png', // ソース画像のパス
      },
    },
  ],
}

ステップ 3: 出力の確認

gatsby build を実行すると、public フォルダ内に多数の PNG ファイルが生成されます。これにより、どのデバイスでもアイコンが鮮明に表示されます。(ヒント:歪みを防ぐため、必ず正方形の PNG を使用してください)。

手動設定:static フォルダを使う方法

プラグインに画像を処理させたくない場合(例:最適化済みの .ico や SVG をそのまま使いたい場合)は、static フォルダを利用します。

static フォルダのメリット

/static 内のファイルは Webpack を通さず、そのまま /public にコピーされます。シンプルですが、特定のファイルをそのまま配信したい場合には確実な方法です。

Link タグの追加

Gatsby の Head API を使って、HTML の head に link タグを挿入します。

export const Head = () => (
  <>
    <link rel="icon" href="/favicon.ico">

)

よくある落とし穴

ファビコンはサイトの「顔」です。Mzu favicondl のようなツールで高品質なソース画像を用意し、正しく設定することで、ブランドの信頼性を高めましょう。