MiniApp マニフェスト

W3C 作業草案

この文書の詳細
このバージョン:
https://www.w3.org/TR/2025/WD-miniapp-manifest-20250128/
最新公開バージョン:
https://www.w3.org/TR/miniapp-manifest/
最新編集者草案:
https://w3c.github.io/miniapp-manifest/
履歴:
https://www.w3.org/standards/history/miniapp-manifest/
コミット履歴
編集者:
Martin Alvarez-Espinar (Huawei)
Yongjing Zhang (Huawei)
以前の編集者:
Shouren Lan (Huawei)
Zhiqiang Yu (Huawei)
Xiaofeng Zhang (Huawei)
フィードバック:
GitHub w3c/miniapp-manifest (プルリクエスト, 新しい課題, 未解決の課題)

概要

この仕様は、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 によって管理されます。

1. MiniApp マニフェスト

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 は、これらの仕様から基本要素 (すなわち、nameshort_namedescription、および icons) を直接再利用し、MiniApps に固有に影響する補足メンバー(例: app_idversionplatform_versiondevice_typepagesreq_permissions、および widgets)と、それらのルック・アンド・フィール (例: color_scheme および window)を追加します。

1.1 適合性

MiniApp マニフェストは、そのルートに次のメンバーを 含まなければなりません(MUST):

MiniApp マニフェストicons メンバー内の各画像 リソースオブジェクトは、次を含まなければなりません(MUST):

MiniApp マニフェストは、そのルートに widgets メンバーを含んでも構いません(MAY)。このメンバーは、リストである MiniApp ウィジェット リソースの配列を含まなければなりません(MUST)。各 MiniApp ウィジェット・リソースオブジェクトは、 次のメンバーを含まなければなりません(MUST):

MiniApp マニフェストは、そのルートに req_permissions メンバーを含んでも構いません(MAY)。このメンバーは、リストである MiniApp 権限リソースの配列を含まなければなりません(MUST)。各 MiniApp 権限リソースオブジェクトは、 次のメンバーを含まなければなりません(MUST):

MiniApp ユーザー・エージェントは、任意のメンバーをサポートして、マニフェストのベンダー固有拡張を実装しても構いません(MAY)。

1.2 メンバーの概要

次の表は、MiniApp マニフェストのメンバーの概要を示します:

ルートのメンバー
メンバー 必須 説明
app_id 文字列 はい MiniApp 識別子
color_scheme 文字列 いいえ MiniApp の配色
description 文字列 いいえ MiniApp の説明
device_type リスト いいえ 対応デバイス
dir 文字列 いいえ テキストの方向
icons 画像リソース リスト はい MiniApp アイコン
lang 文字列 いいえ MiniApp の主要言語
name 文字列 はい MiniApp 名
pages リスト はい ページのルーティング情報
platform_version プラットフォーム・バージョン・ リソース はい 対応するプラットフォーム・バージョン
req_permissions 権限リソース リスト いいえ 必要な権限
short_name 文字列 いいえ MiniApp の短い名前
version バージョン・リソース はい MiniApp バージョン
widgets ウィジェット・リソース リスト いいえ MiniApp ウィジェット
window ウィンドウ・リソース いいえ ウィンドウ・スタイル
画像リソース オブジェクトのメンバー
(icons リスト)
メンバー 必須 説明
label 文字列 いいえ アクセシブルなテキスト
sizes 文字列 いいえ アイコンの解像度サイズ
src 文字列 はい アイコンのソース
プラットフォーム・バージョン・リソース オブジェクトのメンバー
(platform_version 順序付きマップ)
メンバー 必須 説明
min_code 数値 はい 対応する最小プラットフォーム・バージョン
release_type 文字列 いいえ 対象プラットフォーム・バージョンの種類
target_code 文字列 いいえ 対象プラットフォーム・バージョン・コード
権限リソース オブジェクトのメンバー
(req_permissions リスト)
メンバー 必須 説明
name 文字列 はい 権限名
reason 文字列 いいえ 権限を要求する理由
バージョン・リソース オブジェクトのメンバー
(version 順序付きマップ)
メンバー 必須 説明
code 数値 はい バージョン・コード
name 文字列 はい バージョン名
ウィジェット・リソース オブジェクトのメンバー
(widgets リスト)
メンバー 必須 説明
min_code 数値 いいえ 対応する最小プラットフォーム・バージョン
name 文字列 はい ウィジェット名
path 文字列 はい ウィジェット・パス
ウィンドウ・リソース オブジェクトのメンバー
(window 順序付きマップ)
メンバー 必須 説明
auto_design_width 真偽値 いいえ ページの design_width の自動計算を有効化/無効化します
background_color 文字列 いいえ ウィンドウの背景色
background_text_style 文字列 いいえ 背景テキスト・スタイル
design_width 数値 いいえ ページ設計幅の基準値
enable_pull_down_refresh 真偽値 いいえ プル・トゥ・リフレッシュ・イベントを有効化します
fullscreen 真偽値 いいえ 全画面表示
navigation_bar_background_color 文字列 いいえ ナビゲーション・バーの背景色
navigation_bar_text_style 文字列 いいえ ナビゲーション・バーのテキスト・スタイル
navigation_bar_title_text 文字列 いいえ ナビゲーション・バーのタイトル
navigation_style 文字列 いいえ ナビゲーション・バーのスタイル
on_reach_bottom_distance 数値 いいえ 下端へのプルアップ・イベントを発火する距離
orientation 文字列 いいえ 画面の向きの設定
注記

アプリケーション・ マニフェストの他のメンバー、たとえば scopetheme_color、および shortcuts は、 現在 MiniApp ユーザー・エージェントではサポートされていません。

1.3

この節は非規範的です。

次のコードは、MiniApp マニフェストの例を表します:

1: マニフェスト文書
{
  "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"
  ]		  
}

1.4 Web Application Manifest メンバー

MiniApp マニフェストは、次の基本的なアプリケーション・ マニフェストのメンバーを使用します。

1.4.1 dir メンバー

MiniApp マニフェストdir メンバーは、ローカライズ可能なメンバーの基底方向を指定すると同時に、 MiniApp 全体の既定の基底テキスト方向も指定します。

dir メンバーの値は、[APPMANIFEST] で指定される text-directions のいずれかに 設定できます。テキスト方向の値は次のとおりです:

"ltr"
左から右へのテキスト。
"rtl"
右から左へのテキスト。
"auto" (既定)
明示的な方向性なし。
注記: `dir` メンバーの処理

MiniApp マニフェストを処理する際、[APPMANIFEST] 仕様に従って、 dir メンバーを処理するために dir メンバーを処理するアルゴリズムが使用されます。

1.4.2 icons メンバー

MiniApp マニフェストicons メンバーは、MiniApps のアイコン表現として機能する画像を記述します。このメンバーは、リストであり、画像 リソース順序付き マップから成ります。

[IMAGE-RESOURCE] で指定されているように、画像リソースは次から構成されます:

label
画像のアクセシブル名を表す任意の文字列
sizes
画像のサイズを表す任意の文字列。 これは linksizes 属性と同じ構文を使用して表されます。
src
画像データの取得元となるURL
注記: `icons` メンバーの処理

MiniApp マニフェストを処理する際、[APPMANIFEST] 仕様に従って、 icons メンバーを処理するために 画像リソースを処理するアルゴリズムが使用されます。

注記: アクセシビリティに関する考慮事項

開発者は、画像 リソースのアクセシブル名がその文脈内の外部ラベルから推測できる場合を除き、label を 追加することが強く推奨されます。

1.4.3 lang メンバー

MiniApp マニフェストlang メンバーは、ローカライズ可能なメンバーの主要言語を指定すると同時に、 MiniApp 全体の主要言語も指定します。このメンバーは、[APPMANIFEST] で定義される、 [BCP47] の Language-Tag 生成規則に一致する文字列である、言語 タグ形式の文字列です。

注記: `lang` メンバーの処理

MiniApp マニフェストを処理する際、[APPMANIFEST] 仕様に従って、 lang メンバーを処理するために lang メンバーを処理するアルゴリズムが使用されます。

1.4.4 name メンバー

MiniApp マニフェストname メンバーは、アプリケーションの記述的な名前です。 これはユーザーに直接表示される名前です。デスクトップ・アイコンとともに、また MiniApp 管理の文脈で、 MiniApp の表示名として使用されます。

注記: `name` メンバーの処理

MiniApp マニフェストを処理する際、[APPMANIFEST] 仕様に従って、 name メンバーを処理するために テキスト・メンバーを処理するアルゴリズムが使用されます。

1.4.5 short_name メンバー

MiniApp マニフェストshort_name メンバーは、MiniApp の簡潔で読みやすい名前を提供します。 name で提供される MiniApp の完全な名前を表示するための十分な空間がない場合に使用できます。

注記: `short_name` メンバーの処理

MiniApp マニフェストを処理する際、[APPMANIFEST] 仕様に従って、 short_name メンバーを処理するために テキスト・メンバーを処理するアルゴリズムが使用されます。

1.5 Application Information メンバー

次のメンバーは、Web App Manifest - Application Information 仕様 [MANIFEST-APP-INFO] で定義されています。

1.5.1 description メンバー

MiniApp マニフェストdescription メンバーは、[MANIFEST-APP-INFO] で 定義されるように、Web アプリケーションの目的を自然言語で表す MiniApp のテキスト説明を提供します

順序付きマップ json順序付きマップ manifest が与えられたとき、description メンバーを処理するには:

  1. json["description"] が文字列でない場合、戻る。
  2. manifest["description"] を json["description"] に設定する。

1.6 補足メンバー

次のメンバーは、MiniApp マニフェストの範囲内で定義され、MiniApp の特定の側面を扱います。

1.6.1 app_id メンバー

MiniApp マニフェストapp_id メンバーは、MiniApp を一意に識別する文字列です。 このメンバーは主にパッケージ管理に使用され、MiniApp のバージョン管理における更新およびリリース・プロセスを サポートします。

app_id の値は、大文字小文字に敏感であり、Unicode における文字の異なるエンコード方法にも敏感です。 したがって、2 つの app_id 値は、それらが同じコード ポイント列としてエンコードされている場合にのみ等しくなります。

注記: 使用法

MiniApps で一般的な慣行の 1 つは、Java パッケージ命名規約で使用される逆ドメイン名風の規約(例: org.example.miniapp)を、 次の規則の下で使用することです:

appIdRule = name *("." name)
name = ALPHA [*( ALPHA / DIGIT / "-" ) ( ALPHA / DIGIT)]

順序付きマップ json順序付きマップ manifest が与えられたとき、app_id メンバーを処理するには:

  1. json["app_id"] が存在しない場合、または json["app_id"] が文字列でない場合、戻る。
  2. manifest["app_id"] を json["app_id"] に設定する。

1.6.2 color_scheme メンバー

任意のMiniApp マニフェストcolor_scheme メンバーは、MiniApp の推奨配色(すなわち、"auto"、"light、または "dark")を示す文字列であり、ウィンドウ・リソースオブジェクトの他の設定メンバー、 すなわち background_colorbackground_text_stylenavigation_bar_text_style、 および navigation_bar_title_text を上書きします。

このメンバーは、次のいずれかの配色 値を含まなければなりません(MUST):

"auto"
テーマ色はシステムのテーマ色に適応されます。
"light"
明るい配色用。
"dark"
暗い配色用。
注記: 使用法

MiniApp ユーザー・エージェントは、各配色向けに、背景色、カバー画像、アイコンなどの事前定義済みスタイル・リソースを 実装しても構いません(MAY)。また、開発者は、prefers-color-scheme CSS メディア特性 [MEDIAQUERIES-5] を使用して、 各モード用のカスタム・スタイルシートを定義しても構いません(MAY)。

順序付きマップ json順序付きマップ manifest が与えられたとき、color_scheme メンバーを処理するには:

  1. json["color_scheme"] が存在しない場合、
    または json["color_scheme"] が文字列でない場合、
    または json["color_scheme"] が配色値のいずれにも一致しない場合、戻る。
  2. manifest["color_scheme"] を json["color_scheme"] に設定する。

1.6.3 device_type メンバー

任意のMiniApp マニフェストdevice_type メンバーは、MiniApp が実行されることを意図しているデバイスの種類を示す、文字列リストです。このメンバーの値は、 MiniApp がスマートフォン、スマート TV、自動車のヘッドユニット、ウェアラブル、その他のデバイスなどの 特定のプラットフォームで適切に動作するよう設計されているかどうかを、ユーザー・エージェントに通知します。

このメンバーは、初期化プロセス中のデバイス互換性検証に使用されます。その値を確認することで、 ユーザー・エージェントは、UI コンポーネント、CSS サポート、および API の互換性の観点から、 MiniApp がそのプラットフォームで実行に適しているかどうかを判断します。MiniApp ユーザー・エージェントは、 検証プロセスが失敗した場合にプラットフォームの動作をどのように実装するかを決定します (例: 初期化段階を停止してインストールを拒否する、または MiniApp をインストールするが実行を拒否する)。

注記: 使用法

このメンバーで取り得る値の一覧はこの文書では指定されていません。これにより、実装の柔軟性を確保し、 あらゆるデバイスおよびユースケースを考慮できます。一般的な値の例には、smartphonetablettvcarwearable、および iot があります。

順序付きマップ json順序付きマップ manifest が与えられたとき、device_type メンバーを処理するには:

  1. json["device_type"] が存在しない場合、または json["device_type"] がリストでない場合、戻る。
  2. device_type を新しい空のリストとする。
  3. json["device_type"] の各 item について反復する:
    1. item文字列でない場合、戻る。
    2. itemdevice_type追加する。
  4. manifest["device_type"] を device_type に設定する。

1.6.4 pages メンバー

MiniApp マニフェストpages メンバーは、MiniApp の一部であるページの集合を指定するために使用される relative-url stringリストです。 リスト内の各項目は、 ページ・ルートによって識別されるページを表します。

MiniApp ページ・ルートとは、 MiniApp ページの相対パスおよびファイル名です。 ページ・ルートを設定する際、開発者は、 ページのメイン・コンポーネントを定義するファイルの 拡張子を省略しても構いません(MAY)(例: pages/mypage または pages/mypage.html)。

pages リスト内の最初の項目は、 MiniApp のホームページまたはエントリー・ポイントを定義します。

注記: 使用法

Web プラットフォームとの互換性のため、 pages を Web アプリケーション・マニフェストの start_url および scope メンバーとともに使用することが推奨されます(RECOMMENDED)。 これらのメンバーには次の値が設定されます:

  • start_url は、 pages メンバー内の最初の項目と同じ値に設定するべきです(SHOULD)。また、
  • scope は値 "." に設定するべきです(SHOULD)。

順序付きマップ json順序付きマップ manifest が与えられたとき、pages メンバーを処理するには:

  1. json["pages"] が存在しない場合、または json["pages"] がリストでない場合、戻る。
  2. pages を新しいリストとする。
  3. json["pages"] の各 item について反復する:
    1. item文字列でない場合、戻る。
    2. url を、item構文解析した結果とする。
    3. url が失敗である場合、続行する。
    4. pagesurl追加する。
  4. manifest["pages"] を pages に設定する。

1.6.5 platform_version メンバー

MiniApp マニフェストplatform_version メンバーは、MiniApp を実行するための最小要件および意図されたプラットフォーム・バージョンを記述するための、 MiniApp プラットフォーム・バージョン・ リソース順序付き マップを含み、これには min_codetarget_code、 および release_type が含まれます。

順序付きマップ json順序付きマップ manifest が与えられたとき、platform_version メンバーを処理するには:

  1. json["platform_version"] が存在しない場合、または json["platform_version"] が順序付きマップでない場合、戻る。
  2. platform_version を新しい順序付きマップとする。
  3. json["platform_version"] および platform_version を渡して、プラットフォーム・ バージョンの min_code メンバーを処理する
  4. json["platform_version"] および platform_version を渡して、プラットフォーム・ バージョンの target_code メンバーを処理する
  5. json["platform_version"] および platform_version を渡して、プラットフォーム・ バージョンの release_type メンバーを処理する
  6. platform_version["min_code"] が存在しない場合、 failure を返す。
  7. manifest["platform_version"] を platform_version に設定する。

1.6.6 req_permissions メンバー

任意のMiniApp マニフェストreq_permissions メンバーは、MiniApp 権限リソース順序付きマップリストです。

MiniApp 権限リソースは、MiniApp の適切な実行に必要な 具体的なシステム機能(例: デバイスの位置情報、ユーザーの連絡先、センサー、カメラへのアクセス)を 使用するための要求を宣言します。

順序付きマップ json順序付きマップ manifest が与えられたとき、req_permissions メンバーを処理するには:

  1. json["req_permissions"] が存在しない場合、または json["req_permissions"] がリストでない場合、戻る。
  2. permissions を新しいリストとする。
  3. json["req_permissions"] の各 item について反復する:
    1. item順序付きマップでない場合、続行する。
    2. permission順序付きマップとする。
    3. item および permission を渡して、権限リソースの name メンバーを処理する
    4. permission["name"] が存在しない場合、続行する。
    5. item および permission を渡して、権限リソースの reason メンバーを処理する
    6. permissionpermissions追加する。
  4. manifest["req_permissions"] を permissions に設定する。
注記: ユーザーのプライバシーの保護

ユーザー・エージェントは、これらの特定機能へのアクセス中にユーザーのプライバシーを保護するため、 ユーザーの同意を求めます。 req_permissions メンバー内のこの情報は、アプリ・ストアまたはホスティング・プラットフォームによって、ユーザーの 設定、プライバシー・ポリシー、またはデバイス機能に応じて MiniApps をフィルタリングするために 使用される場合があります。

1.6.7 version メンバー

MiniApp マニフェストversion メンバーは、 code および name を表すための、MiniApp バージョン・リソース順序付きマップを含みます。

順序付きマップ json順序付きマップ manifest が与えられたとき、version メンバーを処理するには:

  1. json["version"] が存在しない場合、または json["version"] が順序付きマップでない場合、戻る。
  2. version を新しい順序付きマップとする。
  3. json["version"] および version を渡して、バージョンの code メンバーを処理する
  4. json["version"] および version を渡して、バージョンの name メンバーを処理する
  5. manifest["version"] を version に設定する。

1.6.8 widgets メンバー

任意のMiniApp マニフェストwidgets メンバーは、MiniApp の一部であるMiniApp ウィジェット・リソースリストです。

MiniApp Package は、MiniApp ページとウィジェットを同時に 含んでも構いません(MAY)。

MiniApp の一部であるウィジェットは、MiniApp マニフェストの一部のメンバーを適用します。これには次が含まれます:

ただし、ウィジェットには、MiniApp ウィジェット・リソースで定義される専用フィールドもあります。

順序付きマップ json順序付きマップ manifest が与えられたとき、widgets メンバーを処理するには:

  1. json["widgets"] が存在しない場合、または json["widgets"] がリストでない場合、戻る。
  2. widgets を新しい空のリストとする。
  3. json["widgets"] の各 item について反復する:
    1. item順序付きマップでない場合、続行する。
    2. widget順序付きマップとする。
    3. item および widget を渡して、ウィジェットの name メンバーを処理する
    4. item および widget を渡して、ウィジェットの path メンバーを処理する
    5. itemmanifest、および widget を渡して、ウィジェットの min_code メンバーを処理する
    6. widget["name"] が存在しない場合、または item["path"] が存在しない場合、続行する。
    7. widgetwidgets追加する。
  4. manifest["widgets"] を widgets に設定する。

1.6.9 window メンバー

任意のMiniApp マニフェストwindow メンバーは、ステータス・バー、ナビゲーション・バー、タイトル、背景色などの視覚的な設定要素のスタイルを含め、 MiniApp フレームのルック・アンド・フィールを記述するための、MiniApp ウィンドウ・リソース順序付きマップを含みます。

window オブジェクトのメンバーは、MiniApp マニフェストのルートにある dir および lang メンバーから、テキスト方向と言語設定を継承します。

順序付きマップ json順序付きマップ manifest が与えられたとき、window メンバーを処理するには:

  1. json["window"] が存在しない場合、または json["window"] が順序付きマップでない場合、戻る。
  2. window を新しい順序付きマップ «[ "auto_design_width" → false, "background_color" → "#ffffff", "background_text_style" → "dark", "design_width" → 750, "enable_pull_down_refresh" → false, "fullscreen" → "false", "navigation_bar_background_color" → "#000000", "navigation_bar_text_style" → "white", "navigation_bar_title_text" → "default", "on_reach_bottom_distance" → 50, "orientation" → "portrait" ]» とする。
  3. json["window"] および window を渡して、ウィンドウの auto_design_width メンバーを処理する
  4. json["window"]、window、および "background_color" を渡して、色メンバーを処理する
  5. json["window"] および window を渡して、ウィンドウの background_text_style メンバーを処理する
  6. json["window"] および window を渡して、ウィンドウの design_width メンバーを処理する
  7. json["window"] および window を渡して、ウィンドウの enable_pull_down_refresh メンバーを処理する
  8. json["window"] および window を渡して、ウィンドウの fullscreen メンバーを処理する
  9. json["window"]、window、および "navigation_bar_background_color" を渡して、色メンバーを処理する
  10. json["window"] および window を渡して、ウィンドウの navigation_bar_text_style メンバーを処理する
  11. json["window"] および window を渡して、ウィンドウの navigation_bar_title_text メンバーを処理する
  12. json["window"] および window を渡して、ウィンドウの navigation_style メンバーを処理する
  13. json["window"] および window を渡して、ウィンドウの on_reach_bottom_distance メンバーを処理する
  14. json["window"] および window を渡して、ウィンドウの orientation メンバーを処理する
  15. json["window"] および window を渡して、ウィンドウの auto_design_width メンバーを処理する
  16. manifest["window"] を window に設定する。

1.7 マニフェストの処理

MiniApp マニフェストは、アプリケーション・マニフェストの拡張として、 [APPMANIFEST] で定義される マニフェストの 処理アルゴリズムの拡張点で処理される補足アルゴリズムを提供します。したがって、ユーザー・エージェントは アプリケーション・マニフェストのメンバーの 処理から開始し、拡張点において、次のアルゴリズムを使用して MiniApp マニフェストのメンバーの処理を続行します。

拡張点で、順序付きマップ json順序付きマップ manifest が与えられたとき、MiniApp マニフェストを処理するには:

  1. manifest["name"] が存在しない場合、throwTypeError を投げる。
  2. manifest["icons"] が存在しない場合、throwTypeError を投げる。
  3. iconsmanifest["icons"] とする。
  4. icons["src"] が存在しない場合、throwTypeError を投げる。
  5. manifest["icons"] が存在しない場合、throwTypeError を投げる。
  6. json および manifest を渡して、 app_id メンバーを処理する
  7. manifest["app_id"] が存在しない場合、throwTypeError を投げる。
  8. json および manifest を渡して、color_scheme メンバーを処理する
  9. json および manifest を渡して、description メンバーを処理する
  10. json および manifest を渡して、device_type メンバーを処理する
  11. json および manifest を渡して、 pages メンバーを処理する
  12. manifest["pages"] が存在しない場合、throwTypeError を投げる。
  13. json および manifest を渡して、platform_version メンバーを処理する
  14. manifest["platform_version"] が存在しない場合、throwTypeError を投げる。
  15. json および manifest を渡して、req_permissions メンバーを処理する
  16. json および manifest を渡して、 version メンバーを処理する
  17. manifest["version"] が存在しない場合、throwTypeError を投げる。
  18. json および manifest を渡して、 widgets メンバーを処理する
  19. json および manifest を渡して、 window メンバーを処理する

2. MiniApp プラットフォーム・バージョン・ リソース

MiniApp プラットフォーム・バージョン・リソースは、MiniApp によって使用される最小および対象の プラットフォーム・バージョンを示す順序付きマップです。

次のメンバーは、MiniApp マニフェストの範囲内で定義され、プラットフォーム・バージョン・リソースの特定の側面を扱います。

2.1 min_code メンバー

MiniApp プラットフォーム・バージョン・リソースmin_code メンバーは、MiniApp の通常動作を保証するために MiniApp ユーザー・エージェントのプラットフォームが 対応する最小バージョンを示す非負整数です。

順序付きマップ json順序付きマップ platform_version が与えられたとき、プラットフォーム・バージョンの min_code メンバーを処理するには:

  1. json["min_code"] が存在しない場合、または json["min_code"] が数値でない場合、failure を返す。
  2. platform_version["min_code"] を json["min_code"] に設定する。

2.2 release_type メンバー

MiniApp プラットフォーム・バージョン・リソースrelease_type メンバーは、アプリケーションの実行に必要な MiniApp ユーザー・エージェントの対象プラットフォーム・ バージョンのリリース種別を示す文字列です。

注記: 使用法

MiniApp ベンダーは、このメンバーについて特定のバージョン管理スキームや値を推奨できます(例: CanaryNBetaN、または Release。ここで N は Beta1 などの正の整数を表します)。

順序付きマップ json順序付きマップ platform_version が与えられたとき、プラットフォーム・バージョンの release_type メンバーを処理するには:

  1. json["release_type"] が存在しない場合、または json["release_type"] が文字列でない場合、戻る。
  2. platform_version["release_type"] を json["release_type"] に設定する。

2.3 target_code メンバー

MiniApp プラットフォーム・バージョン・リソースtarget_code メンバーは、MiniApp の通常動作を保証するために MiniApp ユーザー・エージェントのプラットフォームが 対応する対象バージョンを示す非負整数です。

順序付きマップ json順序付きマップ platform_version が与えられたとき、プラットフォーム・バージョンの target_code メンバーを処理するには:

  1. json["target_code"] が存在しない場合、または json["target_code"] が数値でない場合、戻る。
  2. platform_version["target_code"] を json["target_code"] に設定する。

3. MiniApp 権限リソース

MiniApp 権限リソースは、MiniApp の適切な実行に必要な 具体的なシステム機能(例: デバイスの位置情報、ユーザーの連絡先、センサー、カメラへのアクセス)を 使用するための要求を記述する順序付きマップです。

次のメンバーは、MiniApp マニフェストの範囲内で定義され、権限 リソースの特定の側面を扱います。

3.1 name メンバー

MiniApp 権限リソースname メンバーは、要求される機能の名前を示す文字列です。

順序付きマップ json順序付きマップ permission が与えられたとき、権限リソースの name メンバーを処理するには:

  1. json["name"] が存在しない場合、または
    json["name"] が文字列でない場合、または json["name"] が空文字列である場合、戻る。
  2. permission["name"] を json["name"] に設定する。

3.2 reason メンバー

任意のMiniApp 権限リソースreason メンバーは、 [MiniApp permission resource/name=] 属性で指定される機能を要求するために示される理由を 表す文字列です。

順序付きマップ json順序付きマップ permission が与えられたとき、権限リソースの reason メンバーを処理するには:

  1. json["reason"] が存在しない場合、または
    json["reason"] が文字列でない場合、または json["reason"] が空文字列である場合、戻る。
  2. permission["reason"] を json["reason"] に設定する。

4. MiniApp バージョン・リソース

MiniApp バージョン・ リソースは、MiniApp のバージョン・コードとバージョン名を記述する順序付き マップです。

次のメンバーは、MiniApp マニフェストの範囲内で定義され、バージョン リソースの特定の側面を扱います。

4.1 code メンバー

MiniApp バージョン・リソースcode メンバーは、MiniApp のバージョンを表す非負整数です。これは主に MiniApp の保守性とセキュリティを 高めるために使用されます(例: 増分バージョン間の互換性)。 code メンバーは、開発およびデプロイメント・プロセスを支援することを目的としており、通常はエンドユーザーには 表示されません。

順序付きマップ json順序付きマップ version が与えられたとき、バージョンの code メンバーを処理するには:

  1. json["code"] が存在しない場合、または json["code"] が数値でない場合、failure を返す。
  2. version を数値とし、初期値を 1 とする。
  3. json["code"] が 0 より大きい場合:
    versionjson["code"] に設定する。
  4. version["code"] を version に設定する。

4.2 name メンバー

MiniApp バージョン・リソースname メンバーは、MiniApp のバージョンに関する情報を記述するために 主に使用される文字列であり、バージョン管理、MiniApp アプリケーション、 およびプラットフォーム互換性において重要な役割を果たします。これは通常、公開されユーザーに表示される バージョンと見なされます。

注記: 使用法

このメンバーに推奨される(RECOMMENDED)形式は X.Y.Z です。 ここで XY、および Z は非負整数値です(例: 1.10.0)。これは Semantic Versioning [SEMANTIC-VERSIONING] で指定されています。

順序付きマップ json順序付きマップ version が与えられたとき、バージョンの name メンバーを処理するには:

  1. json["name"] が存在しない場合、または json["name"] が文字列でない場合、failure を返す。
  2. version["name"] を json["name"] に設定する。

5. MiniApp ウィジェット・リソース・メンバー

MiniApp ウィジェット・リソースは、MiniApp の一部である ウィジェットを定義し 設定する順序付きマップです。

次のメンバーは、MiniApp マニフェストの範囲内で定義され、ウィジェット リソースの特定の側面を扱います。

5.1 name メンバー

MiniApp ウィジェット・リソースname メンバーは、ウィジェットのタイトルを示す文字列です。

順序付きマップ json順序付きマップ widget が与えられたとき、ウィジェットの name メンバーを処理するには:

  1. json["name"] が存在しない場合、または json["name"] が文字列でない場合、戻る。
  2. widget["name"] を json["name"] に設定する。

5.2 path メンバー

MiniApp ウィジェット・リソースpath メンバーは、ウィジェットに対応する ページ・ルートを定義するrelative-url stringであり、 pages リストと同じ形式で表されます。

順序付きマップ json順序付きマップ widget が与えられたとき、ウィジェットの path メンバーを処理するには:

  1. json["path"] が存在しない場合、または json["path"] が文字列でない場合、戻る。
  2. url を、json["path"] を構文解析した結果とする。
  3. url が失敗である場合、戻る。
  4. widget["path"] を url に設定する。

5.3 min_code メンバー

任意のMiniApp ウィジェット・リソースmin_code メンバーは、MiniApp ウィジェットに対応する最小 プラットフォーム・バージョンを示す数値です。

注記: 使用法

ウィジェット API と MiniApp API は異なる場合があるため、プラットフォームの最小バージョンの宣言も 異なる場合があります。したがって、widgets メンバーが min_code を明示的に省略した場合、ユーザー・エージェントは platform_version オブジェクト内の min_code メンバーで指定されたものと同じ要件と見なします。

順序付きマップ json順序付きマップ widget、および 順序付きマップ manifest が与えられたとき、ウィジェットの min_code メンバーを処理するには:

  1. widget["min_code"] を manifest["min_code"] に設定する。
  2. json["min_code"] が存在しない場合、または json["min_code"] が文字列でない場合、戻る。
  3. widget["min_code"] を json["min_code"] に設定する。

6. MiniApp ウィンドウ・リソース・メンバー

MiniApp ウィンドウ・リソースは、MiniApp を 含むウィンドウを定義し設定する順序付きマップです。

次のメンバーは、MiniApp マニフェストの範囲内で定義され、MiniApp のウィンドウ・リソースの 記述を可能にします。

6.1 auto_design_width メンバー

auto_design_width メンバーは、ページの design_width がユーザー・エージェントによって自動計算されるかどうかを示す真偽値です。 auto_design_widthtrue の場合、 design_width の値は無視されます。この場合、システムの基準幅は画面のピクセル密度に応じて自動的に決定されます。

既定値: false

順序付きマップ json順序付きマップ window が与えられたとき、ウィンドウの auto_design_width メンバーを処理するには:

  1. json["auto_design_width"] が存在しない場合、または json["auto_design_width"] が真偽値でない場合、戻る。
  2. window["auto_design_width"] を json["auto_design_width"] に設定する。

6.2 background_color メンバー

background_color メンバーは、MiniApp を 含むウィンドウの背景色を指定する文字列です。

このメンバーは sRGB 色をサポートし、 アプリケーション・マニフェストの background_color と等価です。

既定値: "#ffffff"

注記: `background_color` メンバーの処理

MiniApp マニフェストを処理する際、[APPMANIFEST] 仕様に従って、 ウィンドウの background_color メンバーを処理するために 色メンバーを処理するアルゴリズムが使用されます。

6.3 background_text_style メンバー

background_text_style メンバーは、背景テキスト・スタイルを指定する文字列であり、 明るいまたは暗いカラーテーマ(すなわち、"light" または "dark")を示します。

このメンバーは prefers-color-scheme の値をサポートし、次のいずれかの背景テキスト・スタイル値を含まなければなりません(MUST):

"light"
明るいスタイル用。
"dark" (既定)
暗いスタイル用。

順序付きマップ json順序付きマップ window が与えられたとき、ウィンドウの background_text_style メンバーを処理するには:

  1. json["background_text_style"] が存在しない場合、または
    json["background_text_style"] が文字列でない場合、または
    json["background_text_style"] が含むものとして 背景テキスト・スタイル値のいずれにも一致しない場合、戻る。
  2. window["background_text_style"] を json["background_text_style"] に設定する。

6.4 design_width メンバー

design_width メンバーは、ページ設計の基準幅をピクセル単位で示す数値です。 これはページ・コンポーネントを視覚的に調整するために使用されます。

値は非負整数であり、既定値は 750 です。

順序付きマップ json順序付きマップ window が与えられたとき、ウィンドウの design_width メンバーを処理するには:

  1. json["design_width"] が存在しない場合、または
    json["design_width"] が数値でない場合、または json["design_width"] が 0 未満である場合、戻る。
  2. window["design_width"] を json["design_width"] に設定する。

6.5 enable_pull_down_refresh メンバー

enable_pull_down_refresh メンバーは、MiniApp とのインタラクション中に pull-to-refresh イベントが有効かどうかを 指定する真偽値です。

既定値: false

順序付きマップ json順序付きマップ window が与えられたとき、ウィンドウの enable_pull_down_refresh メンバーを処理するには:

  1. json["enable_pull_down_refresh"] が存在しない場合、
    または json["enable_pull_down_refresh"] が真偽値でない場合、戻る。
  2. window["enable_pull_down_refresh"] を json["enable_pull_down_refresh"] に設定する。

6.6 fullscreen メンバー

fullscreen メンバーは、MiniApp が全画面表示モードで表示されるかどうかを示す真偽値です。

注記: 使用法

このメンバーが true 値を取る場合、これはアプリケーション・マニフェストの display メンバーにおける fullscreen 値と等価です。値として false を取る場合、これは minimal-ui と等価です。

既定値: false

順序付きマップ json順序付きマップ window が与えられたとき、ウィンドウの fullscreen メンバーを処理するには:

  1. json["fullscreen"] が存在しない場合、
    または json["fullscreen"] が真偽値でない場合、戻る。
  2. window["fullscreen"] を json["fullscreen"] に設定する。

6.11 on_reach_bottom_distance メンバー

on_reach_bottom_distance メンバーは、ページのプルアップ・イベントを発火するために必要な、ウィンドウ下端からの垂直オフセットを 定義する数値です。このメンバーの値は、ピクセル単位で 表される非負整数です。

既定値: 50

順序付きマップ json順序付きマップ window が与えられたとき、ウィンドウの on_reach_bottom_distance メンバーを処理するには:

  1. json["on_reach_bottom_distance"] が存在しない場合、または
    json["on_reach_bottom_distance"] が数値でない場合、または
    json["on_reach_bottom_distance"] が 0 未満である場合、戻る。
  2. window["on_reach_bottom_distance"] を json["on_reach_bottom_distance"] に設定する。

6.12 orientation メンバー

orientation メンバーは、MiniApp の画面の向きの設定を指定する文字列です。

このメンバーは、OrientationLockType [SCREEN-ORIENTATION] で定義される 向きの値、すなわち "portrait" および "landscape" をサポートします。

注記: 使用法

このメンバーは、アプリケーション・マニフェストの orientation と等価です。

既定値: "portrait"

順序付きマップ json順序付きマップ window が与えられたとき、ウィンドウの orientation メンバーを処理するには:

  1. json["orientation"] が存在しない場合、または
    json["orientation"] が文字列でない場合、または
    json["orientation"] が含むものとして 向きの値のいずれにも一致しない場合、戻る。
  2. window["orientation"] を json["orientation"] に設定する。

7. ローカライズ可能なメンバー

ローカライズ可能なメンバーとは、その内容を特定の言語的、 地理的、文化的側面に合わせて適応できるマニフェストメンバーです。これらのローカライズ可能なメンバーは、 マニフェストのルートで定義された言語タグlang) および表示方向 (dir) を共有します。

次のメンバーはローカライズ可能なメンバーです:

8. 依存関係

MiniApp Package の重要な一部として、 manifest.json ファイルは、MiniApp Package リソースを参照することにより、MiniApp のいくつかの重要な側面を記述します。これには、 pages ディレクトリ内のページ・スクリプトや視覚的設定ファイル、 common ディレクトリ内の画像など、さまざまなファイル種別のリソースが含まれます。 詳細は [MINIAPP-PACKAGING] で指定されています。

MiniApp の通常動作は、マニフェストでの適切な設定と、 MiniApp Package リソースの可用性に依存します。 このような依存関係は、開発段階とデプロイメント段階の両方で確認する必要があります。

9. アクセシビリティに関する考慮事項

この節は非規範的です。

この文書は、開発者および発行者が MiniApps の動作と外観を記述し設定できるようにする メタデータの集合を指定します。color_schemewindow リソース・メンバーなどの一部のマニフェスト属性は、ユーザー・エージェントが ユーザーと MiniApp の間のインタラクションを可能にするカスタム・ユーザー・インターフェイスを生成することを 目的としています。

icons メンバーにより、開発者はプラットフォームおよびオペレーティング・システム内での MiniApp の視覚的および アイコン的表現を記述できます。ここで、プラットフォームは、画像を表すためにプラットフォームの アクセシビリティ・サービスと適切に連携するべきであり、代替テキスト説明(例: iconlabelname および short_name) も使用して、アクセシビリティを高めるべきです(すなわち、デバイスのホーム画面上のアイコン、アプリ・ディレクトリでの 一覧表示、およびアプリ設定)。

ユーザー・エージェントは、ユーザー・インターフェイスが知覚可能かつ操作可能であることを保証しなければなりません。 そのため、配色やテーマの設定(すなわち、 color_schemebackground_colorbackground_text_stylenavigation_bar_background_colornavigation_bar_background_colornavigation_bar_text_style、 および navigation_style) など、ユーザー・エージェントのインターフェイスおよびレンダリングされるコンテンツに影響するメンバーを処理する際には、 特別な考慮を払うべきです。また、 orientationfullscreenenable_pull_down_refresh、 および on_reach_bottom_distance などの他の設定にも同様です。

マニフェストの window メンバーは、 ナビゲーション・バーのルック・アンド・フィールや、fullscreen または orientation のようなユーザー・エージェントの ネイティブ UI を変更するその他の機能を含め、MiniApp の外観を定義します。ユーザー・エージェントは、 ネイティブ UI に影響した変更を元に戻し、アプリを閉じるための直感的な仕組みを提供しなければなりません。

このマニフェストを解釈するユーザー・エージェントは、ユーザーがウィンドウおよびビューポート内で位置を把握し、 それらを制御できるよう支援するべきです。また、device_type メンバーの高度な使用や、 アクセシビリティを高めるためのベンダー固有メンバーによるマニフェスト拡張を通じて、さまざまな利用シナリオに 対応する代替ビューを提供するべきです。したがって、MiniApp ユーザー・エージェントおよびプラットフォームは、 適用される仕様および慣行、特に User Agent Accessibility Guidelines (UAAG) 2.0 に準拠しつつ、ユーザー・スタイルシートやテーマを設定し、アプリケーションの表示およびインタラクションを カスタマイズする仕組みを提供するべきです。

10. セキュリティに関する考慮事項

マニフェスト・データは、プラットフォームがアプリケーションを適切に設定し処理するのに役立ちます。この文書によって 公開される情報は公開情報であるため、第三者エージェント(例: アプリ・マーケットプレイスやリポジトリ)は、 アプリのバージョンを維持し、分類し、一覧表示するためにマニフェスト情報を使用できます。

マニフェストは JSON 文書であり、通常は [UNICODE] を 使用してエンコードされるため、[JSON] および [UNICODE-SECURITY] で説明されるセキュリティ上の 考慮事項が適用されます。開発者がマニフェストにカスタムまたは制約のないデータを含めることを防ぐため、 実装者は JSON Schema で定義されるものより厳格なスキーマを使用し、 メンバー名、型、および値範囲に実装固有の制限を課すことができます(例: メモリ・オーバーフローを防ぐため、 またはプラットフォーム固有の制限を満たすため)。

マニフェストを含む MiniApp リソースの完全性は、[MINIAPP-PACKAGING] で詳述されているように、 MiniApp Package 全体の一部として、 暗号学的ハッシュ機構によって保護されます。

MiniApp には、ディレクトリ内に整理された さまざまなファイル・リソースが、コンテナー 内に含まれます。iconspages、および widgets などのマニフェスト・メンバーは、 ホスティング・プラットフォーム上のローカル・リソースを参照するパスを含みます。MiniApp ユーザー・エージェントは、 MiniApp パッケージ外への 不正アクセスを防ぐため、それらのパスの妥当性を確認し、サンドボックス化された環境を保証しなければなりません (MUST)。

開発者は、ホスティング・プラットフォーム上の外部 MiniApp データ・リソース(すなわち、メイン・パッケージに 含まれないもの)(例: 他のアプリケーションへのディープリンクや共有ストレージ)、またはリモート HTTP サーバーに アクセスする場合があります。前者の場合、MiniApp ユーザー・エージェントは、プラットフォーム上の サンドボックス化された環境を保証するために必要なすべての仕組みを実装するべきです。

pages メンバーは、MiniApp コンテナー内に 保存されたリソースを参照する相対パスを持つページのマップを含め、MiniApp のコンポーネントのルートを定義します。 ユーザー・エージェントは、MiniApp コンテナー内の有効なリソースに対応しない外部 URL またはパスを 無視しなければなりません(MUST)。

マニフェストは、MiniApp の動作中に要求される可能性のある機能を指定します。これには、センサーへのアクセスや、 ネットワーク接続およびデバイスへの直接接続(例: Bluetooth、NFC、USB 経由)の両方を介した他のデバイスとの 通信が含まれます。この宣言は、その機能へのアクセスや使用を意味するものではありません。ただし、 ユーザー・エージェントは、サービスおよび API の正しい使用を保証し、各具体的な機能における潜在的な脆弱性に 対処する仕組みを実装しなければなりません(MUST)。

11. プライバシーに関する考慮事項

この仕様は、機密データを直接扱うものではありません。しかし、MiniApp マニフェストで定義される情報は、プラットフォームがプライバシー・ポリシーを構成し、MiniApp が プライバシーに影響を及ぼす可能性のある他のデバイスのハードウェア、ソフトウェア、およびデータ・リソースを 管理できるようにするのに役立ちます。

MiniApp マニフェストは、個人データの収集、使用、または開示を促すものではありません。しかし、MiniApp ユーザー・エージェントは、フィンガープリンティングに寄与し得る、デバイスの機密性の高いサービスや機能への アクセスを制御しなければなりません(MUST)。権限管理におけるユーザーの行動パターンは、 デバイス固有の制約(すなわち、自動車、IoT、および SmartTV 向け MiniApps)とともに、ユーザーを フィンガープリント可能にする可能性があります。このため、MiniApp ユーザー・エージェントは、デバイスの リソースへのアクセスを制御し、サンドボックス化された環境を維持し、デバイス・センサー、外部ソフトウェア、 個人データなどの機密リソースへのアクセスを保護し、ユーザーの設定を開示しないようにしなければなりません (MUST)。

マニフェストの req_permissions メンバーを通じて、開発者は MiniApp が強力な機能にアクセスするための要件を 宣言します。このメンバーにより、プラットフォームは MiniApp が要求する可能性のある制限付きリソース (name メンバー)を理解し、その潜在的な影響をユーザーに知らせ、これらのリソースへのアクセスを許可 (またはブロックしたまま)できます。開発者は、これらの高度なリソースを要求する明確で理解しやすい根拠を 示すために、reason メンバーを使用するべきです(SHOULD)。

ユーザー・エージェントは、強力な機能(例: 位置情報や デバイス・センサー)を使用するためにユーザーが付与する明示的な権限を含め、ユーザーの設定を 管理しなければなりません(MUST)。ユーザー・エージェントは、これらのユーザー設定を セッション間で記憶し、ユーザーがいつでも権限を取り消し、また付与できるようにする仕組みを 実装しなければなりません(MUST)。マニフェストに関連するその他の情報は、 セッション間で永続化する必要はありません。

Web アプリケーションと同様に、MiniApps は UI ダイアログを使用してインストールできます。インストール処理において、 ユーザー・エージェントは、アプリに関する明確な情報(すなわち、 app_idnameshort_nameiconsdescription) を表示するべきです(SHOULD)。この透明性のある情報により、エンドユーザーは インストール前に意識的な判断を下せます。このメタデータに基づき、ユーザー・エージェントは、 ユーザーの信頼を最大化するため、MiniApp Packaging で定義されるように、パッケージ内のデジタル署名方式を使用して、アプリの完全性を検証しても構いません (MAY)。

ユーザー・エージェントは、インストール済み MiniApp を削除する仕組みを提供するべきです(SHOULD)。削除時には、権限や永続ストレージなど、アプリケーションに関連付けられた その他の永続データや設定を取り消す機会もユーザーに提示することが推奨されます(RECOMMENDED)。

A. 適合性

非規範的と示された節に加え、この仕様におけるすべての著作ガイドライン、図、例、および注記は 非規範的です。この仕様におけるその他すべては規範的です。

この文書におけるキーワード MAYMUSTRECOMMENDED、および SHOULD は、 ここに示すようにすべて大文字で現れる場合に限り、 BCP 14 [RFC2119] [RFC8174] に記述されるとおりに解釈されます。

この仕様は、[RFC5234] で定義される Augmented Backus-Naur Form(ABNF)を使用します。

MiniApp Manifest 仕様は、アルゴリズムを記述するために Infra Standard [INFRA] に依存します。

B. JSON スキーマ

MiniApp マニフェスト文書の検証に関心のある開発者は、https://w3c.github.io/miniapp-manifest/manifest_schema.json で定義されている JSON スキーマを使用できます。

注記: MiniApp Manifest JSON Schema

C. 謝辞

この節は非規範的です。

編集者注
ここに貢献者を含めること!

D. 拡張性

この節は非規範的です。

この仕様は、アプリケーション・マニフェスト拡張性の原則に基づいています。

プロプライエタリ拡張は望ましくありませんが、マニフェスト拡張として含めることはできます。この場合、 新しいメンバーにはベンダー接頭辞を使用することが推奨されます(RECOMMENDED)。

実装者には、プロプライエタリ拡張を Extensions Registry に追加することを推奨します。これにより、 ベンダーや Web コミュニティが定義し文書化した拡張を、コミュニティが追跡できます。

Issue 9: マニフェストのプロプライエタリ拡張

Web App Manifest では、ベンダー接頭辞を使用して新しいプロプライエタリなマニフェスト・メンバーを追加できます: https://www.w3.org/TR/appmanifest/#proprietary-extensions

おそらく同様のものが必要です。

以下は、3 つの仮想的なベンダー拡張の例です。

2: プロプライエタリ拡張
{
  ...
  "wechat_new_feature": "foo",
  "ali_new_url_system": "http://example.org",
  "coolminiapp_menu_color": "#FA0000"
  ...
}

E. 参考文献

E.1 規範的参考文献

[APPMANIFEST]
Web Application Manifest. Marcos Caceres; Kenneth Christiansen; Diego Gonzalez-Zuniga; Daniel Murphy; Christian Liebel. W3C. 2024年11月7日. W3C 作業草案. URL: https://www.w3.org/TR/appmanifest/
[BCP47]
Tags for Identifying Languages. A. Phillips, Ed.; M. Davis, Ed. IETF. 2009年9月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc5646
[css-color-4]
CSS Color Module Level 4. Chris Lilley; Tab Atkins Jr.; Lea Verou. W3C. 2024年2月13日. CRD. URL: https://www.w3.org/TR/css-color-4/
[css-values]
CSS Values and Units Module Level 3. Tab Atkins Jr.; Elika Etemad. W3C. 2024年3月22日. CRD. URL: https://www.w3.org/TR/css-values-3/
[html]
HTML Standard. Anne van Kesteren; Domenic Denicola; Dominic Farolino; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[IMAGE-RESOURCE]
Image Resource. Aaron Gustafson; Rayan Kanso; Marcos Caceres. W3C. 2021年6月4日. W3C 作業草案. URL: https://www.w3.org/TR/image-resource/
[INFRA]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[JSON]
The JavaScript Object Notation (JSON) Data Interchange Format. T. Bray, Ed. IETF. 2017年12月. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc8259
[MANIFEST-APP-INFO]
Web App Manifest - Application Information. Aaron Gustafson. W3C. 2023年8月21日. W3C 作業グループ・ノート. URL: https://www.w3.org/TR/manifest-app-info/
[MEDIAQUERIES-5]
Media Queries Level 5. Dean Jackson; Florian Rivoal; Tab Atkins Jr.; Daniel Libby. W3C. 2021年12月18日. W3C 作業草案. URL: https://www.w3.org/TR/mediaqueries-5/
[MINIAPP-PACKAGING]
MiniApp Packaging. Martin Alvarez-Espinar; Qing An; Tengyuan Zhang; Yongjing ZHANG; Dan Zhou. W3C. 2023年10月23日. W3C 作業草案. URL: https://www.w3.org/TR/miniapp-packaging/
[permissions]
Permissions. Marcos Caceres; Mike Taylor. W3C. 2024年12月20日. W3C 作業草案. URL: https://www.w3.org/TR/permissions/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997年3月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC5234]
Augmented BNF for Syntax Specifications: ABNF. D. Crocker, Ed.; P. Overell. IETF. 2008年1月. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc5234
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017年5月. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[SCREEN-ORIENTATION]
Screen Orientation. Marcos Caceres. W3C. 2023年8月9日. W3C 作業草案. URL: https://www.w3.org/TR/screen-orientation/
[UNICODE]
The Unicode Standard. Unicode Consortium. URL: https://www.unicode.org/versions/latest/
[UNICODE-SECURITY]
Unicode Security Considerations. Mark Davis; Michel Suignard. Unicode Consortium. 2014年9月19日. Unicode Technical Report #36. URL: https://www.unicode.org/reports/tr36/tr36-15.html
[url]
URL Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://url.spec.whatwg.org/
[webidl]
Web IDL Standard. Edgar Chen; Timothy Gu. WHATWG. Living Standard. URL: https://webidl.spec.whatwg.org/

E.2 参考文献

[SEMANTIC-VERSIONING]
Semantic Versioning. URL: https://semver.org/
[UAAG20]
User Agent Accessibility Guidelines (UAAG) 2.0. James Allan; Greg Lowney; Kimberly Patch; Jeanne F Spellman. W3C. 2015年12月15日. W3C 作業グループ・ノート. URL: https://www.w3.org/TR/UAAG20/