Skip to content
アルパカ プレス | IT・AI・ゲーム・動画制作ブログ ロゴ
Go back

Astroブログにfaviconを設定した話

昨日、ブログを開設してfaviconを設定していないことに気づきました。 というわけで、本日はfaviconを設定した時のメモです。

まずfaviconをchatGPTで作成してもらいました。その画像を元にRealFaviconGeneratorで各種ファイルを生成します。

faviconはブラウザのタブやブックマーク、スマホのホーム画面追加などで表示される小さなアイコンです。小さい部分ではありますが、ブログらしさが出るので、ちゃんと設定しておきたいところです。

今回は、作成した一式をAstroブログに配置し、<head>から読み込むようにしました。

用意したファイル

今回用意したfavicon関連ファイルは以下です。

  • favicon.svg: 現代ブラウザ向け。拡大縮小きれい
  • favicon.ico: 古いブラウザ互換。複数サイズ内包できる
  • favicon-96x96.png: PNG favicon。SVG非対応や環境差対策
  • apple-touch-icon.png: iPhone/iPadでホーム画面追加時のアイコン
  • web-app-manifest-192x192.png: Android/PWA向け小さめアイコン
  • web-app-manifest-512x512.png: Android/PWA向け大きめアイコン
  • site.webmanifest: アプリ名、テーマ色、アイコン一覧を書く設定ファイル

SVGだけでも多くのブラウザでは表示できますが、古い環境やスマホ向けも考えると、ICO、PNG、Apple Touch Icon、Web App Manifestも置いておくと安心です。 と書いていますが、こんなに種類があることを初めて知りました…

publicディレクトリに配置する

Astroでは、publicディレクトリに置いたファイルは、そのままサイトのルートパスから配信されます。

たとえば、次のように配置します。

public/favicon.svg
public/favicon.ico
public/favicon-96x96.png
public/apple-touch-icon.png
public/web-app-manifest-192x192.png
public/web-app-manifest-512x512.png
public/site.webmanifest

public/favicon.svgは、ブラウザから見ると/favicon.svgとして参照できます。

Layout.astroで読み込む

このブログでは、共通のHTML構造をsrc/layouts/Layout.astroで管理しています。

もともとfavicon.svgだけを読み込む設定がありました。

<link rel="icon" type="image/svg+xml" href="/favicon.svg" />

ここに、他の形式も追加しました。

<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="manifest" href="/site.webmanifest" />

これで、通常のブラウザ、古いブラウザ、iPhoneやiPad、PWA的に扱われる場合など、複数の環境でアイコンが参照されるようになります。

manifestの名前を変更する

生成されたsite.webmanifestには、デフォルトのサイト名が入っていました。

{
  "name": "MyWebSite",
  "short_name": "MySite"
}

このままだとホーム画面などに追加したときの表示名がブログ名と合わないので、サイト名に変更しました。

{
  "name": "アルパカ プレス",
  "short_name": "アルパカ プレス"
}

細かいところですが、こういう表示名もブログに合わせておくと気持ちがいいです。

ビルド確認

最後にビルドして、Astro側でエラーが出ないことを確認しました。

npm run build

結果は成功でした。

今回の変更自体は静的ファイルの追加と<head>linkタグ追加なので、大きく壊れるような変更ではありません。ただ、hrefのパスミスやmanifestのJSON構文ミスがあるとビルドや表示に影響するため、最後に確認しておくと安心です。

まとめ

Astroブログでfaviconを設定する流れは、次の3ステップでした。

  1. favicon一式を用意する
  2. publicディレクトリに配置する
  3. 共通レイアウトの<head>linkタグを追加する

小さな変更ですが、ブラウザのタブに自分のアイコンが表示されると、ブログを育てている感じが少し増します。


関連記事