Copyright © 2025 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
この仕様は、開発者がウェブアプリケーションに関連するメタデータを一元的に管理できる、JSONベースのファイル形式を定義します。このメタデータには、ウェブアプリケーションの名前、アイコンへのリンク、ユーザーがウェブアプリケーションを起動した際に開く推奨URLなどが含まれます(これらに限定されません)。マニフェストでは、開発者がウェブアプリケーションのデフォルトの画面の向きを宣言したり、アプリケーションの表示モード(例:フルスクリーン)を設定することも可能です。さらに、マニフェストを使ってウェブアプリケーションを特定のURLに「スコープ」することもできます。これにより、マニフェストが適用されるURLを制限し、他のアプリケーションからウェブアプリケーションへの「ディープリンク」を提供する手段となります。
このメタデータを利用することで、ユーザーエージェントは開発者に、ネイティブアプリケーションに近いユーザー体験を作成する手段を提供できます。
このセクションは、本書の公開時点におけるステータスを説明します。現在のW3Cの出版物およびこの技術レポートの最新改訂版は、 W3C標準および草案一覧でご覧いただけます。
この文書はWeb Applications Working Groupによって、 勧告トラックを用いて作業草案として公開されました。
作業草案としての公開は、W3Cおよびそのメンバーによる承認を意味するものではありません。
この文書は草案であり、随時更新、置換、または他の文書によって廃止される可能性があります。進行中の作業以外のものとして引用するのは不適切です。
この文書は W3C特許ポリシーの下で運営されているグループによって作成されました。 W3Cは、 グループの成果物に関連して提出された特許開示の一覧を公開しています。該当ページには特許を開示するための手順も記載されています。特許に関する実際の知識があり、当該特許が 必須クレームを含むと考える場合は、 W3C特許ポリシー第6項に従って情報を開示しなければなりません。
この文書は 2025年8月18日 W3Cプロセス文書に準拠しています。
アプリケーションマニフェストは、ウェブアプリケーションが起動される際の、起動パラメータやアプリケーションのデフォルト設定を含む [JSON] ドキュメントです。
マニフェストには マニフェストURL が関連付けられており、これは マニフェスト が取得された [URL] です。
マニフェストのルートには、以下のいずれかのメンバーを持つことができ、すべて任意です。メンバーの順序は自由です。
background_color
dir
display
icons
id
lang
name
orientation
scope
short_name
shortcuts
start_url
theme_color
このセクションは規範的ではありません。
このセクションでは、開発者が本仕様の様々な機能をどのように活用できるかを示します。
このセクションは規範的ではありません。
以下は、典型的な マニフェストの例です。
{
"lang": "en",
"dir": "ltr",
"name": "Super Racer 3000",
"short_name": "Racer3K",
"icons": [{
"src": "icon/lowres.webp",
"sizes": "64x64",
"type": "image/webp"
}, {
"src": "icon/lowres.png",
"sizes": "64x64"
}, {
"src": "icon/hd_hi",
"sizes": "128x128"
}],
"scope": "/",
"id": "superracer",
"start_url": "/start.html",
"display": "fullscreen",
"orientation": "landscape",
"theme_color": "aliceblue",
"background_color": "red"
}
このセクションは規範的ではありません。
この例では、"manifest"リンクタイプの使い方、およびウェブアプリケーションにフォールバック名やアイコンセットを与えるための他の
meta
や
link
要素の使い方も示しています。
<!doctype>
<html>
<title>Racer 3K</title>
<!-- 起動設定 -->
<link rel="manifest" href="manifest.webmanifest">
<!-- レガシーブラウザ用フォールバックアプリメタデータ -->
<meta name="application-name" content="Racer3K">
<link rel="icon" sizes="16x16 32x32 48x48" href="lo_def.ico">
<link rel="icon" sizes="512x512" href="hi_def.png">
このセクションは規範的ではありません。
このセクションでは、icons
メンバーを使って、ウェブアプリケーションに複数のアイコンを宣言する方法を示します。以下の例では、開発者はウェブアプリケーションに関連付けるアイコンについて以下の選択をしています。
type
メンバーで明示的にWebPとして指定しています。ユーザーエージェントがWebPをサポートしない場合は、同じサイズの2つ目のアイコンがフォールバックされます。このアイコンのMIMEタイプはHTTPヘッダーで判別するか、アイコンの先頭バイトを受信した時点でユーザーエージェントがスニッフィングできます。
アイコンのリストはユーザーエージェントに渡され、ユーザーエージェントが文脈や表示場所ごとに最適なアイコンを選択します。
{
"icons": [
{
"src": "icon/lowres.webp",
"sizes": "48x48",
"type": "image/webp"
},{
"src": "icon/lowres",
"sizes": "48x48"
},{
"src": "icon/hd_hi.ico",
"sizes": "72x72 96x96 128x128 256x256"
},{
"src": "icon/hd_hi.svg"
}]
}
このセクションは規範的ではありません。
以下の例では、開発者は2つのショートカットを追加しています。マニフェストのURLが https://example.com/manifest.webmanifest であると仮定します:
{
"shortcuts": [
{
"name": "Play Later",
"description": "View the list of podcasts you saved for later",
"url": "/play-later",
"icons": [
{
"src": "/icons/play-later.svg",
"type": "image/svg+xml"
}
]
},
{
"name": "Subscriptions",
"description": "View the list of podcasts you listen to",
"url": "/subscriptions?sort=desc"
}
]
}
このセクションは規範的ではありません。
scope
メンバーは、どのドキュメントがウェブアプリケーションの一部か、そうでないかをブラウザに伝えます。つまり、ユーザーがウェブサイトを移動する際に、どのウェブページセットにマニフェストが "適用" されるかを指定します。
例えば、{"scope": "/"}
は、マニフェストが同一オリジンの全ドキュメントに適用されることを意味します。一方、{"scope":
"/racer/"}
は、"/racer/" 以下のパスにあるドキュメントのみにマニフェストが スコープ内
とみなされます。したがって、"/racer/race1.html" や "/racer/race2.html" などはすべて スコープ内
ですが、"/elsewhere/" やルートの "/" は "スコープ外" で、マニフェストはこれらのパスのドキュメントには適用されません。スコープパスは1つのみサポートされます。技術的な詳細は 5.
ナビゲーションスコープ を参照してください。
マニフェストの適用 とは、マニフェスト内で指定された表示関連のメンバー(例: display "fullscreen" や特定の画面向きの指定)が有効になることを意味します。アプリケーションが スコープ内 のURLに遷移している限り、ブラウザはマニフェストを適用し続けます。しかし、ウェブアプリケーションが "スコープ外" に遷移すると、マニフェストは適用されなくなり、ブラウザ独自のデフォルト設定が適用されます。例えば、アプリケーションがフルスクリーン表示されなくなり、通常のブラウザタブ上のウェブページとして表示されるようになります。スコープ内外への遷移時の扱いは実装者に委ねられています。技術的な詳細は 1.16.5 マニフェストの適用 を参照してください。
最後に、ユーザーがオリジン内のどのドキュメントからでもウェブアプリケーションをインストールできる可能性があるため、マニフェストには常に scope
メンバーを宣言するのが良い慣習です。マニフェストに scope
メンバーがない場合、start_url
メンバーのパスがフォールバックとして使われます。さらに start_url
メンバーもない場合は、ウェブアプリケーションがインストールされたドキュメントURLがスコープとして使われます。予期しないナビゲーション動作を避けるため、著者は常に scope
メンバーを(できれば "/"
で)含めるべきです。
マニフェスト
の
dir
メンバーは、ローカライズ可能メンバーの
デフォルト方向を指定します。
dir
メンバーの値には
テキスト方向を設定できます。
テキスト方向は次の通りで、ローカライズ可能メンバーの値がデフォルトで以下のようになります:
マニフェスト
の
lang
メンバーは、文字列であり、
言語タグの形式で、マニフェストのローカライズ可能メンバーの値の言語を指定します。lang
メンバーが指定されていない場合、言語は不明として扱われます。
言語を指定することで、ユーザーエージェントは適切な処理やリソース(フォント、スタイリング、ハイフネーション、アクセシビリティのための音声合成など)を選択でき、ユーザー体験が向上します。
言語タグ
は 文字列であり、[BCP47] で定義される
Language-Tag
の生成規則に一致します。
言語タグは大文字・小文字を区別しません。例として
'fr
'(フランス語)、'en-AU
'(オーストラリア英語)、'zh-Hans-CN
'(中国で使われる簡体字中国語)などがあります。
lang
メンバーの処理は、順序付きマップ
json と 順序付きマップ
manifest が与えられたとき:
false
を返した場合は return する。
マニフェスト
の
name
メンバーは、文字列で、
ウェブアプリケーションの名前を表します。これは通常、ユーザーに表示される(例えば他のアプリ一覧やアイコンのラベルなど)名前です。
name
メンバーは ローカライズ可能メンバーです。
name
メンバーは、アクセシブルネームとして
インストール済みウェブアプリケーションに使われます。
マニフェスト処理時は、
テキストメンバーの処理アルゴリズムを使って
name
メンバーを処理します。
マニフェスト
の
short_name
メンバーは、文字列で、
ウェブアプリケーションの短縮名を表します。これは、ウェブアプリケーションの完全な名前を表示するためのスペースが不足している場合に使用されます。
short_name
メンバーは ローカライズ可能メンバーです。
マニフェスト処理時は、
テキストメンバーの処理アルゴリズムを使って
short_name
メンバーを処理します。
マニフェスト
の
scope
メンバーは、文字列であり、
このウェブアプリケーションのナビゲーションスコープを表します。
アプリケーションコンテキストの範囲を決定します。
scope
メンバーの処理は、順序付きマップ
json と 順序付きマップ
manifest が与えられた場合:
マニフェスト
の
icons
メンバーは、ウェブアプリケーションを様々な文脈で象徴的に表す画像です。
例えば、他のアプリ一覧でウェブアプリケーションを表したり、OSのタスクスイッチャーやシステム設定に統合するために利用できます。
icons
メンバーは ローカライズ可能メンバーです。
マニフェスト
の
display
メンバーは、ウェブアプリケーションの表示モードに関する開発者の希望を表します。値は
display mode です。
display mode のいずれかを指定できます。
display
メンバーの処理は、順序付きマップ
json と 順序付きマップ
manifest が与えられた場合:
マニフェスト
の
orientation
メンバーは 文字列で、
ウェブアプリケーションの全てのトップレベル閲覧コンテキストの
デフォルト画面向きとして機能します。値は
OrientationLockType
列挙型のいずれかで、
本仕様では orientation値
("any"、"natural"、"landscape"、"portrait"、"portrait-primary"、"portrait-secondary"、"landscape-primary"、"landscape-secondary")です。
ユーザーエージェントが orientation
メンバーの値を デフォルト画面向きとしてサポートしている場合、
その値はウェブアプリケーションの存続期間中(実行時に他の手段で上書きされない限り)デフォルト画面向きとなります。
つまり、ユーザーエージェントは orientation がアンロックされるたび [SCREEN-ORIENTATION] や
トップレベル閲覧コンテキスト の ナビゲート時に、
デフォルト画面向き に戻さなければなりません(MUST)。
この仕様は [SCREEN-ORIENTATION] の
OrientationLockType
に依存しますが、
ユーザーエージェントが [SCREEN-ORIENTATION] API を実装するのは
任意です。APIのサポートはもちろん推奨されます。
UI/UXの制約やプラットフォーム慣習によって、ある画面向きと
同時に使えないものがあります。
どの画面向きと表示モードが同時に使えないかは実装者の裁量です。例えば、あるユーザーエージェントでは
browser
display mode 中は
アプリケーションのデフォルト画面向きを変更する意味がない場合があります。
ウェブアプリケーションが実行されている間は、他の手段([SCREEN-ORIENTATION] APIなど)でも トップレベル閲覧コンテキスト の向きを変更できます。
orientation
メンバーの処理は、順序付きマップ
json と 順序付きマップ
manifest が与えられた場合:
マニフェスト
の
start_url
メンバーは 文字列であり、
開始URL
を表します。これは開発者がユーザーエージェントに、ウェブアプリケーションを起動する際(例:端末のアプリメニューやホーム画面からアイコンをクリックした時)に読み込んでほしいと推奨する URL です。
start_url
メンバーはあくまで助言であり、ユーザーエージェントは任意で 無視したり、ユーザーが利用しないよう選択できるようにしても構いません。また、ユーザーエージェントは、例えばウェブアプリのブックマーク作成時やそれ以降、エンドユーザーがURLを変更できるようにしても構いません。
start_url
メンバーの処理は、順序付きマップ
json、順序付きマップ
manifest、URL
manifest URL、および URL document URL が与えられたとき:
start_url
のトラッキング
start_url
を工夫して、アプリケーションがブラウザ外から起動されたことを示すようにすることも考えられます(例:"start_url": "index.html?launcher=homescreen"
)。これは解析やカスタマイズに役立つ場合があります。しかし、開発者が
start_url
にユーザーを一意に特定する文字列を含めることも考えられます(例:サーバー割り当てID
"?user=123"
、"/user/123/"
、"https://user123.foo.bar"
など)。これはフィンガープリント/プライバシーに関わる情報であり、ユーザーが気づかない場合もあります。
start URL にユーザーを一意に識別する情報を含めることは悪い慣行です。なぜなら、ユーザーがサイトデータを消去してもフィンガープリントは消去されないためです。ただし、この仕様では開発者がそれを行うことを実際に防ぐことはできません。
上記を踏まえ、インストール時やそれ以降、ユーザーエージェントはユーザーがアプリケーションの start URL を確認・必要に応じて修正できるようにすることが推奨されます。
ユーザーエージェントはこのようなフィンガープリントに対し、他の保護策を提供しても構いません。例えば、ユーザーがオリジンのデータを消去した際、そのオリジンの スコープ内 のアプリケーションのアンインストールを提案し、アプリの開始URLに残るフィンガープリントを除去しても良いでしょう。
マニフェスト
の
id
メンバーは 文字列で、
アプリケーションの 識別子 を表します。
識別子はURL形式で、start URL と同一オリジンです。
識別子は、ユーザーエージェントがアプリケーションをユニバーサルに一意に識別するために利用されます。ユーザーエージェントが、既にインストールされているアプリケーションと一致しない 識別子 を持つマニフェストを見つけた場合、それを別個のアプリケーションとして扱うべきです(SHOULD)、たとえ他のアプリと同じURLから提供されていても。ユーザーエージェントが、manifest["id"] が既存アプリの 識別子 と 等しい(フラグメント除外オプションを任意で設定)場合は、 そのマニフェストを既存アプリのマニフェストの置き換えとみなし、別のアプリとして扱わない(SHOULD)、たとえ以前と異なるURLから提供されていても。
識別子 は、ウェブアプリケーション一覧を収集するサービスなどでアプリを一意に識別するために使えます。
id
メンバーの処理は、順序付きマップ
json と 順序付きマップ
manifest が与えられたとき:
マニフェスト
の
theme_color
メンバーは、アプリケーションコンテキストのデフォルトテーマカラーとして機能します。テーマカラーが何かについては、[HTML]で定義されています。
ユーザーエージェントがtheme_color
メンバーの値をデフォルトのテーマカラーとして採用した場合、そのカラーはマニフェストが適用されるすべての閲覧コンテキストのテーマカラーとなります。ただし、ユーザーエージェントは、デフォルトのテーマカラーを上書きしてもよいです。これは、ドキュメントのURLがスコープ内であり、そのアプリケーションコンテキストのマニフェストに含まれている場合に、
meta
要素の
name
属性が
"theme-color
"
である場合です。
ただし、ユーザーエージェントは、
meta
要素の
name
属性が "theme-color" であるドキュメントの
URLがスコープ内でない場合には、
デフォルトのテーマカラーを上書きすべきではありません。なぜなら、アプリケーションはそれらのドキュメントを制御できないためです。
ユーザーエージェントは、テーマカラーのアルファ成分を文脈に応じて無視しても構いません。例えば、多くの環境では テーマカラーは透明にできません。
実装者は、theme_color
メンバーで定義された値を
prefers-color-scheme 対応のために上書きしても構いません。
マニフェストの処理時には、
カラー・メンバーの処理アルゴリズムを使用して
theme_color
メンバーを処理します。
マニフェスト
の
メンバーはウェブアプリケーションの期待される背景色を記述します。これは既にアプリケーションのスタイルシートで設定可能ですが、
ユーザーエージェントが、マニフェストが既知でファイルがまだ利用可能でない(ネットワークから取得中やディスクから読み込み中)場合に、ウェブアプリケーションの背景色を描画するために使えます。
background_color
background_color
メンバーは、ウェブアプリケーションのローディング中にユーザー体験を向上させるためのものであり、
ユーザーエージェントは、ウェブアプリケーションのスタイルシートが利用可能な場合には背景色として使用してはなりません(MUST NOT)。
実装者は、background_color
メンバーで定義された値を
prefers-color-scheme 対応のために上書きしても構いません。
マニフェストの処理時には、
カラー・メンバーの処理アルゴリズムを使用して
background_color
メンバーを処理します。
マニフェスト
の
shortcuts
メンバーは、ウェブアプリケーション内の主要タスクへのアクセスを提供するリストです。各要素は
shortcut item です。
ショートカットの表示方法や表示数は、ユーザーエージェントやOSの裁量によって決定されます。
shortcuts
メンバーの処理は、順序付きマップ
json、順序付きマップ
manifest、
URL manifest URL が与えられたとき:
ユーザーエージェントは、OSのアプリコンテキストメニュー(例:右クリックや長押し)と同じ方式でショートカットを公開するべきです(SHOULD)。また、manifest内の順番どおりに表示すべきです。表示の仕方もOSのコンテキストメニューと一貫性を持たべきです。OSの仕様や制限に合わせて表示数を省略しても構いません(MAY)。
ローカライズ可能メンバーは、
マニフェスト内でローカライズできるメンバーです。各
ローカライズ可能メンバーには、対応する
*_localized
メンバーがあり、*
はメンバー名を表します。
言語マップは、 順序付きマップであり、キーは 言語タグ、値は ローカライズ値です。 ローカライズ値は、キーで指定された言語でローカライズされたコンテンツです。
ローカライズ可能メンバーに割り当てる値は
デフォルト表現です。
*_localized
メンバーには
言語マップが入り、
アプリケーション内で指定したローカライズ可能メンバーの
ローカライズ値を定義します。ユーザーエージェントは、ユーザーのローカライズ設定に従って
ローカライズ値のうち、
言語タグキーが最も一致するものを選択すべきです(SHOULD)。
該当するローカライズ値がない場合は、
デフォルト表現を使用します。
ローカライズテキストオブジェクトは、以下のプロパティを持つ 順序付きマップです:
value
dir
(任意)
lang
(任意)
文字列を受け付けるローカライズ可能メンバーに対しては、
*_localized
メンバーの 言語マップに、文字列または ローカライズテキストオブジェクトを ローカライズ値として指定できます。
文字列が使われる場合、および dir
メンバーが ローカライズテキストオブジェクトに存在しない場合は、
デフォルト方向(マニフェストの dir
メンバー)が
適用されます。
文字列が使われる場合、および
lang
メンバーが ローカライズテキストオブジェクトに存在しない場合は、
言語マップキーの 言語タグが適用されます。
*_localized
テキストメンバーの処理は、順序付きマップ json、順序付きマップ map、
文字列 member、
defaultDirection を受け取る:
ローカライズテキストオブジェクトの処理は、文字列 または 順序付きマップ localizedValue、 defaultLanguageTag、 map、 member、 defaultDirection を受け取る:
ローカライズテキストオブジェクトの処理アルゴリズムは、
文字列と
ローカライズテキストオブジェクトの両方を
ローカライズ値として受け取れますが、処理後は
ローカライズテキストオブジェクトの
value
、lang
、
dir
がセットされた状態で正規化されます。
リスト形式で画像リソースを受け付けるローカライズ可能メンバーの場合は、
*_localized
メンバーの
言語マップに
画像リソースのリストを
ローカライズ値として指定できます。
*_localized
画像リソースメンバーの処理は、
順序付きマップ json、
順序付きマップ map、
文字列 member、
manifest URL manifest URL を受け取る:
false
なら continue。
このセクションでは、マニフェストの処理および 適用するマニフェストのためのアルゴリズムを定義します。
ユーザーエージェントは、リンクタイプ "manifest" と関連するリンクされたリソースの取得および処理手順を 必ず サポートしなければなりません。
無視するよう指示された場合、ユーザーエージェントは、その条件を引き起こしたマニフェスト、メンバー、または値が存在しないかのように動作しなければなりません。
次のアルゴリズムは、処理拡張ポイントを提供します:マニフェストに新しいメンバーを追加する他の仕様は、このアルゴリズムのこのポイントでフックすることが推奨されます。既存の manifest オブジェクトの値を変更すべきではありません。
処理拡張ポイントは、 モンキーパッチに関連する問題の回避を目的としています。
マニフェストの処理の手順は、以下のアルゴリズムで示されます。 このアルゴリズムは URL document URL、URL manifest URL、および バイト列 bodyBytes を受け取ります。
dir
メンバーの処理を json と manifest を渡して実行します。
lang
メンバーの処理を json と manifest を渡して実行します。
*_localized
テキストメンバーの処理を json、manifest、"name_localized"、および manifest["dir"] を渡して実行します。
*_localized
テキストメンバーの処理を json、manifest、"short_name_localized"、および manifest["dir"] を渡して実行します。
start_url
メンバーの処理を json、manifest、manifest URL、document URL を渡して実行します。
id
メンバーの処理を json と manifest を渡して実行します。
scope
メンバーの処理を json、manifest、manifest URL を渡して実行します。
display
メンバーの処理を json と manifest を渡して実行します。
*_localized
画像リソースメンバーの処理を json、manifest、"icons_localized"、manifest
URL を渡して実行します。
orientation
メンバーの処理を json、manifest を渡して実行します。
shortcuts
メンバーの処理を json、manifest、manifest URL を渡して実行します。
sRGB の色、またはユーザーエージェントが外部知識なしに sRGB
に変換できる色(例:"AliceBlue"
)のみがサポートされます。例えば、lab(…)
や
color(display-p3, …)
は外部知識なしに sRGB
に変換できますが、color(--custom-profile, …)
はマニフェストで指定できない "@color-profile"
ルールの一致を探す必要があります。
カラー メンバーの処理を行うには、順序付きマップ json、順序付きマップ map、および 文字列 member を使用します:
テキストメンバーの処理を行うには、順序付きマップ json、順序付きマップ map、および 文字列 member を使用します:
マニフェストの処理の手順は、
[HTML] の
link
要素の処理ステップによって呼び出されますが、ユーザーエージェントが関連する
ドキュメントなしでマニフェストを処理するために呼び出す場合もあります。
この場合、対応する [HTML] の手順と同等の保証を満たすために、ユーザーエージェントは少なくとも過去のある時点で以下を確認すべきです:
link
要素
linkElement
を持ち、rel
が
manifest
で、
href
が
manifest URL に解決されること
Origin
が
document URL の オリジンであり、
credentials mode が
CORS 設定属性 credentials
mode
で
linkElement の
crossorigin
属性値に従うこと
処理済みマニフェストは、適用されることで、トップレベルの閲覧コンテキストに、マニフェストのメンバーが閲覧コンテキストの表示や動作に影響するようになります。ユーザーエージェントは、トップレベルの閲覧コンテキストが作成された際、適用してもよい マニフェストを、ナビゲーション開始前に適用することがあります。
マニフェストが適用されたトップレベルの閲覧コンテキストは、アプリケーションコンテキストと呼ばれます。
アプリケーションコンテキストが、ユーザーエージェントがナビゲートしてディープリンクに移動した結果として作成された場合、ユーザーエージェントは直ちにディープリンクにナビゲートし、historyHandling を
"replace
" に設定しなければなりません。そうでない場合、アプリケーションコンテキストが作成された時点で、ユーザーエージェントは直ちにナビゲートしてstart URLに移動し、historyHandling を
"replace
" に設定しなければなりません。
manifest
リンク関係として規定されているように、マニフェストはページ読み込みごとに取得・処理されます。マニフェストの処理が成功した場合、ユーザーエージェントは更新されたマニフェストをアプリケーションに関連付けられた現在および将来のアプリケーションコンテキストに適用してもよいです。
更新の目的において、以下のメンバーは セキュリティ上重要なメンバーです。これらはインストール時や起動画面で表示されます:
short_name
および
short_name_localized
内のローカライズ表現
icons
および icons_localized
内のローカライズ表現
name
および name_localized
内のローカライズ表現
セキュリティ上重要なメンバーは、方向に関係なく [UTS55] で説明されているように双方向に分離された方法で表示するべきです。
ユーザーエージェントは、セキュリティ上重要なメンバーへの変更をユーザーの明示的な許可なしに自動的に適用すべきではありません。
代わりに、ユーザーエージェントはセキュリティ上重要なメンバーへの変更を適切な管理オプションとともに提示し、ユーザーがウェブアプリケーションの更新について判断できるようにするべきです。
更新内容にセキュリティ上重要なメンバーの変更が含まれていない場合、ユーザーエージェントは変更を自動的に適用してもよいです。
ユーザーがローカライズ設定を変更した場合、ユーザーエージェントは起動画面で表示されるセキュリティ上重要なメンバーを、
メンバーで指定されたローカライズ表現に自動的に調整してもよいです。これらの変更は、ユーザーが次回ウェブアプリケーションを開く際に提示されるべきです。
*_localized
各マニフェスト画像リソースは、ウェブアプリケーションの一部として概念的に含まれる画像リソースであり、オブジェクトを使用するメンバーの意味に応じて様々なコンテキスト(例:アプリメニューのアイコンなど)で使用するのに適しています。
マニフェスト画像リソースは、画像リソースと異なり、追加のpurpose
メンバーを持つことができます。
ユーザーエージェントは、マニフェスト画像リソースに関連付けられた画像を、表示前にプラットフォームのビジュアルスタイルにより適合させるために修正してもよいです。例えば、角を丸めたり特定の色で塗るなどです。開発者は、こうした状況に備え、色の変更や角の切り捨てなどで重要な情報が失われないよう画像リソースを準備することが推奨されます。
purpose
メンバーは、順序のない一意な空白区切りトークンの集合です。許可される値はアイコン目的です。
マニフェスト画像リソースがアイコンとして使用される場合、 開発者は画像がホストOSで特別な目的(つまり統合の向上)のために使われることを示唆できます。 ユーザーエージェントは、アイコンをその目的以外で使用すべきではありません。
例えば、purposeが"monochrome"のアイコンは、バッジやピン留めアイコンなど、アプリのフルカラー起動アイコンとは視覚的に区別されるソリッド塗りのアイコンとして使われます。ユーザーエージェントはpurpose
の値を、どこでどのように表示するかのヒントとして利用します。開発者が特に宣言しない限り、ユーザーエージェントはアイコンを任意の目的で使用できます。
アイコン目的は以下の通りです:
purpose
が不要な場所で自由にアイコンを表示できます。例えば、マニフェスト画像リソースのpurposeが"any"の場合、"monochrome"が必要な場面では使われません。
アイコン目的リストは、リスト « "monochrome", "maskable", "any" »です。
アイコンが複数の目的を持つ場合、それらのいずれかで使用できます。指定された目的のいずれも認識されない場合、そのアイコンは完全に無視されます。例えば、purposeが"monochrome fizzbuzz"
の場合、"monochrome"が有効なので単色アイコンとして使われますが、purposeが"fizzbuzz"
だけなら無視されます。
画像の目的を決定するには、順序付きマップ jsonを与えます:
アイコン画像の取得が許可されるかどうかは、マニフェストの所有者Document
に関連付けられたimg-src
ディレクティブ
[CSP3] によって管理されます。
一部のプラットフォームでは独自の好ましいアイコン形状がありますが、ウェブアプリケーションは複数のプラットフォームで動作する必要があるため、maskable目的を追加することで、ユーザーエージェント指定のマスクをアイコンに適用できることを示すことができます。これにより、プラットフォーム上でアイコンが一体的に見えるようにし、場所によって異なるマスクや背景色を適用できます。
セーフゾーンは、maskableアイコン内で常に可視であることが保証される領域です。アイコンの中心に中心点を持つ半径2/5(40%)の円として定義されます。アイコンが正方形でない場合は、幅と高さの小さい方が基準です。
このゾーン内のすべてのピクセルはすべてのマスクで必ず見えることが保証されます。セーフゾーン外のピクセルは、マスクの種類によっては見える場合もありますが保証されません。
ユーザーエージェントは、任意のサイズのマスクを適用してもよいですが、画像サイズの2/5(幅と高さの小さい方が基準)より中心から遠いピクセル(セーフゾーン外)は透明にします。
ユーザーエージェントは、セーフゾーン内のピクセルを透明にしてはなりません。
ユーザーエージェントは、アイコンに追加のパディングを付与して拡大してもよいです。
アイコンが透明ピクセルを含む場合、ユーザーエージェントはアイコンをユーザーエージェントが選択したソリッド塗り(例:白)に合成しなければなりません。
maskableアイコンでは透明ピクセルの使用を避けることが推奨されます。
セーフゾーン内に収めることで、ほとんどのアイコンは上下左右に約10%の余白(コンテンツまたは非必須コンテンツ、例えばアイコンの背景)ができます。セーフゾーン以外がマスクされた場合もアイコンを確認することが推奨されます。
一部のプラットフォームでは、アイコンがソリッド塗り(単色など)で表示されることが強制され、アイコンの透明度のみマニフェストで指定できます。ウェブアプリケーションは複数のプラットフォームで動作する必要があるため、monochrome目的を追加することで、ユーザーエージェント指定の色をアイコンに適用できることを示すことができます。これにより、プラットフォーム上でアイコンが一体的に見えるようにし、場所によって異なる色やパディングを適用できます。
monochromeアイコンを表示する際、ユーザーエージェントはピクセルの赤、緑、青成分を独立して表示してはなりません。ユーザーエージェントは各ピクセルを元のアルファ値で表示すべきですが、赤・緑・青値はユーザーエージェントが選択した値にします。すべてのピクセルで同じ色値を使用することが推奨されます。
monochromeアイコンのデザイナーは、全ピクセルを黒にして透明度のみでシルエットを作成することができます。
ユーザーエージェントは、追加のパディングを付与してアイコンを拡大してもよいです。
ユーザーエージェントは、透明ピクセルの背後に任意の背景色を追加してもよいですが、背景とアイコンのコントラストが十分であることを推奨します。
画像リソースの処理を行うには、リスト images、 順序付きマップ map、manifest URL、および文字列 memberを与えます:
各ショートカット項目は 順序付きマップであり、ウェブアプリ内の重要なタスクやページへのリンクを表します。以下のメンバーを持ちます:
ユーザーエージェントは、これらのメンバーを使って、ユーザーがウェブアプリのアイコンを操作した際にOSが表示するコンテキストメニューを組み立てることができます。ユーザーがOSメニューからショートカットを起動した場合、ユーザーエージェントはショートカットの起動を行うべきです。
ショートカット項目の
name
メンバーは、文字列であり、通常ユーザーにコンテキストメニューで表示されるショートカットの名称を表します。
name
メンバーはローカライズ可能なメンバーです。
ショートカット項目の
short_name
メンバーは文字列であり、ショートカットの名称の短縮版を表します。これは、フルネームを表示するのに十分なスペースがない場合に使用されます。
short_name
メンバーはローカライズ可能なメンバーです。
ショートカット項目の
description
メンバーは文字列であり、開発者がショートカットの目的を説明できます。
ユーザーエージェントはこの情報を支援技術に公開してもよいです。
description
メンバーはローカライズ可能なメンバーです。
ショートカット項目の
url
メンバーは、処理済みマニフェストのスコープ内のURLであり、関連するショートカットが起動されたときに開かれます。
ショートカット項目の
icons
メンバーは、様々なコンテキストでショートカットのアイコン表現となる画像を列挙します。
icons
メンバーはローカライズ可能なメンバーです。
ショートカット項目 shortcut(manifestを持つ)が起動された場合、ウェブアプリケーションの起動の手順をmanifestとshortcut.urlで実行します。
ショートカットの処理を行うには、順序付きマップ item、URL manifest URL、URL scope、text-direction defaultDirectionを与えます:
*_localized
テキストメンバーの処理をitem、shortcut、"name_localized"、defaultDirectionで実行する。
*_localized
テキストメンバーの処理をitem、shortcut、"short_name_localized"、defaultDirectionで実行する。
*_localized
テキストメンバーの処理をitem、shortcut、"description_localized"、defaultDirectionで実行する。
*_localized
画像リソースメンバーの処理をitem、shortcut、"icons_localized"、manifest
URLで実行する。
どのウェブサイトもインストール可能なウェブアプリケーションです。
ユーザーエージェントは、エンドユーザーがウェブアプリケーションを自身のデバイスにインストールできる方法を提供できます。これにより、ユーザーはマニフェストのメンバーが適用された新しいトップレベルの閲覧コンテキストを生成できます。
ウェブアプリケーションがインストールされると、それはインストール済みウェブアプリケーションとして知られます。つまり、マニフェストの各メンバーまたはそのデフォルト値が、ウェブアプリケーションの適用されたトップレベルの閲覧コンテキストに反映されます。これにより、インストール済みウェブアプリケーションは従来のブックマークと区別され、従来のブックマークからウェブページを開いてもマニフェストのプロパティは適用されません。
例えば、インストールをサポートするユーザーエージェントでは、ウェブアプリケーションはホーム画面やランチャー、スタートメニュー上でラベル付きアイコンとして表示・起動され、エンドユーザーからはネイティブアプリと区別がつかない形で提供できます。ウェブアプリケーションの起動時、ユーザーエージェントはマニフェストを適用し、トップレベルの閲覧コンテキストにstart URLが読み込まれる前に反映します。これにより、ユーザーエージェントはマニフェストの値(表示モードや画面の向きなど)を適用する機会を得ます。あるいは、ユーザーエージェントがウェブアプリケーションを自身のブックマークリストにインストールすることもできます。
アプリケーション名は、name
メンバーまたはshort_name
メンバーから導出されます。ユーザーエージェントは、まず対応する
メンバーからローカライズ値を解決すべきです。
*_localized
name
メンバーまたはshort_name
メンバーが不足・空・型違いの場合、ユーザーエージェントはname
メンバーをshort_name
の代用に、またはshort_name
メンバーをname
の代用に使用してもよいです。
name
もshort_name
も不足・空・型違いの場合、ユーザーエージェントはDocument
から適切な代用を探してもよいです(例:application-name
をname
やshort_name
の代用に利用)。または、プラットフォームの慣習に従うデフォルト名(例:"Untitled")をユーザーエージェントが割り当てすべきです。または、ユーザーエージェントがエンドユーザーに入力させることもできます。
name
とshort_name
の両方がある場合、どちらがスペースに適するか(例えばアイコン下はshort_name
が良いなど)は実装に任されます。
OSやユーザーエージェントの判断で、処理済みマニフェストを用いてウェブアプリケーションの起動手順を実行します。
これは通常、ユーザーがホーム画面やランチャー、スタートメニューなどのアプリ起動UIからインストール済みウェブアプリを選択した際に行われます。
ウェブアプリケーションの起動手順は、次のアルゴリズムで示されます。アルゴリズムは処理済みマニフェスト manifest、オプションのURL target URL、オプションのPOSTリソース POST resourceを受け取り、アプリケーションコンテキストを返します。
target URLがある場合は、manifestのスコープ内でなければなりません。
他の仕様はこのアルゴリズムを独自の手順に置き換えてもよいです。置き換えはすべてのウェブアプリケーションの起動呼び出しに適用されます。
このアルゴリズムは、実験的なlaunch_handlerマニフェストフィールドで起動動作を構成できるよう、置き換え可能にしています。置き換え後のアルゴリズムは通常は新しいアプリケーションコンテキストの生成を呼び出しますが、条件によっては異なる動作になります。
新しいアプリケーションコンテキストの生成手順は、以下のアルゴリズムで示されます。アルゴリズムは処理済みマニフェスト manifest、オプションのURL target URL、オプションのPOSTリソース POST resourceを受け取り、アプリケーションコンテキストを返します。
エンドユーザーがウェブアプリケーションをインストールできるUIでは、アイコン、名前、start URL、オリジン等を確認・編集できるようにすることが推奨されます。これは、ユーザーがインストール前にその情報を承認・修正できるようにし、またアプリが意図しないアイコンや名前で他のウェブアプリを偽装していないか判別する機会を与えます。
ユーザーエージェントは、他のアプリケーションがシステムにインストールされているアプリを判別できないようにすることが推奨されます(例:ユーザーエージェントのキャッシュへのタイミング攻撃)。例えば、インストール後にユーザーエージェントのキャッシュからマニフェストにリンクされたリソース(アイコン等)を無効化する、あるいは通常のウェブ閲覧用とは別のキャッシュを使うなどの方法が考えられます。
ユーザーエージェントは、ユーザーがインストール済みウェブアプリケーションを削除できる仕組みを提供すべきです。
削除時には、アプリケーションに関連した他の永続データや設定(権限や永続ストレージ等)も取り消す機会をユーザーに提示することが推奨されます。
表示モードは、 ウェブアプリケーションがOS上でどのように表示されるかを示します(例:フルスクリーンなど)。 表示モードは、各プラットフォームで使われるユーザーインターフェース(UI)や機能に対応しています。表示モードのUI慣習はあくまで参考であり、実装者は自由に解釈できます。
この仕様では、以下の表示モードを定義します:
fullscreen 表示モードは、
Fullscreen API
Standardとは独立して動作します。
fullscreen 表示モードはブラウザウィンドウのフルスクリーン状態に影響し、
[FULLSCREEN] APIはビューポート内の要素に対して動作します。
そのため、ウェブアプリの表示モードがfullscreen
でも、document.fullScreenElement
はnull
となり、fullscreenEnabled
はfalse
となる場合があります。
ユーザーエージェントが特定の表示モードを適用すると、それがトップレベル閲覧コンテキストのデフォルト表示モードとなります(ウィンドウがナビゲートされた時に使用されます)。ユーザーエージェントは、セキュリティ上の理由(例:トップレベル閲覧コンテキストが他オリジンにナビゲートされた場合)や、ユーザーが他の表示モードに切り替えられるようにするため、デフォルト表示モードを上書きしてもよいです。
display
メンバーが無い場合や無効な場合、ユーザーエージェントはbrowser 表示モードをデフォルト表示モードとして使います。
このため、ユーザーエージェントはbrowser
表示モードを必ずサポートしなければなりません。
すべての表示モードにはフォールバックチェーンがあり、これは表示モードのリストです。各フォールバックチェーンは以下の通りです:
ウェブアプリの選択された表示モードを決定する手順 は次のアルゴリズムです。アルゴリズムは 処理済みマニフェスト manifestを受け取り、 表示モードを返します。
上記のループは、どのモードのフォールバックチェーンにもbrowserが含まれ、すべてのユーザーエージェントがbrowser 表示モードをサポートする必要があるため、必ず値が返されます。
表示モードリストはリスト « "fullscreen", "standalone", "minimal-ui", "browser" »です。
ユーザーエージェントは、ウェブアプリケーションに適用された表示モードを
display-mode
メディア特性 [MEDIAQUERIES-5]で反映しなければなりません。
ユーザーエージェントは実際に適用されている表示モード(マニフェストで宣言されたものとは限らない)を、
display-mode
メディア特性でCSSやJavaScriptから取得できるようにします。
このメディア特性は、マニフェストが適用されていないウェブページの他の表示モードも反映します。例えば、エンドユーザーがページをフルスクリーンにした場合、ユーザーエージェントはCSSやスクリプトにこの変更を
display-mode
メディア特性で知らせます。
この仕様は直接的に高価値データを扱うものではありません。 しかし、インストール済みウェブアプリケーションやそのデータは(特にプライバシーの観点から)「高価値」と見なされることがあります。
マニフェストフォーマットはJSONであり、[UNICODE]を使ってエンコードされますので、 [JSON]や [UNICODE-SECURITY]で記載されるセキュリティ上の注意が適用されます。 また、開発者がマニフェストに独自/制限されないデータを含めることを防ぐ手段がないため、 実装者は制約のないメンバー型の値に対して、サービス拒否攻撃の防止、メモリ枯渇の防止、またはプラットフォーム固有の制限回避などのために、 実装固有の制限を課す必要があります。
ウェブアプリケーションは通常、ECMAScript、HTML、CSSファイル、その他のメディアを含み、サンドボックス環境で実行されます。 したがって、実装者はサポートする型のセキュリティ影響を認識する必要があります。 特に、最低限以下の仕様で示されるセキュリティ影響を考慮する必要があります: [CSS-MIME]、 [ECMAScript-MIME]、 [HTML]。
ウェブアプリケーションは、ローカルデバイスとリモートホストと同時にやりとり可能なコンテンツを含み得るため、 実装者はプライベート情報をリモートホストに公開することによるプライバシー影響も考慮する必要があります。 緩和策や多層的防御策は実装責任であり本仕様では定められていませんが、 これらの設計においては、ユーザーが情報共有を認識できるようにし、 権限の取り消しが容易なインターフェースを提供することが推奨されます。
この仕様ではマニフェストの特定メンバー内でURLの宣言が可能なため、 実装者は [URL] 仕様で論じられるセキュリティ上の注意を考慮する必要があります。 マニフェスト内で見つかった IRIs や IDNA アドレスを表示する実装は、 [UNICODE-SECURITY]に記載のセキュリティ助言に従うことが強く推奨されます。
開発者は [CSP3] 仕様全体で論じられるセキュリティ上の注意、とりわけ
data:
をマニフェストのインライン化のための有効なソースにすることについて注意する必要があります。
これによりマニフェストを文書内に直接含めることが可能となり、XSS攻撃を招く可能性があるため、完全に避けるのが最善です。
エンドユーザーがウェブアプリケーションをインストールできるUIでは、 アイコン、名前、start URL、オリジン等のアプリ情報を確認できることが 推奨されます。これは、ユーザーがインストール前にアプリ情報を承認・修正できる機会を与えるためです。 また、予期しないアイコンや名前などを使用して他のウェブアプリを偽装していないか見抜く機会も与えます。
ユーザーエージェントは、他のアプリケーションがどのアプリがシステムにインストールされているかを判定できないようにすることが 推奨されます(例:ユーザーエージェントのキャッシュに対するタイミング攻撃)。 例えば、ウェブアプリケーションがインストールされた後に マニフェストからリンクされたリソース(例:アイコン)をキャッシュから無効化する、または通常のウェブ閲覧用とは完全に別のキャッシュを使う方法が考えられます。
ショートカットのurl
が、アプリケーションがブラウザの外部から起動されたことを示すように細工される可能性があります
(例:"url": "/task/?from=homescreen"
)。
また、開発者がurl
にサーバー割り当ての UUID など
ユーザーを一意に識別できる文字列を埋め込む可能性もあります。
これはフィンガープリンティングやプライバシーに関わる情報であり、ユーザーが気付かないことがあります。
ウェブアプリケーションが実行中は、ユーザーエージェントがオリジン、開始または現在のURL、許可された権限、関連アイコンなど よく使われるアプリ情報へのアクセス手段をエンドユーザーに提供することが推奨されます。 これら情報のエンドユーザーへの公開方法は実装者の裁量に任されます。
さらに、マニフェストでdisplay modeを "browser"以外に設定した場合、 ユーザーエージェントはエンドユーザーに通常のブラウザ閲覧コンテキストを離れることを明示することが 推奨されます。 理想的には、ウェブアプリの起動や切り替えは、ホストプラットフォーム上の他のアプリと同様の方法で行われるべきです。 例えば、長く明快なアニメーションによる遷移や「アプリXを起動します」と話すなど。
display
メンバーは、オリジンにユーザーエージェントのネイティブUIのある程度の制御を許します。
フルスクリーンを取得した後、他のアプリのUIを模倣しようとすることも可能です。
これはまた、'display-mode'
メディア特性
[MEDIAQUERIES-5]を通じて
スクリプトがウェブアプリの表示モードを知ることができることにも関連します。
MIMEタイプ
application/manifest+json
は、アプリケーションマニフェストメディアタイプです。
MIMEタイプと.webmanifest
ファイル拡張子は
Internet Assigned Numbers Authority
(IANA)に登録されています。
マニフェストが転送されるプロトコルが [MIME-TYPES] 仕様(例:HTTP)をサポートする場合、マニフェストには アプリケーションマニフェストメディアタイプ でラベル付けすることが推奨されます。
非規範的と記載されたセクションに加え、この仕様のすべての著作ガイドライン、図、例、および注も非規範的です。それ以外の全ては規範的です。
この文書内のキーワード MAY、MUST、MUST NOT、OPTIONAL、RECOMMENDED、SHOULD、および SHOULD NOT は、 BCP 14 [RFC2119] [RFC8174] に記載された通り、ここで示すように全て大文字で現れる場合にのみ、その意味で解釈されます。
この仕様に適合していると主張できる製品のクラスは一つだけです:ユーザーエージェントです。
この仕様は主にウェブブラウザを対象としていますが、他のソフトウェアでも適合的に実装することは可能です。例えば、検索エンジンやクローラーはマニフェストを見つけて処理し、インストール可能なウェブアプリとして機能するサイトのカタログを作成できます。
このセクションは非規範的です。
この仕様は拡張可能となるよう設計されています。他の仕様がマニフェストに新しいメンバーを定義することを推奨します。ただし、その際は本仕様の慣習に従ってください。特に、処理拡張ポイントを使ってマニフェストの処理手順にフックしてください。また、各メンバーの処理手順も本仕様の方式に従って必ず明記してください。これはプラットフォームの一貫性維持に役立ちます。
コミュニティが拡張を簡単に見つけられるよう、Extensions Registryに拡張を追加してください。
新しいメンバーを仕様化する際は、この仕様で定義された内容を上書きしたりモンキーパッチしないでください。 また、他のメンバーより先に/後に自分のメンバーが処理されると仮定しないでください。新しいメンバーとその処理は原子的・自己完結的に保ってください。さらに、実装は未認識または未サポートのメンバーを自由に無視できます。
編集者が仕様を暫定的にパッチして実装を進めたい場合は、バグを登録し、編集者の意図をコミュニティに周知してください。
このセクションは非規範的です。
独自拡張は望ましくありませんが、現実的には回避できません。ユーザーエージェントが本仕様で規定されていないマニフェストJSONのメンバーを解釈する場合、注意して実装してください。
独自拡張を追加する実装者は、その拡張が標準化の可能性があるか(例:他プラットフォームのユーザーエージェントでも利用価値があるか)を検討してください。もしそうならAPIはベンダー中立で設計し、標準提案してください。もし本当に独自(特定エコシステム専用)なら、その短縮名でプレフィックスし名前衝突を防いでください。
将来標準化されたら削除されることを前提としたベンダープレフィックスは使わないでください(それらは永遠に残りがちです)。今後も意味のあるプレフィックスのみ使ってください。
実装者は独自拡張をExtensions Registryに追加してください。これによりコミュニティが各ベンダーやウェブコミュニティの定義拡張を追跡できます。定期的に標準化候補として検討します。
以下は仮想の独自拡張3例です。
{
...
"kpl_fancy_feature": "some/url/img",
"gmpc_awesome_thing": { ... },
"blitzly_site_verification": "KEY_9864D0966935"
...
}
この例では、(架空の)外部サイトやサービス名を意図的に使っています。これはブラウザやベンダーのプレフィックスではなく、独自サービスのプレフィックスです。
このセクションは非規範的です。
Web Application Manifestの複数のメンバーは、ウェブアプリケーションがデジタルストアフロント、インストールダイアログ、その他配布・マーケティングされる可能性がある場面での表示に関する追加メタデータを提供します。これらのユースケース対応強化のため、以下のメンバーはWeb App Manifest - Application Informationに移されました:
categories
description
iarc_rating_id
screenshots
このセクションは非規範的です。
本仕様でJSONを採用した理由は、meta
/link
タグではなくJSONを選択した理由についてGitHubやwww-tag
リストで議論されています。以下はその主要なポイントの短いまとめです。
この仕様で定義する文書フォーマットは、Webアプリケーションのメタデータを統一的にカプセル化する手段を提供します。
これは、独自タグや[HTML]のmeta
/link
タグにある既存の問題を回避する狙いがあります。その問題例は:
この仕様も独自の課題を生む可能性はありますが、マニフェスト形式で外部化することで上記課題は解決されます。解決方法は以下の通りです:
meta
タグが使っている不揃いで扱い難い値形式の問題(とくにサブ値が複数ある場合)を解消できます。
また、従来meta
タグベースで提供されていた機能をマニフェストで標準化することで、同じ目的を持つ独自・標準タグが乱立する問題を解消します。もちろんこれは標準がブラウザに実装・普及することが前提です。そうなればウェブコミュニティは多くの独自meta
タグを廃止できるかもしれません。独自タグの詳細はUse Cases and
Requirements for Installable Web Appsで参照できます。
最後に、本仕様は[HTML]の標準的な解決策を不要にするものではありません。マニフェストのname
やicons
が不足している場合、ユーザーエージェントはマニフェストの所有HTML文書からアイコンやアプリ名を探すことができます(または独自タグ/メタデータがあればそれを使うこともできます)。
このセクションは非規範的です。
manifest文書のバリデーションに関心がある開発者は、マニフェスト形式の非公式JSONスキーマがschemastore.orgで公開されていることを参照できます。Apache 2.0ライセンスの下で配布され、Mads Kristensenによって管理されています。JSONスキーマに問題があれば、バグ報告をSchemaStoreリポジトリ(GitHub)にお願いします。
このセクションは非規範的です。
著者はマニフェストの内容を次のいずれかの方法でローカライズすることが期待されています:
Accept-Language
" ヘッダー [RFC9110] や独自ヘッダー)でエンドユーザーの言語を推測できます。
上記の選択肢を踏まえ、開発者はエンドユーザーの言語選好に関するプライバシーに注意すべきです:エンドユーザーがウェブアプリに明示的に希望言語を指定した場合(すなわちユーザーエージェントのデフォルト言語設定以外)、その情報を平文で送信するのは原則NGです。これは個人情報の漏洩につながり得ます。したがって、[TLS]を使い、Webアプリの監視リスクを低減することが推奨されます [RFC7258]。
本書は Installable Web Appsのユースケースと要求を取り扱っています。
この仕様には記載されている課題はありません。
このセクションは非規範的です。
初回の公開作業草案以降に行われた主な変更点は以下の通りです:
参照されている箇所:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
このセクションは非規範的です。
この文書は [HTML] 仕様のライセンスが許す範囲で、そのテキストを再利用しています。
Dave Raggett および Dominique Hazael-Massieux は HTML5Apps プロジェクトを通じて本仕様に貢献しました。
Claudio Gomboli はアイコン例画像の提供に貢献しました。
インディアナ大学ブルーミントンのセキュリティ研究者は、スコープ外ナビゲーションに関連する潜在的リスクを報告し、本仕様に貢献しました。
*_localized
§1.15
application/manifest+json
§A.
background_color
§1.13
description
§3.3
display
§1.8
id
§1.11
orientation
§1.9
purpose
§2.1
scope
§1.6
shortcuts
§1.14
start_url
§1.10
theme_color
§1.12
url
§3.4
value
§1.15.1
CSS
用)
Document
インターフェース
Document
用)
request
用)
crossorigin
属性(link
要素用)
href
属性(link
要素用)
link
要素
meta
要素
name
属性(meta
要素用)
rel
属性(link
要素用)
meta/name
用)
@media
用)
@media
用)
OrientationLockType
列挙型
url
用)
url/equals
用)
url
用)
url
用)
url
用)
url
用)