MiniApp標準化ホワイトペーパー第2版

W3Cグループドラフトノート

この文書についての詳細
このバージョン:
https://www.w3.org/TR/2022/DNOTE-mini-app-white-paper-20220701/
最新公開バージョン:
https://www.w3.org/TR/mini-app-white-paper/
最新編集者草案:
https://w3c.github.io/miniapp/white-paper/
履歴:
https://www.w3.org/standards/history/mini-app-white-paper
コミット履歴
編集者:
Qing An (Alibaba)
Dan Zhou (Baidu, Inc)
Martin Alvarez-Espinar (Huawei)
Zitao Wang (Huawei)
Wanming Lin (Intel Corporation)
Kaining Yuan (Intel Corporation)
Canfeng Chen (Xiaomi)
Yinli Chen (Xiaomi)
Anqi Li (W3C)
Fuqiao Xue (W3C)
元編集者:
Dapeng Liu (Alibaba)
Hongru Zhu (Alibaba)
Qingqian Tao (Baidu, Inc)
Zhixing Lei (Baidu, Inc)
Lei Zhao (China Mobile)
Zhiqiang Yu (Huawei)
Xiaowei Jiang (Xiaomi)
フィードバック:
GitHub w3c/miniapp (プルリクエスト, 新しいイシュー, 未解決のイシュー)
public-miniapps-wg@w3.org に、件名行を[mini-app-white-paper] … メッセージのトピック …として送信してください(アーカイブ

概要

この文書は、MiniAppと呼ばれるモバイルアプリケーションの新しい形式を紹介するものです。これは、Web技術に依拠しながら、 ネイティブアプリの機能とも統合する、非常に人気のあるハイブリッドソリューションです。

この文書の位置づけ

この節は、公開時点におけるこの 文書の位置づけを説明するものです。現在のW3C 公開物の一覧、およびこの技術報告書の最新版は、 W3C技術 報告書索引( https://www.w3.org/TR/)で確認できます。

この文書は、MiniApps作業 部会によって、 ノートトラックを用いた グループドラフトノートとして公開されました。

グループドラフトノートは、 W3Cまたはその会員によって承認されたものではありません。

これは草案文書であり、随時、他の文書によって更新、置換、または廃止される可能性があります。 この文書を進行中の作業以外のものとして引用することは不適切です。

W3C 特許 ポリシーは、 この文書について、いかなるライセンス要件またはコミットメントも伴いません。

この文書は、 2021年11月2日版W3Cプロセス文書に従います。

1. 導入

1.1 課題

ネイティブアプリは日常生活で広く受け入れられていますが、ユーザーにとってまだ改善できる点が多くあります。

Webはこれらの問題を回避する理想的なプラットフォームですが、まだ完全とは言えません。

1.2 MiniAppとは何か?

MiniAppは新しいモバイルアプリケーション形式であり、Web技術(特に CSSとJavaScript)に依拠し、ネイティブアプリの機能と統合するハイブリッドソリューションです。

スーパーアプリとは、他の アプリケーション(すなわちMiniApps)をホストしサポートして、プラットフォームのリソースを用いてそれらを実行できるようにする ソフトウェアプラットフォームです。

MiniAppsは、いくつかのスーパーアプリで使われたことにより普及しました。これは、Webとネイティブの間の隔たりを埋めるのに役立つ いくつかの特徴を備えて生まれたためです。

1.3 MiniAppsとPWAの差異

MiniAppsは、Progressive Web Applications(PWA)、ネイティブアプリ、またはWebを置き換えることを目的としているわけではありません

大まかに言えば、これらの技術間の重要な違いの1つは実行 環境です。PWAはブラウザー内のほぼあらゆるWeb対応環境で実行できますが、MiniAppsは 特定のプラットフォームまたはスーパーアプリに束縛されます。もう1つの重要な違いは配布 方式であり、MiniAppsはパッケージ化され自己完結型であるのに対し、PWAのリソースはWeb全体に分散して配布されます。

コーディングの観点では、どちらの技術も類似したプログラミング言語、マークアップ言語、およびCSSベースのスタイルシートを使用します。 MiniAppsは、HTMLのサブセットに基づく専用のドメイン固有言語と、データバインディングおよびイベント管理のための特定の 仕組みを実装しており、Virtual DOM管理を伴うMVVMパラダイムに従います。MiniAppベンダーは、 HTMLに常に直接対応するものがあるとは限らない、類似したUI(User Interface)要素を定義しています。

サービスの観点では、PWAとMiniAppの開発者は、同じ目的と同等の機能を持つAPIにアクセスできますが、 正確に同じ仕様に従うわけではありません。

MiniAppベンダーは、自社のチャネルを通じたアプリのリリースおよび配布管理を目的とした専用APIを定義しています。 その他の専用APIは、具体的なシナリオと実行プラットフォームに結び付いています。たとえば、 デバイスのネイティブなアラームやカレンダー機能を用いてリマインダーを設定するサービス、電話をかけるサービス、 パフォーマンス警告をトリガーするサービスなどです。両方の技術には類似したAPIやサービスがありますが、 それぞれのアプリケーション種別におけるAPI仕様の間には大きな隔たりがあります。PWAは標準Web APIに依拠する一方で、 MiniAppsは、デバイス固有の機能やベンダー専用サービスなど、プラットフォームの機能を最大限に活用するために 非標準APIを実装します。

実装によっては、MiniAppユーザーエージェントはオペレーティングシステム、スーパー アプリ、または異なるさまざまなレンダリングエンジンや WebViewに基づくその他のホスティングプラットフォームであり得ます。MiniAppユーザーエージェントのアーキテクチャは、 次の図に示すように、PWAユーザーエージェントとは異なります。

MiniAppsとPWAのアーキテクチャ
1 MiniAppsとPWAのアーキテクチャ

付録の比較表は、Progressive Web Applications(PWA)と各種MiniApp実装との 違いを識別し、強調しています。これらの違いの一部を次の表にまとめます。

機能 Progressive Web App MiniApp
ソースコード 標準マークアップ言語(HTML)、スタイルシート(CSS)、およびスクリプト(JavaScript)。 HTML、CSS、JavaScriptの非標準方言
デプロイ形式 Webリソース(主にHTML、CSS、JavaScriptコード、およびWebAssemblyモジュール) ZIPコンテナーにパッケージ化されたHTML、CSS、JavaScript、およびその他のリソース。
パッケージング なし。リソースはWeb上でリンクされる。 あり。ベンダーごとに異なるパッケージ形式。
Webサーバー上でファイルをホストする必要 あり なし
インストール不要の利用 あり、ブラウザーで実行。 スーパーアプリ内またはOS上で実行。
スタンドアロンアイコン付きのインストール ブラウザーまたはアプリマーケットプレイスから(任意) なし
サービス Web APIへのアクセス 一部のシステムネイティブAPIを含む、非標準Web APIへのアクセス

1.4 ケーススタディ

1.4.1 ケース1: シェアサイクル サービス

MiniAppsの普及は、シェアサイクルを煩雑な アプリケーションではなく、シームレスなサービスにするのに役立ちます。

  • ユーザーは自分のモバイルデバイス上で任意のMiniAppプラットフォームを選択します。これは通常、すでにログイン済みのスーパーアプリです。
  • ユーザーはスーパーアプリ内で、シェアサイクルに貼り付けられたQRコードラベルをスキャンします。
  • ホストされたアプリは、自動的にシェアサイクルMiniAppへナビゲートし、 自転車を即座に解錠します。
  • 到着すると、ユーザーはMiniApp上で自転車を施錠します。
  • 取引が完了し、支払い詳細のメッセージがユーザーに送信されます。
シェアサイクルサービス
2 MiniAppによるシェアサイクルサービス

ユーザーにとって、MiniAppsはいくつかの観点から利便性をもたらします。

Web ネイティブアプリ MiniApp
ダウンロード/インストール 不要 必要 不要
検証済み/信頼済み いいえ はい はい
ログイン/登録 必要 必要 ユーザー権限
支払い 支払いリクエストを送信 クレジットカードを登録する、または別のアプリへ移動する ホストされたアプリ内で完了

1.4.2 ケース2: AR動物園

MiniApp開発者は、プログラミング言語としてHTML/CSS/JavaScriptをそのまま使うことができますが、MiniAppは より柔軟であるため、日常業務で複雑な機能を素早く開発するのに優れています。

このMiniAppは、AI技術で動物を認識するAR動物園を構築しようとするものです。開発者は、 ネイティブ機能または高度な機能へのアクセスを提供するいくつかのコンポーネントやAPIを追加することで、 それを容易に実現できます(たとえば、画像認識、AR 3D動物モデルレンダリング、音声 合成用の音声API、地図SDKによって提供されるARナビゲーションなど)。

MiniAppsは、検索エンジン、ホストされた アプリ内のMiniAppストア、またはQRコードによって発見できます。

AR動物園
3 AR動物園MiniApp

開発者にとって、MiniAppsに取り組む動機は非常に明確です。

Web ネイティブアプリ MiniApp
発見可能性 検索エンジン マーケットプレイス 複数: 検索エンジン + ホストされたアプリ内のMiniAppストア + QRコード
検証済み/信頼済み なお模索中 ネイティブアプリマーケットプレイスによる ホストアプリプラットフォームによる
デプロイ/再読み込み Webページを読み込み/再読み込み インストール/再インストール JavaScriptエンジンを使用するため、読み込み/再読み込み
プログラミング言語 Webプログラミング言語 新しい/複数の言語: 少なくともiOSとAndroid Webプログラミング言語
API/コンポーネント(AR、画像認識、位置情報、音声API) 非常に基本的 Web開発者にとって複雑 非常に簡単な高レベルAPIとコンポーネント

1.4.3 ケース3: 車両向け MiniApp

MiniAppの目標の1つは、異なるプラットフォーム間で情報とサービスを接続することです。そのため、 スマート自動車、音声制御スピーカー、スマートTVなどのIoTアプリケーションに適しています。

現在では、一部のMiniAppsを車載画面やシステムに適合するように変換することが可能です。また、いくつかの MiniAppベンダーは、さまざまな車種にアプリケーションを配布またはアップグレードするのを支援するために、 車載システム向けに特別に設計されたMiniAppプラットフォームを構築しています。これにより、数百万のWeb開発者が 自動車アプリケーションエコシステムに参加できるようになります。

これらの自動車向けMiniAppsは、給油、洗車、 電子料金収受、保険、レストラン予約、エンターテインメントなど、多くのユーザーシナリオに対応できます。たとえば、 システムが残燃料が20%未満であることを検出した場合、所有者に給油 MiniAppを推奨できます。ユーザーは最寄りのガソリンスタンドの情報を取得し、そこへ向かって MiniApp内での支払いを含めた給油を完了できます。つまり「車両から降りずに給油」できます。

スマートカー
4 スマートカー向けMiniApp(給油アプリ)

1.4.4 ケース4: IoT向けMiniApp

IoTデバイスは、MiniAppsを実行するもう1つの担体になりつつあります。IoT向けMiniAppは、 複数のIoTデバイスプラットフォームおよびオペレーティングシステム間の相互運用性を可能にすることを意図しています。 複数のIoTデバイスプラットフォームやIoTオペレーティングシステム間の違いに対処するのではなく、 IoT向けMiniAppsを導入することで、開発者はIoT デバイス上のアプリケーション開発だけに集中すればよくなります。

一例として、HVAC(暖房、換気、および空調) アプリケーションのスイッチパネルがあります。これは画面と複数の物理ボタンを備えています。この場合、 IoT向けMiniAppを導入することで、スイッチパネルの画面UIをWeb 技術を用いて設計および開発し、HVAC情報を表示できます。たとえば、物理ボタンによって入力された目標温度値と、 測定されたリアルタイム温度値を表示できます。

IoT MiniApp
5 画面と複数の物理ボタンを備えたHVACアプリケーションスイッチパネル上で動作する IoT MiniApp

もう1つの例は、タッチスクリーン付きスマートスピーカーです。この場合、IoT向けMiniAppを導入することで、 スマートスピーカーのタッチスクリーンUIをWeb技術を用いて設計および開発し、 音楽や動画の再生、家庭内IoTデバイスの制御、オンラインショッピングを行うことができます。

スマートスピーカー上のIoT MiniApp
6 タッチスクリーン付きスマートスピーカー上で動作するIoT MiniApp

1.4.5 ケース5: TV向けMiniApp

ユーザー操作がタッチスクリーンに依存する携帯電話上で動作するMiniAppsとは異なり、 TV上で動作するMiniAppsのユーザー操作は、TVリモコンのキーボードとTV画面の フォーカスに切り替わります。

TV向けMiniAppにより、ユーザーはEコマースMiniAppを通じてTV上で商品を購入できます。

TV上で動作するEコマースMiniApp
7 TV上で動作するEコマースMiniApp

また、ユーザーはゲーミングMiniAppsを通じてTV上でゲームをプレイすることもできます。

TV上で動作するゲーミングMiniApp
8 TV上で動作するゲーミングMiniApp

2. MiniApp概要

2.1 中核機能

2.1.1 ビュー 層をロジック層から分離する

MiniAppでは、ビュー層は通常ロジック層から分離されています。

ロジック層とビュー層
9 MiniAppsの一般的なアーキテクチャ

ビュー層は、Webコンポーネントやネイティブ コンポーネントの表示を含むMiniAppページのレンダリングを担当します。これはハイブリッドレンダリングと見なすことができます。たとえば、一部のWebコンポーネントは WebViewでサポートされていない、またはパフォーマンス上の制限がある可能性があるため、MiniAppは地図、動画などのネイティブ コンポーネントにも依存します。

ロジック層はJavaScript Workersで実装されます。Workerは、MiniAppのイベント 処理、API呼び出し、ライフサイクル管理を担当します。

拡張ネイティブ機能は通常、ホストするネイティブアプリまたはOSに由来し、支払い、ファイル 処理、画像スキャン、電話発信などを含みます。これらの機能は特定のAPIを通じて呼び出されます。 MiniAppがネイティブAPIを呼び出すと、JavaScript Bridgeを介して、API呼び出しを拡張ネイティブ機能に転送して さらに処理します。そしてJavaScript Bridgeを介して、拡張ネイティブ機能から結果を取得します。

APIが呼び出されたときのMiniAppのデータフロー
10 APIが呼び出されたときのMiniAppのデータフロー

Workerは各Renderに対して接続を確立し、レンダリングが必要なデータをRenderに転送して さらに処理します。

MiniAppページ内のコンポーネントによってイベントがトリガーされると、このページのRenderはイベントを Workerに送信してさらに処理します。同時に、RenderはWorkerから送信されたデータを待機し、 MiniAppページを再レンダリングします。

レンダリングはステートレスと見なすことができ、すべての状態はWorkerに保存されます。

ビュー層とロジック層を分離する利点には、次のものがあります。

  • 複数のMiniAppページ間でのデータ共有と相互作用に非常に便利です。
  • MiniAppのライフサイクル内で同一のコンテキストを持つことで、 ネイティブアプリ開発の背景を持つ開発者に類似したコーディング体験を提供できます。
  • レンダーとJavaScript Workerを分離し並列に実装することで、 JavaScriptの実行がページレンダリングに影響したり遅くしたりする状況を防ぐことができ、 レンダリング性能の向上に役立ちます。

2.1.2 豊富なAPIとコンポーネント

MiniAppプラットフォームは、開発者が見栄えのするUIを構築するのを支援する多くのコンポーネントを提供します。これには、 viewformimageのような基本的な コンポーネントや、地図のような高レベルコンポーネントが含まれます。

MiniAppベンダーはまた、開発者がWebとネイティブの両方の 機能にアクセスするための多くのAPIを提供します。これには、UI表示API、画像処理APIなどの基本的なインターフェースや、 ユーザーアカウントAPI、地図API、支払いAPIのような高度なものが含まれます。

APIは通常、コンポーネントと連携して動作します。ユーザーがMiniAppページ上の特定のコンポーネントをクリックすると、 関連するAPIを呼び出してユーザーの操作を完了し、必要に応じて現在のMiniAppページを更新します。

2.1.3 MiniAppコンストラクター

ネイティブアプリと同様のユーザー体験を得るため、MiniAppのリソースは通常まとめてパッケージ化されます。 MiniAppパッケージをダウンロードしてインストールした後、MiniAppに必要なすべての静的リソース(すなわち、ページ テンプレート、CSS、JavaScriptファイル、その他の文書)はユーザーの デバイス上に保持されます。これらのリソースは、次回の更新まで余分なダウンロードなしに常に利用できます。

MiniAppパッケージは圧縮ZIPアーカイブであり、次のものを含みます。

  • パッケージのルートディレクトリーに配置された構成文書。構成ファイルには、 次の内容を含めるべきです。
    • MiniApp全体の一般的な説明、および
    • ページの設定と起動のための、対応するパスと構成を含む ページの説明。
  • アプリレベルのライフサイクルコールバックを処理するスクリプトを含む、1つのアプリレベルロジックファイル。
  • ページ構造用のテンプレートコード、ページ スタイリング用のCSSスタイルシート、ページロジック用のJavaScriptコードを含む1つまたは複数のファイル。
  • 完全性検証のためのデジタル署名サポート。

検索および実行時に特定のMiniAppを見つける目的で、MiniAppは パッケージ名またはプラットフォーム上の識別子を持たなければなりません。ユーザーが認識するためのアイコンも必要です。

2.1.4 MiniAppウィジェット

MiniAppページに加えて、MiniAppsは情報の断片またはMiniApp ウィジェットとして表示することもできます。この形式では、開発者は自分たちのサービスやコンテンツをさまざまなホストシナリオ、 いわゆるホスト環境(例: アシスタント、デバイスのグローバル検索など)に配置できます。この機能は、 MiniAppのサービスやコンテンツを具体的なシナリオと結び付け、ユーザーに さらなる利便性を提供します。

たとえば、ユーザーが旅行の列車チケットを購入した場合、スマートアシスタント上のMiniAppウィジェットは列車の最新状況を即座に表示します。 ユーザーはこのウィジェットをクリックし、より詳細な 情報を得るために全画面のMiniAppページへ移動できます。

ホーム画面からMiniAppへのウィジェット
11 ホーム画面からMiniAppへのウィジェット

MiniAppページの場合と同様に、ウィジェットもURIスキームによって記述されます。ホスト環境は、 URIパスを通じて読み込むMiniAppパッケージと対応するウィジェットを指定し、 URIクエリパラメーターを通じてデータをウィジェットに渡します。ウィジェットが読み込まれると、ホスト環境内で 表示およびレンダリングされます。セキュリティと独立性を確保するため、ホストとウィジェットからのデータ、および 異なるウィジェットからのデータは分離されます。

多くのシナリオでは、ウィジェットはより複雑な操作のためにMiniAppページを開くことができます。そのような場合、 ウィジェットは対応するMiniAppとデータを共有する必要があることがよくあります(例: 一貫したログイン 状態を維持する)。したがって、ウィジェットとMiniAppのデータは双方からアクセスできます。言い換えると、 MiniAppウィジェットとページは同じデータアクセス権を持ちます。

ウィジェットの相互作用
12 MiniAppウィジェットの相互作用

ウィジェットの目標の1つは、ユーザーに従来のアプリという概念を忘れさせ、 サービスという形式でユーザーのニーズを真に満たすことです。そのため、すべてのアプリ呼び出し経路に加えて、ウィジェットは、 テキストキーワード、音声 分析、画像認識、コードスキャン、イベントインテントなど、異なるシナリオで異なる方法によってトリガーできます。

注: ウィジェットは中国市場ではQuick Appによって実装されています。

2.1.5 単一インスタンス、 複数エントリー

MiniAppsを発見、起動、アクセスするための入口は複数あります。複数の WebView内のWebコンテンツとは異なり、同じMiniAppに対しては1つのインスタンスだけが作成されるため、MiniAppはその状態と データをグローバルに一貫した形で保持します。たとえば、あるユーザーが初めてQRコードの入口からMiniAppを 開いてログインした後、次回MiniAppストアのような別の入口から戻った場合でも、 ユーザーはログイン状態のままです。

MiniAppsのエントリーには、次のものが含まれますが、これらに限定されません。

  • MiniAppマーケットプレイス
  • 検索エンジン
  • スマートアシスタント
  • QRコード
  • SMS/テキスト
  • 物理オブジェクト(AI付き)
  • ブラウザー
  • カレンダー項目
  • 音声メッセージ(AI付き)

2.1.6 パフォーマンスとユーザー 体験

MiniAppsは、実践を通じて有効であることが証明されたいくつかの仕組みにより、 パフォーマンスとユーザー体験の向上を試みています。

パッケージング

MiniAppのコンストラクターにより、ユーザーはMiniAppを初めて開くときだけ パッケージをダウンロードすればよく、その後はMiniApp内の静的リソース(例: ページ、 スクリプト、CSS)を再度ダウンロードする必要がないため、以降のページの読み込みや 遷移がより効率的になります。この機能はユーザー体験を向上させ、ネットワークトラフィックを 節約します。

同時に、MiniAppには事前ダウンロードの仕組みがあり、MiniAppパッケージを 事前にダウンロードしたり、最初のページのために個別に事前ダウンロードしたりできます。また、ダウンロード中に並列でストリーミング 展開を行うことで、MiniApp起動 段階の所要時間を最小化し、初回起動時の最初のページのパフォーマンス低下とのバランスを取ります。

複数のレンダリングビュー

MiniAppはレンダービュー間でネイティブのページスタック管理を使用し、ページ切り替えは ネイティブコードによって駆動されます。そのため、ページ内のジェスチャー操作や ページ間の切り替えは、ネイティブとまったく同じ滑らかな体験を実現できます。

ビュー層とロジック層が分離されているため、ビュー層は独立してレンダリングできます。 JavaScriptロジックコードにブロックされることなく、ページのレンダリング速度を 大幅に向上させることができます。

ランタイム環境の事前構築と再利用

MiniAppのランタイム環境は通常、MiniAppの起動前に事前構築されるため、 MiniAppの起動時間が短縮されます。事前構築される内容には、レンダリングビュー、静的リソース、 開発者定義のプリフェッチリクエスト、MiniAppsランタイムコンテナーが含まれます。MiniAppが アクティブ化されると、事前構築されたレンダリングビューを引き継ぎ、その後、次のために新しいレンダービューを キャッシュプール内に事前構築し続けます。レンダービューの数には制限があります。 いずれかのレンダービューが閉じられた場合、または数の制限を超えた場合、 最も古く開かれたレンダービューが破棄されます。MiniAppアプリケーションが終了すると、ランタイム は破棄され、アプリケーション環境とリソースを再利用できます。

事前定義されたコンポーネントとAPI

MiniAppプラットフォームは、非常に豊富なコンポーネントとAPIを提供します。 これらのコンポーネントとAPIは通常、開発者のパフォーマンス 要件を満たすようによく設計されています。

JavaScriptフレームワークのプリセットとホットリロード

MiniAppのランタイム環境には、ネイティブコードによって提供される基本機能と フレームワークという2つの主要部分が含まれます。これには、開発者APIとJavaScriptによって実装されたいくつかのコンポーネントが含まれます。 JavaScriptフレームワークはネイティブアプリに組み込まれており、MiniAppを実行する前に MiniAppランタイム環境にあらかじめ読み込まれます。JavaScript フレームワークはホットリロード(使用中の再読み込み)が可能であり、パフォーマンス向上のための多くの可能性をもたらします。

2.1.7 ログイン

MiniAppプラットフォームは、ユーザーがMiniAppにログインするためのさまざまな方法を提供します。ユーザーが すでに本人認証済みでプラットフォームにログインしている場合、 プラットフォームのログイン情報をMiniAppと共有でき、MiniApp独自のアカウント システムとプラットフォームのアカウントシステムとの相互運用を迅速に実現できます。これにより、MiniAppへのアクセスプロセスがより円滑になります。

たとえば、SMS認証を用いた従来のログインプロセスはより時間がかかります。ユーザーは まず携帯電話番号を手動で入力し、SMSを受信した後に認証コードを入力してログインする必要があります。 MiniAppの利点は、開発者がプラットフォームによって提供されるコンポーネント/APIを使用して、 ユーザーの携帯電話番号を安全かつ便利に取得できることです。ユーザーに対して 携帯電話番号によるワンクリックログインプロセスを認可するよう促すことで、 ユーザーにとって全体のプロセスを簡単にし、開発者にとってユーザー情報を取得するコストを削減します。

MiniAppへのサインイン
13 MiniAppへのサインイン

2.1.8 サブパッケージ化

MiniAppのサブパッケージ化は、MiniAppパッケージの開発プロセスを改善するためのビルド機構です。 これは、開発者が異なる業務モジュールを異なるサブパッケージに分割するのに役立ちます。

開発者にとって、MiniAppには既定でメインパッケージがあります。これは起動ページファイルと 共通リソースを含みます。サブパッケージは、開発者の業務 モジュールを柔軟に分割するビルド形式です。ユーザーは、必要に応じて異なるサブパッケージを読み込んだ後、特定のページを開くことができます。

ユーザーにとっては、MiniAppを起動すると、メインパッケージが既定でダウンロードされ、 メインパッケージ内のページが起動されます。ユーザーがサブパッケージ内のページを開く必要がある場合、 MiniApp Runtimeはサブパッケージのダウンロードと読み込みを開始し、サブパッケージページを起動します。

このようなサブパッケージのビルド機構により、複数の チームが共同開発する際の分離と協業がより良くなります。ユーザーがMiniAppsを使用する際には、サブパッケージ化の仕組みによって MiniAppホームページの読み込み速度を向上させ、必要に応じてサブパッケージを読み込み、ユーザー体験を最適化できます。

2.1.9 アドオン

MiniAppにおいて、アドオン/拡張は、既存の MiniAppに特定の機能を追加するカプセル化されたモジュールであり、コンポーネント、JavaScriptモジュール、またはページであり得ます。アドオン/拡張は、 単独で実行されるのではなく、MiniApp内でのみ実行できます。開発者は MiniAppと同じようにアドオン/拡張を開発し、それをMiniAppプラットフォームにアップロードして、他のMiniAppsが 再利用できるようにできます。

MiniAppは、アドオン/拡張によって次のことをサポートします。

  • コード再利用によって開発コストを削減し、開発者が新機能を容易に追加できるよう支援する
  • 開発者が意識しなくても機能を自動的に更新する
  • 未使用の機能を読み込まないことでMiniAppsのパッケージサイズを削減する

アドオン/拡張の仕組みは、MiniApps開発の障壁を下げ、 より多くの開発者をMiniAppエコシステムにもたらします。

2.2 MiniApp市場

この節では、現在主流のMiniAppまたは関連プラットフォームをいくつか説明します。

Alipay Mini Program

Alipay Mini ProgramはAlipayネイティブアプリ上で動作し、Webと ネイティブのハイブリッドソリューションです。Alipay Mini ProgramはCSSやJavaScriptなどのWeb技術に依拠します。同時に、 支払い、信用サービス、顔 認証など、Alipayネイティブアプリの機能を統合しています。

Alipayネイティブアプリ上では100万を超えるMini Programsが動作しており、2億3000万DAU(Daily Active User)を持ちます。ユーザーシナリオには小売、交通、医療サービスなどが含まれます。

Baidu Smart Mini Program

Baidu Smart Mini Programは、Baiduアプリおよび他のパートナーのプラットフォームを基盤として、 人々を情報やサービスへインテリジェントに接続するオープンなエコロジー製品を指します。 BaiduのAI能力とSmart Mini Programs内のすべてのコンテンツに対する理解を通じて、Baiduはユーザーと Smart Mini Programsを正確に接続します。Baiduの検索と情報フィードの二重エンジンにより、 ユーザーはSmart Mini Programs内でアプリのような体験を実現できます。2019年7月時点で、 15万を超えるSmart Mini Programsと2億7000万MAUがあります。

Baidu Smart Mini Programは、私たちのオープンソースアライアンス内でオープンソース化されており、30を超える 協力者がいて、スーパーアプリ、モバイルOS、車載OS、音声制御スピーカー、TVを カバーしています。

Quick Apps(Quick App Alliance、XiaomiおよびHuaweiを含む)

Quick Appは、Quick App Allianceの上位12社の携帯電話メーカーによって開発されたMiniApp標準であり、2億を超えるMAUをカバーしています。 開発者は一度の開発で、すべてのハードウェアベンダーのプラットフォーム上で実行できます。Quick Appsは オペレーティングシステムに深く統合されており、携帯電話システムの複数のシナリオでワンクリックだけで取得できます。 ネイティブレンダリング経路を導入することで、フロントエンド開発と ネイティブのパフォーマンス体験の効果的な組み合わせが実現されます。

Quick Appsは2つの形式で実行できます。ネイティブアプリページのようなQuick Appページ形式と、 シーン内で情報を提示するウィジェット形式です。この2つは異なるユーザーニーズに適応し、 複数のシナリオでシステムとMiniAppを一体として接続します。

360 PC MiniApp

PC上のMiniAppsはまだ初期の探索段階にあります。360 PC MiniAppは、 同社のPCブラウザー内で動作するライトアプリケーションです。従来のWebページと比較して、より多くの 機能と、PCオペレーティングシステムとのより容易な相互作用を備えています。

PC MiniAppsは、企業アカウントとして検証されたものにのみ利用可能です。ほとんどの機能は 厳格な規制の下にあるため、高度に信頼されたWebコンテンツと見なすことができます。

PWAs

PWAsは、現代的なWebアプリケーションを要約する最新の用語です。ネイティブアプリに対応するものとして、 PWAはネイティブアプリのように見え、振る舞い、デバイスのホーム 画面/ランチャー/スタートメニューにインストールできます。ユーザーを再び引き付けるためにプッシュ通知を送信できます。 オフライン時にも使用でき、劣悪なネットワーク条件下でも動作します。幅広い 機能を持つデバイスで動作し、オープンWeb 標準によって定義される新しい機能と連携するように今も進化しています。支払いはPWAアプリ内でユーザーによって行うことができ、 PWAアプリは検索エンジンに適しており、ハイパーリンクと完全に連携します。PWAは技術面および ビジネス面で成功しています(多くのWebサイト、とくに消費者向けのものに広く採用されています)。

3. Webとの連携

この節では、いくつかの典型的なユースケースを選択し、MiniAppsがWebからのサポートを望むいくつかのAPIを提案します。

3.1 アプリケーションライフサイクル

3.1.1 ハイブリッドレンダリング

MiniAppはWebレンダリングとネイティブレンダリングのハイブリッドソリューションです。 Webとネイティブからのレンダリング結果を組み合わせる良い方法があれば非常に有用です。

Webとネイティブの両方から来るレンダリング結果
14 Webとネイティブの両方から来るレンダリング結果

提案: MiniAppには、ネイティブのレンダリング結果をWeb レンダリング結果へ統合するのを支援する標準化されたAPIが必要です。

3.1.2 トランジションアニメーション

MiniAppは、ユーザーがネイティブアプリを使用しているときと同様の体験を得られるよう、 ページ切り替え中にトランジションアニメーションを提供したいと考えていますが、現状ではそれはほぼ不可能です。

提案: MiniAppには、MiniAppページ切り替え中にトランジションアニメーションを追加するためのAPIが必要です。

3.1.3 MiniAppのパッケージコンストラクターを標準化する

MiniAppは、標準化された配布形式を通じて、複数のMiniAppホスティングプラットフォーム向けの パッケージおよび解析規約を形成できます。現在、各MiniAppホスティングプラットフォームは異なる 開発ツール(異なるパッケージング方法)を提供しており、MiniAppは異なる MiniAppホスティング環境で異なる方法で解析されます。

提案: MiniAppは、配布 プロセス中には実際にはパッケージ化(圧縮)されたファイル集合です。統一されたファイル接尾辞でMiniApp(.ma)を記述し、 .maファイルを作成する方法と.maファイルを解析する方法を指定できます。

3.1.4 MiniAppページへのナビゲーションを標準化する

MiniApp内の人気ページについては、別のMiniAppから参照される可能性があり、 ユーザーが訪問したときに正確に呼び出されることが期待されます。

提案: MiniAppにアクセスするための標準化されたプロトコル(URIスキーム)を定義する。

3.1.5 MiniAppウィジェット

AndroidウィジェットやApple dashboardのように、ユーザーはWebページやアプリページを開くことなく、 MiniAppウィジェットで直接情報を取得したりタスクを完了したりできます。MiniAppウィジェットは、 デスクトップやダッシュボードなど、Webブラウザーの外部の環境に表示できます。

提案:

  • MiniAppウィジェットは、WebViewまたはネイティブアプリ ページのいずれかのホスト環境内に表示できます。ホスト環境は、パッケージとウィジェットページを記述する、 対応するURIパスでウィジェットを読み込みます。
  • MiniAppウィジェットは、ローカルデータまたはサーバーからのデータにアクセスできます。同時に、MiniAppウィジェットは 同じパッケージ内のMiniAppと通信できます。
  • MiniAppウィジェットはインタラクティブであるべきです。つまり、任意のユーザー 行動/操作に応答できるべきです。MiniAppウィジェットはWebページまたはアプリページを開く能力を持つべきです。

3.2 パフォーマンスとチューニング

3.2.1 MiniAppにおける「操作可能になるまでの時間」のイベントを定義する

MiniAppは、MiniAppページのTime to Interactive(TTI)が完了した時点を知る必要があります。

提案: MiniAppページのTime to Interactiveが 完了したことを通知する標準化されたイベント。

3.3 グラフィックスとメディア

3.3.1 3Dモデル要素

3Dモデルは豊富なディテールによってますます人気になっています。ARと組み合わせることで、2Dよりも 優れたユーザー体験を提供できます。ビジネスケースにはオンラインショッピング、 広告、教育などが含まれる可能性があります。しかし、現在のWebには、3Dモデルを扱うための標準的で便利な方法がありません。 この文書では、音声、動画、画像を対応するHTMLタグで扱うのと同様に、 3Dモデルを直接扱うHTMLタグを定義することを提案します。

  • 360度ビュー

    ユーザーはジェスチャーによって、さまざまな角度から3Dモデルを表示できます。また、3Dモデルは 拡大/縮小することもできます。全画面で表示することも、Webページに埋め込んで 他のHTMLコンテンツと一緒に表示することもできます。

  • ARで表示

    ユーザーはカメラを使って3Dモデルを現実世界に配置できます。ユーザーはモデルを配置するために異なる 場所を指定できます。

提案: Web上で3Dモデルを指定し、ARによる インタラクティブな3Dコンテンツを可能にする<xmodel>要素。

3.3.2 顔トラッキング

顔トラッキングは多くの3Dシナリオで使用できます。

ライブ動画における顔エフェクト
ライブ動画内の顔にエフェクトを追加します。これらのエフェクトには、全画面フィルター、顔の変形 とメイク、2Dステッカー、3Dヘッドドレスなどが含まれます。これらのエフェクトの多くは、動画ソースからのリアルタイム 顔トラッキングに大きく依存します。
ゲーム
ゲーム開発者は、トラッキングされた顔に基づいてゲーム戦略を設計できます。たとえば、目がまばたきしたときに特定の ゲームロジックをトリガーしたり、落下する果物が開いた口の中にあるかを確認したりできます。
バーチャルメイク
ユーザーが商品ページ上で口紅、アイシャドウ、眼鏡、帽子を試せるようにして、判断を助けます。

提案: video要素を入力として使用し、各 フレームで顔トラッキング出力を更新するFace Tracking API。これには次が含まれます。

  • 各顔のバウンディングボックス
  • 各顔の4x4ポーズ行列
  • 正規化された(x, y)ランドマーク点
  • 頂点、法線、テクスチャ座標を含む顔ジオメトリデータ

3.3.3 手のジェスチャー トラッキングと認識

手のジェスチャーは、動画エフェクトやAR/VRゲームのシナリオで使用でき、アプリをより印象的かつ インタラクティブにします。

提案: 手の動きを追跡し、手の輪郭を取得するための高レベルAPI。

3.3.4 ARCoreとARKitに基づく低レベル AR API

MiniAppsには、Webへ移行したいAR APIがいくつかあります。これらは、ゲーム、3Dモデルプレビュー、 インタラクティブ広告において、より優れたAR 体験を提供するのに役立つためです。

提案: ARCoreとARKitに基づく低レベルAR APIを提供する。これには次が含まれます。

ワールドトラッキング用のカメラビュー行列
携帯電話の空間的位置および向きを表す4x4ビュー行列を提供します。これは、 開発者が3D仮想世界内のカメラ行列をリアルタイムに更新するために使用できます。 これにより、現実世界の位置と 仮想世界内のオブジェクトの位置を対応付けることができます。
平面検出とトラッキング
現実世界の平面を検出し、それらの平面をリアルタイムで追跡します。各平面の中心位置と向きを表す4x4変換 行列を提供します。これは、地面/机の上に3D仮想オブジェクトを配置するために使用できます。
アンカー
アンカーは、現実世界における固定された位置と向きを定義します。開発者は、 ヒットテストによって取得できる4x4変換行列からアンカーを作成できます。この行列は 各フレームで更新され、行列に対応する仮想オブジェクトが現実シーン内の1つの 位置と方向に固定されるようにします。
ヒットテスト
画面位置に対応する現実世界空間内の位置と向きを表す4x4変換行列を取得し、 クリックや仮想 オブジェクト配置などの機能を実装します。
ARをよりよくサポートする
15 ARをよりよくサポートするAPI

4. 現在の標準化作業;WGの 作業

4.1 ライフサイクル

[MINIAPP-LIFECYCLE]は、MiniAppのライフサイクルイベントと、 MiniAppおよび各ページのライフサイクルを管理するプロセスを定義します。この仕様を実装することで、 ユーザーエージェントは、グローバルなアプリケーションライフサイクルとページ ライフサイクルの両方のライフサイクルイベントを管理できます。

2.1.1 ビュー層をロジック層から分離するで説明したように、MiniAppでは、 ビュー層はロジック層から分離されています。ビュー層は、Webレンダリングとネイティブレンダリングを含む MiniAppページのレンダリングを担当します。これはハイブリッドレンダリングと見なすことができます。ロジック層は JavaScript Workerで実装されます。ロジック層は、MiniAppのイベント処理、 API呼び出し、およびライフサイクル管理を担当します。

MiniAppライフサイクル機構は、MiniAppのグローバルアプリケーションライフサイクルイベントと MiniAppページライフサイクルイベントを通じて、MiniAppのビュー層とロジック層を管理する手段を提供します。 MiniAppのグローバルアプリケーションライフサイクル状態とMiniAppページライフサイクル状態についての知識を持って MiniAppを開発することで、ユーザー体験の向上につながります。MiniAppライフサイクルには一連のイベントが含まれ、 MiniAppはそれらを用いて、自身の状態に基づいて動作を変更することを選択できます。

4.2 マニフェスト

[MINIAPP-MANIFEST]は、MiniAppsを記述するための メタデータの集合を定義する仕様です。MiniApp Manifestは、識別情報、 人間が読める説明、バージョン管理データ、スタイル情報など、MiniAppの基本情報を設定するための追加の仕組みを提供することで、 [APPMANIFEST]および[MANIFEST-APP-INFO]仕様を 拡張します。MiniAppマニフェストはまた、MiniAppの一部であるページやウィジェットのルーティングも 構成します。

MiniAppマニフェストは、Web App Manifestのいくつかの基本要素を使用して MiniApp(nameshort_namedescription、およびicons)を記述する JSON文書であり、MiniAppに関する技術的詳細を指定する9つの補足メンバー(app_idversionplatform_versiondevice_typepagesreq_permissions、およびwidgets)を追加し、アプリの見た目と操作感を 構成します(color_schemeおよびwindow)。

4.3 パッケージング

[MINIAPP-PACKAGING]は、MiniAppパッケージのセマンティクスと適合要件、 およびMiniAppのリソースを保持するコンテナーの構造を定義します。これには、ページコンポーネント (すなわちテンプレート、スタイルシート、JavaScriptロジック)、マニフェスト、その他のメディアファイルまたは構成リソースが 含まれます。

この仕様は、MiniAppsの論理構造および物理構造を決定し、MiniAppをパックする ZIPベースのコンテナーのファイルシステム構成と処理に関する要件を保持します。 MiniAppパッケージのインスタンスは、ランタイム環境またはMiniAppユーザーエージェントにおける MiniAppの配布と実行を容易にします。

4.4 アドレッシング

[MINIAPP-ADDRESSING]は、MiniAppsにアクセスするための標準 MiniAppプロトコルを定義するノートです。これは、現在、各MiniApp ベンダーがMiniAppリソースを記述する独自の方法を持ち、MiniAppパッケージを取得するために非常に異なる方法を使用しているため、 プラットフォームをまたいでMiniAppsにアクセスすることが非常に困難であり、ユーザーと開発者の両方の観点から 統一された理解に到達することが難しい、という問題を解決することを目的としています。

この文書はモバイルディープリンク技術を参照し、MiniAppにアクセスする2つの方法、すなわち HTTPSプロトコルを用いる方法とカスタムプロトコルを用いる方法を定義します。さらに、MiniApp Addressingは MiniApp URIの構文を定義します。これには、環境横断アクセスのためのuri-prefix、 MiniAppsのためのuri-infix "miniapp"、およびMiniAppを一意に識別するための識別子とバージョンが 含まれます。

MiniApp Addressingはまた、ユーザーエージェントがMiniApp URIに基づいて対応するmini-appパッケージを取得する方法、 いくつかのエラー処理、およびネットワーク経由でMiniApp パッケージをダウンロードする手順例についても説明します。

4.5 ウィジェット

MiniApp WidgetはMiniApp Pageの特別な形式です。ページと同様に、ウィジェットは MiniAppユーザーエージェントと呼ばれるホスト環境で実行されます。MiniAppページとは異なり、ウィジェットは 画面全体ではなく一定の領域を占有できます。[MINIAPP-WIDGET-REQ]文書は、 MiniApp Widgetを開発するための初期設計上の考慮事項を説明します。これには、ユーザーエージェント、パッケージング、 マニフェスト、アドレッシング、ライフサイクル、UIコンポーネント、API、MiniAppとMiniApp Widget間の通信などが含まれます。詳細なWidget仕様は別文書で説明される予定であり、 ユーザーエージェントの詳細な技術要件と機能を記述します。たとえば、ウィジェット実行環境の潜在的な 依存関係、WidgetによってもたらされるAPIやUI Componentsの潜在的な変更、MiniAppとMiniApp Widget間の通信要件など、Widgetによってもたらされる新機能です。ユーザーエージェント開発者と ウィジェット開発者の双方が、技術開発のためにWidget仕様を参照できます。

4.6 実装、変換 ツール

2021年に、Working Groupは2つの文書、[MINIAPP-MANIFEST]と[MINIAPP-LIFECYCLE]を公開しました。同時に、さまざまなベンダーには 標準化前の実装がいくつかあります。標準の実現可能性を検証し、 標準化前の実装と互換性を持たせるため、作業部会はMiniApp標準 Manifestを、BaiduのApp.jsonやHarmonyOS FAのconfig.jsonなど、異なる標準化前のマニフェストファイルへ変換するためのツールを開発しました。 また、2021年のTPACブレイクアウトセッションで、作業部会はその ツールのデモを行いました。

標準と事前展開が進むにつれて、作業部会は、Packaging、Addressing、Lifecycle、UI components、APIを含む可能性のある、完全で標準化された開発手法をサポートするために、ツールを改良する予定です。

5. インキュベート中の新しいアイデア;CGの作業

5.1 UIコンポーネント

MiniAppコンポーネントは、MiniAppを構成するページの構造、内容、およびロジックを定義するための 構成要素です。各コンポーネントは機能、データ、およびスタイルをカプセル化し、開発者が 再利用可能でカスタマイズ可能な項目を構築できるようにします。

MiniApp UI Components仕様は、開発者がMiniAppプラットフォームをまたいで 均質でありながらカスタマイズされたユーザーインターフェースを構築するために使用できる、必須要素の集合を収集します。

この仕様はHTMLおよびCSSの特定のバージョンを参照しません。HTMLおよびCSS標準への変更の採用と 実装を保証するため、最新のW3C勧告を指し示します。MiniAppユーザーエージェントベンダーと 開発者の双方は、自身のプロセスと システムを最新の状態に保つために、これらの仕様への変更を追跡する必要があります。

この仕様は、Web Componentsに基づき、すべてのMiniApp 仕様に共通する定義済み要素の集合を定義します。

5.2 IoT向けMiniApps

IoT向けMiniAppは、IoT向けMiniAppのユースケースを 説明します。これらのユースケースから導かれて、この仕様はIoT向けMiniAppのアーキテクチャを定義します。 MiniApp PackagingおよびMiniApp Lifecycleを再利用し拡張する方法が指定されています。また、IoT向け MiniApp APIのために、いくつかのAPIも指定されています。

IoT向けMiniAppは、携帯電話やPC上で動作するMiniAppsと類似したアーキテクチャを持ちます。しかし、IoT デバイスは異なるハードウェア機能を持つため、IoT向けMiniAppには次のような独自の特徴があります。

6. セキュリティおよびプライバシーの 考慮事項

MiniAppは、安全な接続をサポートするためにHTTPSを利用します。同じホスト環境内の複数のMiniAppsは、 互いに独立しています。

MiniApp内のユーザー操作には、異なるレベルのユーザー権限が必要です。

権限 ユーザー操作
既定(追加操作不要) ページ共有、クリップボード、バイブレーション、コンパス、モーションセンサー、地図、画面輝度、画面 キャプチャ、バッテリー状態
初回使用時の権限 位置情報、カメラ(QRコードのスキャン)、ネットワーク状態、Bluetooth、NFC
毎回使用時の権限 連絡先、file-apis、ホーム画面への追加、写真ピッカー、電話発信
トークンによる検証 プッシュ
コールバック/メッセージング パスワード不要の支払い
パスワード要求 支払い

異なる観点と異なるセキュリティレベルに応じて、MiniAppフレームワークは 次の方法を提供します。

6.1 機能認証

プライバシーリスクの高い機能について、MiniAppは開発者に対し、そのような機能を使用する許可を MiniApp開発者プラットフォーム上で申請することを求めます。申請には、理由、利用シナリオの詳細な 説明、および利用デモが含まれます。その後、プラットフォームはMiniAppの利用要件に従って申請を審査します。 承認されたMiniAppsだけが、そのような インターフェースを呼び出すことを許可されます。たとえば、ユーザーの携帯電話番号を取得する機能は、高いセキュリティリスクを持つ機能の1つです。

6.2 ユーザー認可

ユーザーのプライバシーに関わるインターフェースについては、ユーザーの認可が必須です。MiniAppは、 これらの慎重に扱うべきインターフェースを、locationalbumaddresscameracalendarなどの複数の認可スコープに分類します。たとえば、MiniAppがカメラ機能を呼び出そうとして、 ユーザーが認可していない場合、ウィンドウがポップアップ表示されます(下図を参照)。これにより、 ユーザーは、そのようなプライバシー関連機能が保護されていることを理解できます。同時に、異なる スーパー アプリにホストされたMiniAppsは、各スーパーアプリの利用特性および 利用シナリオに基づいて、いくつかの異なるプライバシー認可スコープを持つ可能性があります。

ユーザー認可
16 ユーザー認可

6.3 MiniApp監査レビュー

MiniAppパッケージは公開前にMiniAppプラットフォームによって審査されます。プラットフォームは 開発者がMiniAppの新バージョンを公開する唯一の方法であるため、開発者はMiniApp Platform Operation Termsに従わなければなりません。プラットフォーム監査には、データ収集、データ利用、データセキュリティ、 地理的位置など、多くの側面があります。

6.4 ドメインチェック

オンラインWebページをレンダリングできる<web-view>のような一部のコンテナーコンポーネントについては、 MiniAppユーザーエージェントが、そのコンポーネントによってアクセスされるURLを制限する場合があります。 MiniApp Management Centerに設定されたドメインだけが、<web-view>内でアクセスできます。また、そのコンポーネントが <iframe>を含む場合、iframeによって開かれるURLも MiniApp Management Centerに設定されているべきです。このようにして、MiniAppプラットフォームは、MiniAppによって開かれる 動的ページをより堅牢に制御できます。

同様に、MiniAppフレームワークは非同期リクエスト先アドレスの正当性を検証します。

たとえば、リクエスト、ダウンロード、アップロードなどによって起動されるURLについて、そのドメインは MiniApp Management Centerに設定されたドメインに属していなければならず、そのプロトコルは データ送信の安全性を確保するためにHTTPSプロトコルでなければなりません。

7. 世界におけるMiniApp標準化

MiniAppは中国で生まれましたが、世界中で人気が高まっています。類似した製品形式は、 日本、韓国、東南アジア、米国、欧州、アフリカなど、世界の他の地域でも現れています。 MiniApp技術の標準化は、世界のWebコミュニティから大きな注目を集めています。 そのため、MiniApp標準に関する協力は、国際的な共同の取り組みとなっています。

7.1 MiniAppに関するより広範なWeb コミュニティでの議論

MiniApp標準化に関する最初の世界的なWebコミュニティでの議論は、福岡で開催された TPAC 2019の期間中に行われました。 ブレイクアウトセッションが開催され、 その中でMiniAppベンダーがMiniApp技術とMiniApp標準の必要性を紹介しました。 参加者は、パッケージング、マニフェスト、 ライフサイクル、ウィジェットなど、MiniApp標準化の可能な方向性について議論しました。MiniApp標準と 現在のWeb標準化作業との重複を避け、MiniAppプラットフォームとWebの間、 および異なるMiniAppプラットフォーム間の相互運用性を高めるために、特別な努力が払われました。 この議論の直後にMiniApps Ecosystem Community Groupが立ち上げられ、MiniApp仕様のインキュベーションが 始まりました。

仮想開催のTPAC 2020では、 Learning from Mini Appsと題したブレイクアウトセッションが行われました。このブレイクアウトセッションでは、専門家が MiniAppの抽象的な形式とMiniAppsが持ち得る強力な機能について議論しました。また、このセッションでは、 さまざまな開発ツールを通じてMiniAppを構築する方法も共有されました。その後、Web開発者が MiniAppとその開発者体験から何を学べるかに焦点を当てたオープンな議論が行われました。

7.2 CJKにおけるMiniApp

アジア市場におけるMiniAppの製品形式と技術には多くの類似点があります。世界の コミュニティ、とくに中国、日本、韓国の参加者を集め、各地域のMiniApp エコシステムについてコミュニケーションし、MiniAppsに関する標準化作業の将来を議論するため、 W3C MiniApps Working GroupMiniApps Ecosystem Community Groupは、2021年4月に第1回MiniAppsに関するCJK会議を開催しました。 30を超える組織から約90名の参加者が議論に参加し、MiniAppエコシステム、技術アーキテクチャ、 フレームワーク、および車両向けMiniAppのような新しいシナリオにおけるMiniAppsについて意見交換しました。 議論のおおまかな結論としては、MiniApps Working GroupでMiniApp標準の開発が順調に進む中、 MiniApp標準のセキュリティ、プライバシー、アクセシビリティ、および国際化の水平レビューを始める時期であること、 また、MiniAppでIoT技術を活用することは、新しいシナリオにおけるMiniAppにとって非常に有望な方向性であり、 関連する標準化作業において世界のMiniAppコミュニティが協力する良い機会があることです。

7.3 欧州におけるMiniApps

欧州におけるMiniAppsの事例はまだわずかですが、この概念は勢いを増しています。そして、 コミュニティはこれらの技術を探求し始め、従来のアプリマーケットプレイスの外にある新しいビジネスモデルと イノベーションを模索しています。

2021年に、3つのW3C 会員を含むステークホルダーのグループが、Quick App Initiativeを立ち上げました。これは、任意の組織および個人に開かれ、 オープンな協力によって推進される、オープンソース志向の関心グループです。このグループは、フランスを拠点とする 独立非営利組織OW2によってホストされており、ベンダー中立の観点から W3Cの作業を促進し、欧州市場の観点からアウトリーチ、実装、 標準化要件の収集に焦点を当てることを意図した透明なプロセスの下で運営されています。

8. W3Cにおける今後の方向性

MiniAppsのユースケースと要件を満たし、Web標準がMiniAppをよりよくサポートできるようにし、 ユーザーエージェントの革新を探求し、Webを豊かにするために、私たちはグループを設立し、 W3Cにおいて次の作業を含めることを望みます。

詳細には、次の技術的作業をさらに検討すべきです。

注: 現在のMiniApp APIとWeb APIとのさらなるギャップは、並行して分析されます。

9. 用語集

中国語 英語 定義
小程序 Mini Program ネイティブアプリ内で動作するMiniAppの1つの形式。
快应用 Quick App Quick Appアライアンスの12社の携帯電話メーカーによって開発されたMiniApp標準。
渲染环境 rendering view ネイティブビューまたはWebView。
智能助理(负一屏) smart assistant 利便性のためにサービスを提供するスマートアシスタント。通常はホーム画面の左側にあります。
热更新 hot reload 機能を修正または更新するときに再インストールする必要がないこと。MiniAppsでは、 フレームワークの一部がJavaScriptで実装されているため、MiniAppランタイムをホットリロードできます。

A. ギャップ分析

MiniApps、W3C仕様、およびPWAにおけるAPIの比較表を参照してください。

B. 謝辞

この文書にも貢献してくださったGuanyu Liu(360)、He Du(Xiaomi)、Hongguang Dong(Xiaomi)、Xiaoqian Wu(W3C)、Yi Shen(Baidu)、Yefeng Xia(China Mobile)に深く感謝します。

C. 参考文献

C.1 参考情報文献

[APPMANIFEST]
Web Application Manifest. Marcos Caceres; Kenneth Christiansen; Matt Giuca; Aaron Gustafson; Daniel Murphy; Anssi Kostiainen. W3C. 2022年 2月17日. W3C Working Draft. URL: https://www.w3.org/TR/appmanifest/
[MANIFEST-APP-INFO]
Web App Manifest - Application Information. Aaron Gustafson. W3C. 2021年9月30日. W3C Working Group Note. URL: https://www.w3.org/TR/manifest-app-info/
[MINIAPP-ADDRESSING]
MiniApp Addressing. Dan Zhou; Qian Liu; shuo wang; Tengyuan Zhang. W3C. 2022年6月27日. W3C Working Group Note. URL: https://www.w3.org/TR/miniapp-addressing/
[MINIAPP-LIFECYCLE]
MiniApp Lifecycle. Qing An; Haoyang Xu. W3C. 2022年5月28日. W3C Working Draft. URL: https://www.w3.org/TR/miniapp-lifecycle/
[MINIAPP-MANIFEST]
MiniApp Manifest. Martin Alvarez-Espinar; Yongjing ZHANG. W3C. 2022年5月17日. W3C Working Draft. URL: https://www.w3.org/TR/miniapp-manifest/
[MINIAPP-PACKAGING]
MiniApp Packaging. Martin Alvarez-Espinar; Qing An; Tengyuan Zhang; Yongjing ZHANG; Dan Zhou. W3C. 2022年4月28日. W3C Working Draft. URL: https://www.w3.org/TR/miniapp-packaging/
[MINIAPP-WIDGET-REQ]
MiniApp Widget Requirements. Chen Yinli; Canfeng Chen; Bingqing Zhou; Bin Guo. W3C. 2022年4月24日. W3C Working Group Note. URL: https://www.w3.org/TR/miniapp-widget-req/