マスカブルアイコン:セーフゾーンと purpose フィールド
マスカブルアイコンは、プラットフォームが使う任意の形(円、スクワークル、角丸正方形)に切り抜いても大事な部分が切れないよう、正方形いっぱいを埋めて描かれた PWA アイコンです。ロゴはおおよそ内側 80 パーセント、すなわちアイコン幅の 80 パーセントを直径とする中央の円の中に収め、背景は四辺すべてにあふれさせます。Web アプリマニフェストで "purpose": "maskable" として宣言します。
これが解決する問題
Android のランチャーは、ホーム画面が統一して見えるよう、すべてのアプリアイコンに形状マスクを適用します。その形はデバイスやランチャーによって異なり、あるものは円、別のものはスクワークル、また別のものは角丸正方形です。通常のウェブアイコンをそのシステムに渡すと、白い角丸ボックスの中に縮められるか、最悪の場合ロゴを貫いて切り抜かれてしまいます。
マスカブルアイコンは、その切り抜きを前提に作られています。アートワークは四辺すべてに伸び、意味のある内容は十分内側に置かれるため、どのマスクも背景の上に落ち、マークの上には落ちません。これは Android のアダプティブアイコンと同じ考え方を、一枚の画像と一つの宣言で表したものです。
宣言の仕方
"icons": [
{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" },
{
"src": "/icon-maskable-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]両方を出荷しましょう。既定 purpose のアイコンは切り抜かれない場所で使われ、マスカブルなものは切り抜かれる場所で使われます。
アイコンサイズごとのセーフゾーン
| アイコンサイズ | セーフゾーンの直径(80%) | 各辺の余白 |
|---|---|---|
| 192x192 | 154px | 19px |
| 384x384 | 307px | 38px |
| 512x512 | 410px | 51px |
マスカブルアイコンに関するよくある質問
既存のアイコンに余白を足すだけでいいですか?
それでほぼ用は足りますが、余白は透過ではなく塗りつぶした背景でなければなりません。透明な余白ではランチャーが切り抜く先が無く、真っ白なタイルの上に小さなロゴが乗る結果になります。
セーフゾーンが正しいかどうやって確認しますか?
アイコン幅の 80 パーセントで中央に円を重ね、大事なものが一つもその円を越えないことを確認し、それから PWA を Android デバイスにインストールしてランチャーを見てください。Chromium の DevTools でも、Application パネルからマニフェストアイコンをプレビューできます。
iOS はマスカブルアイコンを使いますか?
いいえ。iOS はホーム画面アイコンを apple-touch-icon の link から取り、独自の固定された角丸マスクを適用するため、maskable purpose はそこでは効きません。