【文献】
オープンソースマニア 第3回 ウェブOS「eyeOS」を動かす,Mac People,日本,株式会社アスキー,2007年 9月 1日,Vol.13,No.9,p.148-149
【文献】
野沢直樹,村上弘子,iPad Perfect Manual for iOS 4,株式会社ソーテック社,2010年12月31日,初版,P.288-290,293,294
【文献】
MICHAEL MILLER,CHAPTER 17 - CONTROLLING IT ALL WITH WEB-BASED DESKTOPS,CLOUD COMPUTING: WEB-BASED APPLICATIONS THAT CHANGE THE WAY YOU WORK AND COLLABORATE ONLINE,2008年 8月11日,P.235-243
【文献】
JOE KISSEL,INTRODUCTION, CHAPTERS 1 - 7,TAKE CONTROL OF MOBILEME, SECOND EDITION,TIDBITS PUBLISHING INC.,2010年10月27日,P.8-76
(58)【調査した分野】(Int.Cl.,DB名)
データ処理システム上で実行されたときに前記データ処理システムに或る方法を遂行させる実行可能な命令を格納している機械可読非一時的記憶媒体において、前記方法は、
第1のオペレーティングシステム(OS)を実行する段階と、
前記第1のOS上のウェブブラウザを実行する段階と、
前記ウェブブラウザのメモリ空間によって定義されるメモリ空間内のラッパーアプリケーションであって、少なくとも第1のアプリケーションについてライフサイクル管理を提供しているラッパーアプリケーションを実行する段階と、
前記ラッパーアプリケーションの中で前記第1のアプリケーションを実行する段階であって、前記ラッパーアプリケーションは少なくとも第1のアプリケーションについてライフサイクル管理を提供し、最前面状態から非最前面状態への切り替えを提供し、前記第1のアプリケーションは、ウェブページの対応するiframeにおいて実行し、それが非最前面状態へ切り替えられた後も、実行中の状態のままである、段階と、
前記第1のアプリケーションが実行に向け起動されるときの前記ラッパーアプリケーションと前記第1のアプリケーションの間の少なくとも1つの呼び出し、及び前記第1のアプリケーションが終結されるときの前記ラッパーアプリケーションと前記第1のアプリケーションの間の少なくとも1つの呼び出し、を伝送する段階と、
前記第1のアプリケーションが起動されるときの前記ウェブブラウザと前記ラッパーアプリケーションの間の少なくとも1つの呼び出しを伝送する段階と、を備えている、機械可読非一時的記憶媒体。
少なくとも1つの呼び出しを伝送する段階は、呼び出し又はメッセージを、発行する段階、開始する段階、発動する段階、又は受信する段階の1つを備え、前記第1のOSは、プリエンプティブマルチタスキングOSである、請求項1に記載の媒体。
前記ウェブブラウザは、当該ウェブブラウザが1つ又はそれ以上のURL(ユニフォームリソースロケータ)を通じて検索した、マークアップ言語でエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、前記ウェブブラウザは、当該ウェブブラウザ中のレイアウトエンジンを使用して、前記ウェブページの前記マークアップ言語を当該ウェブページのDOM(文書オブジェクトモデル)へ処理するように構成されていて、且つ前記ウェブページと関連付けられているカスケーディングスタイルシートを処理して当該ウェブページを提示させるように構成されている、請求項2に記載の媒体。
アプリケーションのセットが前記ラッパーアプリケーションの中で実行しており、前記セットは、eメールアプリケーションである前記第1のアプリケーション、カレンダーアプリケーションである第2のアプリケーション、及び連絡先又は住所録アプリケーションである第3のアプリケーションを含んでおり、前記セット中のそれぞれのアプリケーションは、それが最前面となったときに前記ウェブブラウザの同じ単一のウインドウ中に提示される、請求項2に記載の媒体。
前記ラッパーアプリケーションは、前記アプリケーションのセットのためのオペレーティングシステムとして動作しており、前記セット中のそれぞれのアプリケーションは少なくとも部分的にJavaScriptで書かれている、請求項4に記載の媒体。
前記セット中のそれぞれのアプリケーションは、ウェブページの対応するiframeの中で実行しており、前記セット中のそれぞれのアプリケーションのための対応する前記iframeは、前記ラッパーアプリケーションによる行動を通じて、最前面アプリケーションとして提示されるか又は最前面アプリケーションとして提示されない、請求項4に記載の媒体。
前記ラッパーアプリケーションは、前記ウェブブラウザからの呼び出しに応えて、それぞれのアイコンが前記アプリケーションのセット中の或るアプリケーションを表現しているアイコンのセットの表示のためにデータを生成しており、前記呼び出しは、前記ウェブブラウザ中の前記同じ単一ウインドウの中での第1のアイコンの選択によって引き起こされるものである、請求項6に記載の媒体。
前記第1のアイコンの前記選択は、前記アプリケーション間で切り替えるために使用されており、前記ウェブブラウザの前記同じ単一ウインドウ中の前記アイコンのセットの前記提示を引き起こす、請求項7に記載の媒体。
前記アプリケーションのセット中のそれぞれのアプリケーションは、それが最前面アプリケーションから非最前面状態へ切り替えられた後も、コンテキスト及び状態が保存されて実行中の状態のままである、請求項8に記載の媒体。
前記コンテキストは、テキスト入力フォーカス及び位置の状態並びに入力されたユーザーデータを含み、前記ウェブブラウザの前記同じ単一ウインドウは、タブ付きウインドウを含んでおらず、前記ラッパーアプリケーションは、前記ウェブブラウザの前記同じ単一ウインドウのURLテキストエントリフィールド及びタイトルバーを所有している、請求項9に記載の媒体。
前記ラッパーアプリケーションは、前記アプリケーションのセット中のそれぞれのアプリケーションについてユーザーを認証し、ユーザーが前記セット中の前記アプリケーションのうちの1つでログアウトすると、又は前記セット中の前記アプリケーションのうちの1つでアクセスが失効すると、前記ラッパーアプリケーションは、当該ユーザーを前記アプリケーションのセット中の残りのアプリケーションからログアウトさせる、請求項9に記載の媒体。
前記ラッパーアプリケーションは、前記アプリケーションのセット中のそれぞれのアプリケーションについて別々にエラーに対処しており、前記セット中の1つのアプリケーションの再始動を、当該セット中の他のアプリケーションが実行を継続している間に行わせる、請求項9に記載の媒体。
前記ラッパーアプリケーションは、適正なユーザー認証がセットアップサービスへ送信されたことに応えて、前記アプリケーションのセット中の前記アプリケーションのそれぞれについてウェブサーバのアドレス情報を受信する、請求項12に記載の媒体。
前記ラッパーアプリケーションとそれぞれのアプリケーションの間では、前記アプリケーションが起動されるとき及び前記アプリケーションが最前面と非最前面の間で切り替えられるときに呼び出しが伝送され、前記ライフサイクル管理は、前記アプリケーションのセット中のそれぞれのアプリケーションの起動段階及び終了段階を備えている、請求項14に記載の媒体。
前記ラッパーアプリケーションと前記アプリケーションのセットは、同じ単一のウェブブラウザの中で実行するように構成されており、前記アプリケーションのセット中のそれぞれのアプリケーションは、前記非最前面状態のときも実行中のままであり、前記ラッパーアプリケーションは、前記ウェブブラウザからの呼び出しに応えて、それぞれのアイコンが前記アプリケーションのセット中の或るアプリケーションを表現しているアイコンのセットを提示し、前記呼び出しは、前記同じ単一のウェブブラウザウインドウの中での第1のアイコンの選択によって引き起こされるものであり、前記第1のアイコンは前記アプリケーションのセット中の前記アプリケーション間で切り替えるのに使用されている、請求項15に記載の媒体。
アプリケーションのセットが前記ラッパーアプリケーションの中で実行しており、前記セットは、eメールアプリケーションである前記第1のアプリケーション、カレンダーアプリケーションである第2のアプリケーション、及び連絡先又は住所録アプリケーションである第3のアプリケーションを含んでおり、前記セット中のそれぞれのアプリケーションは、それが最前面となったときに前記ウェブブラウザの同じ単一のウインドウ中に提示され、前記ラッパーアプリケーションは、前記アプリケーションのセットのためのオペレーティングシステムとして動作しており、前記セット中のそれぞれのアプリケーションは少なくとも部分的にJavaScriptで書かれている、請求項17に記載の方法。
少なくとも1つの呼び出しを伝送する段階は、呼び出し又はメッセージを、発行する段階、開始する段階、発動する段階、又は受信する段階の1つを備え、前記第1のOSは、プリエンプティブマルチタスキングOSであり、前記ウェブブラウザは、当該ウェブブラウザが1つ又はそれ以上のURL(ユニフォームリソースロケータ)を通じて検索した、マークアップ言語でエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、前記ウェブブラウザは、当該ウェブブラウザ中のレイアウトエンジンを使用して、前記ウェブページの前記マークアップ言語を当該ウェブページのDOM(文書オブジェクトモデル)へ処理するように構成されていて、且つ前記ウェブページと関連付けられているカスケーディングスタイルシートを処理して当該ウェブページを提示させるように構成されている、請求項19に記載のデータ処理システム。
【発明を実施するための形態】
【0012】
本発明の様々な実施形態及び態様が、以下に論じられている詳細事項に関連して説明されており、添付図面はそれら様々な実施形態を示している。次に続く説明及び図面は、本発明を例示するものであり、本発明を限定するものと解釈されてはならない。本発明の様々な実施形態を十分に理解してもらうために、数々の具体的な詳細事項が記載されている。とはいえ、本発明の実施形態の簡潔な論考を提供するために、場合によっては、周知の又は従来の詳細事項は記述されていない。
【0013】
明細書中の「1つの実施形態」又は「或る実施形態」という言及は、実施形態と関連して説明されている或る特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態の中に含まれ得ることを意味する。明細書中の様々な場に「1つの実施形態では」という語句が登場するが、これは、必ずしもどれもが同じ実施形態を指しているわけではない。付随する図中に描かれているプロセスは、ハードウェア(例えば、回路構成、専用論理、など)、ソフトウェア、又はその両者の或る組合せ、を備えている処理論理によって遂行される。プロセスは以下には何らかの順次的動作の観点から説明されているが、説明されている動作の幾つかは異なった順序で遂行されてもよいものと評価されたい。また、幾つかの動作は、順次ではなしに並列に遂行されてもよい。
【0014】
ウェブアプリケーションアーキテクチャは、ウェブブラウザ上で走る仮想機械様の環境又はオペレーティングシステムを提供することのできるラッパーアプリケーションを利用することができる。eメールアプリケーション、カレンダーアプリケーション、連絡先アプリケーション、又は別のアプリケーションの様な、1つ又はそれ以上のウェブアプリケーションのセットが、当該アプリケーションのセット中のアプリケーションのそれぞれについてライフサイクル管理を提供することのできるラッパーアプリケーションの一番上で走っている。ラッパーアプリケーションは、アプリケーションが起動された後、アプリケーションのセット中のアプリケーション間での切り替え中もアプリケーションのそれぞれを引き続き実行させておくことができ、これが全て単一のウェブブラウザウインドウ内で遂行されることになる。ラッパーアプリケーションは、ユーザーをアプリケーションのセット中のウェブアプリケーションの全てについて認証するのに単一のログイン点を提供することができ、ラッパーアプリケーションは、ひとたびログアウト(又は認証時間の失効)が1つのアプリケーションで起こったら、起動されているウェブアプリケーションの全てに自動ログアウトをもたらすことができる。このアーキテクチャを通じて創出される環境は、ユーザーにとってより良いユーザーインターフェースを提供することができ、というのも、例えば、開ける必要のあるウインドウはより少なく、ユーザーがアプリケーション間で切り替える際に単一のウェブブラウザウインドウ内に多数のウインドウ又は多数のタブを開かなくてもそれぞれの実行中のウェブアプリケーションの状態及びコンテキストを維持させられるからである。この環境は、更に、通知(例えばプッシュ通知)を隠されているアプリケーション宛てに提供できるようにし、また、アプリケーションエラーを、他のアプリケーションに影響を及ぼすこと無く、隔離し、回復させられるようにする。
【0015】
図1は、ウェブアプリケーションアーキテクチャの一例であって、
図1に示されているソフトウェアスタックを有するウェブアプリケーションアーキテクチャを示している。このアーキテクチャ101では、アプリケーションのセット103は、1つ又はそれ以上のAPI104を通じてラッパーアプリケーション105相手に動作しており、ラッパーアプリケーション105はウェブブラウザ107上で1つ又はそれ以上のAPI106を通じて走っている。ウェブブラウザ107はというと、1つ又はそれ以上のAPI108を通じて、1つの実施形態ではプリエンプティブマルチタスキングオペレーティングシステム109上で走っているが、別の実施形態では、マルチタスキングオペレーティングシステムは、プリエンプティブでもない又はマルチタスキングでもない他の既知のオペレーティングシステムと置き換えられてもよい。
図1のソフトウェアスタックに示されているソフトウェア全ては、データ処理システム上で、具体的にはデータ処理システム110のハードウェア上で動作している。
【0016】
アプリケーションのセット103は、ウェブアプリケーション又はウェブサービスアプリケーションであって、例えば、ウェブeメールアプリケーション、ウェブカレンダーアプリケーション、ウェブ連絡先又は住所録アプリケーション、ウェブ文書アプリケーション(例えば、iWork文書へのアクセス)、ナビゲーション用アプリケーションの様な地図アプリケーション又はスマートフォン探索の様な機器探索用アプリケーション、及び1つ又はそれ以上のウェブサーバと通信しているウェブブラウザを通じて当該1つ又はそれ以上のウェブサーバとの間でデータをやり取りするウェブアプリケーションとして実施され得る他のアプリケーションなど、とすることができる。eメール、カレンダーデータ、連絡先データ、など、の様なユーザーデータは、1つ又はそれ以上のウェブサーバ上に記憶され、クライアントデバイス上のウェブブラウザを通じてアクセスされ、使用されることになる。各種ウェブアプリケーションのためのユーザーインターフェースの例が
図11−
図15に提供されており、以下に更に説明されている。アプリケーションのセット中のこれらのアプリケーションは、
図6に示されているクライアントデバイス605の様な、データ処理システムハードウェア110を有するものとされる1つ又はそれ以上のクライアントデバイス上で動作することができ、クライアントデバイスは、
図16に示されているアーキテクチャを有するものであってよく、デスクトップコンピュータ、ラップトップコンピュータ、タブレットシステム、スマートフォン、ゲームコンソールの様なゲーム用デバイス、又は他の消費者向け電子デバイスであってもよい。1つ又はそれ以上のAPI104は、アプリケーションのセット103とラッパーアプリケーション105の間で機能又は動作についての様々な呼び出しを提供することができる。
図4及び
図5A−
図5Dは、その様なAPI及びその様なAPIについての呼び出しの例を提供しており、APIに係わる更なる背景情報は、
図17及び
図18に関連して提供されている。呼び出し又はAPIとの係わりでの伝送又は伝送するという用語は、呼び出し又はソフトウェアメッセージを、APIを通じて、発行する、開始する、発動する、又は受信する、の1つを含むものと理解しておきたい。1つの実施形態では、アプリケーションのセット中のアプリケーションのそれぞれは、部分的又は全体的にJavaScript(登録商標)で書かれていてもよく、また1つの実施形態では、アプリケーションのそれぞれは、1つの実施形態では、ラッパーアプリケーション105中を走っているiframe内部で実行することができ、ラッパーアプリケーション105自体は、少なくとも部分的にJavaScriptで書かれていてもよいとされ、ウェブブラウザ107上で走っている。
【0017】
ラッパーアプリケーション105は、1つの実施形態では、アプリケーションのセット103のための仮想マシン環境を提供することができ、ウェブブラウザ107上で走ることができ、ラッパーアプリケーションとウェブブラウザの間でAPI106を通じて呼び出しを伝送することができる。
図5A−
図5Dは、API106を通じた呼び出しの例を幾つか提供している。1つの実施形態では、ラッパーアプリケーションは、ウェブブラウザ中のURLテキストエントリフィールドを所有していて、ウェブブラウザへの呼び出しを使用してURLフィールドを制御し、またウェブブラウザへの呼び出しを使用してタイトルバーを制御しており、例えば、ラッパーアプリケーションは、ラッパーアプリケーションとウェブブラウダの間の呼び出しを通じて、タイトルバー中の名前を現在最前面のアプリケーションを反映するように変更させることができる。どの様にラッパーアプリケーションがタイトルバーの名前を制御するのかという例が
図11から
図15を通して示されている。ラッパーアプリケーションは、アプリケーションのセット中のそれぞれのアプリケーションについてライフサイクル管理を提供することができる。1つの実施形態では、これには、アプリケーションのそれぞれを起動する段階及び終了する段階が含まれる。また、ラッパーアプリケーションは、アプリケーション間での切り替え、アプリケーションのエラーの対処(例えば、誤った振る舞いをしているアプリケーション又はクラッシュしたアプリケーションを解体し、ユーザーに向けてアプリケーションを再度立ち上げることを申し出ること)を含め、他の機構及び機能や動作を提供することができる。また、1つの実施形態では、ラッパーアプリケーションは、非アクティブであるか又はクラッシュしているか振る舞いが不良であるアプリケーションのシャットダウンを強制することができる。また、ラッパーアプリケーションは、ユーザーについて及びアプリケーションのセット中のアプリケーション全てについて、単一のログイン点及び単一のログアウト点を提供することもできる。1つの実施形態では、ラッパーアプリケーションは、カーネル、メモリの扱い、プロセス及びスレッドの動作のスケジューリングといった様な、従来のオペレーティングシステムの一定の機構を含んでいないが、別の実施形態では、ラッパーアプリケーションは、従来のオペレーティングシステムのこれらの機能又は機構或いはこれら機能又は機構の一部分を含んでいてもよい。
【0018】
1つの実施形態では、ラッパーアプリケーションは、アプリケーションのセット103中のウェブアプリケーションの1つ又はそれ以上へのプッシュ通知を提供することもでき、1つの実施形態では、アプリケーションのセット103中の最前面ではないアプリケーション宛てのプッシュ通知を最前面になっているアプリケーション上のユーザーインターフェースを通じて提示させることができる。1つの実施形態では、ラッパーアプリケーション及びアプリケーションのセット103は、ウェブブラウザのメモリ空間によって定義されているメモリ空間の中で動作し、ラッパーアプリケーション及びアプリケーションのセット103が走っているウェブブラウザのウインドウによって定義されているスレッド又はプロセス内で動作する。
【0019】
ウェブブラウザ107は、MicrosoftのInternet Explorer、又はカリフォルニア州クパチーノのApple Inc.のSafari、又はFirefox、Opera、又は他の既知のウェブブラウザ、の様な従来のウェブブラウザとすることができる。ウェブブラウザは、HTMLの様なマークアップ言語にエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、ウェブページはウェブブラウザによって1つ又はそれ以上のURL(ユニフォームリソースロケータ)を通じて検索される。1つの実施形態でのウェブブラウザは、ウェブブラウザ中のレイアウトエンジンを使用して、ウェブページのマークアップ言語をウェブページのDOM(文書オブジェクトモデル)へ処理するように構成されており、更にウェブブラウザは、ウェブページと関連付けられるカスケーディングスタイルシートを処理してウェブページを提示させるように構成されていてもよい。1つの実施形態では、ウェブブラウザ107は、オペレーティングシステム109と対話するのに1つ又はそれ以上のAPI108を使用することができ、これらのAPIは、オペレーティングシステムへの、当技術で既知のTCP/IPなどの様なウインドウ化機能及びネットワーク化機能を求める呼び出しをサポートすることができる。
【0020】
図2は、
図1に示されているソフトウェアーキテクチャと共に使用することのできる方法の一例を示している。動作201では、オペレーティングシステム109の様な主オペレーティングシステムが起動され、データ処理システム110上で実行するが、このデータ処理システム110は、例えば、
図6に示されているアーキテクチャを有する1つそれ以上のクライアントデバイスであってよいし、
図16に示されているアーキテクチャを有していてもよく、それについては以下に説明されている。次に、動作203で、ウェブブラウザが起動され、主オペレーティングシステム上で実行するよう仕向けられるが、ウェブブラウザは
図1に示されているオペレーティングシステム109上で実行しているウェブブラウザ107とすることができる。ユーザーは、当技術で既知である様に、ウェブページを訪問する、TV又は映画を見る、スポーツイベント及び得点をチェックする、天気又は株をチェックする、又は当技術で知られている従来のウェブブラウザの他の利用の仕方をするのに、ウェブブラウザを動作させることができる。加えて、ユーザーは、ここに説明されているウェブメール又は他のウェブサービスの様なウェブサービスを使用することを決断するかもしれない。これは、ウェブブラウザを、ここに説明されている1つ又はそれ以上のウェブサービスへの進入点である特定のURLへ方向決めすることによって成し遂げられる。例えば、1つの実施形態では、ユーザーは、ウェブブラウザ107のURLエントリフィールドの中へ「icloud.com」のテキストを入力する。icloud.comURLの様なこのコマンドの入力に応えて、ラッパーアプリケーション105は、起動され、ウェブブラウザ107上で走るが、これは
図2に動作205として示されている。
図2のフローでは、ラッパーアプリケーション及び当該アプリケーション上で走るアプリケーションのセット103は前もってデータ処理システム上にインストールされているものとされており、つまり、例えば、ユーザーは既にこれらのウェブアプリケーションを使用してきており、それらは
図5A−
図5Dに関連して説明されている様にダウンロードされ、ウェブブラウザのキャッシュにキャッシュされている、と想定している。ここで指摘されている様に、ラッパーアプリケーション及びアプリケーションのセット103中のアプリケーションのそれぞれは、JavaScriptで書かれていてもよい。動作205でラッパーアプリケーションが起動された後、ラッパーアプリケーションは、動作207で、ログインウインドウ又はユーザーインターフェースをウェブブラウザのウインドウ中に提示し、すると、ユーザーはシステムによって要求されるログインデータである例えばユーザー名及びユーザーパスワードなどを入力すればよい。次いで、システムは、
図5A−
図5Dに関連して説明されている方式で、ユーザーを、例えば
図6に示されているセットアップサービス607の様なセットアップサービスを使用して認証する。動作209で、ラッパーアプリケーションは、1つの実施形態では、アプリケーションのセット103中の実行する全てのアプリケーションについて、単回のログインプロセスを通じて、ユーザーを認証することになり、適正なログインデータがユーザーによって又はユーザーに成り代わったシステムによって入力されたことに応えてその様にする。加えて、1つの実施形態では、ラッパーアプリケーションは、例えば、ラッパーアプリケーション及びセットアップアプリケーションが実行中であるウェブブラウザのウインドウが閉じられたときの自動ログアウトを提供している。認証後、動作211で、ラッパーアプリケーションは、1つの実施形態では、アプリケーションのセット103中のアプリケーションで認証されたユーザーにとって利用できるアプリケーションである利用可能アプリケーションを表現するアイコンを提示することができる。1つの実施形態では、これには、eメールアプリケーション、連絡先又は住所録アプリケーション、カレンダーアプリケーション、及びここに説明されているか又は当技術で既知の他のアプリケーション又はウェブアプリケーションが含まれる。ラッパーアプリケーションは、動作211で、ウェブブラウザのウインドウ内にアイコンを提示し、すると、ユーザーはアイコンのうちの1つを選択して、アプリケーションのセット103中の対応するアプリケーションを起動させ、ひいては実行させることができる。随意であるが、ラッパーアプリケーションは、アプリケーションのセット103中の直近に使用されたアプリケーションを起動するようにしてもよいし、追加的に、以下に更に説明されている様にアプリケーション間の切り替えのために使用することのできるアイコンを提示するようにしてもよい。
【0021】
図2は、
図1に示されているソフトウェアスタックを立ち上げて走るようにさせるのに使用することのできる方法を示しているのに対し、
図3は、当該ソフトウェアスタックを使用するための1つの実施形態での方法を示しており、方法は、1つの実施形態では、それ自体はウェブブラウザ107上で走っているラッパーアプリケーション105内のiframeの中で各々実行しているアプリケーションのセット103中のアプリケーション間での切り替えを含んでいる。動作301では、ラッパーアプリケーション105の様なラッパーアプリケーションは、アプリケーションのセット103中の利用可能アプリケーションを表現しているアイコンを、ウェブブラウザの単一ウインドウ内のユーザーインターフェースに提示する。その様なユーザーインターフェースの一例が、
図8A及び
図8Bに示されている。その様なアイコンを提示する代わりのユーザーインターフェースが更に
図9及び
図10に示されている。ユーザーがこれらのアイコンのうちの1つを選択すると、アプリケーションのセット103中の対応するアプリケーションが、前に起動されていなかった場合には、起動させられ、当該アプリケーションが最前面にされる。例えば、動作303で、ラッパーアプリケーションは、動作103での第1のアプリケーションとして言及されているアイコンのうちの1つの選択を受信する。選択は、ユーザーがカーソルをアイコン上に位置付けることによるか、又はユーザーが自分の指でアイコンをタップすることによるか、又は当技術で既知の他の入力によってもよい。この選択に応えて、動作305で、ラッパーアプリケーションは、第1のアプリ又はアプリケーションを、それが前に起動されていなかった場合には、起動し、当該第1のアプリを最前面アプリ又はアプリケーションとする。最前面ではない全ての他の利用可能アプリケーションは、完全に隠されるか、又はユーザーインターフェースの実装に依っては部分的に覆われる。
図11から
図15を通して示されている例では、最前面ではない他の利用可能アプリケーションは完全に隠されており、ユーザーは或るアイコン又は他のコマンドを選択することによってそれらへ復帰又は切り替わることができる。1つの実施形態では、当該アイコンは、
図8A及び
図8B並びに
図11から
図15を通して示されているアイコン813の様なスイッチャー(switcher:切り替え役)アイコンと呼称されている。当該アイコンの選択は、
図8A又は
図8Bに示されているアイコンのセットの提示を引き起こすことになり、つまりはそれぞれのアイコンが認証されたユーザーにとって利用可能なアプリケーションのセットを表している。第1のアプリ又はアプリケーションが最前面にされた後、ユーザーはそれと対話することができる。これは、動作307に示されており、そこでは、第1のアプリはユーザー入力を受信及び処理し、カレンダーサーバ、eメールサーバ、又は連絡先/住所録サーバ、など、の様な1つ又はそれ以上のウェブサーバと対話する。
【0022】
図6は、1つ又はそれ以上のクライアントデバイスと対話することのできるその様なウェブサーバの例を示している。ユーザーは、或る時点では、ユーザーの会社に在るユーザーのクライアントデバイスの様な1つのクライアントデバイスを使用しているかもしれないし、また別の時点では、自宅に在るユーザー用のコンピュータの様な別のクライアントデバイスを使用しているかもしれないが、何れの場合も、従来の又は標準的なウェブブラウザをウェブアプリケーションと共に使用して、
図6に示されている様な1つ又はそれ以上のウェブサーバ上に記憶されているデータにアクセスしデータと対話することができる。
【0023】
1つの実施形態では、動作307に示されている様に、第1のアプリは、それ自体はウェブブラウザ107によって提供されているウェブブラウザの単一ウインドウ内で走っているラッパーアプリケーション105の、その内部のiframe内で走っている。第1のアプリ使用中の任意の時点で、ユーザーは、アプリケーションのセット103中の他の利用可能アプリのうちの1つへ切り替えることを決断するかもしれず、これは動作309に示されており、そこでは、ウェブブラウザは1つの実施形態ではアプリケーションを切り替えるための入力を受信する。例えば、ウェブブラウザは、スイッチャーアイコン813への入力を受信し、呼び出しを通じて、当該入力を第1のアプリへ回し、すると第1のアプリがラッパーアプリケーション105を呼び出し、ラッパーアプリケーション105が上述されている動作301での様にアイコンを提示する。例えば、アイコンのセットは、ここでもやはり、アプリケーションの利用可能セットを表していて、
図8A又は
図8Bに示されているユーザーインターフェース中に、又は
図9に示されている代わりのユーザーインターフェース中に、或いは
図10に示されている代わりのユーザーインターフェース中に、提示されることになる。動作311に示されている様に、ラッパーアプリケーションは、動作309で受信された切り替えのための入力に応えて、利用可能アプリケーションのアイコンを、それまでは第1のアプリケーションを表示していた同じウェブブラウザの単一ウインドウ内に提示することになる。換言すると、
図3の方法は、同じ単一のウェブブラウザウインドウを使用することができる。1つの実施形態では、ラッパーアプリケーションは、スイッチャーアイコンの選択後、アイコンが提示されるとき、第1のアプリの完全隠蔽を引き起こす。例えば、第1のアプリが
図11に示されているeメールアプリケーションである場合で、ユーザーがスイッチャーアイコン813を選択したなら、これにより、
図8Aに示されているアイコンのセットの提示が引き起こされ、eメールアプリケーション1101はもはやウェブブラウザの単一ウインドウ内に提示されず、アイコンのセットが提示されている間それは完全に視界から隠されてしまっている。
図9は代わりのユーザーインターフェースを示しており、そこでは、前に使用されていたアプリケーションが引き続き提示されている一方、アプリケーションの間で切り替えるため又はアプリケーションを選択するために使用されるアイコンのセットがウェブブラウザのウインドウの引き出し領域と呼称されている領域に表示されており、同様に、
図10は、ユーザーインターフェースの例であって、
図3の方法での第1のアプリの様な前に使用されていたアプリケーションが、アプリケーションのセット103中のアプリケーションの間で選択する又は切り替えるのに使用されるアイコンのセットの裏に提示され続けているユーザーインターフェースを示している。動作313で、システムはアプリケーションのセット103中のアプリケーションのうちの1つである第2のアプリと呼称される別のアプリケーションの選択を受信する。この選択に応えて、ラッパーアプリケーションは、第2のアプリを(それが前に起動されていなかった場合には)起動し、第2のアプリを最前面のアプリとする。また、ラッパーアプリケーションは、全ての他の実行中のアプリケーションを少なくとも部分的に隠させる又は覆わせることになるが、但し、1つの実施形態ではそれらの他のアプリケーションは、保存されたコンテキスト及びデータと共になお実行中のままにされる。よって、例えば、ユーザーが新規人物連絡先として連絡先データを入力していた場合で、当該データの入力中に、カレンダーアプリケーション又はeメールアプリケーションへ切り替えることを決断したなら、当該新規データ及び当該データのコンテキストは、それが少なくとも部分的に隠されている間も保存されたままとなり、それらの隠されたアプリケーションは、直近の入力のテキスト入力フォーカス及び位置のコンテキスト並びに入力されたユーザーデータを含む保存されたコンテキスト及びデータと共に実行し続けることになる。1つの実施形態では、これは、直近に実行されたアプリケーション内に提示されているモーダルダイアログボックスにまで拡張され、その結果、それらのモーダルダイアログボックスの状態は、アプリケーションが同じ単一のウェブブラウザウインドウ内で最前面でない間も留保される。更に動作315では、動作311によって提示されたアイコンのセットも移されることになり、その結果、ユーザーは、1つの実施形態では、第2のアプリケーション又は第2のアプリしか見えず、その間、他のアプリは少なくとも部分的に隠されている。
【0024】
動作311、313、及び315の一例を、これより、
図8B、
図11、及び
図12を参照しながら提供してゆく。動作311は、1つの実施形態では、
図8Bに示されているユーザーインターフェースを提示するものであり、認証されたユーザーに利用可能であるアプリケーションのセット103のためのアイコンを提示する。これらのアイコンの提示は、スイッチャーアイコン813を選択することによって起こるものであってもよい。ユーザーは、それまで
図11に示されているeメールウェブアプリケーション1101を使用していて、アプリケーション103のセット中の連絡先ウェブアプリケーションへ切り替えることを決断したと仮定しよう。これは、スイッチャーアイコン813を選択することによって遂行されるものである。これは、或る代わりの実施形態では、アプリケーションのセット1103中の利用可能なアプリケーションのセットを、プルダウンメニュー或いは当技術で既知の他のメニュー又は他のユーザーインターフェースを通じて、選択することによって遂行されるようにもできよう。スイッチャーアイコン813の選択は、ユーザーがそれまでeメールアプリケーション1101を使用していた後の
図8に示されているアイコンの提示を引き起こす。そこで、ユーザーは
図8Bに示されている連絡先アイコンを選択すると、動作315のコンテキストではラッパーアプリケーション105によって起動される第2のアプリとされる
図12に示されている連絡先アプリケーション1201のユーザーインターフェースの提示が引き起こされることになる。この時点で、ユーザーは、閉じるコマンドを選択することによって又は
図8Bに示されている閉じるボタン807を選択することによって、ウェブブラウザウインドウを閉じることができる。代わりに、ユーザーは、
図8Bに示されているサインアウトボタン814を選択することによってログアウト又はサインアウトすることを決断することもできる。応えて、動作317で、ラッパーアプリケーションは、それぞれの実行中のアプリケーションに各々のデータを保存させ、次いでそれぞれの起動されているアプリケーションを終結及び解体し、ユーザーをそれぞれの起動されているアプリケーションについてログアウトさせる。この様に、ラッパーアプリケーションは、ユーザーが起動されているアプリケーションの全てを取り扱い、全ての起動されているアプリケーションを終結し、それらのウェブアプリケーションのそれぞれについてウェブサービスからログアウトするのに、単一の点を提供している。この特定の実施形態では、これにより、ユーザーは個々のウェブサービスを一々ログアウトする必要がなくなるため、ユーザーインターフェース及びユーザーの各種ウェブサービスとの対話が簡略化される。
【0025】
図3に示されている方法は、アプリケーションのセット103中の2つのアプリケーションの使用を示しているが、評価しておきたいこととして、より多くのアプリケーションが同時に起動され使用されることができ、且つ1つの実施形態では、タブインターフェース無しにどれもが同じウェブブラウザウインドウ内に提示されていて、そのそれぞれは同じウェブブラウザウインドウ中のウェブブラウザ上で走っているラッパーアプリケーション内のiframとして又はiframeの中で実行している。1つの実施形態では、当該ウェブブラウザウインドウのメモリ空間は、ラッパーアプリケーション及びアプリケーションのセット103中のそれぞれのアプリケーションへも割り付けられており、それらは当該特定のウェブブラウザウインドウへ割り付けられている当該メモリ空間内で走るように拘束されている。
【0026】
図4は、アプリケーションのセット103中の1つ又はそれ以上のアプリケーションとラッパーアプリケーション105の間で特定の呼び出しが伝送される方法の一例を示しており、これらの呼び出しは、ここに説明されてきた様に1つ又はそれ以上のAPI104を介している。具体的なAPIの詳細な例も、ここに含まれる補遺1及び補遺2に提供されている。
図4に示され説明されている呼び出しは、
図5A−
図5Dにも示されており、具体的には、
図5Bのスタートアップシーケンス503及びバックグラウンドシーケンス505内に示されている。具体的には、
図4に示されている方法は、
図5A−
図5Dに示されているフローチャートに従った実装の1つの実施形態でのスタートアップシーケンス及びバックグラウンドシーケンスで遂行される呼び出しの幾つかを示している。動作401で、ラッパーアプリケーションは、
図4の動作401に示されている呼び出しを行うことによってアプリケーションを起動する。この呼び出しが、今度は、選択されたアプリケーションのJavaScriptが、1つの実施形態では、それ自体はウェブブラウザ107の様なウェブブラウザ上で走っているラッパーアプリケーションのiframa内で実行されるように仕向ける。起動されたアプリは、この実施形態では、ラッパーアプリケーションに、ラッパーアプリケーションへの呼び出しを通じて、アプリが準備できていることを知らせることになり、
図4の動作403はその様な呼び出しの一例を示している。次いで、動作405で、ラッパーアプリケーションは、アプリに、それが最前面とされることを知らせることになり、その様な呼び出しの一例が
図4の動作405に示されている。1つの実施形態では、アプリは動作407まではスタートアップシーケンス503内に示されている様にアイドル状態のままであり、動作407で、ラッパーアプリケーションはアプリにそれが今や最前面となることを、例えば
図4の動作407内に示されているラッパーアプリケーションからアプリへの呼び出しによって知らせる。この時点で、ユーザーは、今や最前面となったアプリと対話することができる。例えば、アプリが
図11に示されているeメールアプリ1101の様なeメールアプリであれば、ユーザーは、eメールを読む、eメールに返信する、eメールを転送する、新規eメールを作成する、eメール用新規フォルダを作成する、フォルダ中のeメールを閲覧する、など、を行うことができる。eメールアプリケーション1101を使用する過程で、ユーザーはユーザーのカレンダー又はユーザーの住所録などを閲覧することを決断するかもしれず、その結果、ユーザーは動作409にある様に別のアプリを選択することになる。1つの実施形態では、これは、スイッチャーアイコン813を選択すること、又はプルダウンメニュー或いは当技術で既知の他のメニュー構造又は他のユーザーインターフェース中のアプリケーションのメニューから別のアプリ又はアプリケーションを選択すること、によって遂行されよう。これにより、動作313及び動作315に関連して説明されている様に、他のアプリケーションが、それが前に起動されていなかったなら、起動されるはずである。更に、動作409で選択された別のアプリケーションについて動作401、403、405、及び407が繰り返されることになる。その間に、ラッパーアプリケーション105は、動作411で、前に起動され実行されていたアプリにそれがバックグラウンドへ移されることを知らせることになっており、その様な呼び出しの一例が
図4に示されている動作411に提供されている。バックグランド状態は完全又は部分的に隠されていよう。
図8B及び
図11から
図15に関連して示されている実装は、最前面のアプリケーションがウェブブラウザのウインドウの全てとまではいかなくとも殆どを占有して映し出されている間はバックグラウンドアプリケーションが完全に隠されている実施形態を含んでいる。動作413は、バックグランドへ移されたことによってアイドル状態に置かれた何れかのアプリケーションが、ロードされ続け動作可能となり続けることを示しており、その実行可能コード及びアプリの実行可能コードと関連付けられるコンテキスト及びデータは、ここに説明されている様にウェブブラウザによって規定されているメモリ空間であってもよいとされるメモリ中に依然として在る。これにより、ユーザーは、異なったドメインの異なったウェブサーバによってホストされているアプリケーション間での切り替えを、それら異なったウェブサーバ上にホストされているアプリケーションのそれぞれの間で切り替え中に状態の保存又はログイン又はログアウトをしなくても、行えるようになる。これは、アプリケーションが、異なったホスト又はウェブサーバ上の恐らくは複数のサービスと通信することを可能にする。例えば、セット103中のカレンダーウェブアプリケーションは、カレンダーウェブサーバと通信することができるが、1つの実施形態では、同時に、連絡先ウェブサーバとも通信して、連絡先ウェブサーバ上のユーザーの住所録を使用してカレンダーイベントへの招待客をオートコンプリートさせることもできる。1つの実施形態では、これは、アプリケーションのセット中の何れかのアプリケーションが、ウェブサーバの何れか1つが何らかの要求に対する応答として別途指示するまでに認証されたユーザーを持てることを、ラッパーアプリケーション105が保証することによって実現させることができる。1つの実施形態では、アプリケーションがウェブサーバからの信用照明物又は認証データが無効であることを主張する応答を受信したなら、アプリケーションは、ローカルデータ及びキャッシュを洗い流し、ラッパーアプリケーションに、ユーザーはもはや認証されていない旨を知らせなくてはならず、その場合、1つの実施形態では、ラッパーアプリケーションは、ユーザーをアプリケーションのセット中の全アプリケーションについてログアウトさせることができ、その結果、ユーザーはユーザー名及びパスワードの様な認証情報を再入力することを求められる。
【0027】
図5A−
図5Dのフローチャートは、クライアントデバイスが走らせているウェブブラウザ517であって
図1のウェブブラウザ107であってもよいとされるウェブブラウザと1つ又はそれ以上のウェブサーバの様な幾つかの他のシステムとの間の対話を示している。具体的には、認証サーバ515は、
図6に示されているセットアップサービス607とすることができ、アプリサーバ521は、
図6に示されているウェブサーバ601A又は601B又は601Cの何れか1つとすることができる。コンテンツ配信ネットワーク519は、サーバのセット601の一部であってもよいし、又はラッパーアプリケーションソフトウェアのコンテンツ及びラッパーアプリケーション105上で走るアプリケーションのセット103中のアプリケーションを提供するように構成されている別のサービス又はウェブサーバであってもよい。アプリケーションサーバ521は、例えば、
図11に示されているeメールアプリケーション1101向けのウェブメールを提供するeメールサーバであるかもしれないし、又は代わりにアプリケーションサーバ521は
図12に示されている連絡先アプリケーション1201向けのデータを提供するウェブサーバであるかもしれない、と理解しておきたい。よって、アプリケーションサーバ521は、
図6のeメールサーバ601Aであることもあれば、
図6に示されているカレンダーサーバ601Bであることもあるし、
図6に示されている連絡先サーバ601Cであることもあるし、或いはウェブアプリケーションと対話する他のウェブサーバであることもあろう。
図5A−
図5Dに示されている方法は、ユーザーが、
図1に示されているウェブブラウザ107であってもよいとされるウェブブラウザ517のURLテキストエントリフィールドに、www.icloud.comというURL又は別のURLを入力することで始まる。アプリケーションのセット及びラッパーアプリケーションが前もってウェブブラウザのキャッシュにキャッシュされていない場合、
図5Aに示されている様に、アプリケーションのセット及びラッパーアプリケーションを要求する1つ又はそれ以上のGET要求がブラウザによって遂行され、アプリケーションのセット及びラッパーアプリケーションが
図5Aに示されている様にブラウザへ戻される。
図5Aに示されているラッパーアプリケーションは、ログインユーザーインターフェースを示し、適正な認証済みのログインに応えて、ユーザーは、最初のGET要求への応答でラッパーアプリケーションを取得した後に次いでアプリケーションのセットを取得することができる。ユーザーが有効な認証又はログインデータを提示した後、今度はブラウザ517が、
図6に示されているセットアップサービス607であってもよいとされる認証サーバ515と通信する。具体的には、
図6を参照して、クライアントデバイス605は、インターネット603の様な1つ又はそれ以上のネットワークを通じて、ユーザー名及びパスワードを含んでいるとされるログイン情報を提供することによってセットアップサービス607と通信する。有効なログイン情報に応えて、セットアップサーバ607は、1つ又はそれ以上のクッキーの形態(SSL及びHTTPとしてマークされていてもよい―そうすればJavaScriptにはそれらが見えないというだけのこと)であってもよいとされる認証トークンと、ウェブアプリケーション103が使用している該当のeメールサーバ及び他のサーバのアドレスと、が送り返され、それらアドレスは1つの実施形態では
図5A及び
図5Cに示されている様に「bag」と呼称されている。該当のウェブサーバからデータを受信した後、セット103中のアプリケーションは、自身のユーザーインターフェースを提示する(アプリケーションのセット103中のeメールアプリケーションの場合には、
図11に示されているeメールアプリ1101がウェブブラウザのウインドウ内に示される)。これにより、
図5Aのログインシーケンス501に示されているログインプロセスが完了する。ダウンロードされたアプリケーション及びダウンロードされたラッパーアプリケーションは、1つの実施形態では、ウェブブラウザのキャッシュ内に保守されるので、いつブラウザが再起動されようとも、又はいつ主オペレーティングシステムが再起動又は再開されようとも、それらは繰返しダウンロードされる必要がない。別の実施形態では、ラッパーアプリケーション及びアプリケーションのセット103中のアプリケーションのそれぞれは、ユーザーロングインの都度ダウンロードされるようになっていてもよい。
【0028】
図5A−
図5Dは、
図5A−
図5Dで「クラウドOS」と呼称されているラッパーアプリケーションとアプリケーションのセット103中の1つ又はそれ以上のアプリケーションの間の特定の呼び出しの一例を示している。
図5A−
図5Dは、更に、クラウドキットAPIと呼称されているAPIに関して行われる呼び出し(例えば、
図5Bに示されている「クラウドキット:GET/startup...」)を示しており、このAPIは、アプリケーションセットのためのソフトウェアフレームワークを提供する。クラウドOSラッパーアプリケーション向けの特定のAPIの一例は、補遺1に提供されている。クラウドキットAPI向けの特定のAPIの一例は、補遺2に提供されている。
図5A−
図5Dは、更に、アプリ及びウェブブラウザによって遂行される動作又は呼び出しを示している。
図5C−
図5Dは、更に、シーケンス507として示されている401シーケンス中及び終結シーケンス509中に起こる呼び出しと動作の例を提供している。
【0029】
図6は、ここに説明されているウェブアプリケーションアーキテクチャを使用しながら、1つ又はそれ以上のネットワークを通じて1つ又はそれ以上のクライアントデバイス相手に動作することのできる1つ又はそれ以上のウェブサーバの一例を示している。アプリケーションのセット103並びにラッパーアプリケーション105及びウェブブラウザ107は、1つ又はそれ以上のネットワーク603へ連結されていて、ひいては、ウェブサーバ601A、601B、又は601C、或いは示されていない他のウェブサーバ(例えば、地図又はナビゲーションサーバ、又はiWork文書サーバ、又は他のウェブアプリケーションのためのウェブサーバなど)の様な1つ又はそれ以上のウェブサーバと通信するクライアントデバイス605上で実行している。クライアントデバイスは、これらのウェブサーバのそれぞれへ同時に連結でき、その間それらの対応するアプリのそれぞれはここに説明されている様に実行してゆく。
図6に示されているウェブサーバの様なウェブサーバのセットは、異なったドメインに在ることもあり(例えば、eメールサーバにはicloudmail.comの様な1つのドメイン、カレンダーサーバにはicloudcalender.comの様な別のドメイン)、またCORS(クロスオリジンリソースシェアリング)をサポートしているSafariやFirefoxの様なウェブブラウザについては、CORSがクロスドメイン要求のために使用されよう。他のウェブブラウザについては、親ウェブブラウザウインドウとpostMessageを介して通信しているプロキシXHR(XML HTTP要求)に対しiframeが使用されよう。セットアップサービス607は、
図5A−
図5Dに示されている認証サーバ515に関連して示されている方式で行動することのできる1つ又はそれ以上のセットアップサーバ607とすることができる。
【0030】
図7は、1つ又はそれ以上のウェブサーバからラッパーアプリケーション105のiframeの中で走る或る特定のアプリケーションへ通知を送信するのにプッシュ通知をどの様に使用することができるかの一例を説明している。プッシュ通知は、eメールサーバ601A、カレンダーサーバ601B、又は連絡先サーバ601Cの様な、ウェブサーバのうちの何れか1つが、クライアントデバイス605の様なクライアントデバイス上のウェブブラウザへ通知を提供することによって始まる。ウェブブラウザ705は、API106を介するといった様に呼び出しを通じて、クライアントデバイス上のウェブブラウザの中で走っているラッパーアプリケーション105の様なラッパーアプリケーションへ連絡することができる。すると、ラッパーアプリケーションは、709に示されている様に、プッシュ通知を送った該当するウェブサーバと対話するアプリへ通知を提供する。
【0031】
図8Aは、本発明の1つの実施形態によるディスプレイデバイス801上のユーザーインターフェースの一例を示している。ディスプレイデバイス801は、データ処理システムハードウェア110の一部分である
図16のディスプレイ1670とすることができる。ユーザーインターフェースは、
図1に示されているソフトウェアスタックによって作成されている。
図8Aに示されていない他のウインドウも、当技術で既知の様にデスクトップ802内のディスプレイデバイス801上に表示できるものと評価しておきたい。ユーザーインターフェースは、ディスプレイデバイス801の画面の一番上に示されるメニューバー803を含んでいるが、画面の下又はウインドウ804の様なそれぞれのウインドウ内といった様にメニューバーの代わりの場所が使用されてもよいものと理解しておきたい。
図8Aに示されている例は、メニューバー803が画面の一番上に在る、Mac OS Xとして知られているMacintoshオペレーティングシステムのユーザーインターフェースを模している。ウェブブラウザは、現在、実行中であり、当該ウェブブラウザは1つの実施形態ではMacintoshオペレーティングシステムとされているオペレーティングシステム109上で実行するウェブブラウザ107であってもよいが、代わりに、Windows(登録商標)、など、の様な他のオペレーティングシステムが使用されていてもよい。ウェブブラウザは、ウェブブラウザウインドウ804を提示しており、当該ウインドウの中で、ラッパーアプリケーション105及びアプリケーションのセット103が実行中となる。ウェブブラウザウインドウ804は、URLテキストエントリフィールド806とタイトルバー805を含んでおり、タイトルバー805は1つの実施形態ではここに説明されている様にラッパーアプリケーション105によって所有又は制御されるタイトルを含んでいる。ウェブブラウザウインドウ804は、更に、閉じるボタン807と、戻るボタン808及び進むボタン809と、を含んでいる。戻るボタン808及び進むボタン809は、ウェブブラウザで使用されている従来の戻るボタン及び進むボタンとすることができる。ウェブブラウザウインドウ804は、ここに説明されている様に使用することのできるスイッチャーアイコン813及びログアウトアイコン814も表示している。ウェブブラウザウインドウ804によって提示されるユーザーインターフェースは、アプリケーションのセット103中のアプリケーションの1つをそれぞれが表現しているアイコンのセットを含んでいる。例えば、アイコン810は、アプリケーションのセット103の中に在るメール又はeメールアプリケーションを表現し、アイコン811は、アプリケーションのセット103内の連絡先アプリケーションを表現し、アイコン812は、アプリケーションのセット中103内のカレンダーアプリケーション表現している、など、とすることができよう。ユーザーがそれらのアイコンのうちの1つを選択すると、ラッパーアプリケーション105は、ここに説明されている様に、選択されたアイコンに対応している選択されたアプリケーションの起動(前に起動されていない場合)を引き起こすことになる。
【0032】
図11から
図15は、アプリケーションのセット103の中に在る特定のアプリケーション又はウェブアプリケーションの例を提供している。具体的には、
図11は、タイトルバー805中の「メール」の語によって指し示されている様にeメールアプリケーションを示している。先に説明されている様に、ラッパーアプリケーションは、ウェブブラウザとの呼び出しのセットを通じて(例えば、API106を通じて)、タイトルバー805を制御又は所有することができ、現在の最前面アプリケーションとして適正なタイトルを提供することができる。
図12は、1つの実施形態ではアプリケーションのセット103の一部である連絡先又は住所録アプリケーションのユーザーインターフェースの一例を示している。
図13は、1つの実施形態ではアプリケーションのセット103中のアプリケーションのうちの1つであるカレンダーアプリケーションのユーザーインターフェースの一例を示している。
【0033】
図14は、スマートフォンの様なデバイスを探索するのに使用することができ、1つの実施形態によればアプリケーションのセット103のセット中のアプリケーションのうちの1つとされている地図アプリケーションの一例を示している。
図15は、ユーザーが、プレゼンテーション文書、ワードプロセッシング文書、及びスプレッドシート、の様な文書の集合体にアクセスすること及び/又はそれらと対話することを可能にするユーザーインターフェースの一例であり、具体的には、文書アプリケーション1501は、ユーザーが、1つ又はそれ以上のウェブサーバ上にユーザーが記憶させている文書と対話できるようにする。
【0034】
図16は、本発明の幾つかの実施形態で使用することのできる、コンピュータシステムの様な例示としてのデータ処理システムを描いているブロック線図である。
図16は、コンピュータシステムの様々な構成要素を例示しているが、構成要素の相互接続の何らかの特定のアーキテクチャ又は方式については、その様な詳細は本発明には密接な関係のないことから、表現しないことにする。より少ない構成要素又はより多くの構成要素を有する他のコンピュータシステムの様な他のデータ処理システムも、本発明と共に使用することができるものと評価しておきたい。
【0035】
図16に描かれている様に、データ処理システムの形態であるシステム1600は、処理システム1620、電源1625、メモリ1630、及び不揮発性メモリ1640(例えば、ハードドライブ、フラッシュメモリ、相変化メモリ(PCM)、など)と連結されている(単数又は複数の)バス1650を含んでいる。(単数又は複数の)バス1650は、当技術で周知されている様に、各種ブリッジ、コントローラ、及び/又はアダプタを通じて互いへ接続されていてもよい。処理システム1620は、メモリ1630及び/又は不揮発性メモリ1640から、記憶されている(単数又は複数の)命令を取り出し、命令を実行して、上述の動作を遂行させることができよう。バス1650は、以上の構成要素を一体に相互接続し、更には、それらの構成要素を、随意のドック1660、ディスプレイコントローラ及びディスプレイデバイス1670、入力/出力デバイス1680(例えば、NIC(ネットワークインターフェースカード)、カーソルコントロール(例えば、マウス、タッチスクリーン、タッチパッド、など)、キーボード、など)、及び随意の(単数又は複数の)ワイヤレス送受信器1690(例えば、ブルートゥース、WiFi、赤外線、セルラー電話受信器、など)へ相互接続している。データ処理システム1600は、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント(PDA)、移動体電話、携帯式ゲームシステム、携帯式メディアプレーヤ、移動体電話やメディアプレーヤ及び/又はゲームシステムを備えていることもあるタブレット、又はハンドヘルドコンピューティングデバイス、又は他の型式の消費者向け電子デバイスであってもよい。別の例として、データ処理システム1600は、ネットワークコンピュータ又は別のデバイス内の埋込式処理デバイスであってもよい。
【0036】
幾つかの実施形態では、1つ又はそれ以上のアプリケーションプログラミングインターフェース(API)が使用されている。APIは、プログラムコード構成要素又はハードウェア構成要素(以下「API実施構成要素」)によって実施されるインターフェースであって、異なったプログラムコード構成要素又はハードウェア構成要素(以下「API呼び出し構成要素」)がAPI実施構成要素によって提供されている1つ又はそれ以上の機能、方法、手続き、データ構造、クラス、及び/又は他のサービスにアクセスし使用できるようにするインターフェースである。APIは、API呼び出し構成要素とAPI実施構成要素の間で受け渡される1つ又はそれ以上のパラメータを定義することができる。
【0037】
APIは、API呼び出し構成要素の開発者(第三者機関開発者であってもよい)が、API実施構成要素によって提供されている規定の機構を活用できるようにしている。API呼び出し構成要素は1つのこともあれば、1つより多いこともあろう。APIは、コンピュータシステム又はプログラムライブラリが、アプリケーションからのサービスを求める要求をサポートするために提供しているソースコードインターフェースとしてもよい。オペレーティングシステム(OS)は複数のAPIを有し、OS上で走るアプリケーションがそれらAPIのうちの1つ又はそれ以上を呼び出せるようにしていてもよく、サービス(例えばプログラムライブラリなど)は複数のAPIを有し、サービスを使用するアプリケーションがそれらAPIのうちの1つ又はそれ以上を呼び出せるようにしていてもよい。APIは、アプリケーションが構築されるときに翻訳又はコンパイルできるものとしてプログラミング言語に照らして規定されていよう。
【0038】
いくつかの実施形態では、API実施構成要素は、1つより多くのAPIを提供していて、APIそれぞれは、API実施構成要素によって実施される異なった態様の機能性にアクセスする異なった態様の違ったビュー又はそれら異なった態様を備える違ったビューを提供していてもよい。例えば、API実施構成要素の1つのAPIは、機能の第1のセットを提供していて、第三者機関開発者へ露出されているものとしてもよく、API実施構成要素の別のAPIは、隠蔽されていて(露出されていない)、機能の第1のセットのサブセットを提供し、更には機能の第1のセット中には無い試験又はデバッグの様な機能の別のセットを提供しているものとしてもよい。他の実施形態では、API実施構成要素は、それ自身が、下層のAPIを介して1つ又はそれ以上の他の構成要素を呼び出すようになっていてもよく、ひいては、API呼び出し構成要素とAPI実施構成要素を兼ねていてもよい。
【0039】
APIは、API呼び出し構成要素がAPI実施構成要素の規定された機構にアクセスし使用するときに使用する言語及びパラメータを定義している。例えば、API呼び出し構成要素は、APIによって露出されている1つ又はそれ以上のAPI呼び出し又は呼び掛け(例えば機能呼び出し又は方法呼び出しによって具現化されている)を通じて、API実施構成要素の規定された機能にアクセスし、API呼び出し又は呼び掛けを介し、パラメータを使用してデータ及び制御情報を受け渡す。API実施構成要素は、API呼び出し構成要素からのAPI呼び出しに応えて、APIを通じて或る値を戻してもよい。APIはAPI呼び出しの構文及び結果(例えば、どの様にAPI呼び出しを発動するか、及びAPI呼び出しは何をするか)を定義してはいるが、APIは、API呼び出しがAPI呼び出しによって規定されている機能をどの様に成し遂げるかを明かすものではない。呼び出し側(API呼び出し構成要素)とAPI実施構成要素の間では、1つ又はそれ以上のアプリケーションプログラミングインターフェースを介して様々なAPI呼び出しが伝送されている。API呼び出しを伝送することには、機能呼び出し又はメッセージを、発行する、開始する、発動する、呼び出す、受信する、戻す、応答する、を含めることができ、換言すれば、伝送するとは、API呼び出し構成要素か又はAPI実施構成要素のどちらかによる行動を言い表している。APIの機能呼び出し又は他の呼び掛けは、パラメータリスト又は他の構造を通じて、1つ又はそれ以上のパラメータを送信又は受信することであろう。パラメータは、不変のキー、データ構造、オブジェクト、オブジェクトクラス、変数、データ型式、ポインタ、アレイ、リスト、又は、API経由で受け渡されることになるデータ又は他のアイテムを指し示す機能又は方法又は別の方途に対するポインタ、とすることができる。
【0040】
また、データタイプ又はクラスは、APIによって提供されていて、API実施構成要素によって実施されるものである。而して、API呼び出し構成要素は、API中に提供されている定義を使用することによって、変数を宣言し、ポインタを使用して、その様な型式又はクラスの不変値を使用又はインスタンス化する。
【0041】
概して、APIは、API実施構成要素によって提供されるサービス又はデータへアクセスするのに、又はAPI実施構成要素によって提供される動作又は演算処理の遂行を開始させるのに、使用することができる。一例として、API実施構成要素及びAPI呼び出し構成要素は、それぞれ、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、又は他のモジュールの何れか1つとすることができる(API実施構成要素及びAPI呼び出し構成要素は、互いに同じ型式のモジュールであってもよいし互いと異なった型式のモジュールであってもよいものと理解されたい)。API実施構成要素は、幾つかの場合には、ファームウェア、マイクロコード、又は他のハードウェア論理に、少なくとも部分的に埋め込まれていてもよい。幾つかの実施形態では、APIは、クライアントプログラムがソフトウェア開発キット(SDK)ライブラリによって提供されるサービスを使用できるようにしていてもよい。他の実施形態では、アプリケーション又は他のクライアントプログラムは、アプリケーションフレームワークによって提供されるAPIを使用している。これらの実施形態では、アプリケーション又はクライアントプログラムは、SDKによって提供されAPIによって提供される機能又は方法への呼び出しを組み入れているか、又はSDKによって定義されAPIによって提供されるデータ型式又はオブジェクトを使用していよう。アプリケーションフレームワークは、これらの実施形態では、フレームワークによって定義される各種事象へ応答するプログラムのための主事象ループを提供している。APIは、アプリケーションが、事象及び事象への応答を、アプリケーションフレームワークを使用して規定できるようにしている。幾つかの実施形では、API呼び出しは、アプリケーションに、ハードウェアデバイスの能力及び状態を、入力能力及び状態、出力能力及び状態、処理能力、パワー状態、記憶能力及び状態、通信能力、など、の様な態様に関するものを含め、報告することができ、APIは、部分的に、ファームウェア、マイクロコード、又は一部がハードウェア構成要素上で実行している他の低級論理によって、実施されていてもよい。
【0042】
API呼び出し構成要素は、ローカル構成要素(即ち、API実施構成要素と同じデータ処理システム上)であってもよいし、リモート構成要素(即ち、API実施構成要素とは異なったデータ処理システム上)であって、APIを通じてネットワーク経由でAPI実施構成要素と通信するものであってもよい。API実施構成要素は、API呼び出し構成要素として行動する(即ち、それは異なったAPI実施構成要素によって露出されているAPIへの呼び出しを行う)こともあり、API呼び出し構成要素もまた異なったAPI呼び出し構成要素へ露出されるAPIを実施することによってAPI実施構成要素として行動することがあるものと理解されたい。
【0043】
APIは、異なったプログラミング言語で書かれた複数のAPI呼び出し構成要素がAPI実施構成要素と通信できるようにしていてもよく(而して、APIは、API実施構成要素とAPI呼び出し構成要素の間の呼び出しと戻しを翻訳するための機構を含むものとなる)、とはいえ、APIは特定のプログラミング言語に照らして実施されていてもよい。API呼び出し構成要素は、1つの実施形態では、APIの或るセットを或るOSプロバイダから、APIの別のセットをプラグインプロバイダから、APIのもう1つのセットを別のプロバイダ(例えば、ソフトウェアライブラリのプロバイダ)又は当該APIの別のセットのクリエータから、という様に、異なったプロバイダからAPIを呼び出すこともある。
【0044】
図18は、本発明の幾つかの実施形態で使用することのできる例示としてのAPIアーキテクチャを説明するブロック線図である。
図18に示されている様に、APIアーキテクチャ1800は、API1820を実施しているAPI実施構成要素1810(例えば、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、ソフトウェア、又は他のモジュール)を含んでいる。API1820は、API呼び出し構成要素1830によって使用される、API実施構成要素の1つ又はそれ以上の機能、方法、クラス、オブジェクト、プロトコル、データ構造、フォーマット、及び/又は他の機構、を規定している。API1820は、API実施構成要素中の或る機能がどの様にAPI呼び出し構成要素からのパラメータを受信し、当該機能がどの様に結果をAPI呼び出し構成要素へ戻すかを規定している少なくとも1つの呼び出し規則を規定することができる。API呼び出し構成要素1830(例えばオペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、ソフトウェア、又は他のモジュール)は、API1820を通じて、API1820によって規定されているAPI実施構成要素1810の機構にアクセスし使用するためのAPI呼び出しを行う。API実施構成要素1810は、API呼び出しに応えて、API1820を通じてAPI呼び出し構成要素1830へ或る値を戻す。
【0045】
API実施構成要素1810は、追加の機能、方法、クラス、データ構造、及び/又はAPI1820を通じて規定されておらずAPI呼び出し構成要素1830には利用可能となっていない他の機構を含んでいてもよいものと評価しておきたい。API呼び出し構成要素1830は、API実施構成要素1810と同じシステム上に在ってもよいし、リモートに置かれていて、API1820を使用してネットワーク経由でAPI実施構成要素1810にアクセスしていてもよいものと理解されたい。
図18は、単一のAPI呼び出し構成要素1830がAPI1820と対話しているのを描いているが、API呼び出し構成要素1830とは異なった言語(又は同じ言語)で書かれている他のAPI呼び出し構成要素がAPI1820を使用していることもあろう。
【0046】
API実施構成要素1810、API1820、及びAPI呼び出し構成要素1830は、情報を機械(例えば、コンピュータ又は他のデータ処理システム)によって読み出せる形式で記憶するための何らかのメカニズムを含んでいる機械可読非一時的記憶媒体に記憶されていてもよい。例えば、機械可読媒体には、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイス、など、が含まれ、機械可読媒体は、ローカル記憶媒体とすることもできるし、1つ又はそれ以上のネットワークによってクライアントデバイスへ連結されているリモートデバイス上の記憶媒体とすることもできる。
【0047】
図17(「ソフトウェアスタック」)の例示としての実施形態では、アプリケーションは、幾つかのサービスAPIを使用してサービス1又はサービス2へ呼び出しを行い、また幾つかのOS APIを使用してオペレーティングシステム(OS)へ呼び出しを行うことができる。サービス1及びサービス2は、幾つかのOS APIを使用してOSへ呼び出しを行うことできる。
【0048】
サービス2は2つのAPIを有していて、そのうちの一方(サービス2 API1)はアプリケーション1から呼び出しを受信しアプリケーション1へ値を戻し、他方(サービス2 API2)はアプリケーション2から呼び出しを受信しアプリケーション2へ値を戻す。サービス1(例えば、ソフトウェアライブラリであるとする)はOS API1へ呼び出しを行い、OS API1から戻された値を受信し、サービス2(例えば、ソフトウェアライブラリであるとする)はOS API1とOS AP2の両方に呼び出しを行い、それら両方から戻された値を受信する。アプリケーション2は、OS API2へ呼び出しを行い、OS API2から戻された値を受信する。
【0049】
明細書中の「1つの実施形態」又は「或る実施形態」という言及は、実施形態と関連して説明されている或る特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態の中に含まれていることを意味する。明細書中の様々な場に「1つの実施形態では」という語句が登場するが、これは、必ずしもどれもが同じ実施形態を指しているわけではない。
【0050】
以上の明細書中に、本発明をその具体的な実施形態に関して説明してきた。とはいえ、それに対し様々な修正及び変更が本発明のより広範な精神及び範囲から逸脱すること無く成され得ることは明らかであろう。従って、明細書及び図面は、制限を課す意味ではなしに説明を目的とする意味で考慮されるべきである。
【0051】
(補遺1)ラッパーアプリケーションAPI