Copyright © 2021-2025 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
この仕様は、Web Application Manifest および Web App Manifest - Application Information 仕様の補足メンバーのレジストリであり、MiniApps を説明するための追加メタデータをアプリケーション・マニフェストに提供します。この JSON ベースのマニフェスト・ファイルにより、開発者は MiniApp の基本情報、たとえば識別情報、 人間が読める説明、バージョン情報、スタイル情報を設定できます。MiniApp マニフェストは、 MiniApp の一部であるページやウィジェットのルーティングも構成します。
この節では、この 文書の公開時点における状態を説明します。現在の W3C 公開物の一覧と、この技術レポートの最新版は、 W3C 技術 レポート・インデックス https://www.w3.org/TR/ で確認できます。
この文書は、MiniApps Working Group によって、 勧告トラックを使用して 作業草案として公開されました。
作業草案としての公開は、 W3C およびそのメンバーによる承認を意味するものではありません。
これは草案文書であり、いつでも他の文書によって 更新、置換、または廃止される可能性があります。この文書を進行中の作業以外のものとして 引用することは適切ではありません。
この文書は、 W3C 特許 ポリシー の下で活動するグループによって作成されました。 W3C は、 グループの成果物に関連して行われた 特許開示の公開一覧 を維持しており、そのページには 特許を開示するための手順も含まれています。ある個人が、 必須クレーム を含むとその個人が考える特許について実際の知識を有している場合、その個人は W3C 特許ポリシーの第 6 節 に従ってその情報を開示しなければなりません。
この文書は、 2023年11月03日版 W3C Process Document によって管理されます。
MiniApp マニフェストは、MiniApp に関連付けられた メタデータを記述するために、Web App Manifest [APPMANIFEST] および Web App Manifest - Application Information [MANIFEST-APP-INFO] を拡張し、 プロファイル化する [JSON] 文書です。
この仕様は、MiniApps を記述するためのメタデータの集合を定義し、Web Application
Manifest および Web App Manifest - Application
Information を拡張して、MiniApps を記述し設定するための追加の制約と固有の仕組みを提供します。
MiniApp Manifest は、これらの仕様から基本要素
(すなわち、name、short_name、description、および icons)
を直接再利用し、MiniApps に固有に影響する補足メンバー(例: app_id、
version、platform_version、device_type、pages、
req_permissions、および widgets)と、それらのルック・アンド・フィール
(例: color_scheme および window)を追加します。
MiniApp マニフェストは、そのルートに次のメンバーを 含まなければなりません(MUST):
MiniApp マニフェストの
メンバー内の各画像
リソースオブジェクトは、次を含まなければなりません(MUST):
icons
MiniApp マニフェストは、そのルートに
メンバーを含んでも構いません(MAY)。このメンバーは、リストである MiniApp ウィジェット
リソースの配列を含まなければなりません(MUST)。各 MiniApp
ウィジェット・リソースオブジェクトは、
次のメンバーを含まなければなりません(MUST):
widgets
MiniApp マニフェストは、そのルートに
メンバーを含んでも構いません(MAY)。このメンバーは、リストである MiniApp
権限リソースの配列を含まなければなりません(MUST)。各 MiniApp
権限リソースオブジェクトは、
次のメンバーを含まなければなりません(MUST):
req_permissions
MiniApp ユーザー・エージェントは、任意のメンバーをサポートして、マニフェストのベンダー固有拡張を実装しても構いません(MAY)。
次の表は、MiniApp マニフェストのメンバーの概要を示します:
| メンバー | 型 | 必須 | 説明 |
|---|---|---|---|
|
文字列 | はい | MiniApp 識別子 |
|
文字列 | いいえ | MiniApp の配色 |
|
文字列 | いいえ | MiniApp の説明 |
|
リスト | いいえ | 対応デバイス |
|
文字列 | いいえ | テキストの方向 |
|
画像リソース リスト | はい | MiniApp アイコン |
|
文字列 | いいえ | MiniApp の主要言語 |
|
文字列 | はい | MiniApp 名 |
|
リスト | はい | ページのルーティング情報 |
|
プラットフォーム・バージョン・ リソース | はい | 対応するプラットフォーム・バージョン |
|
権限リソース リスト | いいえ | 必要な権限 |
|
文字列 | いいえ | MiniApp の短い名前 |
|
バージョン・リソース | はい | MiniApp バージョン |
|
ウィジェット・リソース リスト | いいえ | MiniApp ウィジェット |
|
ウィンドウ・リソース | いいえ | ウィンドウ・スタイル |
| メンバー | 型 | 必須 | 説明 |
|---|---|---|---|
label |
文字列 | いいえ | アクセシブルなテキスト |
sizes |
文字列 | いいえ | アイコンの解像度サイズ |
src |
文字列 | はい | アイコンのソース |
| メンバー | 型 | 必須 | 説明 |
|---|---|---|---|
|
数値 | はい | 対応する最小プラットフォーム・バージョン |
|
文字列 | いいえ | 対象プラットフォーム・バージョンの種類 |
|
文字列 | いいえ | 対象プラットフォーム・バージョン・コード |
| メンバー | 型 | 必須 | 説明 |
|---|---|---|---|
|
文字列 | はい | 権限名 |
|
文字列 | いいえ | 権限を要求する理由 |
| メンバー | 型 | 必須 | 説明 |
|---|---|---|---|
|
数値 | はい | バージョン・コード |
|
文字列 | はい | バージョン名 |
| メンバー | 型 | 必須 | 説明 |
|---|---|---|---|
|
数値 | いいえ | 対応する最小プラットフォーム・バージョン |
|
文字列 | はい | ウィジェット名 |
path
|
文字列 | はい | ウィジェット・パス |
| メンバー | 型 | 必須 | 説明 |
|---|---|---|---|
|
真偽値 | いいえ |
ページの
の自動計算を有効化/無効化します
|
|
文字列 | いいえ | ウィンドウの背景色 |
|
文字列 | いいえ | 背景テキスト・スタイル |
|
数値 | いいえ | ページ設計幅の基準値 |
|
真偽値 | いいえ | プル・トゥ・リフレッシュ・イベントを有効化します |
|
真偽値 | いいえ | 全画面表示 |
|
文字列 | いいえ | ナビゲーション・バーの背景色 |
|
文字列 | いいえ | ナビゲーション・バーのテキスト・スタイル |
|
文字列 | いいえ | ナビゲーション・バーのタイトル |
|
文字列 | いいえ | ナビゲーション・バーのスタイル |
|
数値 | いいえ | 下端へのプルアップ・イベントを発火する距離 |
|
文字列 | いいえ | 画面の向きの設定 |
アプリケーション・
マニフェストの他のメンバー、たとえば scope、
theme_color、および
shortcuts は、
現在 MiniApp ユーザー・エージェントではサポートされていません。
この節は非規範的です。
次のコードは、MiniApp マニフェストの例を表します:
{
"dir": "ltr",
"lang": "en-US",
"app_id": "org.example.miniapp",
"name": "MiniApp Demo",
"short_name": "MiniApp",
"version": {
"name": "1.0.1",
"code": 11
},
"description": "A Simple MiniApp Demo",
"icons": [
{
"label": "Red lightning",
"src": "common/icons/icon.png",
"sizes": "48x48"
}
],
"platform_version":{
"min_code": 1,
"release_type": "Beta1",
"target_code": 2
},
"pages": [
"pages/index/index",
"pages/detail/detail"
],
"window": {
"background_color": "#ffffff",
"fullscreen": false,
"navigation_bar_text_style": "black",
"navigation_bar_title_text": "My MiniApp",
"navigation_bar_background_color": "#f8f8f8"
},
"widgets": [
{
"name": "widget",
"min_code": "2",
"path": "widgets/index/index"
}
],
"req_permissions": [
{
"name": "system.permission.LOCATION",
"reason": "To show user's position on the map"
},
{
"name": "system.permission.CAMERA",
"reason": "To scan a QR code"
}
],
"color_scheme": "light",
"device_type": [
"phone",
"tv",
"car"
]
}
MiniApp マニフェストは、次の基本的なアプリケーション・ マニフェストのメンバーを使用します。
MiniApp マニフェストの
dir
メンバーは、ローカライズ可能なメンバーの基底方向を指定すると同時に、
MiniApp 全体の既定の基底テキスト方向も指定します。
メンバーの値は、[APPMANIFEST] で指定される
text-directions のいずれかに
設定できます。テキスト方向の値は次のとおりです:
dir
ltr"
rtl"
auto"
(既定)
MiniApp
マニフェストを処理する際、[APPMANIFEST] 仕様に従って、
dir メンバーを処理するために
dir メンバーを処理するアルゴリズムが使用されます。
MiniApp マニフェストの
icons
メンバーは、MiniApps のアイコン表現として機能する画像を記述します。このメンバーは、リストであり、画像
リソースの順序付き
マップから成ります。
[IMAGE-RESOURCE] で指定されているように、画像リソースは次から構成されます:
label
sizes
link
の
sizes
属性と同じ構文を使用して表されます。
src
MiniApp
マニフェストを処理する際、[APPMANIFEST] 仕様に従って、
icons メンバーを処理するために
画像リソースを処理するアルゴリズムが使用されます。
開発者は、画像
リソースのアクセシブル名がその文脈内の外部ラベルから推測できる場合を除き、label を
追加することが強く推奨されます。
MiniApp マニフェストの
lang
メンバーは、ローカライズ可能なメンバーの主要言語を指定すると同時に、
MiniApp 全体の主要言語も指定します。このメンバーは、[APPMANIFEST] で定義される、
[BCP47] の Language-Tag
生成規則に一致する文字列である、言語
タグ形式の文字列です。
MiniApp
マニフェストを処理する際、[APPMANIFEST] 仕様に従って、
lang メンバーを処理するために
lang メンバーを処理するアルゴリズムが使用されます。
MiniApp マニフェストの name
メンバーは、アプリケーションの記述的な名前です。
これはユーザーに直接表示される名前です。デスクトップ・アイコンとともに、また MiniApp 管理の文脈で、
MiniApp の表示名として使用されます。
MiniApp
マニフェストを処理する際、[APPMANIFEST] 仕様に従って、
name メンバーを処理するために
テキスト・メンバーを処理するアルゴリズムが使用されます。
MiniApp マニフェストの
short_name
メンバーは、MiniApp の簡潔で読みやすい名前を提供します。
で提供される MiniApp の完全な名前を表示するための十分な空間がない場合に使用できます。
name
MiniApp
マニフェストを処理する際、[APPMANIFEST] 仕様に従って、
short_name メンバーを処理するために
テキスト・メンバーを処理するアルゴリズムが使用されます。
次のメンバーは、Web App Manifest - Application Information 仕様 [MANIFEST-APP-INFO] で定義されています。
MiniApp マニフェストの
description
メンバーは、[MANIFEST-APP-INFO] で
定義されるように、Web アプリケーションの目的を自然言語で表す MiniApp のテキスト説明を提供します
順序付きマップ json と 順序付きマップ manifest が与えられたとき、description
メンバーを処理するには:
次のメンバーは、MiniApp マニフェストの範囲内で定義され、MiniApp の特定の側面を扱います。
MiniApp マニフェストの
app_id
メンバーは、MiniApp を一意に識別する文字列です。
このメンバーは主にパッケージ管理に使用され、MiniApp のバージョン管理における更新およびリリース・プロセスを
サポートします。
の値は、大文字小文字に敏感であり、Unicode における文字の異なるエンコード方法にも敏感です。
したがって、2 つの
app_id
値は、それらが同じコード
ポイント列としてエンコードされている場合にのみ等しくなります。
app_id
MiniApps で一般的な慣行の 1 つは、Java
パッケージ命名規約で使用される逆ドメイン名風の規約(例: org.example.miniapp)を、
次の規則の下で使用することです:
appIdRule = name *("." name)
name = ALPHA [*( ALPHA / DIGIT / "-" ) ( ALPHA / DIGIT)]
順序付きマップ json と 順序付きマップ manifest が与えられたとき、app_id メンバーを処理するには:
任意のMiniApp マニフェストの
color_scheme
メンバーは、MiniApp の推奨配色(すなわち、""、"auto、または "light")を示す文字列であり、ウィンドウ・リソースオブジェクトの他の設定メンバー、
すなわち
dark、
background_color、
background_text_style、
および
navigation_bar_text_style
を上書きします。
navigation_bar_title_text
このメンバーは、次のいずれかの配色 値を含まなければなりません(MUST):
auto"light"dark"MiniApp ユーザー・エージェントは、各配色向けに、背景色、カバー画像、アイコンなどの事前定義済みスタイル・リソースを 実装しても構いません(MAY)。また、開発者は、prefers-color-scheme CSS メディア特性 [MEDIAQUERIES-5] を使用して、 各モード用のカスタム・スタイルシートを定義しても構いません(MAY)。
順序付きマップ json と 順序付きマップ manifest が与えられたとき、color_scheme
メンバーを処理するには:
任意のMiniApp マニフェストの
device_type
メンバーは、MiniApp が実行されることを意図しているデバイスの種類を示す、文字列のリストです。このメンバーの値は、
MiniApp がスマートフォン、スマート TV、自動車のヘッドユニット、ウェアラブル、その他のデバイスなどの
特定のプラットフォームで適切に動作するよう設計されているかどうかを、ユーザー・エージェントに通知します。
このメンバーは、初期化プロセス中のデバイス互換性検証に使用されます。その値を確認することで、 ユーザー・エージェントは、UI コンポーネント、CSS サポート、および API の互換性の観点から、 MiniApp がそのプラットフォームで実行に適しているかどうかを判断します。MiniApp ユーザー・エージェントは、 検証プロセスが失敗した場合にプラットフォームの動作をどのように実装するかを決定します (例: 初期化段階を停止してインストールを拒否する、または MiniApp をインストールするが実行を拒否する)。
このメンバーで取り得る値の一覧はこの文書では指定されていません。これにより、実装の柔軟性を確保し、
あらゆるデバイスおよびユースケースを考慮できます。一般的な値の例には、smartphone、
tablet、tv、car、
wearable、および iot があります。
順序付きマップ json と 順序付きマップ manifest が与えられたとき、device_type
メンバーを処理するには:
MiniApp マニフェストの
pages
メンバーは、MiniApp の一部であるページの集合を指定するために使用される
relative-url
string のリストです。
リスト内の各項目は、
ページ・ルートによって識別されるページを表します。
MiniApp ページ・ルートとは、 MiniApp ページの相対パスおよびファイル名です。 ページ・ルートを設定する際、開発者は、 ページのメイン・コンポーネントを定義するファイルの 拡張子を省略しても構いません(MAY)(例: pages/mypage または pages/mypage.html)。
リスト内の最初の項目は、
MiniApp のホームページまたはエントリー・ポイントを定義します。
pages
MiniApp マニフェストの
platform_version
メンバーは、MiniApp を実行するための最小要件および意図されたプラットフォーム・バージョンを記述するための、
MiniApp プラットフォーム・バージョン・
リソースの順序付き
マップを含み、これには
、
min_code、
および
target_code
が含まれます。
release_type
順序付きマップ json と 順序付きマップ manifest が与えられたとき、platform_version メンバーを処理するには:
min_code メンバーを処理する。target_code メンバーを処理する。release_type メンバーを処理する。
任意のMiniApp マニフェストの
req_permissions
メンバーは、MiniApp 権限リソースの
順序付きマップの
リストです。
各 MiniApp 権限リソースは、MiniApp の適切な実行に必要な 具体的なシステム機能(例: デバイスの位置情報、ユーザーの連絡先、センサー、カメラへのアクセス)を 使用するための要求を宣言します。
順序付きマップ json と 順序付きマップ manifest が与えられたとき、req_permissions
メンバーを処理するには:
name メンバーを処理する。reason メンバーを処理する。
ユーザー・エージェントは、これらの特定機能へのアクセス中にユーザーのプライバシーを保護するため、
ユーザーの同意を求めます。
メンバー内のこの情報は、アプリ・ストアまたはホスティング・プラットフォームによって、ユーザーの
設定、プライバシー・ポリシー、またはデバイス機能に応じて MiniApps をフィルタリングするために
使用される場合があります。
req_permissions
MiniApp マニフェストの
version
メンバーは、
および
code
を表すための、MiniApp バージョン・リソースの
順序付きマップを含みます。
name
順序付きマップ json と 順序付きマップ manifest が与えられたとき、version メンバーを処理するには:
code
メンバーを処理する。name
メンバーを処理する。
任意のMiniApp マニフェストの
widgets
メンバーは、MiniApp の一部であるMiniApp ウィジェット・リソースの
リストです。
MiniApp Package は、MiniApp ページとウィジェットを同時に 含んでも構いません(MAY)。
MiniApp の一部であるウィジェットは、MiniApp マニフェストの一部のメンバーを適用します。これには次が含まれます:
ただし、ウィジェットには、MiniApp ウィジェット・リソースで定義される専用フィールドもあります。
順序付きマップ json と 順序付きマップ manifest が与えられたとき、widgets メンバーを処理するには:
name メンバーを処理する。
path メンバーを処理する。
min_code メンバーを処理する。
任意のMiniApp マニフェストの
window
メンバーは、ステータス・バー、ナビゲーション・バー、タイトル、背景色などの視覚的な設定要素のスタイルを含め、
MiniApp フレームのルック・アンド・フィールを記述するための、MiniApp ウィンドウ・リソースの
順序付きマップを含みます。
オブジェクトのメンバーは、MiniApp マニフェストのルートにある
window
および
dir
メンバーから、テキスト方向と言語設定を継承します。
lang
順序付きマップ json と 順序付きマップ manifest が与えられたとき、window メンバーを処理するには:
auto_design_width メンバーを処理する。
background_text_style メンバーを処理する。
design_width メンバーを処理する
enable_pull_down_refresh メンバーを処理する。
fullscreen メンバーを処理する。navigation_bar_text_style メンバーを処理する。
navigation_bar_title_text メンバーを処理する。
navigation_style メンバーを処理する。
on_reach_bottom_distance メンバーを処理する。
orientation メンバーを処理する。
auto_design_width メンバーを処理する。
MiniApp マニフェストは、アプリケーション・マニフェストの拡張として、 [APPMANIFEST] で定義される マニフェストの 処理アルゴリズムの拡張点で処理される補足アルゴリズムを提供します。したがって、ユーザー・エージェントは アプリケーション・マニフェストのメンバーの 処理から開始し、拡張点において、次のアルゴリズムを使用して MiniApp マニフェストのメンバーの処理を続行します。
拡張点で、順序付きマップ json と 順序付きマップ manifest が与えられたとき、MiniApp マニフェストを処理するには:
TypeError を投げる。
TypeError を投げる。
TypeError を投げる。
TypeError を投げる。
app_id メンバーを処理する。
TypeError を投げる。
color_scheme
メンバーを処理する。description
メンバーを処理する。device_type
メンバーを処理する。pages メンバーを処理する。
TypeError を投げる。
platform_version
メンバーを処理する。TypeError を投げる。
req_permissions
メンバーを処理する。version メンバーを処理する。
TypeError を投げる。
widgets メンバーを処理する。
window メンバーを処理する。
MiniApp プラットフォーム・バージョン・リソースは、MiniApp によって使用される最小および対象の プラットフォーム・バージョンを示す順序付きマップです。
次のメンバーは、MiniApp マニフェストの範囲内で定義され、プラットフォーム・バージョン・リソースの特定の側面を扱います。
MiniApp プラットフォーム・バージョン・リソースの
min_code
メンバーは、MiniApp の通常動作を保証するために MiniApp ユーザー・エージェントのプラットフォームが
対応する最小バージョンを示す非負整数です。
順序付きマップ json と 順序付きマップ platform_version が与えられたとき、プラットフォーム・バージョンの min_code メンバーを処理するには:
MiniApp プラットフォーム・バージョン・リソースの
release_type
メンバーは、アプリケーションの実行に必要な MiniApp ユーザー・エージェントの対象プラットフォーム・
バージョンのリリース種別を示す文字列です。
MiniApp ベンダーは、このメンバーについて特定のバージョン管理スキームや値を推奨できます(例:
CanaryN、BetaN、または Release。ここで N は
Beta1 などの正の整数を表します)。
順序付きマップ json と 順序付きマップ platform_version が与えられたとき、プラットフォーム・バージョンの release_type メンバーを処理するには:
MiniApp プラットフォーム・バージョン・リソースの
target_code
メンバーは、MiniApp の通常動作を保証するために MiniApp ユーザー・エージェントのプラットフォームが
対応する対象バージョンを示す非負整数です。
順序付きマップ json と 順序付きマップ platform_version が与えられたとき、プラットフォーム・バージョンの target_code メンバーを処理するには:
MiniApp 権限リソースは、MiniApp の適切な実行に必要な 具体的なシステム機能(例: デバイスの位置情報、ユーザーの連絡先、センサー、カメラへのアクセス)を 使用するための要求を記述する順序付きマップです。
次のメンバーは、MiniApp マニフェストの範囲内で定義され、権限 リソースの特定の側面を扱います。
MiniApp 権限リソースの
name
メンバーは、要求される機能の名前を示す文字列です。
順序付きマップ json と 順序付きマップ permission が与えられたとき、権限リソースの name メンバーを処理するには:
任意のMiniApp 権限リソースの
reason
メンバーは、
[MiniApp permission resource/name=] 属性で指定される機能を要求するために示される理由を
表す文字列です。
順序付きマップ json と 順序付きマップ permission が与えられたとき、権限リソースの reason メンバーを処理するには:
MiniApp バージョン・ リソースは、MiniApp のバージョン・コードとバージョン名を記述する順序付き マップです。
次のメンバーは、MiniApp マニフェストの範囲内で定義され、バージョン リソースの特定の側面を扱います。
MiniApp バージョン・リソースの
code
メンバーは、MiniApp のバージョンを表す非負整数です。これは主に MiniApp の保守性とセキュリティを
高めるために使用されます(例: 増分バージョン間の互換性)。
code
メンバーは、開発およびデプロイメント・プロセスを支援することを目的としており、通常はエンドユーザーには
表示されません。
順序付きマップ json と 順序付きマップ version が与えられたとき、バージョンの code メンバーを処理するには:
MiniApp バージョン・リソースの name メンバーは、MiniApp のバージョンに関する情報を記述するために
主に使用される文字列であり、バージョン管理、MiniApp
アプリケーション、
およびプラットフォーム互換性において重要な役割を果たします。これは通常、公開されユーザーに表示される
バージョンと見なされます。
このメンバーに推奨される(RECOMMENDED)形式は X.Y.Z です。
ここで X、Y、および Z は非負整数値です(例:
1.10.0)。これは Semantic Versioning [SEMANTIC-VERSIONING] で指定されています。
順序付きマップ json と 順序付きマップ version が与えられたとき、バージョンの name メンバーを処理するには:
MiniApp ウィジェット・リソースは、MiniApp の一部である ウィジェットを定義し 設定する順序付きマップです。
次のメンバーは、MiniApp マニフェストの範囲内で定義され、ウィジェット リソースの特定の側面を扱います。
MiniApp ウィジェット・リソースの
name
メンバーは、ウィジェットのタイトルを示す文字列です。
順序付きマップ json と 順序付きマップ widget が与えられたとき、ウィジェットの name メンバーを処理するには:
MiniApp ウィジェット・リソースの path メンバーは、ウィジェットに対応する
ページ・ルートを定義するrelative-url stringであり、
リストと同じ形式で表されます。
pages
順序付きマップ json と 順序付きマップ widget が与えられたとき、ウィジェットの path メンバーを処理するには:
任意のMiniApp ウィジェット・リソースの
min_code
メンバーは、MiniApp
ウィジェットに対応する最小
プラットフォーム・バージョンを示す数値です。
ウィジェット API と MiniApp API は異なる場合があるため、プラットフォームの最小バージョンの宣言も
異なる場合があります。したがって、widgets メンバーが
を明示的に省略した場合、ユーザー・エージェントは
min_code
オブジェクト内の
platform_version
メンバーで指定されたものと同じ要件と見なします。
min_code
順序付きマップ json、順序付きマップ widget、および 順序付きマップ manifest が与えられたとき、ウィジェットの min_code
メンバーを処理するには:
MiniApp ウィンドウ・リソースは、MiniApp を 含むウィンドウを定義し設定する順序付きマップです。
次のメンバーは、MiniApp マニフェストの範囲内で定義され、MiniApp のウィンドウ・リソースの 記述を可能にします。
auto_design_width
メンバーは、ページの
がユーザー・エージェントによって自動計算されるかどうかを示す真偽値です。
design_width
が auto_design_widthtrue の場合、
の値は無視されます。この場合、システムの基準幅は画面のピクセル密度に応じて自動的に決定されます。
design_width
既定値: false。
順序付きマップ json と 順序付きマップ window が与えられたとき、ウィンドウの auto_design_width メンバーを処理するには:
background_color メンバーは、MiniApp を
含むウィンドウの背景色を指定する文字列です。
このメンバーは sRGB 色をサポートし、
アプリケーション・マニフェストの background_color と等価です。
既定値: "#ffffff"。
MiniApp
マニフェストを処理する際、[APPMANIFEST] 仕様に従って、
ウィンドウの background_color メンバーを処理するために
色メンバーを処理するアルゴリズムが使用されます。
background_text_style
メンバーは、背景テキスト・スタイルを指定する文字列であり、
明るいまたは暗いカラーテーマ(すなわち、"" または "light")を示します。
dark
このメンバーは prefers-color-scheme の値をサポートし、次のいずれかの背景テキスト・スタイル値を含まなければなりません(MUST):
light"
dark"
(既定)
順序付きマップ json と 順序付きマップ window が与えられたとき、ウィンドウの background_text_style メンバーを処理するには:
design_width
メンバーは、ページ設計の基準幅をピクセル単位で示す数値です。
これはページ・コンポーネントを視覚的に調整するために使用されます。
値は非負整数であり、既定値は 750 です。
順序付きマップ json と 順序付きマップ window が与えられたとき、ウィンドウの design_width
メンバーを処理するには:
enable_pull_down_refresh
メンバーは、MiniApp とのインタラクション中に pull-to-refresh イベントが有効かどうかを
指定する真偽値です。
既定値: false。
順序付きマップ json と 順序付きマップ window が与えられたとき、ウィンドウの
enable_pull_down_refresh メンバーを処理するには:
fullscreen
メンバーは、MiniApp が全画面表示モードで表示されるかどうかを示す真偽値です。
このメンバーが true 値を取る場合、これはアプリケーション・マニフェストの
display
メンバーにおける
値と等価です。値として fullscreenfalse を取る場合、これは
minimal-ui
と等価です。
既定値: false。
順序付きマップ json と 順序付きマップ window が与えられたとき、ウィンドウの fullscreen
メンバーを処理するには:
on_reach_bottom_distance
メンバーは、ページのプルアップ・イベントを発火するために必要な、ウィンドウ下端からの垂直オフセットを
定義する数値です。このメンバーの値は、ピクセル単位で
表される非負整数です。
既定値: 50。
順序付きマップ json と 順序付きマップ window が与えられたとき、ウィンドウの
on_reach_bottom_distance メンバーを処理するには:
orientation
メンバーは、MiniApp の画面の向きの設定を指定する文字列です。
このメンバーは、OrientationLockType
[SCREEN-ORIENTATION] で定義される
向きの値、すなわち
"portrait" および "landscape"
をサポートします。
このメンバーは、アプリケーション・マニフェストの
と等価です。
orientation
既定値: "portrait"。
順序付きマップ json と 順序付きマップ window が与えられたとき、ウィンドウの orientation
メンバーを処理するには:
ローカライズ可能なメンバーとは、その内容を特定の言語的、
地理的、文化的側面に合わせて適応できるマニフェストメンバーです。これらのローカライズ可能なメンバーは、
マニフェストのルートで定義された言語タグ
()
および表示方向
(lang)
を共有します。
dir
次のメンバーはローカライズ可能なメンバーです:
MiniApp Package
の重要な一部として、
manifest.json ファイルは、MiniApp Package
リソースを参照することにより、MiniApp のいくつかの重要な側面を記述します。これには、
pages ディレクトリ内のページ・スクリプトや視覚的設定ファイル、
common ディレクトリ内の画像など、さまざまなファイル種別のリソースが含まれます。
詳細は [MINIAPP-PACKAGING] で指定されています。
MiniApp の通常動作は、マニフェストでの適切な設定と、 MiniApp Package リソースの可用性に依存します。 このような依存関係は、開発段階とデプロイメント段階の両方で確認する必要があります。
この節は非規範的です。
この文書は、開発者および発行者が MiniApps の動作と外観を記述し設定できるようにする
メタデータの集合を指定します。color_scheme や
window リソース・メンバーなどの一部のマニフェスト属性は、ユーザー・エージェントが
ユーザーと MiniApp の間のインタラクションを可能にするカスタム・ユーザー・インターフェイスを生成することを
目的としています。
メンバーにより、開発者はプラットフォームおよびオペレーティング・システム内での MiniApp の視覚的および
アイコン的表現を記述できます。ここで、プラットフォームは、画像を表すためにプラットフォームの
アクセシビリティ・サービスと適切に連携するべきであり、代替テキスト説明(例:
icons
の
iconlabel、
および
name)
も使用して、アクセシビリティを高めるべきです(すなわち、デバイスのホーム画面上のアイコン、アプリ・ディレクトリでの
一覧表示、およびアプリ設定)。
short_name
ユーザー・エージェントは、ユーザー・インターフェイスが知覚可能かつ操作可能であることを保証しなければなりません。
そのため、配色やテーマの設定(すなわち、
、
color_scheme、
background_color、
background_text_style、
navigation_bar_background_color、
navigation_bar_background_color、
および
navigation_bar_text_style)
など、ユーザー・エージェントのインターフェイスおよびレンダリングされるコンテンツに影響するメンバーを処理する際には、
特別な考慮を払うべきです。また、
navigation_style、
orientation、
fullscreen、
および
enable_pull_down_refresh
などの他の設定にも同様です。
on_reach_bottom_distance
マニフェストの メンバーは、
ナビゲーション・バーのルック・アンド・フィールや、window または fullscreen のようなユーザー・エージェントの
ネイティブ UI を変更するその他の機能を含め、MiniApp の外観を定義します。ユーザー・エージェントは、
ネイティブ UI に影響した変更を元に戻し、アプリを閉じるための直感的な仕組みを提供しなければなりません。
orientation
このマニフェストを解釈するユーザー・エージェントは、ユーザーがウィンドウおよびビューポート内で位置を把握し、
それらを制御できるよう支援するべきです。また、device_type メンバーの高度な使用や、
アクセシビリティを高めるためのベンダー固有メンバーによるマニフェスト拡張を通じて、さまざまな利用シナリオに
対応する代替ビューを提供するべきです。したがって、MiniApp ユーザー・エージェントおよびプラットフォームは、
適用される仕様および慣行、特に User Agent
Accessibility Guidelines (UAAG) 2.0
に準拠しつつ、ユーザー・スタイルシートやテーマを設定し、アプリケーションの表示およびインタラクションを
カスタマイズする仕組みを提供するべきです。
マニフェスト・データは、プラットフォームがアプリケーションを適切に設定し処理するのに役立ちます。この文書によって 公開される情報は公開情報であるため、第三者エージェント(例: アプリ・マーケットプレイスやリポジトリ)は、 アプリのバージョンを維持し、分類し、一覧表示するためにマニフェスト情報を使用できます。
マニフェストは JSON 文書であり、通常は [UNICODE] を 使用してエンコードされるため、[JSON] および [UNICODE-SECURITY] で説明されるセキュリティ上の 考慮事項が適用されます。開発者がマニフェストにカスタムまたは制約のないデータを含めることを防ぐため、 実装者は JSON Schema で定義されるものより厳格なスキーマを使用し、 メンバー名、型、および値範囲に実装固有の制限を課すことができます(例: メモリ・オーバーフローを防ぐため、 またはプラットフォーム固有の制限を満たすため)。
マニフェストを含む MiniApp リソースの完全性は、[MINIAPP-PACKAGING] で詳述されているように、 MiniApp Package 全体の一部として、 暗号学的ハッシュ機構によって保護されます。
MiniApp には、ディレクトリ内に整理された
さまざまなファイル・リソースが、コンテナー
内に含まれます。、icons、および pages などのマニフェスト・メンバーは、
ホスティング・プラットフォーム上のローカル・リソースを参照するパスを含みます。MiniApp ユーザー・エージェントは、
MiniApp パッケージ外への
不正アクセスを防ぐため、それらのパスの妥当性を確認し、サンドボックス化された環境を保証しなければなりません
(MUST)。
widgets
開発者は、ホスティング・プラットフォーム上の外部 MiniApp データ・リソース(すなわち、メイン・パッケージに 含まれないもの)(例: 他のアプリケーションへのディープリンクや共有ストレージ)、またはリモート HTTP サーバーに アクセスする場合があります。前者の場合、MiniApp ユーザー・エージェントは、プラットフォーム上の サンドボックス化された環境を保証するために必要なすべての仕組みを実装するべきです。
メンバーは、MiniApp コンテナー内に
保存されたリソースを参照する相対パスを持つページのマップを含め、MiniApp のコンポーネントのルートを定義します。
ユーザー・エージェントは、MiniApp コンテナー内の有効なリソースに対応しない外部 URL またはパスを
無視しなければなりません(MUST)。
pages
マニフェストは、MiniApp の動作中に要求される可能性のある機能を指定します。これには、センサーへのアクセスや、 ネットワーク接続およびデバイスへの直接接続(例: Bluetooth、NFC、USB 経由)の両方を介した他のデバイスとの 通信が含まれます。この宣言は、その機能へのアクセスや使用を意味するものではありません。ただし、 ユーザー・エージェントは、サービスおよび API の正しい使用を保証し、各具体的な機能における潜在的な脆弱性に 対処する仕組みを実装しなければなりません(MUST)。
この仕様は、機密データを直接扱うものではありません。しかし、MiniApp マニフェストで定義される情報は、プラットフォームがプライバシー・ポリシーを構成し、MiniApp が プライバシーに影響を及ぼす可能性のある他のデバイスのハードウェア、ソフトウェア、およびデータ・リソースを 管理できるようにするのに役立ちます。
MiniApp マニフェストは、個人データの収集、使用、または開示を促すものではありません。しかし、MiniApp ユーザー・エージェントは、フィンガープリンティングに寄与し得る、デバイスの機密性の高いサービスや機能への アクセスを制御しなければなりません(MUST)。権限管理におけるユーザーの行動パターンは、 デバイス固有の制約(すなわち、自動車、IoT、および SmartTV 向け MiniApps)とともに、ユーザーを フィンガープリント可能にする可能性があります。このため、MiniApp ユーザー・エージェントは、デバイスの リソースへのアクセスを制御し、サンドボックス化された環境を維持し、デバイス・センサー、外部ソフトウェア、 個人データなどの機密リソースへのアクセスを保護し、ユーザーの設定を開示しないようにしなければなりません (MUST)。
マニフェストの メンバーを通じて、開発者は
MiniApp が強力な機能にアクセスするための要件を
宣言します。このメンバーにより、プラットフォームは MiniApp が要求する可能性のある制限付きリソース
(req_permissions
メンバー)を理解し、その潜在的な影響をユーザーに知らせ、これらのリソースへのアクセスを許可
(またはブロックしたまま)できます。開発者は、これらの高度なリソースを要求する明確で理解しやすい根拠を
示すために、name
メンバーを使用するべきです(SHOULD)。
reason
ユーザー・エージェントは、強力な機能(例: 位置情報や デバイス・センサー)を使用するためにユーザーが付与する明示的な権限を含め、ユーザーの設定を 管理しなければなりません(MUST)。ユーザー・エージェントは、これらのユーザー設定を セッション間で記憶し、ユーザーがいつでも権限を取り消し、また付与できるようにする仕組みを 実装しなければなりません(MUST)。マニフェストに関連するその他の情報は、 セッション間で永続化する必要はありません。
Web アプリケーションと同様に、MiniApps は UI ダイアログを使用してインストールできます。インストール処理において、
ユーザー・エージェントは、アプリに関する明確な情報(すなわち、
、
app_id、
name、
short_name、
icons)
を表示するべきです(SHOULD)。この透明性のある情報により、エンドユーザーは
インストール前に意識的な判断を下せます。このメタデータに基づき、ユーザー・エージェントは、
ユーザーの信頼を最大化するため、MiniApp
Packaging で定義されるように、パッケージ内のデジタル署名方式を使用して、アプリの完全性を検証しても構いません
(MAY)。
description
ユーザー・エージェントは、インストール済み MiniApp を削除する仕組みを提供するべきです(SHOULD)。削除時には、権限や永続ストレージなど、アプリケーションに関連付けられた その他の永続データや設定を取り消す機会もユーザーに提示することが推奨されます(RECOMMENDED)。
非規範的と示された節に加え、この仕様におけるすべての著作ガイドライン、図、例、および注記は 非規範的です。この仕様におけるその他すべては規範的です。
この文書におけるキーワード MAY、MUST、RECOMMENDED、および SHOULD は、 ここに示すようにすべて大文字で現れる場合に限り、 BCP 14 [RFC2119] [RFC8174] に記述されるとおりに解釈されます。
この仕様は、[RFC5234] で定義される Augmented Backus-Naur Form(ABNF)を使用します。
MiniApp Manifest 仕様は、アルゴリズムを記述するために Infra Standard [INFRA] に依存します。
MiniApp マニフェスト文書の検証に関心のある開発者は、https://w3c.github.io/miniapp-manifest/manifest_schema.json で定義されている JSON スキーマを使用できます。
この節は非規範的です。
この節は非規範的です。
この仕様は、アプリケーション・マニフェストの 拡張性の原則に基づいています。
プロプライエタリ拡張は望ましくありませんが、マニフェスト拡張として含めることはできます。この場合、 新しいメンバーにはベンダー接頭辞を使用することが推奨されます(RECOMMENDED)。
実装者には、プロプライエタリ拡張を Extensions Registry に追加することを推奨します。これにより、 ベンダーや Web コミュニティが定義し文書化した拡張を、コミュニティが追跡できます。
Web App Manifest では、ベンダー接頭辞を使用して新しいプロプライエタリなマニフェスト・メンバーを追加できます: https://www.w3.org/TR/appmanifest/#proprietary-extensions
おそらく同様のものが必要です。
以下は、3 つの仮想的なベンダー拡張の例です。
{
...
"wechat_new_feature": "foo",
"ali_new_url_system": "http://example.org",
"coolminiapp_menu_color": "#FA0000"
...
}
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: