今すぐ実装!PWAマニフェストファイル完全解説 〜コピペで使えるサンプル付き〜
ウェブサイトをアプリ化する秘訣!マニフェストファイルの正しい設定方法とサンプルコードで、PWAの実装が驚くほど簡単に実装できます。

PWAのマニフェストファイル完全ガイド
はじめに
プログレッシブウェブアプリケーション(PWA)は、最新のウェブ技術を活用して、ネイティブアプリに近い体験をユーザーに提供する方法です。PWAの重要な構成要素の一つが「Webアプリマニフェスト」です。
マニフェストファイルは、アプリケーションの外観や動作をブラウザに伝える役割を持つJSONファイルです。ユーザーがアプリをホーム画面に追加したときのアイコン、起動画面、表示名、テーマカラーなどを定義します。適切に設定されたマニフェストファイルは、ユーザーエクスペリエンスを大幅に向上させ、PWAをより「アプリらしく」見せることができます。
このガイドでは、マニフェストファイルの基本から応用まで、実用的なサンプルコードと共に詳しく解説します。
マニフェストファイルの構成
マニフェストファイルは .webmanifest
または .json
の拡張子を持つJSONファイルです。一般的には manifest.json
または manifest.webmanifest
というファイル名で作成されます。
マニフェストファイルの基本的な構造は以下のとおりです:
{
"name": "アプリケーションの完全な名前",
"short_name": "短い名前",
"description": "アプリケーションの説明",
"icons": [
{
"src": "path/to/icon.png",
"sizes": "192x192",
"type": "image/png"
}
],
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#4285f4"
}
マニフェストファイルの設定
必須項目
マニフェストファイルには、以下の項目が必須とされています:
プロパティ | 説明 |
---|---|
name |
アプリケーションの完全な名前 |
short_name |
ホーム画面に表示される短い名前 |
icons |
異なるサイズのアイコンの配列 |
start_url |
アプリが起動するURL |
重要な任意項目
以下のプロパティは必須ではありませんが、優れたユーザー体験を提供するために設定することを強く推奨します:
プロパティ | 説明 | 可能な値 |
---|---|---|
display |
アプリケーションのUI表示モード | fullscreen , standalone , minimal-ui , browser |
background_color |
スプラッシュ画面の背景色 | 有効なCSSカラー値 |
theme_color |
アプリのテーマカラー | 有効なCSSカラー値 |
description |
アプリケーションの詳細な説明 | テキスト |
orientation |
優先される画面の向き | any , natural , landscape , portrait など |
高度な設定項目
より詳細な制御が必要な場合には、以下のプロパティも利用できます:
プロパティ | 説明 |
---|---|
scope |
アプリケーションのナビゲーションスコープ |
lang |
アプリケーションの主要言語 |
dir |
テキストの方向 (ltr , rtl , auto ) |
categories |
アプリケーションのカテゴリ |
screenshots |
アプリケーションのスクリーンショット |
shortcuts |
アプリケーションのショートカット |
related_applications |
関連するネイティブアプリケーション |
prefer_related_applications |
関連するネイティブアプリを優先するか |
マニフェストファイルの使用方法
マニフェストファイルを作成したら、HTMLの <head>
セクションに以下のようにリンクを追加します:
<link rel="manifest" href="/manifest.json">
ブラウザの互換性を高めるため、以下のメタタグも追加することをお勧めします:
<!-- iOS向け設定 -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="アプリ名">
<link rel="apple-touch-icon" href="/icons/apple-icon-180.png">
<!-- Microsoft向け設定 -->
<meta name="msapplication-TileImage" content="/icons/mstile-150x150.png">
<meta name="msapplication-TileColor" content="#ffffff">
マニフェストファイルのサンプル
以下は、完全に設定されたマニフェストファイルの例です:
{
"name": "Weather PWA",
"short_name": "Weather",
"description": "天気予報を提供するPWAアプリケーション",
"start_url": "/index.html",
"display": "standalone",
"background_color": "#3E4EB8",
"theme_color": "#2F3BA2",
"icons": [
{
"src": "/images/icons/icon-72x72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "/images/icons/icon-96x96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "/images/icons/icon-128x128.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "/images/icons/icon-144x144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "/images/icons/icon-152x152.png",
"sizes": "152x152",
"type": "image/png"
},
{
"src": "/images/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/images/icons/icon-384x384.png",
"sizes": "384x384",
"type": "image/png"
},
{
"src": "/images/icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"scope": "/",
"orientation": "portrait",
"lang": "ja",
"dir": "ltr",
"categories": ["weather", "utilities"],
"screenshots": [
{
"src": "/images/screenshots/screen1.png",
"sizes": "1280x720",
"type": "image/png"
},
{
"src": "/images/screenshots/screen2.png",
"sizes": "1280x720",
"type": "image/png"
}
],
"shortcuts": [
{
"name": "今日の天気",
"short_name": "今日",
"description": "今日の天気予報を表示",
"url": "/today",
"icons": [{ "src": "/images/today.png", "sizes": "192x192" }]
},
{
"name": "明日の天気",
"short_name": "明日",
"description": "明日の天気予報を表示",
"url": "/tomorrow",
"icons": [{ "src": "/images/tomorrow.png", "sizes": "192x192" }]
}
],
"related_applications": [
{
"platform": "play",
"url": "https://play.google.com/store/apps/details?id=com.example.weather",
"id": "com.example.weather"
},
{
"platform": "itunes",
"url": "https://itunes.apple.com/app/example-weather/id123456789"
}
],
"prefer_related_applications": false
}
マニフェストファイルの実装例
以下は、マニフェストファイルを実装する簡単なHTMLファイルの例です:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Weather PWA</title>
<!-- マニフェストファイルのリンク -->
<link rel="manifest" href="/manifest.json">
<!-- iOS向け設定 -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="Weather PWA">
<link rel="apple-touch-icon" href="/images/icons/apple-icon-180.png">
<!-- テーマカラー -->
<meta name="theme-color" content="#2F3BA2">
<style>
body {
font-family: 'Helvetica Neue', sans-serif;
margin: 0;
padding: 20px;
background-color: #f5f5f5;
}
header {
background-color: #2F3BA2;
color: white;
padding: 16px;
text-align: center;
border-radius: 8px 8px 0 0;
}
.content {
background-color: white;
padding: 20px;
border-radius: 0 0 8px 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
</style>
</head>
<body>
<header>
<h1>Weather PWA</h1>
</header>
<div class="content">
<h2>今日の天気</h2>
<p>東京: 晴れ、気温25℃</p>
<p>大阪: 曇り、気温23℃</p>
<p>福岡: 雨、気温22℃</p>
</div>
<script>
// Service Workerの登録
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.then(registration => {
console.log('Service Worker registered:', registration);
})
.catch(error => {
console.log('Service Worker registration failed:', error);
});
});
}
</script>
</body>
</html>
マニフェストファイルの検証
マニフェストファイルが正しく設定されているか確認するには、以下の方法があります:
-
Chrome DevTools: Chrome ブラウザで開発者ツールを開き、「Application」タブから「Manifest」セクションを確認できます。
-
Lighthouse: Chrome の Lighthouse ツールを使用して、PWAのチェックリストを実行し、マニフェストファイルの問題を検出できます。
-
PWA Builder: PWA Builder ウェブサイトでは、URLを入力するだけでマニフェストファイルの検証や生成が可能です。
マニフェストファイルの互換性
マニフェストファイルは主要なブラウザでサポートされていますが、ブラウザごとに一部の機能に違いがあります:
ブラウザ | サポート状況 |
---|---|
Chrome | 完全サポート |
Edge | 完全サポート |
Firefox | ほぼ完全サポート |
Safari | 部分的サポート(iOS 11.3以降) |
Samsung Internet | 完全サポート |
特にiOSでは、マニフェストファイルのサポートが限定的なため、前述のiOS向けメタタグを追加することが重要です。
まとめ
マニフェストファイルは、PWAをネイティブアプリのような体験に近づける重要な要素です。適切に設定することで、以下のメリットが得られます:
- ホーム画面にインストール可能
- スプラッシュスクリーンの表示
- アプリケーションのブランディング強化
- オフライン機能のサポート
- 独立したウィンドウでの起動
マニフェストファイルは比較的簡単に実装できますが、ユーザーエクスペリエンスに大きな影響を与えます。このガイドを参考に、あなたのウェブアプリをPWAに進化させましょう。
参考リンク
関連記事
人気記事

通りすがりのラマ🦙
このブログでは個人開発で得た知見や興味のあるテクノロジーに関する記事を執筆します。 日々公開されている情報に助けられているので、自分が得た知見も世の中に還元していければと思います。 解決できないバグに出会うと、草を食べます。🦙🌿 経歴: 情報工学部→日系SIer→外資系IT企業 興味: Webアプリケーション開発、Webデザイン、AI 趣味: 個人開発、テニス