メインコンテンツへスキップ

ホーム画面に追加したときのアプリアイコン(PWAアイコン)が、iPhoneだけ四隅が黒くなった話

(更新: 2026.05.19)

自作のWebアプリをスマホのホーム画面に追加したとき、アプリのアイコンが表示される。いわゆる「ホーム画面に追加したときのアプリアイコン」だ。業界ではこれを PWAアイコン(Progressive Web App アイコン)や apple-touch-icon と呼ぶことがある。

sodatelu(育児記録アプリ)のβ公開に向けてPWA対応を進めていたとき、最初に作ったアイコンをiPhoneのホーム画面に追加してみたら、四隅が黒く塗られた状態になっていた。

PWAアイコンbefore/after比較:四隅透明SVG(左・iconテスト)と全面塗り(右・sodatelu)のiPhoneホーム画面表示
左:四隅透明SVGをそのまま渡した版(iconテスト)/右:全面塗りに直した版(sodatelu本番)

「これはダサいな」とは思いつつ、最初のデザインだしあとでなんとでもなるので、そのまま放置していた。今日はその原因と直し方を書いておく。同じことで戸惑う人がいたら参考にしてほしい。

※「PWAアイコン」とは、Webサイト・Webアプリをスマホのホーム画面に追加したときに表示されるアイコンのこと。iOSでは apple-touch-icon、Androidでは manifest.webmanifest で定義したアイコンが使われます。

なぜiPhoneだと四隅が黒くなるのか

原因はシンプルで、最初に作ったSVGが「円形」デザインだったことにある。中央に丸い背景を描いて、その外側(四隅)を透明にしていた。

iOSはapple-touch-iconを「四角いキャンバス」として扱い、透明な部分を黒で塗る仕様になっている。つまり、四隅が透明になっているSVGを渡すと、そこが黒く埋まって表示される。

なお、iOSはOS側でアイコンに角丸処理を施してくれる。だから「角丸に見せたいからSVGを円形にする」という発想は必要ない。むしろ円形にすると四隅が黒く見えてしまうので逆効果だ。

直し方は「全面塗り」にするだけ

対処はとてもシンプルで、SVGの背景を四隅まで全部塗りつぶすだけでいい。

修正前(透明な四隅がある円形SVG):

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
  <!-- 円形の背景(四隅は透明) -->
  <circle cx="256" cy="256" r="256" fill="#3b82f6" />
  <!-- ロゴなど中央の要素 -->
  <text x="256" y="300" text-anchor="middle" font-size="200" fill="#fff">S</text>
</svg>

修正後(四隅まで全面を塗りつぶした四角形SVG):

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
  <!-- 四角いキャンバス全体を塗る -->
  <rect width="512" height="512" fill="#3b82f6" />
  <!-- ロゴなど中央の要素 -->
  <text x="256" y="300" text-anchor="middle" font-size="200" fill="#fff">S</text>
</svg>

<circle><rect width="512" height="512"> に差し替えるだけだ。角丸はOSが勝手につけてくれるので、SVG側では四角いままでいい。

修正してもすぐ反映されない場合はキャッシュが原因

SVGを修正してデプロイしたのに、iPhoneのホーム画面では相変わらず黒い四隅のままで変わらない、ということがある。

iOSはmanifestやapple-touch-iconをかなり強くキャッシュする。アイコンを差し替えても、Safariが古いキャッシュを保持しているので画面上は変わって見えない。

反映させるには以下の手順が必要だ。

  1. ホーム画面のアプリアイコンを長押しして削除する
  2. SafariでサイトのURLに再アクセスする
  3. 共有ボタン(□に↑のアイコン)→「ホーム画面に追加」で再登録する

この3ステップを踏まないと、デプロイした最新のアイコンが表示されない。「直したはずなのに変わらない」というときはまずここを試してほしい。

iOSのPWAアイコン仕様まとめ

ポイントをまとめると、こういうことだ。

  • iOSはアイコンの透明部分を黒で塗る仕様がある
  • 円形SVGを使うと四隅が透明になり、黒く見えてしまう
  • <circle><rect width="512" height="512"> に変えて全面塗りにすれば解決する
  • 角丸はOSが処理してくれるので、SVG側で丸める必要はない
  • 修正後に反映しない場合は「ホーム画面から削除 → Safariで再アクセス → 再追加」の3ステップが必要

「ホーム画面アイコンを全面塗りにする」という発想は最初は思いつきにくい。OSが角丸をつけてくれると知っていれば、最初から全面塗りで作れるのだけど。知っていれば5分で済む話なので、PWAを作っている人の参考になれば。

コメントを残す

メールアドレスは公開されません。

CAPTCHA



デザイン切替 // THEME
N
NPC アシスタント
オンライン