ミニアプリとは

ミニアプリは、実行にスーパーアプリを必要とする小さいアプリ(通常は 2 ~ 4 MB)です。スーパーアプリから独立して共通しているのは、ウェブ テクノロジー HTML、CSS、JavaScript を使用してビルドされている点です。ミニアプリのランタイムは、基盤となるオペレーティング システムではなくスーパーアプリの WebView であるため、ミニアプリはクロス プラットフォームになります。スーパーアプリが Android、iOS、別の OS のいずれで実行されているかにかかわらず、同じミニアプリを同じスーパーアプリで実行できます。ただし、すべてのミニアプリがすべてのスーパーアプリで実行できるわけではありません。詳しくは、後で詳しく説明します。

ミニアプリは多くの場合、ブランド 2D バーコードを介してアドホックで検出されます。これにより、オフラインからオンラインへの重要な課題が解決されます。たとえば、物理的なレストランのメニューから支払い用のミニアプリへの移動、電動スクーターからレンタルのミニアプリへの移動などがこれにあたります。以下の画像は、WeChat のデモコード ミニアプリ用のブランド 2D バーコードの例を示しています。他のスーパー アプリでは、通常はバーコードを認識できません。

WeChat ブランドの 2D バーコード。
WeChat アプリでこの 2D バーコードをスキャンすると、デモミニアプリが起動します。

ミニアプリは、スーパーアプリの通常のアプリ内検索で見つけることも、チャット メッセージで共有したり、ニュース フィード内のニュース アイテムの一部として表示したりすることもできます。一部のスーパーアプリには、確認済みアカウント(プロファイルにミニアプリを含む)の概念があります。ミニアプリは、ユーザーが立っているビジネスのミニアプリなど、物理的に地理的に近い場合、またはユーザーがスーパーアプリに表示される地図上でルートを検索する場合など、物理的に地理的に近いときにハイライト表示できます。よく使用するミニアプリは、アプリドロワーにあり、多くのスーパーアプリで下にスワイプするか、スーパーアプリ メニューの特別なセクションからアクセスできます。

ユーザー エクスペリエンス

すべてのスーパーアプリでミニアプリのユーザー インターフェースはほぼ同じです。ミニアプリの名前を含むテーマ設定可能なトップバー。画面の右上には、右端のアクション メニューに隣接する閉じるボタンがあり、アプリの共有、お気に入りリストやホーム画面への追加、不正なアプリの報告、フィードバックの提供、設定などの一般的な機能にアクセスできます。次のスクリーンショットは、Alipay スーパーアプリのコンテキストで実行されているショッピング ミニアプリで、操作メニューを開いた状態を示しています。

ショッピング ミニアプリを実行している Alipay スーパーアプリで、トップバー、アクション メニュー ボタン、閉じるボタンがハイライト表示されています。操作メニューが開きます。
Alipay スーパーアプリで実行されているショッピング ミニアプリの操作メニューを開きました。

UI の枠組み

通常、ミニアプリのメイン ナビゲーション用の下部のタブバーがあります。ほとんどのスーパーアプリ プロバイダは、デベロッパーが一般的な UI パラダイム(カルーセル、アコーディオン、進行状況バー、スピナー、スイッチ、マップなど)を簡単に実装できるようにするためのコンポーネントを提供しています。また、異なるミニアプリ間でのユーザー エクスペリエンスの一貫性を保つため、WeChat のミニ プログラム設計ガイドラインでも推奨しています。これは、Apple が Apple ヒューマン インターフェース ガイドラインで奨励しているものや、Google が Android 向け設計推奨事項で奨励しているものに似ています。

Douyin デモミニアプリ。自動進む切り替えやドット インジケーターなどの切り替えボタンを備えた、Douyin スライダー(カルーセル)コンポーネントが表示されています。
さまざまなオプションがある Douyin のスライダー(カルーセル)コンポーネント。

サービス提供

ミニアプリは、個別のリソースとして個別に提供されるのではなく、暗号化されたパッケージ化アプリ、つまりすべてのリソースが 1 つのファイルに格納されたアーカイブとして提供されます。また、通常のウェブアプリとは異なり、ミニアプリ作成者の特定のオリジンからではなく、スーパーアプリ プロバイダから直接提供されます。ミニアプリ作成者のサーバーから引き続き API にアクセスできますが、コアリソース(一般的に App Shell と呼ばれます)はスーパーアプリ プロバイダから提供される必要があります。ミニアプリでは、追加データをリクエストするオリジンを宣言する必要があります。

キャッシュ、更新、ディープリンク

ミニアプリはスーパーアプリのキャッシュに保持されるため、次にユーザーがキャッシュされたミニアプリを起動したときに、ほぼ瞬時に読み込まれます。アップデートがある場合は、新しいアプリ パッケージが読み込まれます。バージョン番号を起動 URI に含めることができるため(ディスカバリを参照)、スーパーアプリはローカルにキャッシュされたバージョンが現在も最新であるかどうかを早期に認識できます。起動 URI にはミニアプリの目的のページも必要に応じて含まれているため、ミニアプリの特定のページにディープリンクできます。ミニアプリは、サイトマップを介して、スーパーアプリ プロバイダのミニアプリ クローラーがインデックス登録できるようにする必要があるページを宣言できます。

macOS の Finder に、キャッシュされた WeChat ミニアプリの「.wxapkg」ファイルを含むフォルダが表示されています。
Mini アプリは、暗号化されたパッケージ化アプリとしてキャッシュに保存されます。

セキュリティと権限

ミニアプリはスーパーアプリ プロバイダによって審査されるため、ユーザーはウェブアプリよりも安全性が高いと認識します。必要になる可能性がある権限をマニフェストまたはミニアプリの構成ファイルで事前に宣言する必要があります。これには、一部のプロバイダでは、各権限が必要な理由の説明も必要になります。ミニアプリでも当然ながら嘘をつくことはあっても、ユーザーにとって明白な理由なしにモーション センサーにアクセスしようとするなど、理由を正当化するのは困難です。ユーザーはなんらかの方法ですでにスーパーアプリにログインしているため、フィンガープリントのインセンティブがウェブと比べて顕著に低くなります(ID、支払い、ソーシャル グラフを参照)。

ミニアプリが特別な権限を必要とする操作を実行するたびに、ユーザーにプロンプトが表示され、プラットフォームによって適用されている場合は、デベロッパーが指定した使用理由も記載されます。以下のスクリーンショットは、ユーザーに位置情報を共有する権限を求める Douyin デモ ミニアプリを示しています。一部のスーパーアプリには、ミニアプリで権限をすぐに使用せずにリクエストしたり、権限のステータスの確認のみを行うために利用したりする命令型 API もあります。これには、一元的なスーパーアプリの権限設定を開く API が含まれる場合もあります。これは、Chrome のサイトの設定に対応します。また、ミニアプリは、データをリクエストする可能性のあるすべてのサーバーのオリジンを事前に宣言する必要があります。

Douyin デモミニアプリで、位置情報プロンプトに [Not Allowed] と [Allowed] の 2 つのオプションが表示されています。
位置情報の利用許可をリクエストしている Douyin デモ ミニアプリ。

強力な機能へのアクセス

ホスティング スーパーアプリは、スーパーアプリが提供する WebView に挿入される JavaScript ブリッジを介して強力な API にアクセスできます(構成要素と互換性をご覧ください)。この JavaScript ブリッジは、オペレーティング システムの API へのフックを提供します。たとえば、getConnectedWifi() のようなミニアプリの JavaScript 関数(現在アクティブな Wi-Fi ネットワークの名前を取得するミニアプリの機能)は、Android の getConnectionInfo() API または iOS の CNCopyCurrentNetworkInfo() API によって内部で容易に実現できます。一般的なスーパーアプリで公開される強力なデバイス API のその他の例としては、Bluetooth、NFC、iBeacon、GPS、システム クリップボード、方向センサー、バッテリー情報、カレンダー アクセス、電話帳へのアクセス、画面の明るさ調整、ファイル システム アクセス、物理フィードバック用ハードウェア ハードウェア、カメラとマイクへのアクセス、画面の録画とスクリーンショットの作成、ネットワーク ステータス、UDP ソケット、バーコード スキャン、デバイスのメモリ情報などがあります。

デバイスの画面の明るさを制御するスライダーが最大まで動かされた WeChat デモミニアプリ。
デバイスの画面の明るさを最大にする WeChat デモ ミニアプリ。

クラウド サービスへのアクセス

多くのスーパーアプリは、スーパーアプリ プロバイダのクラウド サービスへの「サーバーレス」アクセスも提供します。生のクラウド コンピューティングやクラウド ストレージとは別に、テキスト翻訳、オブジェクト検出、画像でのコンテンツ分類、音声認識、その他の機械学習タスクなどの高レベルのタスクも頻繁に含まれます。ミニアプリは広告で収益化できます。広告は通常、スーパーアプリ プロバイダによって提供されます。通常、スーパーアプリ プラットフォームはクラウド分析データも提供するため、ミニアプリ デベロッパーは、ユーザーがアプリをどのように操作しているかをより深く理解できます。

ID、お支払い、ソーシャル グラフ

ミニアプリの非常に重要な機能は、スーパーアプリから共有される ID とソーシャル グラフ情報です。Douyin や WeChat などのスーパーアプリは、広義のソーシャル ネットワーク サイトとして始まりました。そこでは、ユーザーが(場合によっては政府によって確認済みの)ID、友人またはフォロワー ネットワークを持ち、多くの場合、支払いデータも保存しています。たとえば、ショッピング ミニアプリは、スーパーアプリの決済 API を通じて支払いを直接処理できます(場合によっては、処理しなければならないこともあります)。また、ユーザーの同意があれば、配送先住所、電話番号、氏名などのユーザーデータを取得できます。ユーザーに面倒な入力を強いる必要はありません。以下では、WeChat で実行されている Walmart ミニアプリを初めて起動して、おなじみの顔で私に挨拶しています。

[自分] タブに作成者の顔と名前が表示されている Walmart ミニアプリ。
初回訪問時にパーソナライズされた「自分」ビューが表示される Walmart ミニアプリ。

ユーザーがゲーム内でハイスコアなどの実績を共有したり、ステータスの更新を通じて連絡先と競い合ったりできるようにすることで、ミニアプリの人気が高まります。ミニアプリはワンタップでアクセスできるため、ユーザーはスムーズに競争に参加でき、ミニアプリのリーチを広げることができます。

謝辞

この記事は、Joe MedleyKayce BasquesMilica MihajlijaAlan Kent、Keith Gu によってレビューされました。