(57)【特許請求の範囲】
【請求項１】
データ処理システム上で実行されたときに前記データ処理システムに或る方法を遂行させる実行可能な命令を格納している機械可読非一時的記憶媒体において、前記方法は、
第１のオペレーティングシステム（ＯＳ）を実行する段階と、
前記第１のＯＳ上のウェブブラウザを実行する段階と、
前記ウェブブラウザのメモリ空間によって定義されるメモリ空間内のラッパーアプリケーションであって、少なくとも第１のアプリケーションについてライフサイクル管理を提供しているラッパーアプリケーションを実行する段階と、
前記ラッパーアプリケーションの中で前記第１のアプリケーションを実行する段階であって、前記ラッパーアプリケーションは少なくとも第１のアプリケーションについてライフサイクル管理を提供し、最前面状態から非最前面状態への切り替えを提供し、前記第１のアプリケーションは、ウェブページの対応するｉｆｒａｍｅにおいて実行し、それが非最前面状態へ切り替えられた後も、実行中の状態のままである、段階と、
前記第１のアプリケーションが実行に向け起動されるときの前記ラッパーアプリケーションと前記第１のアプリケーションの間の少なくとも１つの呼び出し、及び前記第１のアプリケーションが終結されるときの前記ラッパーアプリケーションと前記第１のアプリケーションの間の少なくとも１つの呼び出し、を伝送する段階と、
前記第１のアプリケーションが起動されるときの前記ウェブブラウザと前記ラッパーアプリケーションの間の少なくとも１つの呼び出しを伝送する段階と、を備えている、機械可読非一時的記憶媒体。
【請求項２】
少なくとも１つの呼び出しを伝送する段階は、呼び出し又はメッセージを、発行する段階、開始する段階、発動する段階、又は受信する段階の１つを備え、前記第１のＯＳは、プリエンプティブマルチタスキングＯＳである、請求項１に記載の媒体。
【請求項３】
前記ウェブブラウザは、当該ウェブブラウザが１つ又はそれ以上のＵＲＬ（ユニフォームリソースロケータ）を通じて検索した、マークアップ言語でエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、前記ウェブブラウザは、当該ウェブブラウザ中のレイアウトエンジンを使用して、前記ウェブページの前記マークアップ言語を当該ウェブページのＤＯＭ（文書オブジェクトモデル）へ処理するように構成されていて、且つ前記ウェブページと関連付けられているカスケーディングスタイルシートを処理して当該ウェブページを提示させるように構成されている、請求項２に記載の媒体。
【請求項４】
アプリケーションのセットが前記ラッパーアプリケーションの中で実行しており、前記セットは、ｅメールアプリケーションである前記第１のアプリケーション、カレンダーアプリケーションである第２のアプリケーション、及び連絡先又は住所録アプリケーションである第３のアプリケーションを含んでおり、前記セット中のそれぞれのアプリケーションは、それが最前面となったときに前記ウェブブラウザの同じ単一のウインドウ中に提示される、請求項２に記載の媒体。
【請求項５】
前記ラッパーアプリケーションは、前記アプリケーションのセットのためのオペレーティングシステムとして動作しており、前記セット中のそれぞれのアプリケーションは少なくとも部分的にＪａｖａＳｃｒｉｐｔで書かれている、請求項４に記載の媒体。
【請求項６】
前記セット中のそれぞれのアプリケーションは、ウェブページの対応するｉｆｒａｍｅの中で実行しており、前記セット中のそれぞれのアプリケーションのための対応する前記ｉｆｒａｍｅは、前記ラッパーアプリケーションによる行動を通じて、最前面アプリケーションとして提示されるか又は最前面アプリケーションとして提示されない、請求項４に記載の媒体。
【請求項７】
前記ラッパーアプリケーションは、前記ウェブブラウザからの呼び出しに応えて、それぞれのアイコンが前記アプリケーションのセット中の或るアプリケーションを表現しているアイコンのセットの表示のためにデータを生成しており、前記呼び出しは、前記ウェブブラウザ中の前記同じ単一ウインドウの中での第１のアイコンの選択によって引き起こされるものである、請求項６に記載の媒体。
【請求項８】
前記第１のアイコンの前記選択は、前記アプリケーション間で切り替えるために使用されており、前記ウェブブラウザの前記同じ単一ウインドウ中の前記アイコンのセットの前記提示を引き起こす、請求項７に記載の媒体。
【請求項９】
前記アプリケーションのセット中のそれぞれのアプリケーションは、それが最前面アプリケーションから非最前面状態へ切り替えられた後も、コンテキスト及び状態が保存されて実行中の状態のままである、請求項８に記載の媒体。
【請求項１０】
前記コンテキストは、テキスト入力フォーカス及び位置の状態並びに入力されたユーザーデータを含み、前記ウェブブラウザの前記同じ単一ウインドウは、タブ付きウインドウを含んでおらず、前記ラッパーアプリケーションは、前記ウェブブラウザの前記同じ単一ウインドウのＵＲＬテキストエントリフィールド及びタイトルバーを所有している、請求項９に記載の媒体。
【請求項１１】
前記ラッパーアプリケーションは、前記アプリケーションのセット中のそれぞれのアプリケーションについてユーザーを認証し、ユーザーが前記セット中の前記アプリケーションのうちの１つでログアウトすると、又は前記セット中の前記アプリケーションのうちの１つでアクセスが失効すると、前記ラッパーアプリケーションは、当該ユーザーを前記アプリケーションのセット中の残りのアプリケーションからログアウトさせる、請求項９に記載の媒体。
【請求項１２】
前記ラッパーアプリケーションは、前記アプリケーションのセット中のそれぞれのアプリケーションについて別々にエラーに対処しており、前記セット中の１つのアプリケーションの再始動を、当該セット中の他のアプリケーションが実行を継続している間に行わせる、請求項９に記載の媒体。
【請求項１３】
前記ラッパーアプリケーションは、適正なユーザー認証がセットアップサービスへ送信されたことに応えて、前記アプリケーションのセット中の前記アプリケーションのそれぞれについてウェブサーバのアドレス情報を受信する、請求項１２に記載の媒体。
【請求項１４】
データ処理システムによる実行のための実行可能な命令を格納している機械可読非一時的記憶媒体において、前記命令は、
前記データ処理システムのオペレーティングシステム上で走っているウェブブラウザのメモリ空間によって定義されたメモリ空間内で走るように構成されているラッパーアプリケーションと、
前記ラッパーアプリケーションの中で走るように構成されているアプリケーションのセットであって、１つ又はそれ以上のサーバからのデータを提供しているアプリケーションのセットと、を備えており、前記ラッパーアプリケーションは、前記アプリケーションのセット中のそれぞれのアプリケーションについてライフサイクル管理を提供し、前記アプリケーションのセット中の前記アプリケーション間の切り替えを提供し、前記切り替えはアプリケーションに最前面状態から非最前面状態へ切替えさせ、前記セット中の各アプリケーションは、ウェブページの対応するｉｆｒａｍｅにおいて実行し、それが最前面状態から非最前面状態へ切替えられた後も、実行中の状態のままである、機械可読非一時的記憶媒体。
【請求項１５】
前記ラッパーアプリケーションとそれぞれのアプリケーションの間では、前記アプリケーションが起動されるとき及び前記アプリケーションが最前面と非最前面の間で切り替えられるときに呼び出しが伝送され、前記ライフサイクル管理は、前記アプリケーションのセット中のそれぞれのアプリケーションの起動段階及び終了段階を備えている、請求項１４に記載の媒体。
【請求項１６】
前記ラッパーアプリケーションと前記アプリケーションのセットは、同じ単一のウェブブラウザの中で実行するように構成されており、前記アプリケーションのセット中のそれぞれのアプリケーションは、前記非最前面状態のときも実行中のままであり、前記ラッパーアプリケーションは、前記ウェブブラウザからの呼び出しに応えて、それぞれのアイコンが前記アプリケーションのセット中の或るアプリケーションを表現しているアイコンのセットを提示し、前記呼び出しは、前記同じ単一のウェブブラウザウインドウの中での第１のアイコンの選択によって引き起こされるものであり、前記第１のアイコンは前記アプリケーションのセット中の前記アプリケーション間で切り替えるのに使用されている、請求項１５に記載の媒体。
【請求項１７】
機械実施式の方法において、
第１のオペレーティングシステム（ＯＳ）を実行する段階と、
前記第１のＯＳ上のウェブブラウザを実行する段階であって、前記ウェブブラウザは、当該ウェブブラウザが１つ又はそれ以上のＵＲＬ（ユニフォームリソースロケータ）を通じて検索した、マークアップ言語でエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、前記ウェブブラウザは、当該ウェブブラウザ中のレイアウトエンジンを使用して、前記ウェブページの前記マークアップ言語を当該ウェブページのＤＯＭ（文書オブジェクトモデル）へ処理するように構成されていて、且つ前記ウェブページと関連付けられているカスケーディングスタイルシートを処理して当該ウェブページを提示させる、段階と、
前記ウェブブラウザのメモリ空間によって定義されたメモリ空間内のラッパーアプリケーションであって、少なくとも第１のアプリケーションについてライフサイクル管理を提供しているラッパーアプリケーションを実行する段階と、
前記ラッパーアプリケーション上の前記第１のアプリケーションを実行する段階であって、ラッパーアプリケーションの動作を通じて前記第１のアプリケーションが最前面アプリケーションとして提示されるか又は最前面アプリケーションとして提示されず、前記第１のアプリケーションは、前記ウェブページの対応するｉｆｒａｍｅにおいて実行し、それが最前面アプリケーションから非最前面状態へ切替えられた後も、実行中の状態のままである、段階と、
前記第１のアプリケーションが実行に向け起動されるときの前記ラッパーアプリケーションと前記第１のアプリケーションの間の少なくとも１つの呼び出し、及び前記第１のアプリケーションが終結されるときの前記ラッパーアプリケーションと前記第１のアプリケーションの間の少なくとも１つの呼び出し、を伝送する段階と、
前記第１のアプリケーションが起動されるときの前記ウェブブラウザと前記ラッパーアプリケーションの間の少なくとも１つの呼び出しを伝送する段階と、を備えており、少なくとも１つの呼び出しを伝送する段階は、呼び出し又はメッセージを、発行する段階、開始する段階、発動する段階、又は受信する段階の１つを備え、前記第１のＯＳは、プリエンプティブマルチタスキングＯＳであり、前記ラッパーアプリケーションのメモリ空間は前記ウェブブラウザの前記メモリ空間によって定義されている、方法。
【請求項１８】
アプリケーションのセットが前記ラッパーアプリケーションの中で実行しており、前記セットは、ｅメールアプリケーションである前記第１のアプリケーション、カレンダーアプリケーションである第２のアプリケーション、及び連絡先又は住所録アプリケーションである第３のアプリケーションを含んでおり、前記セット中のそれぞれのアプリケーションは、それが最前面となったときに前記ウェブブラウザの同じ単一のウインドウ中に提示され、前記ラッパーアプリケーションは、前記アプリケーションのセットのためのオペレーティングシステムとして動作しており、前記セット中のそれぞれのアプリケーションは少なくとも部分的にＪａｖａＳｃｒｉｐｔで書かれている、請求項１７に記載の方法。
【請求項１９】
データ処理システムにおいて、
第１のオペレーティングシステム（ＯＳ）を実行するための手段と、
前記第１のＯＳ上のウェブブラウザを実行するための手段と、
前記ウェブブラウザ内のメモリ空間によって定義されたメモリ領域内のラッパーアプリケーションであって、アプリケーションのセットにおける複数のアプリケーションについてライフサイクル管理を提供しているラッパーアプリケーションを実行するための手段と、
前記ラッパーアプリケーション上の前記アプリケーションのセットを実行するための手段であって、前記セットにおける各アプリケーションはウェブページの対応するｉｆｒａｍｅにおいて実行し、前記セットにおける各アプリケーションのための対応するｉｆｒａｍｅは前記ラッパーアプリケーションによる動作を通じて最前面アプリケーションとして提示されるか又は最前面アプリケーションとして提示されず、前記アプリケーションのセットにおける各アプリケーションは、それが前記最前面アプリケーションから非最前面状態へ切替えられた後も、実行中の状態のままである、手段と、
前記アプリケーションのセットにおける第１のアプリケーションが実行に向け起動されるときの前記ラッパーアプリケーションと前記第１のアプリケーションの間の少なくとも１つの呼び出し、及び前記第１のアプリケーションが終結されるときの前記ラッパーアプリケーションと前記第１のアプリケーションの間の少なくとも１つの呼び出し、を伝送するための手段と、
前記第１のアプリケーションが起動されるときの前記ウェブブラウザと前記ラッパーアプリケーションの間の少なくとも１つの呼び出しを伝送するための手段と、を備えているデータ処理システム。
【請求項２０】
少なくとも１つの呼び出しを伝送する段階は、呼び出し又はメッセージを、発行する段階、開始する段階、発動する段階、又は受信する段階の１つを備え、前記第１のＯＳは、プリエンプティブマルチタスキングＯＳであり、前記ウェブブラウザは、当該ウェブブラウザが１つ又はそれ以上のＵＲＬ（ユニフォームリソースロケータ）を通じて検索した、マークアップ言語でエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、前記ウェブブラウザは、当該ウェブブラウザ中のレイアウトエンジンを使用して、前記ウェブページの前記マークアップ言語を当該ウェブページのＤＯＭ（文書オブジェクトモデル）へ処理するように構成されていて、且つ前記ウェブページと関連付けられているカスケーディングスタイルシートを処理して当該ウェブページを提示させるように構成されている、請求項１９に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１１年７月２６日出願の米国仮特許出願第６１／５１１，９３８号の恩典を主張するものであり、これにより同仮特許出願をここに参考文献として援用する。
【０００２】
本発明は、ウェブアプリケーションに関し、より厳密には、ｅメールサービス、カレンダーサービス、又は連絡先サービス、など、の様なサービスを、特定のウェブサービスを提供する１つ又はそれ以上のウェブサーバと対話しているクライアントデバイス上のウェブブラウザの使用を通じて提供することのできるウェブアプリケーションに関する。
【背景技術】
【０００３】
先行技術のウェブアプリケーションシステムは、ユーザーがウェブブラウザを通じて自分たちのｅメールにアクセスしｅメールと対話することができるようにしている。例えば、ウェブｅメールは、ユーザーが、ｅメールクライアントではなしに標準的なウェブブラウザの使用を通じて、自分たちのｅメールを閲覧しｅメールと対話することができるようにしている。例えば、ＭｉｃｒｏｓｏｆｔのＥｘｃｈａｎｇｅ  Ｓｅｒｖｅｒ上に保守されているｅメールシステムは、ユーザーが、ネットワークに接続できるなら何れの機械でも当該機械上のウェブブラウザを通じて自分達のｅメール、カレンダー、及び連絡先へアクセスできるようにしており、よって、ｅメールなどにアクセスするのにＥｎｔｏｕｒａｇｅ又はＭｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋの使用は必要ない。Ｃｏｍｃａｓｔの様なインターネットサービスプロバイダ、及びＧｏｏｇｌｅやＹａｈｏｏの様なインターネット検索プロバイダも、従来のウェブブラウザを通じてのユーザーのｅメール及び他のサービスへのアクセスを可能にしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国仮特許出願第６１／５１１，９３８号
【発明の概要】
【０００５】
ウェブアプリケーションアーキテクチャの様々な実施形態がここに説明されている。１つの実施形態では、ウェブアプリケーションアーキテクチャは、それ自体はデータ処理システムのオペレーティングシステム上で走っている標準的なウェブブラウザのその上で走るように構成されているラッパーアプリケーションを含んでいる。アプリケーションのセットが、ラッパーアプリケーション上で走るように構成されており（例えば、それぞれのアプリケーションはラッパーアプリケーションのｉｆｒａｍｅ内部で走っている）、アプリケーションのセット中のアプリケーションのそれぞれは、１つ又はそれ以上のウェブサーバへのデータ及び１つ又はそれ以上のウェブサーバからのデータを提供するように構成されている。１つ又はそれ以上のウェブサーバは、ｅメールデータ、カレンダーデータ、連絡先データ、及び他の型式のデータを記憶することができる。ラッパーアプリケーションは、アプリケーションのセット中のそれぞれのアプリケーションについて、ライフサイクル管理を提供するように構成されていて、アプリケーションのセット中のアプリケーション間の切り替えを提供することができる。ラッパーアプリケーションは、ウェブブラウザ上で走っている仮想マシン様のオペレーシングシステムと考えることができ、ウェブブラウザそれ自体はプリエンプティブマルチタスキングオペレーティングシステムの様な別のオペレーティングシステム上で走っている。１つの実施形態では、アプリケーションのセットは、ｅメールアプリケーションと、カレンダーアプリケーションと、連絡先又は住所録アプリケーションと、を含むことができる。１つの実施形態では、セット中のそれぞれのアプリケーションが提示されるとき、それは、他のアプリケーションが完全に隠されるか又は実施形態に依っては少なくとも部分的に覆われた状態で、最前面のアプリケーションとして提示される。１つの実施形態では、アプリケーションのそれぞれは、提示されるとき、ウェブブラウザによって提供されている同じ単一のウェブブラウザウインドウ内に提示される。１つの実施形態では、呼び出しが、１つ又はそれ以上のアプリケーションプログラミングインターフェース（ＡＰＩ）を通じて、ラッパーアプリケーションとアプリケーションのセット中のそれぞれのアプリケーションとの間で伝送される。これらの呼び出しは、アプリケーションのそれぞれが起動されるとき、及びアプリケーションのそれぞれが最前面と非最前面の間で切り替えられるとき、伝送されるようになっていてもよい。ラッパーアプリケーションによって提供されるライフサイクル管理は、アプリケーションのセット中のそれぞれのアプリケーションの起動段階及び終了段階を含むものとすることができる。また、ラッパーアプリケーションは、アプリケーションのセット中のアプリケーションのそれぞれの走りをサポートするために、ラッパーアプリケーションとウェブブラウザの間で呼び出しを伝送することができる。１つの実施形態では、アプリケーションのセット中のそれぞれのアプリケーションは、それが最前面状態にない（例えば、ここに説明されている様に完全に又は部分的に隠されているか又は保留されている）ときも実行中のままである。１つの実施形態では、ラッパーアプリケーションは、ウェブブラウザからの呼び出しに応えて、それぞれがアプリケーションのセット中の或るアプリケーションを表現しているアイコンのセットを提示することができ、アイコンのセットは、選択先又は切り替え先として利用できるアプリケーションのパレットを形成することができる。
【０００６】
１つの実施形態では、本発明による方法は、第１のオペレーティングシステムを実行する段階と、第１のオペレーティングシステム上のウェブブラウザを実行する段階と、ウェブブラウザ上のラッパーアプリケーションを実行する段階と、ラッパーアプリケーション上の少なくとも１つのアプリケーションを実行する段階と、を含むものとすることができる。ラッパーアプリケーションは、ｅメールアプリケーション、カレンダーアプリケーション、連絡先又は住所録アプリケーション、などの様な、アプリケーションのセットの一部とされる少なくとも１つのアプリケーションについて、ライフサイクル管理を提供することができる。１つの実施形態では、方法は、更に、それぞれのアプリケーションを走らせようとするとき、起動させようとするとき、又は終了させようとするときに、少なくとも１つの呼び出しを、ＡＰＩを通じて、ラッパーアプリケーションとアプリケーションのセット中のそれぞれのアプリケーションの間で伝送する段階、を含んでいてもよい。また、方法は、更に、例えば第１のアプリケーションを起動させるときに、少なくとも１つの呼び出しをウェブブラウザとラッパーアプリケーションの間で伝送する段階、を含んでいてもよい。少なくとも１つの呼び出しを伝送する段階は、呼び出し又はソフトウェアメッセージを、ＡＰＩを通じて、発行する段階、開始する段階、発動する段階、又は受信する段階、の１つであってもよい。
【０００７】
少なくとも、幾つかの実施形態では、ここに説明されている方法を実施するのに、実行可能なプログラミング命令を格納する機械可読非一時的記憶媒体を使用することができる。更に、データ処理システムが、ここに説明されている様に動作するように構成されてもよく、これらのデータ処理システムには、デスクトップコンピュータ、ラップトップコンピュータ、タブレットシステム、スマートフォン、埋込式デバイス、及び他の消費者向け電子デバイスの様な他の電子デバイス、を含めることができる。
【０００８】
本発明の他の特徴は、添付図面及び次に続く詳細な説明から自明となろう。
【０００９】
以上の概要は、本発明の全態様の包括的一覧を含むものではない。本発明は、以上に要約されている様々な態様並びに以下の詳細な説明中に開示されている様々な態様の全ての適した組合せから実践され得る全てのシステム及び方法を含むものと考えている。
【００１０】
本発明は、添付図面の諸図中に一例として描かれており、限定として描かれているわけではなく、図中、同様の符号は類似の要素を表している。
【図面の簡単な説明】
【００１１】
【図１】ウェブアプリケーションのためのソフトウェアアーキテクチャの一例を示している。
【図２】本発明の１つの実施形態による方法の一例をフローチャート形式で示している。
【図３】本発明の１つの実施形態による方法を説明するフローチャートである。
【図４】本発明の或る実施形態を示す別のフローチャートである。
【図５Ａ】本発明の或る実施形態を説明する別のフローチャートを示している。
【図５Ｂ】図５Ａと共に、本発明の或る実施形態を説明する別のフローチャートを示している。
【図５Ｃ】図５Ａ及び図５Ｂと共に、本発明の或る実施形態を説明する別のフローチャートを示している。
【図５Ｄ】図５Ａ−図５Ｃと共に、本発明の或る実施形態を説明する別のフローチャートを示している。
【図６】１つ又はそれ以上のネットワークを通じて１つ又はそれ以上のサーバへ連結されている１つ又はそれ以上のクライアントへウェブサービスを提供するべく、１つ又はそれ以上のネットワークを通じて相互接続されている複数のシステムの一例を示している。
【図７】本発明の１つ又はそれ以上の実施形態でのプッシュ通知を実施するための方法の一例を示している。
【図８Ａ】１つ又はそれ以上のウェブアプリケーションを選択するのに使用することのできる１つの実施形態のグラフィカルユーザーインターフェースの一例を示している。
【図８Ｂ】１つ又はそれ以上のウェブアプリケーションを選択するのに使用することのできるグラフィカルユーザーインターフェースの別の例を示している。
【図９】１つ又はそれ以上のウェブアプリケーションを選択するのに使用することのできるグラフィカルユーザーインターフェースの別の例を示している。
【図１０】１つ又はそれ以上のウェブアプリケーションを選択するのに使用することのできるグラフィカルユーザーインターフェースの別の例を示している。
【図１１】ｅメールウェブアプリケーションのためのグラフィカルユーザーインターフェースの一例を示している。
【図１２】連絡先又は住所録ウェブアプリケーションのためのグラフィカルユーザーインターフェースの一例を示している。
【図１３】カレンダーウェブアプリケーションのためのグラフィカルユーザーインターフェースの一例である。
【図１４】地図又は地図支援付き探索ウェブアプリケーションのためのグラフィカルユーザーインターフェースの一例である。
【図１５】ワードプロセッシング文書、プレゼンテーション文書、及びスプレッドシート文書の様な、ユーザー文書へのアクセスを可能にするためのグラフィカルユーザーインターフェースの一例である。
【図１６】本発明の様々な実施形態で使用することのできるデータ処理システムの一例をブロック線図形式で示している。
【図１７】本発明の幾つかの実施形態で有用なソフトウェアスタックの例示としての実施形態を示している。
【図１８】本発明の幾つかの実施形態で有用な例示としてＡＰＩアーキテクチャのブロック線図を描いている。
【発明を実施するための形態】
【００１２】
本発明の様々な実施形態及び態様が、以下に論じられている詳細事項に関連して説明されており、添付図面はそれら様々な実施形態を示している。次に続く説明及び図面は、本発明を例示するものであり、本発明を限定するものと解釈されてはならない。本発明の様々な実施形態を十分に理解してもらうために、数々の具体的な詳細事項が記載されている。とはいえ、本発明の実施形態の簡潔な論考を提供するために、場合によっては、周知の又は従来の詳細事項は記述されていない。
【００１３】
明細書中の「１つの実施形態」又は「或る実施形態」という言及は、実施形態と関連して説明されている或る特定の特徴、構造、又は特性が、本発明の少なくとも１つの実施形態の中に含まれ得ることを意味する。明細書中の様々な場に「１つの実施形態では」という語句が登場するが、これは、必ずしもどれもが同じ実施形態を指しているわけではない。付随する図中に描かれているプロセスは、ハードウェア（例えば、回路構成、専用論理、など）、ソフトウェア、又はその両者の或る組合せ、を備えている処理論理によって遂行される。プロセスは以下には何らかの順次的動作の観点から説明されているが、説明されている動作の幾つかは異なった順序で遂行されてもよいものと評価されたい。また、幾つかの動作は、順次ではなしに並列に遂行されてもよい。
【００１４】
ウェブアプリケーションアーキテクチャは、ウェブブラウザ上で走る仮想機械様の環境又はオペレーティングシステムを提供することのできるラッパーアプリケーションを利用することができる。ｅメールアプリケーション、カレンダーアプリケーション、連絡先アプリケーション、又は別のアプリケーションの様な、１つ又はそれ以上のウェブアプリケーションのセットが、当該アプリケーションのセット中のアプリケーションのそれぞれについてライフサイクル管理を提供することのできるラッパーアプリケーションの一番上で走っている。ラッパーアプリケーションは、アプリケーションが起動された後、アプリケーションのセット中のアプリケーション間での切り替え中もアプリケーションのそれぞれを引き続き実行させておくことができ、これが全て単一のウェブブラウザウインドウ内で遂行されることになる。ラッパーアプリケーションは、ユーザーをアプリケーションのセット中のウェブアプリケーションの全てについて認証するのに単一のログイン点を提供することができ、ラッパーアプリケーションは、ひとたびログアウト（又は認証時間の失効）が１つのアプリケーションで起こったら、起動されているウェブアプリケーションの全てに自動ログアウトをもたらすことができる。このアーキテクチャを通じて創出される環境は、ユーザーにとってより良いユーザーインターフェースを提供することができ、というのも、例えば、開ける必要のあるウインドウはより少なく、ユーザーがアプリケーション間で切り替える際に単一のウェブブラウザウインドウ内に多数のウインドウ又は多数のタブを開かなくてもそれぞれの実行中のウェブアプリケーションの状態及びコンテキストを維持させられるからである。この環境は、更に、通知（例えばプッシュ通知）を隠されているアプリケーション宛てに提供できるようにし、また、アプリケーションエラーを、他のアプリケーションに影響を及ぼすこと無く、隔離し、回復させられるようにする。
【００１５】
図１は、ウェブアプリケーションアーキテクチャの一例であって、図１に示されているソフトウェアスタックを有するウェブアプリケーションアーキテクチャを示している。このアーキテクチャ１０１では、アプリケーションのセット１０３は、１つ又はそれ以上のＡＰＩ１０４を通じてラッパーアプリケーション１０５相手に動作しており、ラッパーアプリケーション１０５はウェブブラウザ１０７上で１つ又はそれ以上のＡＰＩ１０６を通じて走っている。ウェブブラウザ１０７はというと、１つ又はそれ以上のＡＰＩ１０８を通じて、１つの実施形態ではプリエンプティブマルチタスキングオペレーティングシステム１０９上で走っているが、別の実施形態では、マルチタスキングオペレーティングシステムは、プリエンプティブでもない又はマルチタスキングでもない他の既知のオペレーティングシステムと置き換えられてもよい。図１のソフトウェアスタックに示されているソフトウェア全ては、データ処理システム上で、具体的にはデータ処理システム１１０のハードウェア上で動作している。
【００１６】
アプリケーションのセット１０３は、ウェブアプリケーション又はウェブサービスアプリケーションであって、例えば、ウェブｅメールアプリケーション、ウェブカレンダーアプリケーション、ウェブ連絡先又は住所録アプリケーション、ウェブ文書アプリケーション（例えば、ｉＷｏｒｋ文書へのアクセス）、ナビゲーション用アプリケーションの様な地図アプリケーション又はスマートフォン探索の様な機器探索用アプリケーション、及び１つ又はそれ以上のウェブサーバと通信しているウェブブラウザを通じて当該１つ又はそれ以上のウェブサーバとの間でデータをやり取りするウェブアプリケーションとして実施され得る他のアプリケーションなど、とすることができる。ｅメール、カレンダーデータ、連絡先データ、など、の様なユーザーデータは、１つ又はそれ以上のウェブサーバ上に記憶され、クライアントデバイス上のウェブブラウザを通じてアクセスされ、使用されることになる。各種ウェブアプリケーションのためのユーザーインターフェースの例が図１１−図１５に提供されており、以下に更に説明されている。アプリケーションのセット中のこれらのアプリケーションは、図６に示されているクライアントデバイス６０５の様な、データ処理システムハードウェア１１０を有するものとされる１つ又はそれ以上のクライアントデバイス上で動作することができ、クライアントデバイスは、図１６に示されているアーキテクチャを有するものであってよく、デスクトップコンピュータ、ラップトップコンピュータ、タブレットシステム、スマートフォン、ゲームコンソールの様なゲーム用デバイス、又は他の消費者向け電子デバイスであってもよい。１つ又はそれ以上のＡＰＩ１０４は、アプリケーションのセット１０３とラッパーアプリケーション１０５の間で機能又は動作についての様々な呼び出しを提供することができる。図４及び図５Ａ−図５Ｄは、その様なＡＰＩ及びその様なＡＰＩについての呼び出しの例を提供しており、ＡＰＩに係わる更なる背景情報は、図１７及び図１８に関連して提供されている。呼び出し又はＡＰＩとの係わりでの伝送又は伝送するという用語は、呼び出し又はソフトウェアメッセージを、ＡＰＩを通じて、発行する、開始する、発動する、又は受信する、の１つを含むものと理解しておきたい。１つの実施形態では、アプリケーションのセット中のアプリケーションのそれぞれは、部分的又は全体的にＪａｖａＳｃｒｉｐｔ(登録商標)で書かれていてもよく、また１つの実施形態では、アプリケーションのそれぞれは、１つの実施形態では、ラッパーアプリケーション１０５中を走っているｉｆｒａｍｅ内部で実行することができ、ラッパーアプリケーション１０５自体は、少なくとも部分的にＪａｖａＳｃｒｉｐｔで書かれていてもよいとされ、ウェブブラウザ１０７上で走っている。
【００１７】
ラッパーアプリケーション１０５は、１つの実施形態では、アプリケーションのセット１０３のための仮想マシン環境を提供することができ、ウェブブラウザ１０７上で走ることができ、ラッパーアプリケーションとウェブブラウザの間でＡＰＩ１０６を通じて呼び出しを伝送することができる。図５Ａ−図５Ｄは、ＡＰＩ１０６を通じた呼び出しの例を幾つか提供している。１つの実施形態では、ラッパーアプリケーションは、ウェブブラウザ中のＵＲＬテキストエントリフィールドを所有していて、ウェブブラウザへの呼び出しを使用してＵＲＬフィールドを制御し、またウェブブラウザへの呼び出しを使用してタイトルバーを制御しており、例えば、ラッパーアプリケーションは、ラッパーアプリケーションとウェブブラウダの間の呼び出しを通じて、タイトルバー中の名前を現在最前面のアプリケーションを反映するように変更させることができる。どの様にラッパーアプリケーションがタイトルバーの名前を制御するのかという例が図１１から図１５を通して示されている。ラッパーアプリケーションは、アプリケーションのセット中のそれぞれのアプリケーションについてライフサイクル管理を提供することができる。１つの実施形態では、これには、アプリケーションのそれぞれを起動する段階及び終了する段階が含まれる。また、ラッパーアプリケーションは、アプリケーション間での切り替え、アプリケーションのエラーの対処（例えば、誤った振る舞いをしているアプリケーション又はクラッシュしたアプリケーションを解体し、ユーザーに向けてアプリケーションを再度立ち上げることを申し出ること）を含め、他の機構及び機能や動作を提供することができる。また、１つの実施形態では、ラッパーアプリケーションは、非アクティブであるか又はクラッシュしているか振る舞いが不良であるアプリケーションのシャットダウンを強制することができる。また、ラッパーアプリケーションは、ユーザーについて及びアプリケーションのセット中のアプリケーション全てについて、単一のログイン点及び単一のログアウト点を提供することもできる。１つの実施形態では、ラッパーアプリケーションは、カーネル、メモリの扱い、プロセス及びスレッドの動作のスケジューリングといった様な、従来のオペレーティングシステムの一定の機構を含んでいないが、別の実施形態では、ラッパーアプリケーションは、従来のオペレーティングシステムのこれらの機能又は機構或いはこれら機能又は機構の一部分を含んでいてもよい。
【００１８】
１つの実施形態では、ラッパーアプリケーションは、アプリケーションのセット１０３中のウェブアプリケーションの１つ又はそれ以上へのプッシュ通知を提供することもでき、１つの実施形態では、アプリケーションのセット１０３中の最前面ではないアプリケーション宛てのプッシュ通知を最前面になっているアプリケーション上のユーザーインターフェースを通じて提示させることができる。１つの実施形態では、ラッパーアプリケーション及びアプリケーションのセット１０３は、ウェブブラウザのメモリ空間によって定義されているメモリ空間の中で動作し、ラッパーアプリケーション及びアプリケーションのセット１０３が走っているウェブブラウザのウインドウによって定義されているスレッド又はプロセス内で動作する。
【００１９】
ウェブブラウザ１０７は、ＭｉｃｒｏｓｏｆｔのＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ、又はカリフォルニア州クパチーノのＡｐｐｌｅ  Ｉｎｃ．のＳａｆａｒｉ、又はＦｉｒｅｆｏｘ、Ｏｐｅｒａ、又は他の既知のウェブブラウザ、の様な従来のウェブブラウザとすることができる。ウェブブラウザは、ＨＴＭＬの様なマークアップ言語にエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、ウェブページはウェブブラウザによって１つ又はそれ以上のＵＲＬ（ユニフォームリソースロケータ）を通じて検索される。１つの実施形態でのウェブブラウザは、ウェブブラウザ中のレイアウトエンジンを使用して、ウェブページのマークアップ言語をウェブページのＤＯＭ（文書オブジェクトモデル）へ処理するように構成されており、更にウェブブラウザは、ウェブページと関連付けられるカスケーディングスタイルシートを処理してウェブページを提示させるように構成されていてもよい。１つの実施形態では、ウェブブラウザ１０７は、オペレーティングシステム１０９と対話するのに１つ又はそれ以上のＡＰＩ１０８を使用することができ、これらのＡＰＩは、オペレーティングシステムへの、当技術で既知のＴＣＰ／ＩＰなどの様なウインドウ化機能及びネットワーク化機能を求める呼び出しをサポートすることができる。
【００２０】
図２は、図１に示されているソフトウェアーキテクチャと共に使用することのできる方法の一例を示している。動作２０１では、オペレーティングシステム１０９の様な主オペレーティングシステムが起動され、データ処理システム１１０上で実行するが、このデータ処理システム１１０は、例えば、図６に示されているアーキテクチャを有する１つそれ以上のクライアントデバイスであってよいし、図１６に示されているアーキテクチャを有していてもよく、それについては以下に説明されている。次に、動作２０３で、ウェブブラウザが起動され、主オペレーティングシステム上で実行するよう仕向けられるが、ウェブブラウザは図１に示されているオペレーティングシステム１０９上で実行しているウェブブラウザ１０７とすることができる。ユーザーは、当技術で既知である様に、ウェブページを訪問する、ＴＶ又は映画を見る、スポーツイベント及び得点をチェックする、天気又は株をチェックする、又は当技術で知られている従来のウェブブラウザの他の利用の仕方をするのに、ウェブブラウザを動作させることができる。加えて、ユーザーは、ここに説明されているウェブメール又は他のウェブサービスの様なウェブサービスを使用することを決断するかもしれない。これは、ウェブブラウザを、ここに説明されている１つ又はそれ以上のウェブサービスへの進入点である特定のＵＲＬへ方向決めすることによって成し遂げられる。例えば、１つの実施形態では、ユーザーは、ウェブブラウザ１０７のＵＲＬエントリフィールドの中へ「ｉｃｌｏｕｄ．ｃｏｍ」のテキストを入力する。ｉｃｌｏｕｄ．ｃｏｍＵＲＬの様なこのコマンドの入力に応えて、ラッパーアプリケーション１０５は、起動され、ウェブブラウザ１０７上で走るが、これは図２に動作２０５として示されている。図２のフローでは、ラッパーアプリケーション及び当該アプリケーション上で走るアプリケーションのセット１０３は前もってデータ処理システム上にインストールされているものとされており、つまり、例えば、ユーザーは既にこれらのウェブアプリケーションを使用してきており、それらは図５Ａ−図５Ｄに関連して説明されている様にダウンロードされ、ウェブブラウザのキャッシュにキャッシュされている、と想定している。ここで指摘されている様に、ラッパーアプリケーション及びアプリケーションのセット１０３中のアプリケーションのそれぞれは、ＪａｖａＳｃｒｉｐｔで書かれていてもよい。動作２０５でラッパーアプリケーションが起動された後、ラッパーアプリケーションは、動作２０７で、ログインウインドウ又はユーザーインターフェースをウェブブラウザのウインドウ中に提示し、すると、ユーザーはシステムによって要求されるログインデータである例えばユーザー名及びユーザーパスワードなどを入力すればよい。次いで、システムは、図５Ａ−図５Ｄに関連して説明されている方式で、ユーザーを、例えば図６に示されているセットアップサービス６０７の様なセットアップサービスを使用して認証する。動作２０９で、ラッパーアプリケーションは、１つの実施形態では、アプリケーションのセット１０３中の実行する全てのアプリケーションについて、単回のログインプロセスを通じて、ユーザーを認証することになり、適正なログインデータがユーザーによって又はユーザーに成り代わったシステムによって入力されたことに応えてその様にする。加えて、１つの実施形態では、ラッパーアプリケーションは、例えば、ラッパーアプリケーション及びセットアップアプリケーションが実行中であるウェブブラウザのウインドウが閉じられたときの自動ログアウトを提供している。認証後、動作２１１で、ラッパーアプリケーションは、１つの実施形態では、アプリケーションのセット１０３中のアプリケーションで認証されたユーザーにとって利用できるアプリケーションである利用可能アプリケーションを表現するアイコンを提示することができる。１つの実施形態では、これには、ｅメールアプリケーション、連絡先又は住所録アプリケーション、カレンダーアプリケーション、及びここに説明されているか又は当技術で既知の他のアプリケーション又はウェブアプリケーションが含まれる。ラッパーアプリケーションは、動作２１１で、ウェブブラウザのウインドウ内にアイコンを提示し、すると、ユーザーはアイコンのうちの１つを選択して、アプリケーションのセット１０３中の対応するアプリケーションを起動させ、ひいては実行させることができる。随意であるが、ラッパーアプリケーションは、アプリケーションのセット１０３中の直近に使用されたアプリケーションを起動するようにしてもよいし、追加的に、以下に更に説明されている様にアプリケーション間の切り替えのために使用することのできるアイコンを提示するようにしてもよい。
【００２１】
図２は、図１に示されているソフトウェアスタックを立ち上げて走るようにさせるのに使用することのできる方法を示しているのに対し、図３は、当該ソフトウェアスタックを使用するための１つの実施形態での方法を示しており、方法は、１つの実施形態では、それ自体はウェブブラウザ１０７上で走っているラッパーアプリケーション１０５内のｉｆｒａｍｅの中で各々実行しているアプリケーションのセット１０３中のアプリケーション間での切り替えを含んでいる。動作３０１では、ラッパーアプリケーション１０５の様なラッパーアプリケーションは、アプリケーションのセット１０３中の利用可能アプリケーションを表現しているアイコンを、ウェブブラウザの単一ウインドウ内のユーザーインターフェースに提示する。その様なユーザーインターフェースの一例が、図８Ａ及び図８Ｂに示されている。その様なアイコンを提示する代わりのユーザーインターフェースが更に図９及び図１０に示されている。ユーザーがこれらのアイコンのうちの１つを選択すると、アプリケーションのセット１０３中の対応するアプリケーションが、前に起動されていなかった場合には、起動させられ、当該アプリケーションが最前面にされる。例えば、動作３０３で、ラッパーアプリケーションは、動作１０３での第１のアプリケーションとして言及されているアイコンのうちの１つの選択を受信する。選択は、ユーザーがカーソルをアイコン上に位置付けることによるか、又はユーザーが自分の指でアイコンをタップすることによるか、又は当技術で既知の他の入力によってもよい。この選択に応えて、動作３０５で、ラッパーアプリケーションは、第１のアプリ又はアプリケーションを、それが前に起動されていなかった場合には、起動し、当該第１のアプリを最前面アプリ又はアプリケーションとする。最前面ではない全ての他の利用可能アプリケーションは、完全に隠されるか、又はユーザーインターフェースの実装に依っては部分的に覆われる。図１１から図１５を通して示されている例では、最前面ではない他の利用可能アプリケーションは完全に隠されており、ユーザーは或るアイコン又は他のコマンドを選択することによってそれらへ復帰又は切り替わることができる。１つの実施形態では、当該アイコンは、図８Ａ及び図８Ｂ並びに図１１から図１５を通して示されているアイコン８１３の様なスイッチャー（switcher：切り替え役）アイコンと呼称されている。当該アイコンの選択は、図８Ａ又は図８Ｂに示されているアイコンのセットの提示を引き起こすことになり、つまりはそれぞれのアイコンが認証されたユーザーにとって利用可能なアプリケーションのセットを表している。第１のアプリ又はアプリケーションが最前面にされた後、ユーザーはそれと対話することができる。これは、動作３０７に示されており、そこでは、第１のアプリはユーザー入力を受信及び処理し、カレンダーサーバ、ｅメールサーバ、又は連絡先／住所録サーバ、など、の様な１つ又はそれ以上のウェブサーバと対話する。
【００２２】
図６は、１つ又はそれ以上のクライアントデバイスと対話することのできるその様なウェブサーバの例を示している。ユーザーは、或る時点では、ユーザーの会社に在るユーザーのクライアントデバイスの様な１つのクライアントデバイスを使用しているかもしれないし、また別の時点では、自宅に在るユーザー用のコンピュータの様な別のクライアントデバイスを使用しているかもしれないが、何れの場合も、従来の又は標準的なウェブブラウザをウェブアプリケーションと共に使用して、図６に示されている様な１つ又はそれ以上のウェブサーバ上に記憶されているデータにアクセスしデータと対話することができる。
【００２３】
１つの実施形態では、動作３０７に示されている様に、第１のアプリは、それ自体はウェブブラウザ１０７によって提供されているウェブブラウザの単一ウインドウ内で走っているラッパーアプリケーション１０５の、その内部のｉｆｒａｍｅ内で走っている。第１のアプリ使用中の任意の時点で、ユーザーは、アプリケーションのセット１０３中の他の利用可能アプリのうちの１つへ切り替えることを決断するかもしれず、これは動作３０９に示されており、そこでは、ウェブブラウザは１つの実施形態ではアプリケーションを切り替えるための入力を受信する。例えば、ウェブブラウザは、スイッチャーアイコン８１３への入力を受信し、呼び出しを通じて、当該入力を第１のアプリへ回し、すると第１のアプリがラッパーアプリケーション１０５を呼び出し、ラッパーアプリケーション１０５が上述されている動作３０１での様にアイコンを提示する。例えば、アイコンのセットは、ここでもやはり、アプリケーションの利用可能セットを表していて、図８Ａ又は図８Ｂに示されているユーザーインターフェース中に、又は図９に示されている代わりのユーザーインターフェース中に、或いは図１０に示されている代わりのユーザーインターフェース中に、提示されることになる。動作３１１に示されている様に、ラッパーアプリケーションは、動作３０９で受信された切り替えのための入力に応えて、利用可能アプリケーションのアイコンを、それまでは第１のアプリケーションを表示していた同じウェブブラウザの単一ウインドウ内に提示することになる。換言すると、図３の方法は、同じ単一のウェブブラウザウインドウを使用することができる。１つの実施形態では、ラッパーアプリケーションは、スイッチャーアイコンの選択後、アイコンが提示されるとき、第１のアプリの完全隠蔽を引き起こす。例えば、第１のアプリが図１１に示されているｅメールアプリケーションである場合で、ユーザーがスイッチャーアイコン８１３を選択したなら、これにより、図８Ａに示されているアイコンのセットの提示が引き起こされ、ｅメールアプリケーション１１０１はもはやウェブブラウザの単一ウインドウ内に提示されず、アイコンのセットが提示されている間それは完全に視界から隠されてしまっている。図９は代わりのユーザーインターフェースを示しており、そこでは、前に使用されていたアプリケーションが引き続き提示されている一方、アプリケーションの間で切り替えるため又はアプリケーションを選択するために使用されるアイコンのセットがウェブブラウザのウインドウの引き出し領域と呼称されている領域に表示されており、同様に、図１０は、ユーザーインターフェースの例であって、図３の方法での第１のアプリの様な前に使用されていたアプリケーションが、アプリケーションのセット１０３中のアプリケーションの間で選択する又は切り替えるのに使用されるアイコンのセットの裏に提示され続けているユーザーインターフェースを示している。動作３１３で、システムはアプリケーションのセット１０３中のアプリケーションのうちの１つである第２のアプリと呼称される別のアプリケーションの選択を受信する。この選択に応えて、ラッパーアプリケーションは、第２のアプリを（それが前に起動されていなかった場合には）起動し、第２のアプリを最前面のアプリとする。また、ラッパーアプリケーションは、全ての他の実行中のアプリケーションを少なくとも部分的に隠させる又は覆わせることになるが、但し、１つの実施形態ではそれらの他のアプリケーションは、保存されたコンテキスト及びデータと共になお実行中のままにされる。よって、例えば、ユーザーが新規人物連絡先として連絡先データを入力していた場合で、当該データの入力中に、カレンダーアプリケーション又はｅメールアプリケーションへ切り替えることを決断したなら、当該新規データ及び当該データのコンテキストは、それが少なくとも部分的に隠されている間も保存されたままとなり、それらの隠されたアプリケーションは、直近の入力のテキスト入力フォーカス及び位置のコンテキスト並びに入力されたユーザーデータを含む保存されたコンテキスト及びデータと共に実行し続けることになる。１つの実施形態では、これは、直近に実行されたアプリケーション内に提示されているモーダルダイアログボックスにまで拡張され、その結果、それらのモーダルダイアログボックスの状態は、アプリケーションが同じ単一のウェブブラウザウインドウ内で最前面でない間も留保される。更に動作３１５では、動作３１１によって提示されたアイコンのセットも移されることになり、その結果、ユーザーは、１つの実施形態では、第２のアプリケーション又は第２のアプリしか見えず、その間、他のアプリは少なくとも部分的に隠されている。
【００２４】
動作３１１、３１３、及び３１５の一例を、これより、図８Ｂ、図１１、及び図１２を参照しながら提供してゆく。動作３１１は、１つの実施形態では、図８Ｂに示されているユーザーインターフェースを提示するものであり、認証されたユーザーに利用可能であるアプリケーションのセット１０３のためのアイコンを提示する。これらのアイコンの提示は、スイッチャーアイコン８１３を選択することによって起こるものであってもよい。ユーザーは、それまで図１１に示されているｅメールウェブアプリケーション１１０１を使用していて、アプリケーション１０３のセット中の連絡先ウェブアプリケーションへ切り替えることを決断したと仮定しよう。これは、スイッチャーアイコン８１３を選択することによって遂行されるものである。これは、或る代わりの実施形態では、アプリケーションのセット1１０３中の利用可能なアプリケーションのセットを、プルダウンメニュー或いは当技術で既知の他のメニュー又は他のユーザーインターフェースを通じて、選択することによって遂行されるようにもできよう。スイッチャーアイコン８１３の選択は、ユーザーがそれまでｅメールアプリケーション１１０１を使用していた後の図８に示されているアイコンの提示を引き起こす。そこで、ユーザーは図８Ｂに示されている連絡先アイコンを選択すると、動作３１５のコンテキストではラッパーアプリケーション１０５によって起動される第２のアプリとされる図１２に示されている連絡先アプリケーション１２０１のユーザーインターフェースの提示が引き起こされることになる。この時点で、ユーザーは、閉じるコマンドを選択することによって又は図８Ｂに示されている閉じるボタン８０７を選択することによって、ウェブブラウザウインドウを閉じることができる。代わりに、ユーザーは、図８Ｂに示されているサインアウトボタン８１４を選択することによってログアウト又はサインアウトすることを決断することもできる。応えて、動作３１７で、ラッパーアプリケーションは、それぞれの実行中のアプリケーションに各々のデータを保存させ、次いでそれぞれの起動されているアプリケーションを終結及び解体し、ユーザーをそれぞれの起動されているアプリケーションについてログアウトさせる。この様に、ラッパーアプリケーションは、ユーザーが起動されているアプリケーションの全てを取り扱い、全ての起動されているアプリケーションを終結し、それらのウェブアプリケーションのそれぞれについてウェブサービスからログアウトするのに、単一の点を提供している。この特定の実施形態では、これにより、ユーザーは個々のウェブサービスを一々ログアウトする必要がなくなるため、ユーザーインターフェース及びユーザーの各種ウェブサービスとの対話が簡略化される。
【００２５】
図３に示されている方法は、アプリケーションのセット１０３中の２つのアプリケーションの使用を示しているが、評価しておきたいこととして、より多くのアプリケーションが同時に起動され使用されることができ、且つ１つの実施形態では、タブインターフェース無しにどれもが同じウェブブラウザウインドウ内に提示されていて、そのそれぞれは同じウェブブラウザウインドウ中のウェブブラウザ上で走っているラッパーアプリケーション内のｉｆｒａｍとして又はｉｆｒａｍｅの中で実行している。１つの実施形態では、当該ウェブブラウザウインドウのメモリ空間は、ラッパーアプリケーション及びアプリケーションのセット１０３中のそれぞれのアプリケーションへも割り付けられており、それらは当該特定のウェブブラウザウインドウへ割り付けられている当該メモリ空間内で走るように拘束されている。
【００２６】
図４は、アプリケーションのセット１０３中の１つ又はそれ以上のアプリケーションとラッパーアプリケーション１０５の間で特定の呼び出しが伝送される方法の一例を示しており、これらの呼び出しは、ここに説明されてきた様に１つ又はそれ以上のＡＰＩ１０４を介している。具体的なＡＰＩの詳細な例も、ここに含まれる補遺１及び補遺２に提供されている。図４に示され説明されている呼び出しは、図５Ａ−図５Ｄにも示されており、具体的には、図５Ｂのスタートアップシーケンス５０３及びバックグラウンドシーケンス５０５内に示されている。具体的には、図４に示されている方法は、図５Ａ−図５Ｄに示されているフローチャートに従った実装の１つの実施形態でのスタートアップシーケンス及びバックグラウンドシーケンスで遂行される呼び出しの幾つかを示している。動作４０１で、ラッパーアプリケーションは、図４の動作４０１に示されている呼び出しを行うことによってアプリケーションを起動する。この呼び出しが、今度は、選択されたアプリケーションのＪａｖａＳｃｒｉｐｔが、１つの実施形態では、それ自体はウェブブラウザ１０７の様なウェブブラウザ上で走っているラッパーアプリケーションのｉｆｒａｍａ内で実行されるように仕向ける。起動されたアプリは、この実施形態では、ラッパーアプリケーションに、ラッパーアプリケーションへの呼び出しを通じて、アプリが準備できていることを知らせることになり、図４の動作４０３はその様な呼び出しの一例を示している。次いで、動作４０５で、ラッパーアプリケーションは、アプリに、それが最前面とされることを知らせることになり、その様な呼び出しの一例が図４の動作４０５に示されている。１つの実施形態では、アプリは動作４０７まではスタートアップシーケンス５０３内に示されている様にアイドル状態のままであり、動作４０７で、ラッパーアプリケーションはアプリにそれが今や最前面となることを、例えば図４の動作４０７内に示されているラッパーアプリケーションからアプリへの呼び出しによって知らせる。この時点で、ユーザーは、今や最前面となったアプリと対話することができる。例えば、アプリが図１１に示されているｅメールアプリ１１０１の様なｅメールアプリであれば、ユーザーは、ｅメールを読む、ｅメールに返信する、ｅメールを転送する、新規ｅメールを作成する、ｅメール用新規フォルダを作成する、フォルダ中のｅメールを閲覧する、など、を行うことができる。ｅメールアプリケーション１１０１を使用する過程で、ユーザーはユーザーのカレンダー又はユーザーの住所録などを閲覧することを決断するかもしれず、その結果、ユーザーは動作４０９にある様に別のアプリを選択することになる。１つの実施形態では、これは、スイッチャーアイコン８１３を選択すること、又はプルダウンメニュー或いは当技術で既知の他のメニュー構造又は他のユーザーインターフェース中のアプリケーションのメニューから別のアプリ又はアプリケーションを選択すること、によって遂行されよう。これにより、動作３１３及び動作３１５に関連して説明されている様に、他のアプリケーションが、それが前に起動されていなかったなら、起動されるはずである。更に、動作４０９で選択された別のアプリケーションについて動作４０１、４０３、４０５、及び４０７が繰り返されることになる。その間に、ラッパーアプリケーション１０５は、動作４１１で、前に起動され実行されていたアプリにそれがバックグラウンドへ移されることを知らせることになっており、その様な呼び出しの一例が図４に示されている動作４１１に提供されている。バックグランド状態は完全又は部分的に隠されていよう。図８Ｂ及び図１１から図１５に関連して示されている実装は、最前面のアプリケーションがウェブブラウザのウインドウの全てとまではいかなくとも殆どを占有して映し出されている間はバックグラウンドアプリケーションが完全に隠されている実施形態を含んでいる。動作４１３は、バックグランドへ移されたことによってアイドル状態に置かれた何れかのアプリケーションが、ロードされ続け動作可能となり続けることを示しており、その実行可能コード及びアプリの実行可能コードと関連付けられるコンテキスト及びデータは、ここに説明されている様にウェブブラウザによって規定されているメモリ空間であってもよいとされるメモリ中に依然として在る。これにより、ユーザーは、異なったドメインの異なったウェブサーバによってホストされているアプリケーション間での切り替えを、それら異なったウェブサーバ上にホストされているアプリケーションのそれぞれの間で切り替え中に状態の保存又はログイン又はログアウトをしなくても、行えるようになる。これは、アプリケーションが、異なったホスト又はウェブサーバ上の恐らくは複数のサービスと通信することを可能にする。例えば、セット１０３中のカレンダーウェブアプリケーションは、カレンダーウェブサーバと通信することができるが、１つの実施形態では、同時に、連絡先ウェブサーバとも通信して、連絡先ウェブサーバ上のユーザーの住所録を使用してカレンダーイベントへの招待客をオートコンプリートさせることもできる。１つの実施形態では、これは、アプリケーションのセット中の何れかのアプリケーションが、ウェブサーバの何れか１つが何らかの要求に対する応答として別途指示するまでに認証されたユーザーを持てることを、ラッパーアプリケーション１０５が保証することによって実現させることができる。１つの実施形態では、アプリケーションがウェブサーバからの信用照明物又は認証データが無効であることを主張する応答を受信したなら、アプリケーションは、ローカルデータ及びキャッシュを洗い流し、ラッパーアプリケーションに、ユーザーはもはや認証されていない旨を知らせなくてはならず、その場合、１つの実施形態では、ラッパーアプリケーションは、ユーザーをアプリケーションのセット中の全アプリケーションについてログアウトさせることができ、その結果、ユーザーはユーザー名及びパスワードの様な認証情報を再入力することを求められる。
【００２７】
図５Ａ−図５Ｄのフローチャートは、クライアントデバイスが走らせているウェブブラウザ５１７であって図１のウェブブラウザ１０７であってもよいとされるウェブブラウザと１つ又はそれ以上のウェブサーバの様な幾つかの他のシステムとの間の対話を示している。具体的には、認証サーバ５１５は、図６に示されているセットアップサービス６０７とすることができ、アプリサーバ５２１は、図６に示されているウェブサーバ６０１Ａ又は６０１Ｂ又は６０１Ｃの何れか１つとすることができる。コンテンツ配信ネットワーク５１９は、サーバのセット６０１の一部であってもよいし、又はラッパーアプリケーションソフトウェアのコンテンツ及びラッパーアプリケーション１０５上で走るアプリケーションのセット１０３中のアプリケーションを提供するように構成されている別のサービス又はウェブサーバであってもよい。アプリケーションサーバ５２１は、例えば、図１１に示されているｅメールアプリケーション１１０１向けのウェブメールを提供するｅメールサーバであるかもしれないし、又は代わりにアプリケーションサーバ５２１は図１２に示されている連絡先アプリケーション１２０１向けのデータを提供するウェブサーバであるかもしれない、と理解しておきたい。よって、アプリケーションサーバ５２１は、図６のｅメールサーバ６０１Ａであることもあれば、図６に示されているカレンダーサーバ６０１Ｂであることもあるし、図６に示されている連絡先サーバ６０１Ｃであることもあるし、或いはウェブアプリケーションと対話する他のウェブサーバであることもあろう。図５Ａ−図５Ｄに示されている方法は、ユーザーが、図１に示されているウェブブラウザ１０７であってもよいとされるウェブブラウザ５１７のＵＲＬテキストエントリフィールドに、ｗｗｗ．ｉｃｌｏｕｄ．ｃｏｍというＵＲＬ又は別のＵＲＬを入力することで始まる。アプリケーションのセット及びラッパーアプリケーションが前もってウェブブラウザのキャッシュにキャッシュされていない場合、図５Ａに示されている様に、アプリケーションのセット及びラッパーアプリケーションを要求する１つ又はそれ以上のＧＥＴ要求がブラウザによって遂行され、アプリケーションのセット及びラッパーアプリケーションが図５Ａに示されている様にブラウザへ戻される。図５Ａに示されているラッパーアプリケーションは、ログインユーザーインターフェースを示し、適正な認証済みのログインに応えて、ユーザーは、最初のＧＥＴ要求への応答でラッパーアプリケーションを取得した後に次いでアプリケーションのセットを取得することができる。ユーザーが有効な認証又はログインデータを提示した後、今度はブラウザ５１７が、図６に示されているセットアップサービス６０７であってもよいとされる認証サーバ５１５と通信する。具体的には、図６を参照して、クライアントデバイス６０５は、インターネット６０３の様な１つ又はそれ以上のネットワークを通じて、ユーザー名及びパスワードを含んでいるとされるログイン情報を提供することによってセットアップサービス６０７と通信する。有効なログイン情報に応えて、セットアップサーバ６０７は、１つ又はそれ以上のクッキーの形態（ＳＳＬ及びＨＴＴＰとしてマークされていてもよい―そうすればＪａｖａＳｃｒｉｐｔにはそれらが見えないというだけのこと）であってもよいとされる認証トークンと、ウェブアプリケーション１０３が使用している該当のｅメールサーバ及び他のサーバのアドレスと、が送り返され、それらアドレスは１つの実施形態では図５Ａ及び図５Ｃに示されている様に「ｂａｇ」と呼称されている。該当のウェブサーバからデータを受信した後、セット１０３中のアプリケーションは、自身のユーザーインターフェースを提示する（アプリケーションのセット１０３中のｅメールアプリケーションの場合には、図１１に示されているｅメールアプリ１１０１がウェブブラウザのウインドウ内に示される）。これにより、図５Ａのログインシーケンス５０１に示されているログインプロセスが完了する。ダウンロードされたアプリケーション及びダウンロードされたラッパーアプリケーションは、１つの実施形態では、ウェブブラウザのキャッシュ内に保守されるので、いつブラウザが再起動されようとも、又はいつ主オペレーティングシステムが再起動又は再開されようとも、それらは繰返しダウンロードされる必要がない。別の実施形態では、ラッパーアプリケーション及びアプリケーションのセット１０３中のアプリケーションのそれぞれは、ユーザーロングインの都度ダウンロードされるようになっていてもよい。
【００２８】
図５Ａ−図５Ｄは、図５Ａ−図５Ｄで「クラウドＯＳ」と呼称されているラッパーアプリケーションとアプリケーションのセット１０３中の１つ又はそれ以上のアプリケーションの間の特定の呼び出しの一例を示している。図５Ａ−図５Ｄは、更に、クラウドキットＡＰＩと呼称されているＡＰＩに関して行われる呼び出し（例えば、図５Ｂに示されている「クラウドキット：ＧＥＴ／ｓｔａｒｔｕｐ．．．」）を示しており、このＡＰＩは、アプリケーションセットのためのソフトウェアフレームワークを提供する。クラウドＯＳラッパーアプリケーション向けの特定のＡＰＩの一例は、補遺１に提供されている。クラウドキットＡＰＩ向けの特定のＡＰＩの一例は、補遺２に提供されている。図５Ａ−図５Ｄは、更に、アプリ及びウェブブラウザによって遂行される動作又は呼び出しを示している。図５Ｃ−図５Ｄは、更に、シーケンス５０７として示されている４０１シーケンス中及び終結シーケンス５０９中に起こる呼び出しと動作の例を提供している。
【００２９】
図６は、ここに説明されているウェブアプリケーションアーキテクチャを使用しながら、１つ又はそれ以上のネットワークを通じて１つ又はそれ以上のクライアントデバイス相手に動作することのできる１つ又はそれ以上のウェブサーバの一例を示している。アプリケーションのセット１０３並びにラッパーアプリケーション１０５及びウェブブラウザ１０７は、１つ又はそれ以上のネットワーク６０３へ連結されていて、ひいては、ウェブサーバ６０１Ａ、６０１Ｂ、又は６０１Ｃ、或いは示されていない他のウェブサーバ（例えば、地図又はナビゲーションサーバ、又はｉＷｏｒｋ文書サーバ、又は他のウェブアプリケーションのためのウェブサーバなど）の様な１つ又はそれ以上のウェブサーバと通信するクライアントデバイス６０５上で実行している。クライアントデバイスは、これらのウェブサーバのそれぞれへ同時に連結でき、その間それらの対応するアプリのそれぞれはここに説明されている様に実行してゆく。図６に示されているウェブサーバの様なウェブサーバのセットは、異なったドメインに在ることもあり（例えば、ｅメールサーバにはｉｃｌｏｕｄｍａｉｌ．ｃｏｍの様な１つのドメイン、カレンダーサーバにはｉｃｌｏｕｄｃａｌｅｎｄｅｒ．ｃｏｍの様な別のドメイン）、またＣＯＲＳ（クロスオリジンリソースシェアリング）をサポートしているＳａｆａｒｉやＦｉｒｅｆｏｘの様なウェブブラウザについては、ＣＯＲＳがクロスドメイン要求のために使用されよう。他のウェブブラウザについては、親ウェブブラウザウインドウとｐｏｓｔＭｅｓｓａｇｅを介して通信しているプロキシＸＨＲ（ＸＭＬ  ＨＴＴＰ要求）に対しｉｆｒａｍｅが使用されよう。セットアップサービス６０７は、図５Ａ−図５Ｄに示されている認証サーバ５１５に関連して示されている方式で行動することのできる１つ又はそれ以上のセットアップサーバ６０７とすることができる。
【００３０】
図７は、１つ又はそれ以上のウェブサーバからラッパーアプリケーション１０５のｉｆｒａｍｅの中で走る或る特定のアプリケーションへ通知を送信するのにプッシュ通知をどの様に使用することができるかの一例を説明している。プッシュ通知は、ｅメールサーバ６０１Ａ、カレンダーサーバ６０１Ｂ、又は連絡先サーバ６０１Ｃの様な、ウェブサーバのうちの何れか１つが、クライアントデバイス６０５の様なクライアントデバイス上のウェブブラウザへ通知を提供することによって始まる。ウェブブラウザ７０５は、ＡＰＩ１０６を介するといった様に呼び出しを通じて、クライアントデバイス上のウェブブラウザの中で走っているラッパーアプリケーション１０５の様なラッパーアプリケーションへ連絡することができる。すると、ラッパーアプリケーションは、７０９に示されている様に、プッシュ通知を送った該当するウェブサーバと対話するアプリへ通知を提供する。
【００３１】
図８Ａは、本発明の１つの実施形態によるディスプレイデバイス８０１上のユーザーインターフェースの一例を示している。ディスプレイデバイス８０１は、データ処理システムハードウェア１１０の一部分である図１６のディスプレイ１６７０とすることができる。ユーザーインターフェースは、図１に示されているソフトウェアスタックによって作成されている。図８Ａに示されていない他のウインドウも、当技術で既知の様にデスクトップ８０２内のディスプレイデバイス８０１上に表示できるものと評価しておきたい。ユーザーインターフェースは、ディスプレイデバイス８０１の画面の一番上に示されるメニューバー８０３を含んでいるが、画面の下又はウインドウ８０４の様なそれぞれのウインドウ内といった様にメニューバーの代わりの場所が使用されてもよいものと理解しておきたい。図８Ａに示されている例は、メニューバー８０３が画面の一番上に在る、Ｍａｃ  ＯＳ  Ｘとして知られているＭａｃｉｎｔｏｓｈオペレーティングシステムのユーザーインターフェースを模している。ウェブブラウザは、現在、実行中であり、当該ウェブブラウザは１つの実施形態ではＭａｃｉｎｔｏｓｈオペレーティングシステムとされているオペレーティングシステム１０９上で実行するウェブブラウザ１０７であってもよいが、代わりに、Ｗｉｎｄｏｗｓ(登録商標)、など、の様な他のオペレーティングシステムが使用されていてもよい。ウェブブラウザは、ウェブブラウザウインドウ８０４を提示しており、当該ウインドウの中で、ラッパーアプリケーション１０５及びアプリケーションのセット１０３が実行中となる。ウェブブラウザウインドウ８０４は、ＵＲＬテキストエントリフィールド８０６とタイトルバー８０５を含んでおり、タイトルバー８０５は１つの実施形態ではここに説明されている様にラッパーアプリケーション１０５によって所有又は制御されるタイトルを含んでいる。ウェブブラウザウインドウ８０４は、更に、閉じるボタン８０７と、戻るボタン８０８及び進むボタン８０９と、を含んでいる。戻るボタン８０８及び進むボタン８０９は、ウェブブラウザで使用されている従来の戻るボタン及び進むボタンとすることができる。ウェブブラウザウインドウ８０４は、ここに説明されている様に使用することのできるスイッチャーアイコン８１３及びログアウトアイコン８１４も表示している。ウェブブラウザウインドウ８０４によって提示されるユーザーインターフェースは、アプリケーションのセット１０３中のアプリケーションの１つをそれぞれが表現しているアイコンのセットを含んでいる。例えば、アイコン８１０は、アプリケーションのセット１０３の中に在るメール又はｅメールアプリケーションを表現し、アイコン８１１は、アプリケーションのセット１０３内の連絡先アプリケーションを表現し、アイコン８１２は、アプリケーションのセット中１０３内のカレンダーアプリケーション表現している、など、とすることができよう。ユーザーがそれらのアイコンのうちの１つを選択すると、ラッパーアプリケーション１０５は、ここに説明されている様に、選択されたアイコンに対応している選択されたアプリケーションの起動（前に起動されていない場合）を引き起こすことになる。
【００３２】
図１１から図１５は、アプリケーションのセット１０３の中に在る特定のアプリケーション又はウェブアプリケーションの例を提供している。具体的には、図１１は、タイトルバー８０５中の「メール」の語によって指し示されている様にｅメールアプリケーションを示している。先に説明されている様に、ラッパーアプリケーションは、ウェブブラウザとの呼び出しのセットを通じて（例えば、ＡＰＩ１０６を通じて）、タイトルバー８０５を制御又は所有することができ、現在の最前面アプリケーションとして適正なタイトルを提供することができる。図１２は、１つの実施形態ではアプリケーションのセット１０３の一部である連絡先又は住所録アプリケーションのユーザーインターフェースの一例を示している。図１３は、１つの実施形態ではアプリケーションのセット１０３中のアプリケーションのうちの１つであるカレンダーアプリケーションのユーザーインターフェースの一例を示している。
【００３３】
図１４は、スマートフォンの様なデバイスを探索するのに使用することができ、１つの実施形態によればアプリケーションのセット１０３のセット中のアプリケーションのうちの１つとされている地図アプリケーションの一例を示している。図１５は、ユーザーが、プレゼンテーション文書、ワードプロセッシング文書、及びスプレッドシート、の様な文書の集合体にアクセスすること及び／又はそれらと対話することを可能にするユーザーインターフェースの一例であり、具体的には、文書アプリケーション１５０１は、ユーザーが、１つ又はそれ以上のウェブサーバ上にユーザーが記憶させている文書と対話できるようにする。
【００３４】
図１６は、本発明の幾つかの実施形態で使用することのできる、コンピュータシステムの様な例示としてのデータ処理システムを描いているブロック線図である。図１６は、コンピュータシステムの様々な構成要素を例示しているが、構成要素の相互接続の何らかの特定のアーキテクチャ又は方式については、その様な詳細は本発明には密接な関係のないことから、表現しないことにする。より少ない構成要素又はより多くの構成要素を有する他のコンピュータシステムの様な他のデータ処理システムも、本発明と共に使用することができるものと評価しておきたい。
【００３５】
図１６に描かれている様に、データ処理システムの形態であるシステム１６００は、処理システム１６２０、電源１６２５、メモリ１６３０、及び不揮発性メモリ１６４０（例えば、ハードドライブ、フラッシュメモリ、相変化メモリ（ＰＣＭ）、など）と連結されている（単数又は複数の）バス１６５０を含んでいる。（単数又は複数の）バス１６５０は、当技術で周知されている様に、各種ブリッジ、コントローラ、及び／又はアダプタを通じて互いへ接続されていてもよい。処理システム１６２０は、メモリ１６３０及び／又は不揮発性メモリ１６４０から、記憶されている（単数又は複数の）命令を取り出し、命令を実行して、上述の動作を遂行させることができよう。バス１６５０は、以上の構成要素を一体に相互接続し、更には、それらの構成要素を、随意のドック１６６０、ディスプレイコントローラ及びディスプレイデバイス１６７０、入力／出力デバイス１６８０（例えば、ＮＩＣ（ネットワークインターフェースカード）、カーソルコントロール（例えば、マウス、タッチスクリーン、タッチパッド、など）、キーボード、など）、及び随意の（単数又は複数の）ワイヤレス送受信器１６９０（例えば、ブルートゥース、ＷｉＦｉ、赤外線、セルラー電話受信器、など）へ相互接続している。データ処理システム１６００は、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、移動体電話、携帯式ゲームシステム、携帯式メディアプレーヤ、移動体電話やメディアプレーヤ及び／又はゲームシステムを備えていることもあるタブレット、又はハンドヘルドコンピューティングデバイス、又は他の型式の消費者向け電子デバイスであってもよい。別の例として、データ処理システム１６００は、ネットワークコンピュータ又は別のデバイス内の埋込式処理デバイスであってもよい。
【００３６】
幾つかの実施形態では、１つ又はそれ以上のアプリケーションプログラミングインターフェース（ＡＰＩ）が使用されている。ＡＰＩは、プログラムコード構成要素又はハードウェア構成要素（以下「ＡＰＩ実施構成要素」）によって実施されるインターフェースであって、異なったプログラムコード構成要素又はハードウェア構成要素（以下「ＡＰＩ呼び出し構成要素」）がＡＰＩ実施構成要素によって提供されている１つ又はそれ以上の機能、方法、手続き、データ構造、クラス、及び／又は他のサービスにアクセスし使用できるようにするインターフェースである。ＡＰＩは、ＡＰＩ呼び出し構成要素とＡＰＩ実施構成要素の間で受け渡される１つ又はそれ以上のパラメータを定義することができる。
【００３７】
ＡＰＩは、ＡＰＩ呼び出し構成要素の開発者（第三者機関開発者であってもよい）が、ＡＰＩ実施構成要素によって提供されている規定の機構を活用できるようにしている。ＡＰＩ呼び出し構成要素は１つのこともあれば、１つより多いこともあろう。ＡＰＩは、コンピュータシステム又はプログラムライブラリが、アプリケーションからのサービスを求める要求をサポートするために提供しているソースコードインターフェースとしてもよい。オペレーティングシステム（ＯＳ）は複数のＡＰＩを有し、ＯＳ上で走るアプリケーションがそれらＡＰＩのうちの１つ又はそれ以上を呼び出せるようにしていてもよく、サービス（例えばプログラムライブラリなど）は複数のＡＰＩを有し、サービスを使用するアプリケーションがそれらＡＰＩのうちの１つ又はそれ以上を呼び出せるようにしていてもよい。ＡＰＩは、アプリケーションが構築されるときに翻訳又はコンパイルできるものとしてプログラミング言語に照らして規定されていよう。
【００３８】
いくつかの実施形態では、ＡＰＩ実施構成要素は、１つより多くのＡＰＩを提供していて、ＡＰＩそれぞれは、ＡＰＩ実施構成要素によって実施される異なった態様の機能性にアクセスする異なった態様の違ったビュー又はそれら異なった態様を備える違ったビューを提供していてもよい。例えば、ＡＰＩ実施構成要素の１つのＡＰＩは、機能の第１のセットを提供していて、第三者機関開発者へ露出されているものとしてもよく、ＡＰＩ実施構成要素の別のＡＰＩは、隠蔽されていて（露出されていない）、機能の第１のセットのサブセットを提供し、更には機能の第１のセット中には無い試験又はデバッグの様な機能の別のセットを提供しているものとしてもよい。他の実施形態では、ＡＰＩ実施構成要素は、それ自身が、下層のＡＰＩを介して１つ又はそれ以上の他の構成要素を呼び出すようになっていてもよく、ひいては、ＡＰＩ呼び出し構成要素とＡＰＩ実施構成要素を兼ねていてもよい。
【００３９】
ＡＰＩは、ＡＰＩ呼び出し構成要素がＡＰＩ実施構成要素の規定された機構にアクセスし使用するときに使用する言語及びパラメータを定義している。例えば、ＡＰＩ呼び出し構成要素は、ＡＰＩによって露出されている１つ又はそれ以上のＡＰＩ呼び出し又は呼び掛け（例えば機能呼び出し又は方法呼び出しによって具現化されている）を通じて、ＡＰＩ実施構成要素の規定された機能にアクセスし、ＡＰＩ呼び出し又は呼び掛けを介し、パラメータを使用してデータ及び制御情報を受け渡す。ＡＰＩ実施構成要素は、ＡＰＩ呼び出し構成要素からのＡＰＩ呼び出しに応えて、ＡＰＩを通じて或る値を戻してもよい。ＡＰＩはＡＰＩ呼び出しの構文及び結果（例えば、どの様にＡＰＩ呼び出しを発動するか、及びＡＰＩ呼び出しは何をするか）を定義してはいるが、ＡＰＩは、ＡＰＩ呼び出しがＡＰＩ呼び出しによって規定されている機能をどの様に成し遂げるかを明かすものではない。呼び出し側（ＡＰＩ呼び出し構成要素）とＡＰＩ実施構成要素の間では、１つ又はそれ以上のアプリケーションプログラミングインターフェースを介して様々なＡＰＩ呼び出しが伝送されている。ＡＰＩ呼び出しを伝送することには、機能呼び出し又はメッセージを、発行する、開始する、発動する、呼び出す、受信する、戻す、応答する、を含めることができ、換言すれば、伝送するとは、ＡＰＩ呼び出し構成要素か又はＡＰＩ実施構成要素のどちらかによる行動を言い表している。ＡＰＩの機能呼び出し又は他の呼び掛けは、パラメータリスト又は他の構造を通じて、１つ又はそれ以上のパラメータを送信又は受信することであろう。パラメータは、不変のキー、データ構造、オブジェクト、オブジェクトクラス、変数、データ型式、ポインタ、アレイ、リスト、又は、ＡＰＩ経由で受け渡されることになるデータ又は他のアイテムを指し示す機能又は方法又は別の方途に対するポインタ、とすることができる。
【００４０】
また、データタイプ又はクラスは、ＡＰＩによって提供されていて、ＡＰＩ実施構成要素によって実施されるものである。而して、ＡＰＩ呼び出し構成要素は、ＡＰＩ中に提供されている定義を使用することによって、変数を宣言し、ポインタを使用して、その様な型式又はクラスの不変値を使用又はインスタンス化する。
【００４１】
概して、ＡＰＩは、ＡＰＩ実施構成要素によって提供されるサービス又はデータへアクセスするのに、又はＡＰＩ実施構成要素によって提供される動作又は演算処理の遂行を開始させるのに、使用することができる。一例として、ＡＰＩ実施構成要素及びＡＰＩ呼び出し構成要素は、それぞれ、オペレーティングシステム、ライブラリ、デバイスドライバ、ＡＰＩ、アプリケーションプログラム、又は他のモジュールの何れか１つとすることができる（ＡＰＩ実施構成要素及びＡＰＩ呼び出し構成要素は、互いに同じ型式のモジュールであってもよいし互いと異なった型式のモジュールであってもよいものと理解されたい）。ＡＰＩ実施構成要素は、幾つかの場合には、ファームウェア、マイクロコード、又は他のハードウェア論理に、少なくとも部分的に埋め込まれていてもよい。幾つかの実施形態では、ＡＰＩは、クライアントプログラムがソフトウェア開発キット（ＳＤＫ）ライブラリによって提供されるサービスを使用できるようにしていてもよい。他の実施形態では、アプリケーション又は他のクライアントプログラムは、アプリケーションフレームワークによって提供されるＡＰＩを使用している。これらの実施形態では、アプリケーション又はクライアントプログラムは、ＳＤＫによって提供されＡＰＩによって提供される機能又は方法への呼び出しを組み入れているか、又はＳＤＫによって定義されＡＰＩによって提供されるデータ型式又はオブジェクトを使用していよう。アプリケーションフレームワークは、これらの実施形態では、フレームワークによって定義される各種事象へ応答するプログラムのための主事象ループを提供している。ＡＰＩは、アプリケーションが、事象及び事象への応答を、アプリケーションフレームワークを使用して規定できるようにしている。幾つかの実施形では、ＡＰＩ呼び出しは、アプリケーションに、ハードウェアデバイスの能力及び状態を、入力能力及び状態、出力能力及び状態、処理能力、パワー状態、記憶能力及び状態、通信能力、など、の様な態様に関するものを含め、報告することができ、ＡＰＩは、部分的に、ファームウェア、マイクロコード、又は一部がハードウェア構成要素上で実行している他の低級論理によって、実施されていてもよい。
【００４２】
ＡＰＩ呼び出し構成要素は、ローカル構成要素（即ち、ＡＰＩ実施構成要素と同じデータ処理システム上）であってもよいし、リモート構成要素（即ち、ＡＰＩ実施構成要素とは異なったデータ処理システム上）であって、ＡＰＩを通じてネットワーク経由でＡＰＩ実施構成要素と通信するものであってもよい。ＡＰＩ実施構成要素は、ＡＰＩ呼び出し構成要素として行動する（即ち、それは異なったＡＰＩ実施構成要素によって露出されているＡＰＩへの呼び出しを行う）こともあり、ＡＰＩ呼び出し構成要素もまた異なったＡＰＩ呼び出し構成要素へ露出されるＡＰＩを実施することによってＡＰＩ実施構成要素として行動することがあるものと理解されたい。
【００４３】
ＡＰＩは、異なったプログラミング言語で書かれた複数のＡＰＩ呼び出し構成要素がＡＰＩ実施構成要素と通信できるようにしていてもよく（而して、ＡＰＩは、ＡＰＩ実施構成要素とＡＰＩ呼び出し構成要素の間の呼び出しと戻しを翻訳するための機構を含むものとなる）、とはいえ、ＡＰＩは特定のプログラミング言語に照らして実施されていてもよい。ＡＰＩ呼び出し構成要素は、１つの実施形態では、ＡＰＩの或るセットを或るＯＳプロバイダから、ＡＰＩの別のセットをプラグインプロバイダから、ＡＰＩのもう１つのセットを別のプロバイダ（例えば、ソフトウェアライブラリのプロバイダ）又は当該ＡＰＩの別のセットのクリエータから、という様に、異なったプロバイダからＡＰＩを呼び出すこともある。
【００４４】
図１８は、本発明の幾つかの実施形態で使用することのできる例示としてのＡＰＩアーキテクチャを説明するブロック線図である。図１８に示されている様に、ＡＰＩアーキテクチャ１８００は、ＡＰＩ１８２０を実施しているＡＰＩ実施構成要素１８１０（例えば、オペレーティングシステム、ライブラリ、デバイスドライバ、ＡＰＩ、アプリケーションプログラム、ソフトウェア、又は他のモジュール）を含んでいる。ＡＰＩ１８２０は、ＡＰＩ呼び出し構成要素１８３０によって使用される、ＡＰＩ実施構成要素の１つ又はそれ以上の機能、方法、クラス、オブジェクト、プロトコル、データ構造、フォーマット、及び／又は他の機構、を規定している。ＡＰＩ１８２０は、ＡＰＩ実施構成要素中の或る機能がどの様にＡＰＩ呼び出し構成要素からのパラメータを受信し、当該機能がどの様に結果をＡＰＩ呼び出し構成要素へ戻すかを規定している少なくとも１つの呼び出し規則を規定することができる。ＡＰＩ呼び出し構成要素１８３０（例えばオペレーティングシステム、ライブラリ、デバイスドライバ、ＡＰＩ、アプリケーションプログラム、ソフトウェア、又は他のモジュール）は、ＡＰＩ１８２０を通じて、ＡＰＩ１８２０によって規定されているＡＰＩ実施構成要素１８１０の機構にアクセスし使用するためのＡＰＩ呼び出しを行う。ＡＰＩ実施構成要素１８１０は、ＡＰＩ呼び出しに応えて、ＡＰＩ１８２０を通じてＡＰＩ呼び出し構成要素１８３０へ或る値を戻す。
【００４５】
ＡＰＩ実施構成要素１８１０は、追加の機能、方法、クラス、データ構造、及び／又はＡＰＩ１８２０を通じて規定されておらずＡＰＩ呼び出し構成要素１８３０には利用可能となっていない他の機構を含んでいてもよいものと評価しておきたい。ＡＰＩ呼び出し構成要素１８３０は、ＡＰＩ実施構成要素１８１０と同じシステム上に在ってもよいし、リモートに置かれていて、ＡＰＩ１８２０を使用してネットワーク経由でＡＰＩ実施構成要素１８１０にアクセスしていてもよいものと理解されたい。図１８は、単一のＡＰＩ呼び出し構成要素１８３０がＡＰＩ１８２０と対話しているのを描いているが、ＡＰＩ呼び出し構成要素１８３０とは異なった言語（又は同じ言語）で書かれている他のＡＰＩ呼び出し構成要素がＡＰＩ１８２０を使用していることもあろう。
【００４６】
ＡＰＩ実施構成要素１８１０、ＡＰＩ１８２０、及びＡＰＩ呼び出し構成要素１８３０は、情報を機械（例えば、コンピュータ又は他のデータ処理システム）によって読み出せる形式で記憶するための何らかのメカニズムを含んでいる機械可読非一時的記憶媒体に記憶されていてもよい。例えば、機械可読媒体には、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイス、など、が含まれ、機械可読媒体は、ローカル記憶媒体とすることもできるし、１つ又はそれ以上のネットワークによってクライアントデバイスへ連結されているリモートデバイス上の記憶媒体とすることもできる。
【００４７】
図１７（「ソフトウェアスタック」）の例示としての実施形態では、アプリケーションは、幾つかのサービスＡＰＩを使用してサービス１又はサービス２へ呼び出しを行い、また幾つかのＯＳ  ＡＰＩを使用してオペレーティングシステム（ＯＳ）へ呼び出しを行うことができる。サービス１及びサービス２は、幾つかのＯＳ  ＡＰＩを使用してＯＳへ呼び出しを行うことできる。
【００４８】
サービス２は２つのＡＰＩを有していて、そのうちの一方（サービス２  ＡＰＩ１）はアプリケーション１から呼び出しを受信しアプリケーション１へ値を戻し、他方（サービス２  ＡＰＩ２）はアプリケーション２から呼び出しを受信しアプリケーション２へ値を戻す。サービス１（例えば、ソフトウェアライブラリであるとする）はＯＳ  ＡＰＩ１へ呼び出しを行い、ＯＳ  ＡＰＩ１から戻された値を受信し、サービス２（例えば、ソフトウェアライブラリであるとする）はＯＳ  ＡＰＩ１とＯＳ  ＡＰ２の両方に呼び出しを行い、それら両方から戻された値を受信する。アプリケーション２は、ＯＳ  ＡＰＩ２へ呼び出しを行い、ＯＳ  ＡＰＩ２から戻された値を受信する。
【００４９】
明細書中の「１つの実施形態」又は「或る実施形態」という言及は、実施形態と関連して説明されている或る特定の特徴、構造、又は特性が、本発明の少なくとも１つの実施形態の中に含まれていることを意味する。明細書中の様々な場に「１つの実施形態では」という語句が登場するが、これは、必ずしもどれもが同じ実施形態を指しているわけではない。
【００５０】
以上の明細書中に、本発明をその具体的な実施形態に関して説明してきた。とはいえ、それに対し様々な修正及び変更が本発明のより広範な精神及び範囲から逸脱すること無く成され得ることは明らかであろう。従って、明細書及び図面は、制限を課す意味ではなしに説明を目的とする意味で考慮されるべきである。
【００５１】
（補遺１）ラッパーアプリケーションＡＰＩ
0005930236.tif 000002
0005930236.tif 000003
0005930236.tif 000004
0005930236.tif 000005
0005930236.tif 000006
0005930236.tif 000007
0005930236.tif 000008
【００５２】
（補遺２）クラウドキットＡＰＩ
0005930236.tif 000009
0005930236.tif 000010
0005930236.tif 000011
0005930236.tif 000012
0005930236.tif 000013
0005930236.tif 000014
0005930236.tif 000015
0005930236.tif 000016
【符号の説明】
【００５３】
１０１  ウェブアプリケーションアーキテクチャ
１０３  アプリケーションのセット
１０４  ＡＰＩ（アプリケーションプログラミングインターフェース）
１０５  ラッパーアプリケーション
１０６  ＡＰＩ
１０７  ウェブブラウザ
１０８  ＡＰＩ
１０９  オペレーティングシステム
１１０  データ処理システムハードウェア
４０１  シーケンス
５０１  ログインシーケンス
５０３  スタートアップシーケンス
５０５  バックグラウンドシーケンス
５０７、５０９  シーケンス
５１５  認証サーバ
５１７  ブラウザ
５１９  コンテンツ配信ネットワーク
５２１  アプリケーションサーバ
６０１  サーバのセット
６０１Ａ  ｅメールサーバ
６０１Ｂ  カレンダーサーバ
６０１Ｃ  連絡先サーバ
６０３  インターネット
６０５  クライアントデバイス
６０７  セットアップサービス
７０５  ウェブブラウザ
７０９  アプリ
８０１  ディスプレイデバイス
８０２  デスクトップ
８０３  メニューバー
８０４  ウェブブラウザウインドウ
８０５  タイトルバー
８０６  ＵＲＬテキストエントリフィールド
８０７  閉じるボタン
８０８  戻るボタン
８０９  進むボタン
８１０、８１１、８１２  アプリケーションを表現しているアイコン
８１３  スイッチャーアイコン
８１４  ログアウトアイコン、サインアウトボタン
１１０１  ｅメールアプリケーション
１２０１  連絡先アプリケーション
１５０１  文書アプリケーション
１６２０  処理システム
１６２５  電源
１６３０  メモリ
１６４０  不揮発性メモリ
１６５０  バス
１６６０  ドック
１６７０  ディスプレイコントローラ及びディスプレイデバイス
１６８０  入力／出力デバイス）
１６９０  ワヤレス送受信器
１８００  ＡＰＩアーキテクチャ
１８１０  ＡＰＩ実施構成要素
１８２０  ＡＰＩ
１８３０  ＡＰＩ呼び出し構成要素
【図１】
0005930236.tif 000017
【図２】
0005930236.tif 000018
【図３】
0005930236.tif 000019
【図４】
0005930236.tif 000020
【図５Ａ】
0005930236.tif 000021
【図５Ｂ】
0005930236.tif 000022
【図５Ｃ】
0005930236.tif 000023
【図５Ｄ】
0005930236.tif 000024
【図６】
0005930236.tif 000025
【図７】
0005930236.tif 000026
【図８Ａ】
0005930236.tif 000027
【図８Ｂ】
0005930236.tif 000028
【図９】
0005930236.tif 000029
【図１０】
0005930236.tif 000030
【図１１】
0005930236.tif 000031
【図１２】
0005930236.tif 000032
【図１３】
0005930236.tif 000033
【図１４】
0005930236.tif 000034
【図１５】
0005930236.tif 000035
【図１６】
0005930236.tif 000036
【図１７】
0005930236.tif 000037
【図１８】
0005930236.tif 000038