(57)【要約】  オフラインでのハイブリッドウェブアプリケーションへのアクセスを提供するシステム、方法、及び非一時的コンピュータ可読媒体が開示される。いくつかの実装において、コンピューティング機器は、ネイティブレイヤとウェブビューとを含んだハイブリッドアプリケーションを用いて構成されうる。ネイティブレイヤはコンピューティング機器のネイティブ機能へのアクセスを提供することができ、その一方でウェブビューはグラフィックユーザインタフェースやサーバ通信機能などのウェブクライアント機能を提供することができる。コンピューティング機器がオフラインでハイブリッドアプリケーションが起動された場合、ネイティブレイヤは、グラフィックユーザインタフェースを提示する及び／又はウェブサーバとの通信を促進するのに必要なウェブコードを含んだリソースバンドルを、ローカルストレージからロードすることができる。同様に、コンピューティング機器がオフラインの場合、ハイブリッドアプリケーションは、ユーザがオフラインでコンテンツアイテムを用いて働くことができるように、ネイティブレイヤを通じてローカルストレージから、前もって記憶されているコンテンツアイテムをウェブビューへロードすることができる。【選択図】図１
2019517042.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
コンピューティング機器によって、前記コンピューティング機器のメモリに、ソフトウェアアプリケーションであって、前記ソフトウェアアプリケーションがネイティブ要素およびリソースバンドルを含み、前記ネイティブ要素が前記コンピューティング機器にネイティブな技術を用いて生成され、前記リソースバンドルが前記ソフトウェアアプリケーションに対するウェブビューを規定する非ネイティブウェブコードを含む、前記ソフトウェアアプリケーションを記憶することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションを選択するユーザ入力を受信することと、
前記ユーザ入力を受信したことに応じて、前記コンピューティング機器によって、前記ソフトウェアアプリケーションの前記ネイティブ要素を実行することと、
前記ネイティブ要素の実行に応じて、前記コンピューティング機器によって、前記ウェブビューを生成するように、前記記憶されたリソースバンドルから前記ネイティブ要素にウェブコードをロードすることと、
前記コンピューティング機器のディスプレイに前記ウェブビューを提示することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションのためのデジタルアセットを提供するサーバ機器へのネットワーク接続が利用可能でないことを判定することと、
前記ネットワーク接続が利用可能でない場合に、前記コンピューティング機器のローカルストレージから、前記ウェブビューを提示するためのデジタルアセットを取得することと、
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記デジタルアセットは、前記リソースバンドルに関連付けられた１つ以上のリソースを含む、方法。
【請求項３】
請求項１に記載の方法であって、前記デジタルアセットは、前記ソフトウェアアプリケーションと関連付けられた１つ以上のコンテンツアイテムを含む、方法。
【請求項４】
請求項１に記載の方法であって、前記デジタルアセットは、前記サーバ機器から前もって受信された、前記ソフトウェアアプリケーションのための前記ウェブビューを規定するウェブコードを含む、方法。
【請求項５】
請求項１に記載の方法であって、
前記サーバ機器への前記ネットワーク接続が利用可能でないと判定したことに応じて、前記ウェブビューによって、前記コンピューティング機器においてローカルで利用可能なコンテンツアイテムを特定するコンテンツアイテムリストの要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記ネイティブ要素によって、前記コンピューティング機器にローカルに記憶されたコンテンツアイテムに基づいて、前記コンテンツアイテムリストを生成することと、
前記ネイティブ要素によって、前記ウェブビューへ、前記コンテンツアイテムリストを送信することと、
前記ウェブビューによって、前記コンピューティング機器のディスプレイに前記コンテンツアイテムリストを提示することと、をさらに含む方法。
【請求項６】
請求項１に記載の方法であって、
前記ウェブビューによって、コンテンツアイテムを選択するユーザ入力を受信することと、
前記コンテンツアイテムの前記選択を受信したことに応じて、前記ウェブビューによって、前記コンピューティング機器におけるローカルストレージから前記コンテンツアイテムを取得するための要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記要求を受信したことに応じて、前記ネイティブ要素によって、前記コンピューティング機器におけるローカルストレージから前記コンテンツアイテムを取得することと、
前記ネイティブ要素によって、前記コンテンツアイテムを前記ウェブビューへ送信することと、
前記ウェブビューによって、前記コンピューティング機器のディスプレイに前記コンテンツアイテムを提示することと、をさらに含む方法。
【請求項７】
請求項６に記載の方法であって、前記コンテンツアイテムを前記ウェブビューへ送信することは、
前記ネイティブ要素によって、前記コンテンツアイテムを系列へエンコードすることと、
前記ソフトウェアアプリケーションのグローバル変数に前記系列を格納することと、
前記グローバル変数の値が変化したことを前記ウェブビューへ通知することと、を含む方法。
【請求項８】
１つ以上のプロセッサにより実行されるときに、前記プロセッサに
コンピューティング機器によって、前記コンピューティング機器のメモリに、ソフトウェアアプリケーションであって、前記ソフトウェアアプリケーションがネイティブ要素およびリソースバンドルを含み、前記ネイティブ要素が前記コンピューティング機器にネイティブな技術を用いて生成され、前記リソースバンドルが前記ソフトウェアアプリケーションに対するウェブビューを規定する非ネイティブウェブコードを含む、前記ソフトウェアアプリケーションを記憶することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションの前記ネイティブ要素を実行することと、
前記ネイティブ要素の実行に応じて、前記コンピューティング機器によって、前記ウェブビューを生成するように、前記記憶されたリソースバンドルから前記ネイティブ要素にウェブコードをロードすることと、
前記コンピューティング機器のディスプレイに前記ウェブビューを提示することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションのためのデジタルアセットを提供するサーバ機器へのネットワーク接続が利用可能でないことを判定することと、
前記ネットワーク接続が利用可能でない場合に、前記コンピューティング機器のローカルストレージから、前記ウェブビューを提示するためのデジタルアセットを取得することと、
を含んだ動作を実行させる命令の１つ以上のシーケンスを含んだ非一時的コンピュータ可読媒体。
【請求項９】
請求項８に記載の非一時的コンピュータ可読媒体であって、前記デジタルアセットは、前記リソースバンドルに関連付けられた１つ以上のリソースを含む、非一時的コンピュータ可読媒体。
【請求項１０】
請求項８に記載の非一時的コンピュータ可読媒体であって、前記デジタルアセットは、前記ソフトウェアアプリケーションと関連付けられた１つ以上のコンテンツアイテムを含む、非一時的コンピュータ可読媒体。
【請求項１１】
請求項８に記載の非一時的コンピュータ可読媒体であって、前記デジタルアセットは、前記サーバ機器から前もって受信された、前記ソフトウェアアプリケーションのための前記ウェブビューを規定するウェブコードを含む、非一時的コンピュータ可読媒体。
【請求項１２】
請求項８に記載の非一時的コンピュータ可読媒体であって、前記命令は、前記プロセッサに、
前記サーバ機器への前記ネットワーク接続が利用可能でないと判定したことに応じて、前記ウェブビューによって、前記コンピューティング機器においてローカルで利用可能なコンテンツアイテムを特定するコンテンツアイテムリストの要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記ネイティブ要素によって、前記コンピューティング機器にローカルに記憶されたコンテンツアイテムに基づいて、前記コンテンツアイテムリストを生成することと、
前記ネイティブ要素によって、前記ウェブビューへ、前記コンテンツアイテムリストを送信することと、
前記ウェブビューによって、前記コンピューティング機器のディスプレイに前記コンテンツアイテムリストを提示することと、
を含む動作を実行させる非一時的コンピュータ可読媒体。
【請求項１３】
請求項８に記載の非一時的コンピュータ可読媒体であって、前記命令は、前記プロセッサに、
前記ウェブビューによって、コンテンツアイテムを選択するユーザ入力を受信することと、
前記コンテンツアイテムの前記選択を受信したことに応じて、前記ウェブビューによって、前記コンピューティング機器におけるローカルストレージから前記コンテンツアイテムを取得するための要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記要求を受信したことに応じて、前記ネイティブ要素によって、前記コンピューティング機器におけるローカルストレージから前記コンテンツアイテムを取得することと、
前記ネイティブ要素によって、前記コンテンツアイテムを前記ウェブビューへ送信することと、
前記ウェブビューによって、前記コンピューティング機器のディスプレイに前記コンテンツアイテムを提示することと、
を含む動作を実行させる非一時的コンピュータ可読媒体。
【請求項１４】
請求項１３に記載の非一時的コンピュータ可読媒体であって、前記コンテンツアイテムを前記ウェブビューへ送信することは、
前記ネイティブ要素によって、前記コンテンツアイテムを系列へエンコードすることと、
前記ソフトウェアアプリケーションのグローバル変数に前記系列を格納することと、
前記グローバル変数の値が変化したことを前記ウェブビューへ通知することと、を含む非一時的コンピュータ可読媒体。
【請求項１５】
システムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサにより実行されるときに、前記プロセッサに
前記システムによって、コンピューティング機器のメモリに、ソフトウェアアプリケーションであって、前記ソフトウェアアプリケーションがネイティブ要素およびリソースバンドルを含み、前記ネイティブ要素が前記コンピューティング機器にネイティブな技術を用いて生成され、前記リソースバンドルが前記ソフトウェアアプリケーションに対するウェブビューを規定する非ネイティブウェブコードを含む、前記ソフトウェアアプリケーションを記憶することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションの前記ネイティブ要素を実行することと、
前記ネイティブ要素の実行に応じて、前記システムによって、前記ウェブビューを生成するように、前記記憶されたリソースバンドルから前記ネイティブ要素にウェブコードをロードすることと、
前記システムのディスプレイに前記ウェブビューを提示することと、
前記システムによって、前記ソフトウェアアプリケーションのためのデジタルアセットを提供するサーバ機器へのネットワーク接続が利用可能でないことを判定することと、
前記ネットワーク接続が利用可能でない場合に、前記システムの機器のローカルストレージから、前記ウェブビューを提示するためのデジタルアセットを取得することと、
を含んだ動作を実行させる命令の１つ以上のシーケンスを含んだ非一時的コンピュータ可読媒体と、を有するシステム。
【請求項１６】
請求項１５に記載のシステムであって、前記デジタルアセットは、前記リソースバンドルに関連付けられた１つ以上のリソースを含む、システム。
【請求項１７】
請求項１５に記載のシステムであって、前記デジタルアセットは、前記ソフトウェアアプリケーションと関連付けられた１つ以上のコンテンツアイテムを含む、システム。
【請求項１８】
請求項１５に記載のシステムであって、前記デジタルアセットは、前記サーバ機器から前もって受信された、前記ソフトウェアアプリケーションのための前記ウェブビューを規定するウェブコードを含む、システム。
【請求項１９】
請求項１５に記載のシステムであって、前記命令は、前記プロセッサに、
前記サーバ機器への前記ネットワーク接続が利用可能でないと判定したことに応じて、前記ウェブビューによって、前記システムにおいてローカルで利用可能なコンテンツアイテムを特定するコンテンツアイテムリストの要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記ネイティブ要素によって、前記システムにローカルに記憶されたコンテンツアイテムに基づいて、前記コンテンツアイテムリストを生成することと、
前記ネイティブ要素によって、前記ウェブビューへ、前記コンテンツアイテムリストを送信することと、
前記ウェブビューによって、前記システムのディスプレイに前記コンテンツアイテムリストを提示することと、
を含む動作を実行させるシステム。
【請求項２０】
請求項１５に記載のシステムであって、前記命令は、前記プロセッサに、
前記ウェブビューによって、コンテンツアイテムを選択するユーザ入力を受信することと、
前記コンテンツアイテムの前記選択を受信したことに応じて、前記ウェブビューによって、前記システムにおけるローカルストレージから前記コンテンツアイテムを取得するための要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記要求を受信したことに応じて、前記ネイティブ要素によって、前記システムにおけるローカルストレージから前記コンテンツアイテムを取得することと、
前記ネイティブ要素によって、前記コンテンツアイテムを前記ウェブビューへ送信することと、
前記ウェブビューによって、前記システムのディスプレイに前記コンテンツアイテムを提示することと、
を含む動作を実行させるシステム。
【請求項２１】
請求項２０に記載のシステムであって、前記コンテンツアイテムを前記ウェブビューへ送信することは、
前記ネイティブ要素によって、前記コンテンツアイテムを系列へエンコードすることと、
前記ソフトウェアアプリケーションのグローバル変数に前記系列を格納することと、
前記グローバル変数の値が変化したことを前記ウェブビューへ通知することと、を含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願とのクロスリファレンス）
本願は、２０１６年４月１９日提出の米国仮出願第６２／３２４８３２号の優先権を主張するものであり、その内容は、参照によって、ここにその全体が取り込まれる。
【背景技術】
【０００２】
今日のコンピュータ技術の多くが、ウェブクライアントを通じてアクセス可能なウェブサイト内で築かれている。例えば、いくつかのウェブサイト及びウェブクライアントが、コンテンツ生成、コラボレーション、及びストレージを提供する。しかしながら、純粋にウェブベースのシステムは限界を有する。例えば、ユーザが新しいコンテンツアイテムを生成するようにウェブクライアントを使用するために、ユーザのコンピューティング機器は、オンラインであり、コンテンツ生成ウェブサイトに接続されていなければならない。さらに、ウェブクライアントは、ユーザのコンピューティング機器との相互動作に関して限定される。例えば、ウェブクライアントは、相互動作のタイプ、および／または。ユーザのコンピューティング機器においてウェブクライアントが記憶することのできるデータの量に限界を有する。その一方で、ウェブクライアントと同一の機能を制限なく実行するネイティブなクライアント側のコードを書くことは、手間のかかる仕事であろう。このように、ユーザの機器がオフラインの間にも動作可能でありながらウェブクライアントの制限を回避することができるハイブリッドクライアントアプリケーションを有することが有益であろう。
【発明の概要】
【０００３】
本開示の追加の特徴及び利点は、以下の記述において説明され、その記述から部分的に明らかであり、又はここで開示される原理の実践によって学習することができる。本開示の特徴及び利点は、添付の請求項において具体的に挙げられる器具や組み合わせを用いて実現され、得ることができる。本開示のこれらの、そして他の特徴は、以下の記述及び添付の請求項からより十分に明らかとなり、又は、ここで説明される原理の実践により学習することができる。
【０００４】
ハイブリッドウェブアプリケーションを自動更新するためのシステム、方法、及び非一時的コンピュータ可読記憶媒体を開示する。いくつかの実装において、コンピューティング機器は、ネイティブレイヤ及びウェブビューを含んだハイブリッドアプリケーションを有して構成されうる。ネイティブレイヤは、コンピューティング機器のネイティブな機能へのアクセスを提供することができ、一方でウェブビューは、グラフィカルユーザインタフェース及びサーバ通信機能などのウェブクライアントの機能を提供することができる。ハイブリッドアプリケーションが起動されると、ネイティブレイヤは、ローカルストレージからリソースバンドルをロードしうる。リソースバンドルは、ウェブビューのグラフィカルユーザインタフェースを提示し、アプリケーションデータを管理し、および／または、ウェブサーバとの通信を促進するのに必要なウェブコードを含みうる。ハイブリッドアプリケーションを更新するために、アプリケーションは、ウェブサーバから更新されたリソースバンドルをダウンロードして、リソースバンドルからウェブコードをリロードすることができる。
【０００５】
ハイブリッドウェブアプリケーションへのオフラインでのアクセスを提供するシステム、方法、非一時的コンピュータ可読記憶媒体が開示される。いくつかの実装において、コンピューティング機器は、ネイティブレイヤ及びウェブビューを含んだハイブリッドアプリケーションを有して構成されうる。ネイティブレイヤは、コンピューティング機器のネイティブな機能へのアクセスを提供することができ、一方で、ウェブビューは、グラフィカルユーザインタフェース及びサーバ通信機能などの、ウェブクライアント機能を提供することができる。コンピューティング機器がオフラインであると共にハイブリッドアプリケーションが起動されると、ネイティブレイヤは、ローカルストレージから、ウェブビューのグラフィカルユーザインタフェースを提示するのに、および／または、ウェブサーバとの通信を促進するのに必要なウェブコードを含んだリソースバンドルをロードすることができる。同様に、コンピューティング機器がオフラインの時に、ハイブリッドアプリケーションは、オフラインでコンテンツアイテムを用いて働くことができるように、ネイティブレイヤを通じて、ローカルストレージから、事前にウェブビューに格納されたコンテンツアイテムをロードすることができる。
【図面の簡単な説明】
【０００６】
本開示の、上で挙げた、そして他の利点及び機能は、添付の図面において図解されている、その特定の実施形態を参照することにより、明らかになるだろう。これらの図面が本開示の単なる例を描いており、したがって、その範囲の限定であると理解されるべきでないことを理解して、ここでの原理は、添付の図面の使用を通じてさらに具体的かつ詳細に記述され説明される。
【図１】図１は、いくつかの実施形態による、機器及びネットワークの例示構成を示す図である。
【図２】図２は、ハイブリッドアプリケーションを更新し、オフラインでのハイブリッドアプリケーションへのアクセスを提供するための例示のシステムのブロック図である。
【図３】図３は、ハイブリッドアプリケーションのネイティブレイヤとウェブビューとの間のネイティブブリッジを提供する例示のシステムのブロック図である。
【図４】図４は、ハイブリッドアプリケーションを更新する例示の処理を説明する要素の相互動作図である。
【図５】図５は、ハイブリッドアプリケーションにおけるネイティブファイルストレージのための例示の処理を説明する要素の相互動作図である。
【図６】図６は、ハイブリッドアプリケーションにおいてオフラインで動作するための例示の処理を説明する要素の相互動作図である。
【図７】図７は、ハイブリッドアプリケーションを更新するための例示の処理を示す図である。
【図８】図８は、オフラインでのハイブリッドアプリケーションへのアクセスを与えるための例示の処理を示す図である。
【図９Ａ】図９Ａは、本技術の様々な実施形態を実装するための例示の取りうるシステム実施形態を示す図である。
【図９Ｂ】図９Ｂは、本技術の様々な実施形態を実装するための例示の取りうるシステム実施形態を示す図である。
【発明を実施するための形態】
【０００７】
本開示の様々な実施形態について、以下、詳細に議論する。特定の実装について議論するが、これは説明の目的のためだけになされているものであることを理解すべきである。当業者であれば、本開示の精神及び範囲から離れることなく、他の要素および構成を使用しうることを認識するだろう。
【０００８】
開示される技術は、ホストするモバイル機器がオフラインの場合であっても、使用することができるハイブリッドモバイルアプリケーションを自己更新するための技術におけるニーズを取り扱う。
【０００９】
開示する技術の様々な実施形態の実装に関して、例示のシステム構成１００を図１に示す。ここで、電子機器は、コンテンツ及び他のデータを交換するために、ネットワークを介して通信する。システムは、図１に図解されるもののように、ワイドエリアネットワーク上で使用するために構成されうる。しかしながら、本原理は、電子機器の相互通信を促進する多種多様なネットワーク構成に対して適用可能である。例えば、ネットワークにおいて、局所型又は分散型で図１のシステム１００の要素のそれぞれが実装されうる。
【００１０】
システム１００において、ユーザは、直接および／または間接通信によってネットワーク１０４に接続されたクライアント機器１０２1、１０２2、…、１０２n（集合的に「１０２」）を通じて、コンテンツ管理システム１０６（例えばオンライン同期されたコンテンツ管理システム）と相互動作することができる。コンテンツ管理システム１０６は、デスクトップコンピュータ；モバイルコンピュータ；モバイル通信機器、例えば、携帯電話、スマートフォン、タブレット；スマートテレビ；セットトップボックス；および／または、ネットワークを利用可能な他の任意のコンピューティング機器などの、様々な異なるクライアント機器からの接続をサポートすることができる。クライアント機器１０２は様々なタイプ、能力、オペレーティングシステム等のものでありうる。さらに、コンテンツ管理システム１０６は、多数のクライアント機器１０２からの接続の受付とそれらとの相互動作とを並行して行うことができる。
【００１１】
ユーザは、クライアント機器１０２iにインストールされたクライアント側アプリケーションを介して、コンテンツ管理システム１０６と対話することができる。いくつかの実施形態では、クライアント側アプリケーションは、コンテンツ管理システム固有の要素を含みうる。例えば、その要素は、スタンドアローン・アプリケーション、１つ以上のアプリケーション・プラグイン、ブラウザ拡張機能でありうる。その一方で、ユーザは、クライアント機器１０２i内に存在してコンテンツ管理システム１０６と通信するように構成される、ウェブブラウザなどの、第三者アプリケーションを介して、コンテンツ管理システム１０６と対話してもよい。いずれのケースにおいても、クライアント側アプリケーションは、コンテンツ管理システム１０６と対話するための、ユーザのためのユーザインタフェース（ＵＩ）を提示することができる。例えば、ユーザは、ファイルシステムと一体化したクライアント側アプリケーションを介して、又はウェブブラウザ・アプリケーションを用いて表示されるウェブページを介して、コンテンツ管理システム１０６と対話することができる。
【００１２】
コンテンツ管理システム１０６は、ユーザが、コンテンツアイテムを格納すること、そして、コンテンツアイテムを検索し、変更し、ブラウズし、および／又は、共有するなど、様々なコンテンツ管理タスクを実行することを可能とすることができる。さらに、コンテンツ管理システム１０６は、ユーザが複数のクライアント機器１０２からコンテンツにアクセスすることを可能とすることができる。例えば、クライアント機器１０２iは、ネットワーク１０４を介して、コンテンツ管理システム１０６にコンテンツをアップロードすることができる。その後、同じクライアント機器１０２i又はある他のクライアント機器１０２jが、コンテンツ管理システム１０６から、そのコンテンツを取得することができる。
【００１３】
様々なコンテンツ管理サービスを促進するために、ユーザは、コンテンツ管理システム１０６を用いてアカウントを生成することができる。ユーザアカウントデータベース１５０は、アカウント情報を維持しうる。ユーザアカウントデータベース１５０は、登録されたユーザのためのプロファイル情報を記憶することができる。いくつかのケースにおいて、ユーザプロファイル内の個人情報は、ユーザ名および／又は電子メールアドレスのみでありうる。しかしながら、コンテンツ管理システム１０６は、誕生日、住所、課金情報等の追加のユーザ情報を受け付けるように構成されてもよい。
【００１４】
ユーザアカウントデータベース１５０は、アカウントタイプ（例えば無料又は有料）、使用情報、（例えばファイル編集履歴）、権限を授けられた最大ストレージスペース、使用されているストレージスペース、コンテンツストレージ位置、セキュリティ設定、個人コンフィグ設定、コンテンツ共有データ等のような、アカウント管理情報を含むことができる。アカウント管理モジュール１２４は、ユーザアカウントデータベース１５０において、ユーザアカウントの詳細を更新および／又は取得するように構成されうる。アカウント管理モジュール１２４は、コンテンツ管理システム１０６における任意の数の他のモジュールと相互動作するように構成されうる。
【００１５】
アカウントは、そのアカウントにおいて認可された１つ以上のクライアント機器１０２から、デジタルデータ、文書、テキストファイル、音声ファイル、映像ファイル等のような、コンテンツアイテムを記憶するのに使用されうる。コンテンツアイテムは、フォルダ、プレイリスト、アルバム等のような、様々な動作と共にコンテンツアイテムをグルーピングするためのコレクションを含んでもよい。例えば、アカウントは、任意のユーザにアクセス可能な公開フォルダを含むことができる。公開フォルダには、ウェブアクセス可能なアドレスが割り当てられうる。そのウェブアクセス可能なアドレスへのリンクが、公開フォルダのコンテンツにアクセスするのに使用されうる。別の例において、アカウントは、写真を対象とすると共に写真に適合した固有の属性及び動作を与える写真コレクション；音声ファイルを再生すると共に他の音声関連動作を実行するための能力を提供する音声コレクション；他の特定の用途のコレクションを含むことができる。アカウントは、複数のユーザアカウントとリンクされると共にその複数のユーザアカウントに利用可能な共有されるコレクションまたはグループコレクションを含むこともできる。複数のユーザに対する許可が、ある共有されるコレクションに対して異なりうる。
【００１６】
コンテンツアイテムは、コンテンツストレージ１６０に記憶されうる。コンテンツストレージ１６０は、単数のストレージ機器、複数のストレージ機器、又はサーバでありうる。代わりに、コンテンツストレージ１６０は、１つ以上の通信ネットワークを介してアクセス可能なクラウドストレージプロバイダまたはネットワークストレージでありうる。コンテンツ管理システム１０６は、コンテンツアイテムがコンテンツ管理システム１０６によって何処に又はどのようにして記憶されているかをクライアント機器１０２が正確に知る必要がないように、クライアント機器１０２から複雑性及び詳細を隠すことができる。いくつかの実施形態において、コンテンツ管理システム１０６は、クライアント機器１０２i上に現れるのと同一のコレクション階層において、コンテンツアイテムを記憶することができる。その一方で、コンテンツ管理システム１０６は、その独自の順序、構成、又は階層において、コンテンツアイテムを記憶することができる。コンテンツ管理システム１０６は、ネットワーク接続可能ストレージ（ＮＡＳ）機器において、リダンダントアレイ・オブ・インディペンデントディスク（ＲＡＩＤ）等において、コンテンツアイテムを記憶することができる。コンテンツストレージ１６０は、ＦＡＴ、ＦＡＴ３２、ＮＴＦＳ、ＥＸＴ２、ＥＸＴ３、ＥＸＴ４、ＨＦＳ／ＨＦＳ＋、ＢＴＲＦＳなどのような１つ以上のパーティションタイプを用いてコンテンツアイテムを記憶することができる。
【００１７】
コンテンツストレージ１６０は、コンテンツアイテム、コンテンツアイテムタイプ、及びコンテンツアイテムの様々なアカウント、コレクションまたはグループに対する関係を記述するメタデータを記憶することもできる。コンテンツアイテムのためのメタデータは、コンテンツアイテムの一部として記憶されてもよいし、別個に記憶されてもよい。１つのバリエーションにおいて、コンテンツストレージ１６０に記憶されている各コンテンツアイテムには、システム全体においてユニークな識別子が割り当てられうる。
【００１８】
コンテンツストレージ１６０は、複製のコンテンツアイテムまたはコンテンツアイテムの複製のセグメントを特定することにより要求されるストレージスペースの量を削減することができる。コンテンツストレージ１６０は、複数のコピーを記憶するのに代えて、単一のコピーを記憶し、その単一のコピーに複製をリンクさせるポインタ又は他の機構を使用することができる。同様に、コンテンツストレージ１６０は、コンテンツアイテム、（異なるバージョンツリーを含んだ）様々なバージョンのコンテンツアイテム、及び変更履歴に対する変更を追跡するコンテンツアイテムバージョン制御を用いることにより、コンテンツアイテムをより効率的に記憶し、及び、動作を取り消すことができる能力を提供することができる。変更履歴は、オリジナルのコンテンツアイテムバージョンに適用されるときに、変更されたコンテンツアイテムのバージョンを生成することができる変更の集合を含むことができる。
【００１９】
コンテンツ管理システム１０６は、１つ以上のクライアント機器１０２からのコンテンツアイテムの自動同期をサポートするように構成されうる。同期は、プラットフォームにとらわれないことができる。すなわち、コンテンツアイテムは、様々なタイプ、能力、オペレーティングシステム等の多数のクライアント機器１０２にわたって同期されうる。例えば、クライアント機器１０２iは、クライアント機器１０２iのファイルシステムにおけるコンテンツを関連するユーザアカウントにおけるコンテンツとコンテンツ管理システム１０６における同期モジュール１３２を介して同期させるクライアントソフトウェアを含みうる。いくつかのケースにおいて、クライアントソフトウェアは、指定されたコレクションにおけるコンテンツと、新規の、消去された、変更された、コピーされた、又は移動されたコンテンツアイテムもしくはコレクションなどの、そのサブコレクションとへ、変更を同期させることができる。クライアントソフトウェアは、独立したソフトウェアアプリケーションであってもよいし、オペレーティングシステムにおける既存のコンテンツ管理アプリケーションと統合されてもよいし、そのいくつかの組み合わせであってもよい。既存のコンテンツ管理アプリケーションと統合されるクライアントソフトウェアの１つの例において、ユーザは、バックグラウンド処理が変更に対するローカルコレクションを監視すると共にコンテンツ管理システム１０６にそれらの変化を同期させる一方で、そのローカルコレクションにおいてコンテンツアイテムを直接操作することができる。反対に、バックグラウンド処理は、コンテンツ管理システム１０６において更新されたコンテンツアイテムを特定してそれらの変更をローカルコレクションに同期させることができる。クライアントソフトウェアは、同期動作の通知を提供することができ、コンテンツ管理アプリケーション内で直接コンテンツの状態の表示を提供することができる。場合によっては、クライアント機器１０２iは、利用可能なネットワーク接続を有しなくてもよい。このシナリオにおいて、クライアントソフトウェアは、コンテンツアイテムの変更のためのリンクが付されたコレクションを監視して、ネットワーク接続が利用可能なときに、コンテンツ管理システム１０６への最新の同期のためのそれらの変更をキューイングしてもよい。同様に、ユーザは、手動で、コンテンツ管理システム１０６との同期を開始し、停止し、又は再開しうる。
【００２０】
ユーザは、ユーザインタフェースモジュール１２２によって生成されて供されるウェブインタフェースを介して、コンテンツを見る又は操作することができる。例えば、ユーザは、ウェブブラウザにおいて、コンテンツ管理システム１０６によって提供されるウェブアドレスへ移動しうる。コンテンツアイテムの新しいバージョンのアップロードなどの、ウェブインタフェースを通じてなされたコンテンツストレージ１６０におけるコンテンツに対する変更または更新は、ユーザのアカウントに関連付けられた他のクライアント機器１０２に及びうる。例えば、それぞれが独自のクライアントソフトウェアを有する複数のクライアント機器１０２が単一のアカウントに関連付けられてもよく、そのアカウントにおけるコンテンツアイテムは複数のクライアント機器１０２のそれぞれの間で同期されうる。
【００２１】
コンテンツ管理システム１０６は、様々なクライアント機器１０２とインタフェース接続するための通信インタフェース１２０を含むことができ、アプリケーションプログラムインタフェース（ＡＰＩ）を介して、他のコンテンツおよび／又はサービスプロバイダ１０９1、１０９2、…、１０９n（集合的に「１０９」）と対話することができる。所定のソフトウェアアプリケーションは、ユーザの代わりに、ＡＰＩを介してコンテンツストレージ１６０にアクセスすることができる。例えば、スマートフォン又はタブレットコンピューティング機器上で動作するアプリなどのソフトウェアパッケージは、コンテンツを読み出し、書き込み、生成し、共有し又はそれ以外に操作するためにユーザが認証情報を提供するときに、コンテンツ管理システム１０６にプログラムで直接呼出しをかけることができる。同様に、ＡＰＩは、ウェブサイトを通じて、コンテンツストレージ１６０の全部または一部にユーザがアクセスすることを可能とすることができる。
【００２２】
コンテンツ管理システム１０６は、認可されたクライアントおよびユーザのみがコンテンツアイテムにアクセスすることができることを確実にするために、ユーザ認証情報、セキュリティトークン、ＡＰＩ呼び出し、特定のクライアント機器などを検証することができる認証器モジュール１２６を含んでもよい。さらに、コンテンツ管理システム１０６は、集約ファイル動作、ユーザアクション、ネットワーク利用、使用されているトータルのストレージスペース、及び他の技術、使用又はビジネスメトリクスを追跡して報告することができる分析モジュール１３４を含むことができる。プライバシ及び／又はセキュリティポリシは、コンテンツ管理システム１０６を用いて記憶されているユーザデータに対する認可されていないアクセスを防ぐことができる。
【００２３】
コンテンツ管理システム１０６は、公開で又は非公開でコンテンツを共有することを管理するための共有モジュール１３０を含むことができる。公開でコンテンツを共有することは、コンテンツアイテムを、コンテンツ管理システム１０６とのネットワーク通信において任意のコンピューティング機器からアクセス可能にすることを含んでもよい。非公開でコンテンツを共有することは、コンテンツストレージ１６０内のコンテンツアイテムを２つ以上のユーザアカウントと関連付けて各ユーザアカウントがそのコンテンツアイテムにアクセスするようにすることを含むことができる。共有は、プラットフォームにとらわれない方法で実行されうる。すなわち、様々なタイプ、能力、オペレーティングシステム等の多数のクライアント機器１０２にわたって共有されうる。コンテンツも、様々なタイプのユーザアカウントにわたって共有されうる。
【００２４】
いくつかの実施形態において、コンテンツ管理システム１０６は、コンテンツストレージ１６０における各コンテンツアイテムの位置を特定するコンテンツディレクトリを維持するように構成されうる。コンテンツディレクトリは、コンテンツストレージに記憶されている各コンテンツアイテムのためのユニークなコンテンツエントリを含むことができる。
【００２５】
コンテンツエントリは、コンテンツ管理システムにおけるコンテンツアイテムの位置を特定するために使用されうるコンテンツパスを含むことができる。例えば、コンテンツパスは、コンテンツアイテムの名前及びコンテンツアイテムと関連付けられたフォルダ階層を含みうる。例えば、コンテンツパスは、コンテンツアイテムが置かれるフォルダまたはフォルダのパス及びコンテンツアイテムの名前を含むことができる。コンテンツ管理システム１０６は、適切なフォルダ階層においてコンテンツアイテムを提示するためにコンテンツパスを使用することができる。
【００２６】
コンテンツエントリは、コンテンツストレージ１６０においてコンテンツの位置を特定するコンテンツポインタを含んでもよい。例えば、コンテンツポインタは、メモリ内のコンテンツアイテムの正確なストレージアドレスを含むことができる。いくつかの実施形態において、コンテンツポインタは、それぞれがコンテンツアイテムの一部を含む複数の位置を指し示しうる。
【００２７】
コンテンツパス及びコンテンツポインタに加えて、コンテンツエントリは、コンテンツアイテムへアクセスするユーザアカウントを識別するユーザアカウント識別子を含んでもよい。いくつかの実施形態において、複数のユーザアカウント識別子が、コンテンツアイテムがその複数のユーザアカウントによる共有アクセスを有することを示す単一のコンテンツエントリに関連付けられうる。
【００２８】
非公開でコンテンツアイテムを共有するために、共有モジュール１３０は、コンテンツアイテムと関連付けられたコンテンツエントリに対してユーザアカウント識別子を追加して、その追加されたユーザアカウントがそのコンテンツアイテムにアクセスすることを許可するように構成されうる。共有モジュール１３０は、コンテンツアイテムへのユーザアカウントのアクセスを制限するために、ユーザアカウント識別子をコンテンツエントリから取り除くように構成されてもよい。
【００２９】
公開でコンテンツを共有するために、共有モジュール１３０は、ウェブブラウザが認証なくコンテンツ管理システム１０６内のコンテンツにアクセスできるようにする、ユニフォームリソースロケータ（ＵＲＬ）などのカスタムネットワークアドレスを生成するように構成されうる。これを完遂するために、共有モジュール１３０は、後に要求されたコンテンツアイテムを適切に特定して返すために使用されうる生成されたＵＲＬに、コンテンツ識別データを含めるように構成されうる。例えば、共有モジュール１３０は、ユーザアカウント識別子及びコンテンツパスを生成されたＵＲＬに含めるように構成されてもよい。ＵＲＬの選択に応じて、ＵＲＬ内のコンテンツ識別データは、適切なコンテンツエントリを特定して、そのコンテンツエントリに関連付けられたコンテンツアイテムを返すために、受信したコンテンツ識別データを使用することができるコンテンツ管理システム１０６へ送信されうる。
【００３０】
ＵＲＬを生成するのに加えて、共有モジュール１３０は、コンテンツアイテムへのＵＲＬが生成されたことを記録するように構成されてもよい。いくつかの実施形態において、コンテンツアイテムに関連付けられたコンテンツエントリは、コンテンツアイテムへのＵＲＬが生成されたかを示すＵＲＬフラグを含むことができる。例えば、ＵＲＬフラグは、コンテンツアイテムへのＵＲＬが生成されていないことを示すように、初期的に０又はｆａｌｓｅに設定されるブール値でありうる。共有モジュール１３０は、コンテンツアイテムへのＵＲＬを生成した後に、そのフラグの値を１又はｔｒｕｅへ変更するように構成されうる。
【００３１】
いくつかの実施形態において、共有モジュール１３０は、生成したＵＲＬを非アクティブにするように構成されてもよい。例えば、各コンテンツエントリは、生成したＵＲＬからの要求に応答してコンテンツが返されるべきかを示すＵＲＬアクティブフラグを含むこともできる。例えば、共有モジュール１３０は、ＵＲＬアクティブフラグが１又はｔｒｕｅに設定されている場合にのみ、生成されたリンクによって要求されたコンテンツアイテムを返すように構成される。このように、ＵＲＬアクティブフラグの値を変更することにより、ＵＲＬが生成されているコンテンツアイテムへのアクセスを容易に制限することができる。これは、コンテンツアイテムを移動させ又は生成されたＵＲＬを削除する必要なく、共有コンテンツアイテムへのアクセスをユーザが制限することを可能とする。同様に、共有モジュール１３０は、ＵＲＬアクティブフラグの値を再度１又はｔｒｕｅに変更することにより、ＵＲＬを再度アクティブとすることができる。したがって、ユーザは、新しいＵＲＬを生成する必要なく、コンテンツアイテムへのアクセスを容易に修復することができる。
【００３２】
特定の要素を伴ってコンテンツ管理システム１０６が提示されているが、当業者には、システム１０６の構造的構成が単純に１つの取りうる構成であり、より多くの又はより少ない要素を伴う他の構成を取りうることが理解されるべきである。
【００３３】
図２は、ハイブリッドアプリケーションを更新してオフラインでハイブリッドアプリケーションへのアクセスを提供するための例示のシステム２００のブロック図である。例えば、システム２００は、図１のシステム１００に対応しうる。システム２００は、上述のようなコンテンツ管理システム１０６を含むことができる。
【００３４】
いくつかの実装において、コンテンツ管理システム１０６は、コンテンツオーサリングモジュール２０２を含むことができる。例えば、コンテンツオーサリングモジュール２０２は、コンテンツアイテムを生成する及び／又はコンテンツアイテム上で協働するための機能を提供することができる。システム２００のユーザは、例えば、ウェブブラウザを用いて、コンテンツオーサリングモジュール２０２へアクセスすることができる。コンテンツオーサリングモジュール２０２は、クライアントリソースバンドル２０４をユーザの機器におけるウェブブラウザへ送りうる。クライアントリソースバンドル２０４は、コンテンツオーサリングモジュール２０２のクライアントインタフェースを提示するためのウェブコード（例えばＨＴＭＬ、ＪａｖａＳｃｒｉｐｔなど）を含みうる。例えば、クライアントリソースバンドル２０４は、テキストのコンテンツアイテムを見る及び／又は編集するためにユーザが対話する、テキスト編集グラフィカルユーザインタフェース（例えばワードプロセッサ）をブラウザに提示させるウェブコードを含むことができる。ユーザがコンテンツオーサリングモジュール２０２を用いてコンテンツアイテムを生成し又は編集した後に、コンテンツオーサリングモジュール２０２は、コンテンツストレージ１６０に、生成した又は編集したコンテンツアイテムを格納しうる。コンテンツアイテムがコンテンツストレージ１６０に格納された後に、コンテンツアイテムは、図１を参照して上述したように、他のコンテンツアイテムと同様に、ユーザ機器間で同期され、他のユーザと共有され、及び／又は、コンテンツ管理システム１０６によって管理されうる。
【００３５】
いくつかの実装において、システム２００は、モバイル機器２１０を含みうる。例えば、モバイル機器２１０は、図１のクライアント機器１０２iに対応しうる。いくつかの実装において、モバイル機器２１０は、コンテンツオーサリングアプリケーション２１２を含みうる。例えば、上述のようにブラウザベースのウェブクライアントを使用してコンテンツオーサリングモジュール２０２にアクセスする代わりに、モバイル機器２１０のユーザは、モバイル機器２１０にコンテンツオーサリングアプリケーション２１２をダウンロードおよびインストールして、コンテンツオーサリングモジュール２０２により提供される特徴及び／又は機能にアクセスしうる。
【００３６】
いくつかの実装において、コンテンツオーサリングアプリケーション２１２は、ハイブリッドモバイルアプリケーションでありうる。例えば、コンテンツオーサリングアプリケーション２１２は、ネイティブレイヤ２１４を含みうる。ネイティブレイヤ２１４は、特定のコンピューティングプラットフォームでの実行のためにコンパイルされる実行可能なオブジェクトでありうる。例えば、ネイティブレイヤ２１４は、モバイル機器２１０又はモバイル機器２１０と同様の構成を有する機器上での実行のためにコンパイルされ又はビルドされ（例えば、オペレーティングシステム、プロセッサ、チップセット等のためにビルドされ）うる。ネイティブレイヤ２１４がモバイル機器２１０で動作するためにビルドされるため、ネイティブレイヤ２１４は、ブラウザベースのクライアントが行わないモバイル機器２１０のシステム機能及び特徴へアクセスすることができる一方で、非ネイティブソフトウェアより良好に動作する。例えば、コンテンツオーサリングモジュール２０２のブラウザベースのクライアントがネイティブ又はシステム機能のいずれにブラウザベースのクライアントがアクセスすることができるか又はブラウザベースのクライアントが記憶することができるファイルのサイズに関して制限されてもよく、ネイティブレイヤ２１４は、モバイル機器２１０のシステム機能にアクセスするためにモバイル機器２１０のオペレーティングシステムとネイティブで対話するようにネイティブレイヤがビルドされるため、それらの同一の制限を有しない。
【００３７】
いくつかの実装において、コンテンツオーサリングアプリケーション２１２は、ウェブビュー２１６を含みうる。例えば、ウェブビュー２１６は、ネイティブレイヤ２１４内にバンドルされるウェブブラウザでありうる。ネイティブレイヤ２１４は、例えば、ウェブビュー２１６のためのコンテナでありうる。このように、ウェブビュー２１６は、グラフィカルユーザインタフェースを生成し、セブサーバと通信し、他のウェブクライアント機能を実行するために、ＨＴＭＬ、ＪａｖａＳｃｒｉｐｔ、カスケードスタイルシート等のようなウェブコード及び／又は技術を、読み出し、解釈し、コンパイルし、及び／又は実行することができる。ウェブビュー２１６の固有機能は、ウェブビュー２１６によってロードされるウェブコードに依存する。
【００３８】
上のコンテンツオーサリングの例を継続して、モバイル機器２１０のユーザは、コンテンツオーサリングアプリケーション２１２を起動して、コンテンツアイテムを生成し、編集し、その上で協働し、又はそうでなければ対話することができる。例えば、コンテンツオーサリングアプリケーション２１２がモバイル機器２１０上で起動される場合、ネイティブレイヤ２１４内のコードが実行されうる。
【００３９】
コンテンツオーサリングアプリケーション２１２の起動に応じて、ネイティブレイヤ２１４は、クライアントリソースバンドル２２０をロードすることができる。例えば、コンテンツ管理システム１０６から毎回クライアントリソースバンドル２０４をダウンロードする代わりに、ユーザがコンテンツオーサリングアプリケーション２１２を起動し、コンテンツオーサリングアプリケーション２１２は、クライアントリソースバンドル２０４（例えばローカルクライアントリソースバンドル２２０）のローカルコピーをダウンロードして記憶することができる。例えば、クライアントリソースバンドル２２０は、コンテンツオーサリングアプリケーション２１２が初期的にダウンロードされてモバイル機器２１２にインストールされるときに、モバイル機器にダウンロードされて記憶されうる。その後、コンテンツオーサリングアプリケーション２１２は、後述のように、更新がコンテンツ管理システム１０６から利用可能であるときに、自動で更新をダウンロードしてクライアントリソースバンドル２２０に格納しうる。クライアントリソースバンドル２２０のローカルコピーを記憶することは、例えば、後述のように、コンテンツオーサリングアプリケーション２１２のオフラインでの使用を促進しうる。
【００４０】
いくつかの実装において、クライアントリソースバンドル２２０は、ネイティブ設定２２２を含みうる。例えば、ネイティブ設定２２２は、モバイル機器２１０にインストールされているコンテンツオーサリングアプリケーション２１２の現在のバージョンを特定することができる。ネイティブ設定２２２は、（さらに後述の）ウェブビュー２１６によって実行されるウェブコードから新しいメッセージを受信するためのＵＲＬを含みうる。ネイティブ設定２２２は、コンテンツオーサリングアプリケーション２１２の特定されたバージョンを実行するために必要なリソースを特定しうる。
【００４１】
いくつかの実装において、クライアントリソースバンドル２２０は、リソース２２６を含むことができる。例えば、リソース２２６は、ウェブビュー２１６を実行するためのコンピュータ命令を含んだファイル（例えばウェブコードファイル、ＪａｖａＳｃｒｉｐｔファイル、ＨＴＭＬファイル、画像、アイコン等）を含むことができる。例えば、リソース２２６は、ウェブビュー２１６においてコンテンツオーサリングモジュール２０２のためのウェブクライアントを動作させるのに必要なリソースを含むことができる。例えば、ウェブビュー２１６において動作するウェブクライアントは、ウェブブラウザで動作するウェブクライアントと同様でありうる。しかしながら、ウェブブラウザ内で実行されるのに代えて、ウェブクライアント（又はウェブクライアントの一部）は、コンテンツオーサリングアプリケーション２１２のネイティブレイヤ２１４の内部で動作し、それにより、モバイル機器２１０のネイティブな特徴、機能、アプリケーションプログラミングインタフェース等にウェブクライアントがアクセスするのを可能としてもよい。
【００４２】
いくつかの実装において、クライアントリソースバンドル２２０は、ネイティブラッパー２２８を含むことができる。例えば、ネイティブラッパー２２８は、コンテンツオーサリングアプリケーション２１２をブートアップするためにウェブビュー２１６にロードされるＨＴＭＬファイルでありうる。例えば、コンテンツオーサリングアプリケーション２１２の起動に応じて、ネイティブレイヤ２１４が実行されうる。ネイティブレイヤ２１４は、ウェブビュー２１６を実行するための命令を含むことができる。ウェブビュー２１６がネイティブレイヤ２１４によって実行されるとき、ウェブビュー２１６は、クライアントリソースバンドル２２８からリソース２２６（例えばＪａｖａＳｃｒｉｐｔ）をロードするための命令を含んだ、ネイティブラッパー２２８（例えばＨＴＭＬファイル）を含むことができる。リソース２２６は、グラフィカルユーザインタフェース（例えばコンテンツエディタインタフェース）を提示する、アプリケーションデータを管理する、及び／又は、コンテンツ管理システム１０６のコンテンツオーサリングモジュール２０２と通信するための命令（例えばＪａｖａＳｃｒｉｐｔ命令、ＨＴＭＬ命令、ＣＳＳ命令等）を含むことができる。したがって、ウェブビュー２１６は、モバイル機器２１０がオフラインでありコンテンツオーサリングモジュール２０２に接続されていない時でも、グラフィカルユーザインタフェースを提示し、アプリケーションデータを管理し、等を行うことができる。
【００４３】
いくつかの実装において、モバイル機器２１０は、コンテンツストレージ２２０を含むことができる。例えば、モバイル機器２１０がオフラインでありコンテンツ管理システム１０６のコンテンツオーサリングモジュール２０２に接続していない間にコンテンツオーサリングアプリケーション２１２の使用を促進するために、コンテンツオーサリングアプリケーション２１２は、コンテンツ管理システム１０６から認可されたコンテンツをダウンロードすることができる。例えば、コンテンツオーサリングアプリケーション２１２は、ネットワーク１０４を通じてコンテンツオーサリングモジュール２０２に接続されている間に、コンテンツオーサリングモジュール２０２からコンテンツオーサリングモジュール２０２によって生成され、編集され、及び／又は管理されているコンテンツアイテムを要求することができる。要求されたコンテンツアイテムがコンテンツオーサリングアプリケーション２１２によって受信されると、コンテンツオーサリングアプリケーション２１２は、コンテンツストレージ２２０内にそのコンテンツアイテムを格納することができる。その後、モバイル機器２１０がオフラインでありコンテンツオーサリングモジュール２０２に接続されていない間にコンテンツオーサリングアプリケーション２１２が起動されると、コンテンツオーサリングアプリケーション２１２は、ウェブビュー２１６によって提供されるコンテンツオーサリングインタフェースを用いて、コンテンツストレージ２２０内のコンテンツアイテムをユーザが見ること及び／又はそのコンテンツアイテムと対話することを可能とすることができる。このように、コンテンツオーサリングアプリケーション２１２は、モバイル機器２１０がオフラインであっても、ウェブクライアントインタフェース及び／又はオンラインコンテンツへのアクセスを提供することができる。
【００４４】
図３は、ハイブリッドアプリケーションのネイティブレイヤとウェブビューとの間のネイティブブリッジを提供する例示のシステム３００のブロック図である。例えば、ネイティブブリッジ３０２は、ネイティブレイヤ２１４とウェブビュー２１６との間でメッセージを運ぶために、グローバル変数（例えば「Bridge」）、空のｉｆｒａｍｅ（例えばＨＴＭＬインラインフレーム）、及びネイティブブリッジプロトコルを含むことができる。
【００４５】
いくつかの実装において、コンテンツオーサリングアプリケーション２１２は、ネイティブレイヤ２１４からウェブビュー２１６へメッセージを送信するためにグローバル変数を使用することができる。例えば、ウェブビュー２１６がリソースバンドル２２０におけるウェブコードをロードして実行するときに、ウェブコード（例えばＪａｖａＳｃｒｉｐｔ）は、ネイティブレイヤ２１４とウェブビュー２１６との間でのメッセージ（例えばウェブビューにおいて動作するウェブコード）を送信するためのグローバル変数（例えば「Bridge」）を生成することができる。ネイティブレイヤ２１４は、例えば、ウェブビュー２１６に送信されるべきメッセージを用いてエンコードされた系列を生成し、（例えばＪａｖａＳｃｒｉｐｔ関数ｃａｌｌを用いて）そのストリングをグローバル変数内に保存することにより、ウェブビュー２１６へメッセージを送信しうる。ネイティブレイヤ２１４がグローバル変数にメッセージを格納すると、ウェブビュー２１６には、グローバル変数の値が変更されたことが通知されうる。そして、ウェブビュー２１６は、メッセージを受信したことに応じてメッセージを読み出して動作を実行しうる。
【００４６】
いくつかの実装において、コンテンツオーサリングアプリケーション２１２は、ウェブビュー２１６からネイティブレイヤ２１４へメッセージを送信するために、空のＨＴＭＬ  ｉｆｒａｍｅを使用することができる。例えば、ウェブビュー２１６がリソースバンドル２２０内のウェブコードをロードして実行すると、そのウェブコード（例えば、ＪａｖａＳｃｒｉｐｔ）は、新しいメッセージがウェブビュー２１６から送信されたことをネイティブレイヤ２１４に通知するための空のｉｆｒａｍｅを生成しうる。ウェブビュー２１６は、例えば、ネイティブレイヤ２１４へ送信されるべきメッセージでエンコードされた系列を生成して、（例えばＪａｖａＳｃｒｉｐｔ関数ｃａｌｌを使用して）その系列をグローバル変数内に保存することにより、ネイティブレイヤ２１４へメッセージを送信することができる。ウェブビュー２１６がグローバル変数にメッセージを格納すると、ウェブビュー２１６は、所定のＵＲＬ（例えば、「data://__QUEUE_MESSAGE__」）へ、ｉｆｒａｍｅをナビゲートすることにより、グローバル変数の値が変化したことをネイティブレイヤ２１４に通知することができる。ネイティブレイヤ２１４は、その所定のＵＲＬへのナビゲーションを傍受し、そのナビゲーションを新しいメッセージがウェブビュー２１６から利用可能であることの通知として解釈することができる。そして、ネイティブレイヤ２１４は、メッセージを受信したことに応じて、（例えばＪａｖａＳｃｒｉｐｔ関数ｃａｌｌを用いて）グローバル変数からメッセージを読み出して、動作を実行することができる。このように、コンテンツオーサリングアプリケーション２１２は、異なる技術を用いて実装される異種のレイヤ（例えば、ネイティブコードにおいて実装されるネイティブレイヤ２１４及び非ネイティブなウェブコードにおいて実装されるウェブビュー２１６）からビルドされるが、これらの異なるレイヤは、上述のように、ネイティブブリッジ３０２を用いた双方向通信を実現することができる。
【００４７】
いくつかの実装において、コンテンツオーサリングアプリケーション２１２は、システムインタフェース機能のためのネイティブレイヤ２１４と、ユーザ及びネットワークインタフェース機能のための（例えば、リソースバンドル２２０におけるウェブコードによって規定される）ウェブビュー２１６とを使用するように構成されうる。例えば、ネイティブレイヤ２１４は、コンテンツオーサリングアプリケーション２１２のためのローカルデータストレージと検索機能とを、モバイル機器２１０のネイティブＡＰＩを用いて実行するように構成されうる。例えば、ユーザがウェブビュー２１６のコンテンツオーサリング機能を用いて新しいコンテンツアイテムを生成するときに、ウェブビュー２１６は、ネイティブレイヤ２１４に新しく生成されたコンテンツアイテムをローカルコンテンツストレージ２２０へ記憶させるために、ネイティブブリッジ３０２を通じてネイティブレイヤ２１６へメッセージを送信することができる。いくつかの実装において、ウェブビュー２１６は、上述のように、ネイティブブリッジ３０２を用いて、コンテンツアイテムを系列に変換して、その系列を、記憶するためにネイティブレイヤ２１４へ送信することができる。したがって、新しく生成されたコンテンツアイテムのサイズがウェブ技術に課されるデータストレージサイズの制限を超える場合であっても、モバイル機器２１０のネイティブＡＰＩを用いてネイティブレイヤ２１４によってデータストレージ動作が実行されているため、その新しいコンテンツアイテムをローカルストレージ２２０に格納することができる。
【００４８】
いくつかの実装において、ウェブビュー２１６は、ユーザインタフェースを管理してコンテンツ管理システム１０６と通信するように構成されうる。例えば、ウェブビュー２１６が、ＪａｖａＳｃｒｉｐｔ、ＨＴＭＬ、カスケードスタイルシート等のような様々なウェブ技術を用いて実装されるため、コンテンツオーサリングアプリケーション２１２のためのユーザインタフェースは、開発者によって生成するのがより容易である。さらに、ウェブ技術はプラットフォームによらないため、ウェブビュー２１６によって使用されるウェブコードが（例えば、アプリケーションのバージョンごとに）１度書かれて、様々なコンピューティングプラットフォームにわたって使用されうる。さらに、ウェブコードがクライアントリソースバンドル２２０を用いて提供されるため、クライアントリソースバンドル２２０を単純に置き換えることにより、コンテンツオーサリングアプリケーション２１２のネイティブレイヤ２１４を再インストール又は更新することなく、ソフトウェア更新を行うことができる。したがって、コンテンツオーサリングアプリケーション２１２とモバイル機器２１０との間の対話は、効率的なネイティブインタフェースを用いて実行されうる一方で、コアグラフィカルユーザインタフェース、コアアプリケーションデータモデル、及びネットワーク通信が、使用（及び再使用）が容易で実装が容易なウェブ技術を用いることにより実行されうる。
【００４９】
いくつかの実装において、ネイティブブリッジ３０２は、様々なメッセージタイプを取り扱うためのネイティブブリッジプロトコルを実行することができる。例えば、ネイティブレイヤ２１４とウェブビュー２１６との間で交換されるメッセージのデータタイプが系列である一方で、その系列は、特定のメッセージタイプ及び対応するペイロードを記述するデータでエンコードされうる。例えば、ネイティブブリッジプロトコルは、識別子及びタイプによる、コンテンツアイテムを取得するための「get content item」メッセージタイプを含むことができる。ウェブビュー２１６は、例えば、メッセージタイプを特定するメッセージ系列（例えば「getItem」）を生成し、コンテンツアイテムのための識別子（例えば「contentItem1」、系列識別子、ＵＲＬ等）を特定し、コンテンツアイテムのためのタイプ（例えば「note」）を特定することができる。例えば、メッセージ系列は、「getItem: contenItem1, note」のように見えうる。ウェブビュー２１６は、新しいメッセージがウェブビュー２１６によって送信された（例えば、ウェブビュー２１６において動作しているウェブ技術によって送信された）ことをネイティブレイヤ２１４に通知するために、グローバル変数（例えば「Bridge」）にその系列を格納し、空のｉｆｒａｍｅを所定のＵＲＬ（例えば「data://__QUEUE_MESSAGE__」）にナビゲートしうる。
【００５０】
いくつかの実装において、ネイティブレイヤ２１４は、所定のＵＲＬへの空のｉｆｒａｍｅのナビゲーションを傍受し、ナビゲーションに応じてグローバル変数からメッセージを取得しうる。ネイティブレイヤ２１４は、ウェブビュー２１６によって要求された動作を判定するためにメッセージ系列を構文解析することができる。例えば、ネイティブレイヤ２１４は、系列を構文解析して、ネイティブレイヤ２１４が特定の識別子及び／又はコンテンツアイテムタイプと関連付けられたコンテンツアイテムタイプを取得することをウェブビュー２１６が要求していると判定することができる。ネイティブレイヤ２１４は、特定の識別子及び／又はコンテンツアイテムタイプと一致するコンテンツアイテムをローカルコンテンツストレージ２２０から検索することができる。ネイティブレイヤ２１４は、コンテンツアイテムを特定すると共にコンテンツアイテムの内容を含んだメッセージ系列（例えば、「contentItem1: content」）にそのコンテンツアイテムをエンコードすることができる。ネイティブレイヤ２１４は、上述のように、グローバル変数に、そのメッセージ系列を格納することができる。ネイティブレイヤ２１４がグローバル変数にそのメッセージ系列を格納した後に、ウェブビュー２１６は、グローバル変数の値が変化したことの通知を受信しうる。ウェブビュー２１６は、グローバル変数からメッセージ系列を取得して、メッセージ系列を構文解析して要求したコンテンツアイテムを取得することができる。
【００５１】
同様に、ネイティブブリッジ３０２は、特定のコンテンツアイテムタイプの全てのアイテムの取得を提供することができる。例えば、ウェブビュー２１６は、メッセージ（例えば「getAllItems: type」）をネイティブレイヤ２１４へ送信して、特定のコンテンツアイテムタイプ（例えば「note」）に対応する全てのコンテンツアイテムを取得することができる。ネイティブレイヤ２１４は、特定のコンテンツアイテムタイプに対応するコンテンツストレージ２２０内の全てのコンテンツアイテムを検出し、上述のように、ネイティブブリッジ３０２を用いて、検出したコンテンツアイテムをウェブビュー２１６へ送信しうる。
【００５２】
いくつかの実装において、ネイティブブリッジ３０２は、ウェブビュー２１６が、ネイティブレイヤ２１４を用いて、ローカルコンテンツストレージ２２０へコンテンツアイテムを格納することを可能とする機構を提供することができる。例えば、ネイティブブリッジプロトコルは、ローカルコンテンツストレージ２２０へコンテンツアイテムを格納すること及び／又はローカルコンテンツストレージ２２０内のコンテンツアイテムを更新することのためのメッセージを定義することができる。格納及び更新メッセージは、コンテンツアイテム識別子、コンテンツアイテムタイプ、及び値を含むことができる。その値は、格納されるべき又は更新されるべき特定のコンテンツアイテムの内容を含みうる。これらのメッセージは、上述のように、メッセージ系列へエンコードされうる。例えば、新しいコンテンツアイテムを格納するために、ウェブビュー２１６は、メッセージタイプ、コンテンツアイテム識別子、コンテンツアイテムタイプ、及びコンテンツの値を含んだ系列（例えば、「setItem: contentItem2, note, content」）を生成しうる。コンテンツアイテムへの更新を格納するために、ウェブビュー２１６は、メッセージタイプ、コンテンツアイテム識別子、コンテンツアイテムタイプ及びコンテンツの値を含んだ系列（例えば、「updateItem: contentItem2, note, content」）を生成しうる。ウェブビュー２１６は、上述のネイティブブリッジプロトコルを用いて、そのメッセージをネイティブレイヤ２１４へ送信しうる。ウェブビュー２１６からそのメッセージを受信したことに応じて、ネイティブレイヤ２１４は、受信したメッセージから構文解析された内容に基づいて、コンテンツストレージ２２０における特定のコンテンツアイテムを格納し又は更新するための、要求された格納又は更新動作を実行することができる。
【００５３】
いくつかの実装において、ネイティブブリッジ３０２は、ネイティブレイヤ２１４を用いて、ローカルコンテンツストレージ２２０からコンテンツアイテムをウェブビュー２１６が削除可能とする機構を提供することができる。例えば、ネイティブブリッジプロトコルは、ローカルコンテンツストレージ２２０からコンテンツアイテムを削除するためのメッセージ（例えば「removeItem」）及び／又はローカルコンテンツストレージ２２０から全てのコンテンツアイテムを削除するためのメッセージ（例えば「clear」）を定義することができる。アイテム削除メッセージは、コンテンツアイテム識別子及び／又はコンテンツアイテムタイプを含みうる。クリアメッセージは、パラメータを有しない。ウェブビュー２１６がコンテンツアイテムの削除を要求していることを示すメッセージ（例えば「removeItem: contentItem3, note」）をウェブビュー２１６から受信したことに応じて、ネイティブレイヤ２１４は、特定のコンテンツアイテムをローカルコンテンツストレージ２２０から削除しうる。ウェブビュー２１６が全てのコンテンツアイテムの削除を要求していることを示すメッセージ（例えば「clear」）をウェブビュー２１６から受信したことに応じて、ネイティブレイヤ２１４は、ローカルコンテンツストレージ２２０から全てのコンテンツアイテムを削除しうる。このように、ネイティブブリッジ３０２は、ウェブビュー２１６のウェブ技術がネイティブレイヤ２１４に利用可能なネイティブＡＰＩを活用することができるように、ウェブビュー２１６とネイティブレイヤ２１４との間の通信のためのプロトコルを実装することができる。
【００５４】
図４は、ハイブリッドアプリケーションを更新するための例示の処理４００を説明する要素の相互動作図である。例えば、ユーザは、コンテンツオーサリングアプリケーション２１２を起動することができる（４０２）。コンテンツオーサリングアプリケーションの起動４０２に応じて、ネイティブレイヤ２１４は、ウェブビュー２１６をロードしうる（４０４）。例えば、ウェブビュー２１６は、コンテンツオーサリングアプリケーション２１２の内部および／またはネイティブレイヤ２１４の内部に含まれる、ＪａｖａＳｃｒｉｐｔエンジン、ウェブブラウザ等でありうる。ウェブビュー２１６によって提供される機能は、ウェブビュー２１６にロードされるウェブコード（例えばＪａｖａＳｃｒｉｐｔ、ＨＴＭＬ、ＣＳＳ等）によって定められる。例えば、ウェブビュー２１６は、ネイティブラッパー２２８を用いてローカルリソースバンドル２２０をロードし、グラフィカルユーザインタフェースを提示するおよび／またはリソース２２６（例えばＪａｖａＳｃｒｉｐｔファイル、ＨＴＭＬファイル等）によって定められる他の機能を提供するためにウェブコードを実行することができる（４０６）。
【００５５】
ローカルリソースバンドルのロード後、ウェブビュー２１６は、ウェブビュー２１６とネイティブレイヤ２１４との間の通信を促進するために、ネイティブブリッジを作成しうる（４０８）。例えば、リソース２２６は、ウェブビュー２１６とネイティブレイヤ２１４との間の通信のためのグローバル変数を作成するウェブコード（例えばＪａｖａＳｃｒｉｐｔ）を含みうる。ウェブコードは、新しいメッセージが利用可能であることをウェブビュー２１６からネイティブレイヤ２１４へ通知するために、ウェブビュー２１６によって使用されるｉｆｒａｍｅを作成しうる。バンドルがロードされてネイティブブリッジが作成された後に、ウェブビュー２１６は、ウェブビュー２１６の初期化に成功したこと及びネイティブブリッジが使用可能であることを示す接続確立メッセージをネイティブレイヤ２１４へ送信する（４１０）ために、ネイティブブリッジを使用することができる。
【００５６】
いくつかの実装において、ウェブビュー２１６は、ソフトウェアの更新がウェブビュー２１６に利用可能であるかを判定しうる。例えば、ウェブビュー２１６は、バージョン更新情報を要求するために、コンテンツ管理システム１０６コンテンツオーサリングモジュール２０２へメッセージを送信することができる（４１２）。例えば、その要求は、現在のバージョン情報のための固有の要求でありうる。その要求は、別の情報要求の一部であってもよい。例えば、ウェブビュー２１６は、コンテンツオーサリングモジュール２０２からのコンテンツアイテムを要求することができる。そのコンテンツアイテム要求のヘッダは、モバイル機器２１０にインストールされているコンテンツオーサリングアプリケーション２１２のバージョンを特定する情報を含みうる。ウェブビュー２１６がリソースバンドル２２０をロードした際に、ウェブビュー２１６は、ネイティブ設定２２２からローカルリソースバンドル２２０のためのバージョン情報を取得することができる。ウェブビュー２１６は、ローカルリソースバンドル２２０のためのバージョン情報（例えばバージョン識別子）をコンテンツオーサリングモジュール２０２へ送信しうる。コンテンツオーサリングモジュール２０２は、ローカルリソースバンドル２２０のバージョンが、コンテンツ管理システム１０６におけるリソースバンドル２０４の現在のバージョンと一致する（例えば対応する、同一である等）かを判定することができる。バージョンが一致する（例えばローカルリソースバンドル２２０がリソースバンドル２０４の最新バージョンと対応する）場合、コンテンツオーサリングモジュール２０２は、ローカルリソースバンドル２２０が利用可能な最新バージョンであることを示すメッセージを、ウェブビュー２１６へ送信しうる。
【００５７】
バージョンが一致しない（例えば、ローカルリソースバンドル２２０が期限切れである）場合、コンテンツオーサリングモジュール２０２は、クライアントリソースバンドル２０４のためのネイティブ設定ファイルを含んだメッセージを、ウェブビュー２１６へ送信しうる（４１４）。上述のように、ネイティブ設定ファイルは、コンテンツオーサリングアプリケーション２１０の更新されたバージョンのためのバージョン識別子と、コンテンツオーサリングアプリケーション２１０の更新されたバージョンのためのリソースのリストとを含むことができる。いくつかの実装において、リソースのリストは、各リソースに対して、そのリソースに対する最新の更新に対応するリソース識別子（例えば、名前、ＵＲＬ等）及び／又はタイムスタンプを含みうる。ウェブビュー２１６は、更新されたネイティブ設定ファイルを受信した後に、（例えばネイティブブリッジ３０２を通じて）ネイティブレイヤ２１４がモバイル機器２１０におけるローカルストレージにネイティブ設定ファイルを記憶する（４１６）ことを要求しうる。
【００５８】
いくつかの実装において、ウェブビュー２１６は、モバイル機器２１０におけるクライアントリソースバンドル２２０内のどの個別のリソースが更新されるべきかを判定しうる（４１８）。例えば、ウェブビュー２１６は、コンテンツオーサリングモジュール２０２から更新されたネイティブ設定ファイルを受信した後に、更新されたネイティブ設定ファイルをローカルのネイティブ設定ファイル２２２と比較して、どのリソースが変更されたかを判定することができる。例えば、ウェブビュー２１６は、各リソースのそれぞれのタイムスタンプを比較して、更新されたネイティブ設定ファイルとローカルネイティブ設定ファイル２２２との間でタイムスタンプが異なるかを判定することができる。ローカルネイティブ設定ファイル２２２におけるタイムスタンプが更新されたネイティブ設定ファイルと異なるリソースをウェブビュー２１６が特定した際に、又は、更新されたネイティブ設定ファイル内のリソースがローカルネイティブ設定ファイル２２２内に存在しないことをウェブビュー２１６が特定した際に、ウェブビュー２１６は、コンテンツオーサリングモジュール２０２から、特定されたリソースを要求しうる（４２０）。例えば、ウェブビュー２１６は、更新されたネイティブ設定ファイルにおいてリソース更新が特定された数に応じて、更新された又は新しいリソースに対する複数の要求を行いうる。全体のクライアントリソースバンドルを更新するのではなく個別にリソースを更新することが、より効率的な帯域幅の利用を提供し（例えば変更されたファイルのみが送信される）、ネットワーク接続が中断された場合に更新を再開することを可能とする。
【００５９】
いくつかの実装において、ウェブビュー２１６は、コンテンツオーサリングモジュール２０２から、更新されたリソースを受信しうる（４２２）。例えば、ウェブビュー２１６は、各リソース要求に応答して、更新されたリソースを受信しうる。リソース更新を受信した後（例えば、各リソースが受信された後又は全てのリソースが受信された後）に、ウェブビュー２１６は、（例えばネイティブブリッジ３０２を通じて）ネイティブレイヤ２１４がモバイル機器２１０上のローカルストレージに各リソースを格納することを要求しうる。
【００６０】
いくつかの実装において、ウェブビュー２１６は、ウェブビュー２１６が動作中に、更新されたリソースを用いてウェブビュー２１６を動的に更新しうる。例えば、更新されたリソース（例えば現在のローカルクライアントリソースバンドル２２０）をローカルストレージに格納した後に、ウェブビュー２１６は、更新されたリソースをロードして更新されたウェブコードを実行するためにローカルクライアントリソースバンドル２２０をリロードすることができる。例えば、ウェブビュー２１６は、遷移がユーザに対してシームレスに見えるように、（例えば新しいウェブページ、ＵＲＬ等への）ナビゲーション動作を実行する際に、クライアントリソースバンドル２２０をリロードしうる。ウェブビュー２１６は、更新されたリソースをロードした後に、例えば、ユーザが使用するための新しい機能を有する更新されたグラフィカルユーザインタフェースを提示することができる。このように、ネイティブレイヤ２１４において実行を継続しながら及びネイティブコードを更新する必要なく、コンテンツオーサリングアプリケーション２１２が更新されうる。さらに、モバイル機器２１０にローカルにクライアントリソースバンドル２２０を記憶することにより、モバイル機器２１０がオフラインの時にも、クライアントオーサリングアプリケーション２１２をユーザが使用することができる。
【００６１】
図５は、ハイブリッドアプリケーションにおけるネイティブファイルストレージのための例示の処理５００を説明するための要素の相互動作図である。例えば、ユーザは、コンテンツオーサリングアプリケーション２１２を起動しうる（５０２）。コンテンツオーサリングアプリケーション４０２の起動に応じて、ネイティブレイヤ２１４は、ウェブビュー２１６をロードしうる（５０４）。例えば、ウェブビュー２１６は、コンテンツオーサリングアプリケーション２１２の内部に及び／又はネイティブレイヤ２１４の内部に含まれる、ＪａｖａＳｃｒｉｐｔエンジン、ウェブブラウザ等でありうる。ウェブビュー２１６によって提供される機能は、ウェブビュー２１６にロードされるウェブコード（例えばＪａｖａＳｃｒｉｐｔ、ＨＴＭＬ、ＣＳＳ等）によって定まる。例えば、ウェブビュー２１６は、ネイティブラッパー２２８を用いてローカルリソースバンドル２２０をロードし（５０６）、グラフィカルユーザインタフェースを提示する、及び／又は、リソース２２６（例えば、ＪａｖａＳｃｒｉｐｔファイル、ＨＴＭＬファイル等）によって定まる他の機能を提供するためのウェブコードを実行しうる。
【００６２】
ウェブビュー２１６は、ローカルリソースバンドルをロードした後に、ウェブビュー２１６とネイティブレイヤ２１４との間の通信を促進するために、ネイティブブリッジを生成しうる（５０８）。例えば、リソース２２６は、ウェブビュー２１６とネイティブレイヤ２１４との間の通信のためのグローバル変数を生成するウェブコード（例えばＪａｖａＳｃｒｉｐｔ）を含みうる。ウェブコードは、ウェブビュー２１６から新しいメッセージが利用可能であることをネイティブレイヤ２１４に通知するために、ウェブビュー２１６によって使用されるｉｆｒａｍｅを生成することができる。バンドルがロードされてネイティブブリッジが生成された後に、ウェブビュー２１６は、ウェブビュー２１６の初期化に成功したこと及びネイティブブリッジが動作可能であることを示す接続確立メッセージを、ネイティブレイヤ２１４へ送信する（５１０）ために、ネイティブブリッジを使用しうる。
【００６３】
（例えば接続確立メッセージによって示されるように）ウェブビュー２１６が起動している後に、ネイティブレイヤ２１４は、ウェブビュー２１６にコンテンツアイテムリストをロードさせるために、（例えばネイティブブリッジを通じて）ウェブビュー２１６へメッセージを送信しうる（５１２）。例えば、コンテンツアイテムリストは、コンテンツオーサリングアプリケーション２１２によって生成され及び／又は管理されるコンテンツアイテムを含みうる。コンテンツオーサリングアプリケーション２１２を用いて編集するコンテンツアイテムをユーザが選択可能とするためにユーザへそのリストをウェブビュー２１６が提示することができるように、コンテンツオーサリングアプリケーション２１２の初期化処理の一部として、コンテンツアイテムリストがロードされうる。コンテンツストレージ２２０にローカルに記憶されるコンテンツアイテムをウェブビュー２１６が更新することができるように、コンテンツアイテムリストがロードされうる。
【００６４】
ネイティブレイヤ２１４からコンテンツアイテムリストのロードのメッセージを受信したことに応じて、ウェブビュー２１６は、コンテンツ管理システム１０６のコンテンツオーサリングモジュール２０２からコンテンツアイテムリストを要求しうる（５１４）。応答において（５１６）、コンテンツオーサリングモジュール２０２は、コンテンツオーサリングアプリケーション２１２と関連付けられると共にコンテンツオーサリングアプリケーション２１２を用いた編集に利用可能な（例えば適合する）コンテンツアイテムのリストを送信しうる。
【００６５】
いくつかの実装において、ウェブビュー２１６は、受信したコンテンツアイテムリスト内のコンテンツアイテムを用いて、ローカルコンテンツストレージ２２０を更新しうる。例えば、ウェブビューがコンテンツオーサリングモジュール２０２からコンテンツアイテムリストを受信した後に、ウェブビュー２１６は、（例えばネイティブブリッジを通じて）ネイティブレイヤ２１４からローカルコンテンツアイテムリストを要求しうる（５１８）。ローカルコンテンツアイテムリストは、例えば、コンテンツオーサリングアプリケーション２１２と関連付けられていると共にコンテンツストレージ２２０にローカルで記憶されているコンテンツアイテムのリストを含みうる。ネイティブレイヤ２１４は、ローカルコンテンツアイテムリストを生成し、ネイティブブリッジを通じて、そのコンテンツアイテムリストをウェブビュー２１６へ送信しうる（５２０）。
【００６６】
ローカルコンテンツアイテムリストと（例えばコンテンツオーサリングモジュール２０２から）サーバコンテンツアイテムリストとを受信した後に、ウェブビュー２１６は、どのコンテンツアイテムが追加され、変更され、又はコンテンツ管理システム１０６から削除されたかを判定する（５２２）ために、その２つのリストを比較しうる。例えば、ローカルコンテンツアイテムリストが特定のコンテンツアイテムを含んでおり、サーバコンテンツアイテムリストがそれを含まない場合、ウェブビュー２１６は、特定のコンテンツアイテムを取り除く（例えば削除する）ように、ネイティブレイヤ２１４へ要求を送信しうる（５２３）。
【００６７】
ローカルコンテンツアイテムリストがサーバコンテンツアイテムリストに含まれている特定のコンテンツアイテムを含んでいない場合、ウェブビュー２１６は、特定のコンテンツアイテムを要求するメッセージをコンテンツオーサリングモジュール２０２へ送信しうる（５２４）。コンテンツオーサリングモジュール２０２は、ウェブビュー２１６へ要求されたコンテンツアイテムを送信する（５２６）ことにより応答しうる。同様に、ローカルコンテンツアイテムリストにおける特定のコンテンツアイテムのためのタイムスタンプが、サーバコンテンツアイテムリストにおける対応するコンテンツアイテムと一致しない場合、ウェブビュー２１６は、特定のコンテンツアイテムのための更新を要求するメッセージをコンテンツオーサリングモジュール２０２へ送信しうる（５２４）。コンテンツオーサリングモジュール２０２は、ウェブビュー２１６へ、要求されたコンテンツアイテムの更新を送信する（５２６）ことによって応答しうる。そして、ウェブビュー２１６は、ネイティブブリッジを通じてネイティブレイヤ２１４へメッセージを送信し（５２８）、ローカルコンテンツストレージ２２０においてその特定のコンテンツアイテムを記憶又は更新しうる。ウェブビュー２１６からそのメッセージを受信したことに応じて、ネイティブレイヤ２１４は、ローカルコンテンツストレージ２２０において、コンテンツアイテムを格納又は更新しうる（５３０）。このように、コンテンツオーサリングアプリケーション２１２は、コンテンツオーサリングアプリケーション２１２がコンテンツオーサリングアプリケーション２１２と関連付けられたコンテンツアイテムへのオフラインアクセスを提供することができるように、ローカルコンテンツストレージ２２０に格納されるコンテンツアイテムを更新された状態に保つことができる。
【００６８】
図６は、ハイブリッドアプリケーションにおいてオフラインで動作するための例示の処理６００を説明する要素の相互動作図である。例えば、ユーザは、コンテンツオーサリングアプリケーション２１２を起動しうる（６０２）。コンテンツオーサリングアプリケーション４０２の起動に応じて、ネイティブレイヤ２１４は、ウェブビュー２１６をロードしうる（６０４）。例えば、ウェブビュー２１６は、コンテンツオーサリングアプリケーション２１２内部及び／又はネイティブレイヤ２１４内部に含まれるＪａｖａＳｃｒｉｐｔエンジン、ウェブブラウザ等でありうる。ウェブビュー２１６によって提供される機能は、クライアントローカルリソースバンドル２２０からウェブビュー２１６にロードされるウェブコード（例えばＪａｖａＳｃｒｉｐｔ、ＨＴＭＬ、ＣＳＳ等）によって定義される。例えば、ウェブビュー２１６は、ネイティブラッパー２２８を用いてローカルリソースバンドル２２０をロードし（６０６）、グラフィカルユーザインタフェースを提示し及び／又はリソース２２６（例えばＪａｖａＳｃｒｉｐｔファイル、ＨＴＭＬファイル等）によって定まるような他の機能を提供するためにウェブコードを実行しうる。
【００６９】
ローカルリソースバンドルをロードした後に、ウェブビュー２１６は、ウェブビュー２１６とネイティブレイヤ２１４との間の通信を促進するために、ネイティブブリッジを生成しうる（６０８）。例えば、リソース２２６は、ウェブビュー２１６とネイティブレイヤ２１４との間の通信のためのグローバル変数を生成するウェブコード（例えばＪａｖａＳｃｒｉｐｔ）を含みうる。ウェブコードは、新しいメッセージがウェブビュー２１６から利用可能であることをネイティブレイヤ２１４に通知するために、ウェブビュー２１６によって使用されるｉｆｒａｍｅを生成しうる。バンドルがロードされると共にネイティブブリッジが生成された後に、ウェブビュー２１６は、ウェブビュー２１６の初期化に成功したこと及びネイティブブリッジが動作可能であることを示す接続確立メッセージをネイティブレイヤ２１４へ送信する（６１０）ために、ネイティブブリッジを使用することができる。
【００７０】
（例えば接続確立メッセージで示されるように）ウェブビュー２１６が起動している後に、ネイティブレイヤ２１４は、（例えばネイティブブリッジを通じて）ウェブビュー２１６へ、ウェブビュー２１６にコンテンツアイテムリストをロードさせるためのメッセージを送信しうる（５１２）。例えば、コンテンツアイテムリストは、コンテンツオーサリングアプリケーション２１２によって生成及び／又は管理されているコンテンツアイテムを含みうる。コンテンツアイテムリストは、コンテンツオーサリングアプリケーション２１２を用いて編集するコンテンツアイテムをユーザが選択可能とするためにユーザへリストをウェブビュー２１６が提示することができるように、コンテンツオーサリングアプリケーション２１２の初期化処理の一部としてロードされうる。コンテンツアイテムリストは、ウェブビュー２１６がコンテンツストレージ２２０にローカルで記憶されたコンテンツアイテムを更新することができるように、ロードされうる。
【００７１】
その一方で、処理５００において説明したように、コンテンツオーサリングモジュール２０２からのコンテンツアイテムリストを要求するのではなく、ウェブビュー２１６は、モバイル機器２１０がオフラインであること、および／または、コンテンツオーサリングモジュール２０２に到達できないことを判定しうる（６１４）。コンテンツオーサリングモジュール２０２に到達できないことを判定したことに応じて、ウェブビュー２１６は、コンテンツストレージ２２０にローカルに記憶されたコンテンツアイテムを特定するローカルコンテンツアイテムリストを、ネイティブレイヤ２１４がウェブビュー２１６へ送信することを要求するメッセージを、ネイティブレイヤ２１４へのネイティブブリッジを通じて、送信しうる（６１６）。ネイティブレイヤ２１４は、コンテンツオーサリングアプリケーション２１２と関連付けられたローカルで記憶されているコンテンツアイテムのリストを生成し、ネイティブブリッジを通じて、そのリストをウェブビュー２１６へ送信しうる。ローカルコンテンツアイテムリストの受信後、ウェブビュー２１６は、モバイル機器２１０においてクライアントリソースバンドル２２０のリソース２２６によって提供される命令に従って、ウェブビュー２１６によって提示されるグラフィカルユーザインタフェース上に、コンテンツアイテムリストを提示しうる。
【００７２】
いくつかの実装において、ウェブビュー２１６は、ローカルコンテンツアイテムを提示しうる。例えば、ローカルコンテンツアイテムのリストを提示した後に、ウェブビュー２１６は、ローカルコンテンツアイテムのリストからのコンテンツアイテムのユーザ選択を受けうる。ローカルブリッジ３０２を通じたウェブビュー２１６は、その選択を受けたことに応じて、ネイティブレイヤ２１４から選択されたコンテンツアイテムを要求しうる。ネイティブレイヤ２１４は、ローカルコンテンツストレージ２２０から要求されたコンテンツアイテムを取得して、要求されたローカルコンテンツアイテムをウェブビュー２１６へ送信しうる（６２６）。要求されたローカルコンテンツアイテムを受信した後に、ウェブビュー２１６は、コンテンツオーサリングアプリケーション２１２のユーザによるレビュー及び／又は編集のために、そのローカルコンテンツアイテムを提示しうる（６２８）。したがって、モバイル機器２１０がオフラインであっても及び／又はコンテンツオーサリングモジュール２０２に到達できなくても、ウェブビュー２１６は、ウェブビュー２１６を実行（例えば起動、提示、処理等）してコンテンツアイテムを提示するのに必要な全てのものがモバイル機器２１０にローカルで記憶されているため、なおも、グラフィカルユーザインタフェースを提示し、コンテンツアイテムを提示し、及び／又は、他の動作を実行することができる。
【００７３】
図７は、ハイブリッドアプリケーションを更新するための例示の処理７００である。例えば、処理７００は、ハイブリッドアプリケーションが起動している間にハイブリッドアプリケーションのネイティブコードを変更することなく、ハイブリッドアプリケーションのウェブコードを更新することができる。
【００７４】
ステップ７０２において、モバイル機器２１０は、モバイル機器にインストールされたハイブリッドアプリケーションに対応するネイティブソフトウェアを実行することができる。例えば、ネイティブソフトウェアは、上述のネイティブレイヤ２１４に対応しうる。ネイティブソフトウェアは、モバイル機器２１０によって使用され実装される、特定のオペレーティングシステム、プロセッサ又はシステム構成のために、コンパイルされ及び／又はビルドされうる点で、プラットフォーム固有でありうる。
【００７５】
ステップ７０４において、モバイル機器２１０は、モバイル機器２１０に記憶されているハイブリッドアプリケーションのためのリソースバンドルを取得しうる。例えば、ハイブリッドアプリケーションがモバイル機器２１０にインストールされている場合、そのインストールは、モバイル機器２１０に、ハイブリッドアプリケーション内でウェブビューを実行するのに必要なリソースを含んだリソースバンドルを格納することを含みうる。
【００７６】
ステップ７０６において、モバイル機器２１０は、リソースバンドルからハイブリッドアプリケーションへ、ウェブコードをロードしうる。例えば、ウェブコードは、ＨＴＭＬ、ＪａｖａＳｃｒｉｐｔ、ＣＳＳ等の様々なプラットフォームによらないウェブ技術を含みうる。ネイティブソフトウェアは、ウェブコードを読み出し、コンパイルし、及び／又は、実行することができるウェブエンジン（例えば、ウェブブラウザ、ＪａｖａＳｃｒｉｐｔエンジン、コンパイラ、インタープリタ等）を含みうる。モバイル機器２１０は、ハイブリッドアプリケーションがリソースバンドルにおいてリソースを参照するウェブページ（例えば、ローカルネイティブラッパーＨＴＭＬファイル）をロードすることにより初期化されるときに、リソースバンドルからウェブエンジンにウェブコードをロードしうる。
【００７７】
ステップ７０８において、モバイル機器２１０はウェブコードを実行しうる。例えば、ネイティブソフトウェアにおけるウェブエンジンは、グラフィカルユーザインタフェースを提示し、データを管理及び／又は操作し、コンテンツ管理システム１０６のコンテンツオーサリングモジュール２０２などのウェブサーバと通信するために、ウェブコード（例えばウェブビュー２１６）を読み出し、コンパイルし、及び／又は、実行しうる。
【００７８】
ステップ７１０において、モバイル機器２１０は、ネットワークリソースから、リソースバンドル更新情報を取得しうる。例えば、ハイブリッドアプリケーションが対応するウェブサーバと通信する時に、ハイブリッドアプリケーションは、モバイル機器２１０で動作しているハイブリッドアプリケーションのバージョンを特定するバージョン情報を送信しうる。ウェブサーバがバージョン情報を受信すると、ウェブサーバは、モバイル機器２１０におけるハイブリッドアプリケーションのバージョンがウェブサーバにおけるハイブリッドアプリケーションの最新バージョンに対応するかを判定することができる。モバイル機器２１０におけるハイブリッドアプリケーションのバージョンがウェブサーバにおけるそのアプリケーションの最新バージョンと一致しない場合、ウェブサーバは、更新されたリソースバンドルをハイブリッドアプリケーションへ送信しうる。例えば、ウェブサーバは、ハイブリッドアプリケーションの最新バージョンを特定する設定データとハイブリッドアプリケーションの最新バージョンに対応するリソースとを送信しうる。
【００７９】
ステップ７１２において、モバイル機器２１０は、ネイティブソフトウェアを変更しないままにしながら、リソースバンドル更新に基づいて、ハイブリッドアプリケーションのウェブコードを更新しうる。例えば、モバイル機器２１０は、設定データに基づいて、リソースバンドル内のどのリソースが期限切れであるかを判定することができる。モバイル機器２１０は、その後、上述のように、ハイブリッドアプリケーションを更新することが必要なリソースを要求しうる。モバイル機器２１０は、モバイル機器２１０に記憶されているローカルリソースバンドルにおける期限切れのリソースを、新しく更新されたリソースで置換しうる。
【００８０】
ステップ７１４において、モバイル機器２１０は、更新されたリソースバンドルから更新されたウェブコードを実行しうる。例えば、ウェブエンジンは、ハイブリッドアプリケーションの更新した機能にユーザがアクセスすることを可能とするために、リソースバンドルをリロードして、更新されたリソースにおける更新されたウェブコードを実行しうる。このように、モバイル機器２１０は、ハイブリッドアプリケーションが動作中にハイブリッドアプリケーションのネイティブソフトウェアを変更することなく、ハイブリッドアプリケーションを更新することができる。
【００８１】
図８は、オフラインでのハイブリッドアプリケーションへのアクセスを提供するための例示の処理８００である。例えば、モバイル機器２１０にローカルでウェブコード、リソース、及び／又は、コンテンツアイテムを格納することにより、ウェブコード、リソース、及び／又は、コンテンツアイテムをネットワークリソースから取得することに通常は依存するハイブリッドアプリケーションを、モバイル機器２１０がネットワークに接続されていなくても、モバイル機器２１０が実行することができる。
【００８２】
ステップ８０２において、モバイル機器２１０は、モバイル機器上の、ハイブリッドアプリケーションのネイティブレイヤを起動しうる。例えば、ネイティブレイヤは、上述のネイティブレイヤ２１４に対応しうる。ネイティブレイヤは、モバイル機器２１０によって使用され又は実装される、特定のオペレーティングシステム、プロセッサ、又はシステム構成のためにソフトウェアがコンパイルされ及び／又はビルドされうる点で、プラットフォームに固有のソフトウェアを含みうる。
【００８３】
ステップ８０４において、モバイル機器２１０は、モバイル機器２１０上のストレージから、ウェブビューをアプリケーションへロードしうる。例えば、ウェブビューは、上述のウェブビュー２１６に対応しうる。ウェブビューは、ネイティブレイヤ２１４においてネイティブソフトウェアを用いて実装されるウェブエンジンと、機能、特徴等をハイブリッドアプリケーションへ提供するためにウェブエンジンによって実行されるウェブコードとを含みうる。ウェブコードは、モバイル機器２１０がネットワーク又はネットワークサーバに接続されていない時でもハイブリッドアプリケーションが動作しうるように、ローカルリソースバンドルからウェブエンジンへロードされうる。
【００８４】
ステップ８０６において、モバイル機器２１０は、ネットワークサーバに格納されたコンテンツアイテムの要求を受信しうる。例えば、ハイブリッドアプリケーションは、ネットワークサーバに記憶されたコンテンツアイテムを見る又は編集することを要求するユーザインプットを受けうる。ハイブリッドアプリケーションのネイティブレイヤは、上述のように、モバイル機器２１０にローカルで格納されているコンテンツアイテムを更新するために、ウェブビューがネットワークサーバからコンテンツアイテムをダウンロードすることを要求しうる。
【００８５】
ステップ８０８において、モバイル機器２１０は、モバイル機器がネットワークサーバに接続することができないことを判定しうる。例えば、ハイブリッドアプリケーション（例えばウェブビュー２１６）は、モバイル機器２１０がネットワークに接続されていないこと、及び／又は、ネットワークサーバに到達できないことを判定しうる。
【００８６】
ステップ８１０において、モバイル機器２１０は、ハイブリッドアプリケーションのネイティブレイヤから、要求されるコンテンツアイテムのローカルで記憶されているバージョンを要求しうる。例えば、ネットワークサーバに到達できないことを判定したことに応じて、ウェブビュー２１６は、モバイル機器２１０におけるローカルストレージからコンテンツアイテムを要求するメッセージをネイティブレイヤ２１４へ送信しうる。
【００８７】
ステップ８１２において、モバイル機器２１０は、要求されたコンテンツアイテムのローカルで記憶されたバージョンを取得しうる。例えば、ネイティブレイヤ２１４は、ローカルコンテンツストレージ２２０から、要求されたコンテンツアイテムのローカルで記憶されたバージョンを取得しうる。
【００８８】
ステップ８１４において、モバイル機器２１０は、要求されたコンテンツアイテムのローカルで記憶されたバージョンをウェブビュー２１６へ送信しうる。例えば、ネイティブレイヤ２１４は、ネイティブブリッジ３０２を通じて、要求されたコンテンツアイテムのローカルで記憶されたバージョンを、ウェブビュー２１６へ送信しうる。ネイティブレイヤ２１４は、例えば、上述のように、コンテンツアイテム（例えばコンテンツアイテム識別子及びコンテンツ）を、メッセージ系列にエンコードして、ネイティブブリッジ３０２を用いてウェブビュー２１６へそのメッセージ系列を送信しうる。
【００８９】
ステップ８１６において、モバイル機器２１０は、モバイル機器２１０のディスプレイ上に、要求されたコンテンツアイテムを提示しうる。例えば、ウェブビュー２１６が要求したコンテンツアイテムを受信した後に、ウェブビュー２１６は、モバイル機器２１０上のローカルリソースバンドルからロードされたウェブコードに従って生成されるグラフィカルユーザインタフェースに、コンテンツアイテムを提示しうる。
【００９０】
図９Ａ及び図９Ｂは、例示の取りうるシステム実施形態を示している。本技術を実践する際のより適切な実施形態は当業者に明らかであろう。当業者は、他のシステム実施形態をとりうることも既に理解しているだろう。
【００９１】
図９Ａは、従来のシステムバスコンピューティングシステム構造９００を示しており、ここで、システムの要素はバス９０５を用いて相互に電気通信している。例示のシステム９００は、プロセッサユニット（ＣＰＵ又はプロセッサ）９１０と、読み出し専用メモリ（ＲＯＭ）９２０及びランダムアクセスメモリ（ＲＡＭ）９２５などのシステムメモリ９１５を含んだ様々なシステム要素をプロセッサ９１０に接続するシステムバス９０５とを含む。システム９００は、プロセッサ９１０に直接接続された、プロセッサ９１０の近傍の、又は、プロセッサ９１０の一部として集約された高速メモリのキャッシュを含みうる。システム９００は、プロセッサ９１０による高速アクセスのために、メモリ９１５及び／又はストレージ機器９３０からキャッシュ９１２へデータをコピーしうる。この方法では、キャッシュは、データを待つ間のプロセッサ９１０の遅延を回避する、性能ブーストを提供しうる。これらの及び他のモジュールは、様々な動作を実行するようにプロセッサ９１０を制御し、又は制御するように構成されうる。他のシステムメモリ９１５も、使用可能でありうる。メモリ９１５は、様々な性能特性を有する複数の様々なタイプのメモリを含みうる。プロセッサ９１０は、任意の汎用プロセッサと、ストレージ機器９３０に記憶されたモジュール１  ９３２、モジュール２  ９３４、及びモジュール３  ９３６などの、プロセッサ９１０及び特定用途プロセッサを制御するように構成されたハードウェアモジュール又はソフトウェアモジュールとを含むことができ、ここで、ソフトウェア命令は実際のプロセッサ設計に組み込まれる。プロセッサ９１０は、基本的に、複数のコア又は複数のプロセッサ、バス、メモリコントローラ、キャッシュ等を含んだ、完全に内蔵型のコンピューティングシステムであってもよい。マルチコアプロセッサは、対称型であっても非対称型であってもよい。
【００９２】
コンピューティング機器９００を用いたユーザ対話を可能とするために、入力機器９４５が、音声のためのマイク、ジェスチャー又はグラフィック入力のためのタッチセンシティブスクリーン、キーボード、マウス、モーション入力、音声等のような、任意の数の入力機構を表すことができる。出力機器９３５も、当業者に知られた１つ以上の数の出力機構でありうる。いくつかの例において、多様なシステムが、コンピューティング機器９００と通信するための複数の種類の入力をユーザが提供することを可能としうる。通信インタフェース９４０は、ユーザ入力およびシステム出力を大まかに統率して管理することができる。特定のハードウェア構成上での動作に対する制約はなく、したがって、ここでの基本的な特徴が、開発されたような、与えられるハードウェア又はファームウェア構成の代わりにされうる。
【００９３】
ストレージ機器９３０は、不揮発性メモリであり、ハードディスクであっても、磁器カセット、フラッシュメモリカード、ソリッドステートメモリ機器、デジタル多目的ディスク、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）９２５、読み出し専用メモリ（ＲＯＭ）９２０、及びその複合などの、コンピュータによってアクセス可能なデータを記憶することができる他の種類のコンピュータ可読媒体であってもよい。
【００９４】
ストレージ機器９３０は、プロセッサ９１０を制御するためのソフトウェアモジュール９３２、９３４、９３６を含みうる。他のハードウェア又はソフトウェアモジュールも予定される。ストレージ機器９３０は、システムバス９０５に接続されうる。１つの態様において、特定の機能を実行するハードウェアモジュールが、その機能を実行するための、プロセッサ９１０、バス９０５、ディスプレイ９３５等のような必要なハードウェア要素と接続されている、コンピュータ可読媒体に記憶されたソフトウェア要素を含みうる。
【００９５】
図９Ｂは、説明した方法を実行し、グラフィカルユーザインタフェース（ＧＵＩ）生成して表示するのに使用されうるチップセット構造を有するコンピュータシステム９５０を図解している。コンピュータシステム９５０は、開示された技術を実装するのに使用されうるコンピュータハードウェア、ソフトウェア、及びファームウェアの例である。システム９５０は、特定の演算を実行するように構成されたソフトウェア、ファームウェア、及びハードウェアを実行することができる、物理的に及び／又は論理的に相異なる任意の数のリソースを代表する、プロセッサ９１０を含みうる。プロセッサ９１０は、プロセッサ９１０への入力およびプロセッサ９１０からの出力を制御可能なチップセット９６０と通信することができる。この例において、チップセット９６０は、ディスプレイなどの出力９６５に情報を出力し、例えば磁気媒体及びソリッドステート媒体を含みうるストレージ機器９７０から、情報を読み出すと共に情報を書き込むことができる。チップセット９６０は、ＲＡＭ９７５からデータを読み出し、ＲＡＭ９７５へデータを書き込むこともできる。様々なユーザインタフェース要素９８５とインタフェース接続するためのブリッジ９８０は、チップセット９６０とインタフェース接続するために提供されうる。このようなユーザインタフェース要素９８５は、キーボード、マイク、タッチ検出及び処理回路、マウスなどのポインティングデバイス等を含むことができる。一般に、システム９５０への入力は、様々なソースのいずれか、機械の生成、及び／又は、人間の生成からもたらされうる。
【００９６】
また、チップセット９６０は、様々な物理インタフェースを有することが可能な通信インタフェース９９０とインタフェース接続することができる。このような通信インタフェースは、有線及び無線ローカルエリアネットワークのための、ブロードバンド無線ネットワークのための、また、パーソナルエリアネットワークのためのインタフェースを含むことができる。ここで開示されるＧＵＩを生成し、表示し、使用するための方法のいくつかのアプリケーションは、ストレージ９７０又は９７５に格納されたデータを解析するプロセッサ９１０により、物理インタフェースを介してオーダリングされたデータセットを受信することを含んでもよいし、機械自身によって生成されてもよい。さらに、機械は、ユーザインタフェース要素９８５を介してユーザからの入力を受信して、プロセッサ９１０を用いてこれらの入力を解釈することによるブラウジング機能などの、適切な機能を実行しうる。
【００９７】
例示のシステム９００及び９５０が１つより多くのプロセッサ９１０を有してもよいし、より多くの処理能力を与えるために共にネットワーク接続されたコンピューティング機器のグループまたはクラスタの一部であってもよいことが理解されうる。
【００９８】
説明の明確性のために、いくつかの例では、本技術が、機器、機器要素、ソフトウェアにおいて、又はハードウェアとソフトウェアとの組み合わせにおいて具現化される方法におけるステップ又はルーチンを含んだ機能ブロックを含む、個別の機能ブロックを含むように提示されうる。
【００９９】
ここで説明した任意のステップ、動作、機能又は処理は、単独で又は他のデバイスと組み合わせて、実行され、又はハードウェア及びソフトウェアモジュールの組み合わせによって実装されうる。ある実施形態において、ソフトウェアモジュールは、コンテンツ管理システムのクライアント機器及び／又は１つ以上のサーバのメモリに駐在するソフトウェアであり、そのモジュールと関連付けられたソフトウェアをプロセッサが実行する際に、１つ以上の機能を実行することができる。メモリは、非一時的コンピュータ可読媒体でありうる。
【０１００】
いくつかの実施形態において、コンピュータ可読ストレージ機器、媒体、及びメモリは、ビットストリーム等を含んだケーブル又は無線信号を含むことができる。しかしながら、言及される場合には、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、及び信号それ自体などの媒体を明示的に排除する。
【０１０１】
上述の例による方法は、コンピュータ可読媒体に記憶され又はその他の場合そこから利用可能なコンピュータ実行可能命令を用いて、実装されうる。このような命令は、例えば、汎用コンピュータ、特定用途コンピュータ、又は特定用途処理機器に、所定の機能又は一群の機能を実行させる又はそれ以外の場合これらをするように設定する命令及びデータを含むことができる。使用されるコンピュータリソースの一部が、ネットワークを介してアクセス可能であってもよい。コンピュータ実行可能命令は、例えば、アセンブリ言語、ファームウェア、又はソースコードなどのバイナリ、中間フォーマット命令でありうる。命令、使用される情報、及び／又は、説明された例による方法の間に生成された情報を記憶するのに使用されうるコンピュータ可読媒体の例は、磁器又は光学ディスク、フラッシュメモリ、不揮発メモリが備えられたＵＳＢ機器、ネットワーク接続されたストレージ機器などを含む。
【０１０２】
これらの開示による方法を実行する機器は、ハードウェア、ファームウェア、及び／又はソフトウェアを有することができ、様々なフォームファクタのいずれかをとることができる。このようなフォームファクタの典型的な例は、ラップトップ、スマートフォン、小さいフォームファクタのパーソナルコンピュータ、パーソナルデジタルアシスタント等を含む。また、ここで説明された機能は、周辺機器やアドインカードにおいて実装されてもよい。このような機能は、さらなる例として、様々なチップ又は単一の機器において実行する様々な処理の中で回路基板上に実装されてもよい。
【０１０３】
命令、このような命令を搬送する媒体、それらを実行するためのコンピューティングリソース、このようなコンピューティングリソースを補助するための他の構成が、これらの開示において説明された機能を提供するための手段である。
【０１０４】
添付の請求項の範囲内の態様を説明するために様々な例及び他の情報を使用したが、当業者がこれらの例を用いて多種多様な実装を導出することができるように、このような例における特定の機能又は構成に基づく請求項の限定を意味するものではない。さらに、いくつかの主題については構造的な特徴および／または方法ステップの例に固有の文言で説明された可能性があるが、添付の請求項において規定された主題がこれらの開示された特徴又は動作に必ずしも限定されないことが理解されるべきである。例えば、このような機能は、ここで特定されるもの以外の要素において別に分布され又は実行されてもよい。むしろ、添付の請求項の範囲内のシステム及び方法の要素の例として、説明された特徴及び方法が開示されている。
【図１】
2019517042.tif 000003
【図２】
2019517042.tif 000004
【図３】
2019517042.tif 000005
【図４】
2019517042.tif 000006
【図５】
2019517042.tif 000007
【図６】
2019517042.tif 000008
【図７】
2019517042.tif 000009
【図８】
2019517042.tif 000010
【図９Ａ】
2019517042.tif 000011
【図９Ｂ】
2019517042.tif 000012
【手続補正書】
【提出日】平成30年10月29日(2018.10.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
コンピューティング機器によって、前記コンピューティング機器のメモリに、ソフトウェアアプリケーションであって、前記ソフトウェアアプリケーションがネイティブ要素およびリソースバンドルを含み、前記ネイティブ要素が前記コンピューティング機器にネイティブな技術を用いて生成され、前記リソースバンドルが前記ソフトウェアアプリケーションに対するウェブビューを規定する非ネイティブウェブコードを含む、前記ソフトウェアアプリケーションを記憶することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションを選択するユーザ入力を受信することと、
前記ユーザ入力を受信したことに応じて、前記コンピューティング機器によって、前記ソフトウェアアプリケーションの前記ネイティブ要素を実行することと、
前記ネイティブ要素の実行に応じて、前記コンピューティング機器によって、前記ウェブビューを生成するように、前記記憶されたリソースバンドルから前記ネイティブ要素に非ネイティブウェブコードをロードすることと、
前記コンピューティング機器のディスプレイに前記ウェブビューを提示することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションのためのデジタルアセットを提供するサーバ機器へのネットワーク接続が利用可能でないことを判定することと、
前記ネットワーク接続が利用可能でない場合に、前記コンピューティング機器のローカルストレージから、前記ウェブビューを提示するためのデジタルアセットを取得することと、
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記デジタルアセットは、前記サーバ機器から前もって受信された、前記ソフトウェアアプリケーションのための前記ウェブビューを規定するウェブコードを含む、方法。
【請求項３】
請求項１に記載の方法であって、
前記サーバ機器への前記ネットワーク接続が利用可能でないと判定したことに応じて、前記ウェブビューによって、前記コンピューティング機器においてローカルで利用可能なコンテンツアイテムを特定するコンテンツアイテムリストの要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記ネイティブ要素によって、前記コンピューティング機器にローカルに記憶されたコンテンツアイテムに基づいて、前記コンテンツアイテムリストを生成することと、
前記ネイティブ要素によって、前記ウェブビューへ、前記コンテンツアイテムリストを送信することと、
前記ウェブビューによって、前記コンピューティング機器のディスプレイに前記コンテンツアイテムリストを提示することと、をさらに含む方法。
【請求項４】
請求項１に記載の方法であって、
前記ウェブビューによって、コンテンツアイテムを選択するユーザ入力を受信することと、
前記コンテンツアイテムの前記選択を受信したことに応じて、前記ウェブビューによって、前記コンピューティング機器におけるローカルストレージから前記コンテンツアイテムを取得するための要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記要求を受信したことに応じて、前記ネイティブ要素によって、前記コンピューティング機器におけるローカルストレージから前記コンテンツアイテムを取得することと、
前記ネイティブ要素によって、前記コンテンツアイテムを前記ウェブビューへ送信することと、
前記ウェブビューによって、前記コンピューティング機器のディスプレイに前記コンテンツアイテムを提示することと、をさらに含む方法。
【請求項５】
請求項４に記載の方法であって、前記コンテンツアイテムを前記ウェブビューへ送信することは、
前記ネイティブ要素によって、前記コンテンツアイテムを系列へエンコードすることと、
前記ソフトウェアアプリケーションのグローバル変数に前記系列を格納することと、
前記グローバル変数の値が変化したことを前記ウェブビューへ通知することと、を含む方法。
【請求項６】
１つ以上のプロセッサにより実行されるときに、前記プロセッサに
コンピューティング機器によって、前記コンピューティング機器のメモリに、ソフトウェアアプリケーションであって、前記ソフトウェアアプリケーションがネイティブ要素およびリソースバンドルを含み、前記ネイティブ要素が前記コンピューティング機器にネイティブな技術を用いて生成され、前記リソースバンドルが前記ソフトウェアアプリケーションに対するウェブビューを規定する非ネイティブウェブコードを含む、前記ソフトウェアアプリケーションを記憶することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションの前記ネイティブ要素を実行することと、
前記ネイティブ要素の実行に応じて、前記コンピューティング機器によって、前記ウェブビューを生成するように、前記記憶されたリソースバンドルから前記ネイティブ要素にウェブコードをロードすることと、
前記コンピューティング機器のディスプレイに前記ウェブビューを提示することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションのためのデジタルアセットを提供するサーバ機器へのネットワーク接続が利用可能でないことを判定することと、
前記ネットワーク接続が利用可能でない場合に、前記コンピューティング機器のローカルストレージから、前記ウェブビューを提示するためのデジタルアセットを取得することと、
を含んだ動作を実行させる命令の１つ以上のシーケンスを含んだ非一時的コンピュータ可読媒体。
【請求項７】
請求項６に記載の非一時的コンピュータ可読媒体であって、前記デジタルアセットは、前記サーバ機器から前もって受信された、前記ソフトウェアアプリケーションのための前記ウェブビューを規定するウェブコードを含む、非一時的コンピュータ可読媒体。
【請求項８】
請求項６に記載の非一時的コンピュータ可読媒体であって、前記命令は、前記プロセッサに、
前記サーバ機器への前記ネットワーク接続が利用可能でないと判定したことに応じて、前記ウェブビューによって、前記コンピューティング機器においてローカルで利用可能なコンテンツアイテムを特定するコンテンツアイテムリストの要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記ネイティブ要素によって、前記コンピューティング機器にローカルに記憶されたコンテンツアイテムに基づいて、前記コンテンツアイテムリストを生成することと、
前記ネイティブ要素によって、前記ウェブビューへ、前記コンテンツアイテムリストを送信することと、
前記ウェブビューによって、前記コンピューティング機器のディスプレイに前記コンテンツアイテムリストを提示することと、
を含む動作を実行させる非一時的コンピュータ可読媒体。
【請求項９】
請求項６に記載の非一時的コンピュータ可読媒体であって、前記命令は、前記プロセッサに、
前記ウェブビューによって、コンテンツアイテムを選択するユーザ入力を受信することと、
前記コンテンツアイテムの前記選択を受信したことに応じて、前記ウェブビューによって、前記コンピューティング機器におけるローカルストレージから前記コンテンツアイテムを取得するための要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記要求を受信したことに応じて、前記ネイティブ要素によって、前記コンピューティング機器におけるローカルストレージから前記コンテンツアイテムを取得することと、
前記ネイティブ要素によって、前記コンテンツアイテムを前記ウェブビューへ送信することと、
前記ウェブビューによって、前記コンピューティング機器のディスプレイに前記コンテンツアイテムを提示することと、
を含む動作を実行させる非一時的コンピュータ可読媒体。
【請求項１０】
請求項９に記載の非一時的コンピュータ可読媒体であって、前記コンテンツアイテムを前記ウェブビューへ送信することは、
前記ネイティブ要素によって、前記コンテンツアイテムを系列へエンコードすることと、
前記ソフトウェアアプリケーションのグローバル変数に前記系列を格納することと、
前記グローバル変数の値が変化したことを前記ウェブビューへ通知することと、を含む非一時的コンピュータ可読媒体。
【請求項１１】
システムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサにより実行されるときに、前記プロセッサに
前記システムによって、コンピューティング機器のメモリに、ソフトウェアアプリケーションであって、前記ソフトウェアアプリケーションがネイティブ要素およびリソースバンドルを含み、前記ネイティブ要素が前記コンピューティング機器にネイティブな技術を用いて生成され、前記リソースバンドルが前記ソフトウェアアプリケーションに対するウェブビューを規定する非ネイティブウェブコードを含む、前記ソフトウェアアプリケーションを記憶することと、
前記コンピューティング機器によって、前記ソフトウェアアプリケーションの前記ネイティブ要素を実行することと、
前記ネイティブ要素の実行に応じて、前記システムによって、前記ウェブビューを生成するように、前記記憶されたリソースバンドルから前記ネイティブ要素にウェブコードをロードすることと、
前記システムのディスプレイに前記ウェブビューを提示することと、
前記システムによって、前記ソフトウェアアプリケーションのためのデジタルアセットを提供するサーバ機器へのネットワーク接続が利用可能でないことを判定することと、
前記ネットワーク接続が利用可能でない場合に、前記システムの機器のローカルストレージから、前記ウェブビューを提示するためのデジタルアセットを取得することと、
を含んだ動作を実行させる命令の１つ以上のシーケンスを含んだ非一時的コンピュータ可読媒体と、を有するシステム。
【請求項１２】
請求項１１に記載のシステムであって、前記デジタルアセットは、前記サーバ機器から前もって受信された、前記ソフトウェアアプリケーションのための前記ウェブビューを規定するウェブコードを含む、システム。
【請求項１３】
請求項１１に記載のシステムであって、前記命令は、前記プロセッサに、
前記サーバ機器への前記ネットワーク接続が利用可能でないと判定したことに応じて、前記ウェブビューによって、前記システムにおいてローカルで利用可能なコンテンツアイテムを特定するコンテンツアイテムリストの要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記ネイティブ要素によって、前記システムにローカルに記憶されたコンテンツアイテムに基づいて、前記コンテンツアイテムリストを生成することと、
前記ネイティブ要素によって、前記ウェブビューへ、前記コンテンツアイテムリストを送信することと、
前記ウェブビューによって、前記システムのディスプレイに前記コンテンツアイテムリストを提示することと、
を含む動作を実行させるシステム。
【請求項１４】
請求項１１に記載のシステムであって、前記命令は、前記プロセッサに、
前記ウェブビューによって、コンテンツアイテムを選択するユーザ入力を受信することと、
前記コンテンツアイテムの前記選択を受信したことに応じて、前記ウェブビューによって、前記システムにおけるローカルストレージから前記コンテンツアイテムを取得するための要求を生成することと、
前記ウェブビューによって、前記要求を前記ネイティブ要素へ送信することと、
前記要求を受信したことに応じて、前記ネイティブ要素によって、前記システムにおけるローカルストレージから前記コンテンツアイテムを取得することと、
前記ネイティブ要素によって、前記コンテンツアイテムを前記ウェブビューへ送信することと、
前記ウェブビューによって、前記システムのディスプレイに前記コンテンツアイテムを提示することと、
を含む動作を実行させるシステム。
【請求項１５】
請求項１４に記載のシステムであって、前記コンテンツアイテムを前記ウェブビューへ送信することは、
前記ネイティブ要素によって、前記コンテンツアイテムを系列へエンコードすることと、
前記ソフトウェアアプリケーションのグローバル変数に前記系列を格納することと、
前記グローバル変数の値が変化したことを前記ウェブビューへ通知することと、を含むシステム。
【国際調査報告】
2019517042.tif 000013
2019517042.tif 000014