Open Web Apps プロジェクトの構造は以下の要素から構成されます。
-
Web サーバベースのインストール
-
Web ランタイム
-
統合支援サービス
Web サーバベースのインストール
アプリはそれをホストしているサーバ (「自主配布」) かストアからインストールできます。Mozilla は 2012 年中にアプリを登録できる Firefox Marketplace のベータ版を立ち上げました。他のサードパーティアプリストアもこの構造を利用可能です。無料有料どちらのアプリにも対応します。ストアは、購入したユーザだけがアプリを実行できるようにする購入検証に対応することも可能です。Firefox Marketplace はそうした仕組みを導入します。
Firefox Marketplace では次のようなことが可能です。
- 開発者はマニフェストファイルの場所を入力することで HTML5 ベースのアプリを登録できます。
- 開発者はアプリの価格を設定できます。
- ユーザはデジタルレシートによって自分のアカウントへリンクされたアプリをインストールできます。
- アプリは実行時にユーザのレシートを検証できます。この仕組みは返品や期限付き購入に対応します。
Web ランタイム
アプリはあらゆるモダンブラウザで実行できますが、多くのユーザは Web ベースのアプリにも「ネイティブな」体験を期待しています。Open Web Apps にこの追加機能を提供するソフトウェアは「Web ランタイム」と呼ばれます。今のところ Firefox の一部プレリリース版に Web ランタイム機能が実装されており、Web ランタイムを入手するにはそうした特定バージョンの Firefox をインストールする必要があります。アプリを起動するとき、Firefox は一見してブラウザとして実行されません。単純にバックグラウンドで Web ランタイムを提供するのです。
Web ランタイムは、
- ネイティブ OS に起動アイコンをインストールします。
- アプリを検証した上で、それをネイティブ OS からフレームなしウィンドウで実行できます。
- ネイティブ環境で一般的なアプリケーションのようにアプリを表示します (そのためアプリケーションの切り替えや監視も期待通りに動作します)。
- デバイス機能を統合します。WebAPI プロジェクトは Gecko (Web ランタイムエンジンを含む Firefox のレイアウトエンジン) をこれらの API に直接対応させようと取り組んでいます。
- シームレスな起動体験を提供します。(アプリがレシートを使っている場合) アプリの起動時にレシートが有効であるか検証します。
Firefox の将来のバージョンには Web ランタイムが統合されます。今のところ (2012 年 9 月現在) Windows 版と Mac 版の Firefox Beta か Android 版の Firefox Aurora (プレベータ版) を使うことでそれを試せます。Firefox OS でも利用可能です。
Firefox と Web ランタイムはユーザエージェント (UA) 文字列が同じなので、アプリが Web ランタイム上で実行されているかどうかを UA 文字列から判別することはできません。判別方法は Web ランタイム上にあるかどうかをアプリから判別するには? を参照してください。
Web ランタイムへのプログラミングインタフェースは JavaScript API navigator.mozApps
です。
Web ランタイム内でのページ表示
ページを表示する Web ランタイムの動作はブラウザとまったく同じではありません。アプリを設計する際は以下のことを念頭に置いてください。
- アプリ内ではあらゆる URL を表示できます。開かれるリンクの生成元 (オリジン) について考慮する必要はありませんが、ユーザが別のサイトへ移動した場合、アプリを閉じて開き直す以外に戻る方法がない点に留意してください。そのため、必ずナビゲーション手段を確保してください。
- 大半のリンクはアプリ内で開かれます。
<a target="_blank" href="...">
のようなリンクをクリックした場合、アプリ外の既定ブラウザで開かれます。window.open(url)
の呼び出しはアプリ内で開かれます。window.open(url, "_blank")
の呼び出しもアプリ内で開かれます (ただしこの挙動は変わる可能性があります)。
廃止された We ランタイム
初期の Web ランタイムは Firefox 用の拡張機能「Mozilla Labs App Runtime for Firefox」として利用可能でしたが、その開発は終了しました。PhoneGap (別名 Soup) を使っていた初期の Android 版 Web ランタイムも同様に開発が終了しました。以前利用可能であった HTML5 JavaScript シムによる Web ランタイムも廃止されました。
統合支援サービス
Mozilla では、連携してアプリエコシステムを支えるサービスを提供しています。
Persona
アプリの構造は複数の方法で Persona を統合しています。
- 開発者とユーザは Persona を使って Marketplace へログインします。
- Marketplace から購入したアプリのレシートは、ユーザの Persona 個人認証と結びつけられます。
- Persona を統合したアプリでは、ユーザが簡単にログインできます。
アプリの同期
Mozilla は「Apps in the Cloud」というクラウドベースのアプリ同期サービスを実装しようとしています。このサービスでは、(Mozilla が運営していない BrowserID を実装したストアを含めて) 特定の BrowserID アカウントにリンクされたすべての購入レシートを保存できます。それらのレシートをユーザが持っていすべての端末で同期し、ひとつの端末で購入したアプリを再度購入することなく他の端末でも使用できるようにします。