JP5930236B2 - ウェブアプリケーションアーキテクチャ - Google Patents

ウェブアプリケーションアーキテクチャ Download PDF

Info

Publication number
JP5930236B2
JP5930236B2 JP2014522846A JP2014522846A JP5930236B2 JP 5930236 B2 JP5930236 B2 JP 5930236B2 JP 2014522846 A JP2014522846 A JP 2014522846A JP 2014522846 A JP2014522846 A JP 2014522846A JP 5930236 B2 JP5930236 B2 JP 5930236B2
Authority
JP
Japan
Prior art keywords
application
applications
wrapper
web browser
call
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014522846A
Other languages
English (en)
Other versions
JP2014522039A (ja
Inventor
ラミロ カルヴォ
ラミロ カルヴォ
オナー ヴィキングスタッド
オナー ヴィキングスタッド
ウィリアム ケイクス
ウィリアム ケイクス
チャールズ エバレット エドウォール
チャールズ エバレット エドウォール
フアン カミロ ピンゾン
フアン カミロ ピンゾン
ミーガン フロスト
ミーガン フロスト
ジャエ ウー チャン
ジャエ ウー チャン
ミーシャ マクラクラン
ミーシャ マクラクラン
エヴェラルド コエーリョ
エヴェラルド コエーリョ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2014522039A publication Critical patent/JP2014522039A/ja
Application granted granted Critical
Publication of JP5930236B2 publication Critical patent/JP5930236B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本願は、2011年7月26日出願の米国仮特許出願第61/511,938号の恩典を主張するものであり、これにより同仮特許出願をここに参考文献として援用する。
本発明は、ウェブアプリケーションに関し、より厳密には、eメールサービス、カレンダーサービス、又は連絡先サービス、など、の様なサービスを、特定のウェブサービスを提供する1つ又はそれ以上のウェブサーバと対話しているクライアントデバイス上のウェブブラウザの使用を通じて提供することのできるウェブアプリケーションに関する。
先行技術のウェブアプリケーションシステムは、ユーザーがウェブブラウザを通じて自分たちのeメールにアクセスしeメールと対話することができるようにしている。例えば、ウェブeメールは、ユーザーが、eメールクライアントではなしに標準的なウェブブラウザの使用を通じて、自分たちのeメールを閲覧しeメールと対話することができるようにしている。例えば、MicrosoftのExchange Server上に保守されているeメールシステムは、ユーザーが、ネットワークに接続できるなら何れの機械でも当該機械上のウェブブラウザを通じて自分達のeメール、カレンダー、及び連絡先へアクセスできるようにしており、よって、eメールなどにアクセスするのにEntourage又はMicrosoft Outlookの使用は必要ない。Comcastの様なインターネットサービスプロバイダ、及びGoogleやYahooの様なインターネット検索プロバイダも、従来のウェブブラウザを通じてのユーザーのeメール及び他のサービスへのアクセスを可能にしている。
米国仮特許出願第61/511,938号
ウェブアプリケーションアーキテクチャの様々な実施形態がここに説明されている。1つの実施形態では、ウェブアプリケーションアーキテクチャは、それ自体はデータ処理システムのオペレーティングシステム上で走っている標準的なウェブブラウザのその上で走るように構成されているラッパーアプリケーションを含んでいる。アプリケーションのセットが、ラッパーアプリケーション上で走るように構成されており(例えば、それぞれのアプリケーションはラッパーアプリケーションのiframe内部で走っている)、アプリケーションのセット中のアプリケーションのそれぞれは、1つ又はそれ以上のウェブサーバへのデータ及び1つ又はそれ以上のウェブサーバからのデータを提供するように構成されている。1つ又はそれ以上のウェブサーバは、eメールデータ、カレンダーデータ、連絡先データ、及び他の型式のデータを記憶することができる。ラッパーアプリケーションは、アプリケーションのセット中のそれぞれのアプリケーションについて、ライフサイクル管理を提供するように構成されていて、アプリケーションのセット中のアプリケーション間の切り替えを提供することができる。ラッパーアプリケーションは、ウェブブラウザ上で走っている仮想マシン様のオペレーシングシステムと考えることができ、ウェブブラウザそれ自体はプリエンプティブマルチタスキングオペレーティングシステムの様な別のオペレーティングシステム上で走っている。1つの実施形態では、アプリケーションのセットは、eメールアプリケーションと、カレンダーアプリケーションと、連絡先又は住所録アプリケーションと、を含むことができる。1つの実施形態では、セット中のそれぞれのアプリケーションが提示されるとき、それは、他のアプリケーションが完全に隠されるか又は実施形態に依っては少なくとも部分的に覆われた状態で、最前面のアプリケーションとして提示される。1つの実施形態では、アプリケーションのそれぞれは、提示されるとき、ウェブブラウザによって提供されている同じ単一のウェブブラウザウインドウ内に提示される。1つの実施形態では、呼び出しが、1つ又はそれ以上のアプリケーションプログラミングインターフェース(API)を通じて、ラッパーアプリケーションとアプリケーションのセット中のそれぞれのアプリケーションとの間で伝送される。これらの呼び出しは、アプリケーションのそれぞれが起動されるとき、及びアプリケーションのそれぞれが最前面と非最前面の間で切り替えられるとき、伝送されるようになっていてもよい。ラッパーアプリケーションによって提供されるライフサイクル管理は、アプリケーションのセット中のそれぞれのアプリケーションの起動段階及び終了段階を含むものとすることができる。また、ラッパーアプリケーションは、アプリケーションのセット中のアプリケーションのそれぞれの走りをサポートするために、ラッパーアプリケーションとウェブブラウザの間で呼び出しを伝送することができる。1つの実施形態では、アプリケーションのセット中のそれぞれのアプリケーションは、それが最前面状態にない(例えば、ここに説明されている様に完全に又は部分的に隠されているか又は保留されている)ときも実行中のままである。1つの実施形態では、ラッパーアプリケーションは、ウェブブラウザからの呼び出しに応えて、それぞれがアプリケーションのセット中の或るアプリケーションを表現しているアイコンのセットを提示することができ、アイコンのセットは、選択先又は切り替え先として利用できるアプリケーションのパレットを形成することができる。
1つの実施形態では、本発明による方法は、第1のオペレーティングシステムを実行する段階と、第1のオペレーティングシステム上のウェブブラウザを実行する段階と、ウェブブラウザ上のラッパーアプリケーションを実行する段階と、ラッパーアプリケーション上の少なくとも1つのアプリケーションを実行する段階と、を含むものとすることができる。ラッパーアプリケーションは、eメールアプリケーション、カレンダーアプリケーション、連絡先又は住所録アプリケーション、などの様な、アプリケーションのセットの一部とされる少なくとも1つのアプリケーションについて、ライフサイクル管理を提供することができる。1つの実施形態では、方法は、更に、それぞれのアプリケーションを走らせようとするとき、起動させようとするとき、又は終了させようとするときに、少なくとも1つの呼び出しを、APIを通じて、ラッパーアプリケーションとアプリケーションのセット中のそれぞれのアプリケーションの間で伝送する段階、を含んでいてもよい。また、方法は、更に、例えば第1のアプリケーションを起動させるときに、少なくとも1つの呼び出しをウェブブラウザとラッパーアプリケーションの間で伝送する段階、を含んでいてもよい。少なくとも1つの呼び出しを伝送する段階は、呼び出し又はソフトウェアメッセージを、APIを通じて、発行する段階、開始する段階、発動する段階、又は受信する段階、の1つであってもよい。
少なくとも、幾つかの実施形態では、ここに説明されている方法を実施するのに、実行可能なプログラミング命令を格納する機械可読非一時的記憶媒体を使用することができる。更に、データ処理システムが、ここに説明されている様に動作するように構成されてもよく、これらのデータ処理システムには、デスクトップコンピュータ、ラップトップコンピュータ、タブレットシステム、スマートフォン、埋込式デバイス、及び他の消費者向け電子デバイスの様な他の電子デバイス、を含めることができる。
本発明の他の特徴は、添付図面及び次に続く詳細な説明から自明となろう。
以上の概要は、本発明の全態様の包括的一覧を含むものではない。本発明は、以上に要約されている様々な態様並びに以下の詳細な説明中に開示されている様々な態様の全ての適した組合せから実践され得る全てのシステム及び方法を含むものと考えている。
本発明は、添付図面の諸図中に一例として描かれており、限定として描かれているわけではなく、図中、同様の符号は類似の要素を表している。
ウェブアプリケーションのためのソフトウェアアーキテクチャの一例を示している。 本発明の1つの実施形態による方法の一例をフローチャート形式で示している。 本発明の1つの実施形態による方法を説明するフローチャートである。 本発明の或る実施形態を示す別のフローチャートである。 本発明の或る実施形態を説明する別のフローチャートを示している。 図5Aと共に、本発明の或る実施形態を説明する別のフローチャートを示している。 図5A及び図5Bと共に、本発明の或る実施形態を説明する別のフローチャートを示している。 図5A−図5Cと共に、本発明の或る実施形態を説明する別のフローチャートを示している。 1つ又はそれ以上のネットワークを通じて1つ又はそれ以上のサーバへ連結されている1つ又はそれ以上のクライアントへウェブサービスを提供するべく、1つ又はそれ以上のネットワークを通じて相互接続されている複数のシステムの一例を示している。 本発明の1つ又はそれ以上の実施形態でのプッシュ通知を実施するための方法の一例を示している。 1つ又はそれ以上のウェブアプリケーションを選択するのに使用することのできる1つの実施形態のグラフィカルユーザーインターフェースの一例を示している。 1つ又はそれ以上のウェブアプリケーションを選択するのに使用することのできるグラフィカルユーザーインターフェースの別の例を示している。 1つ又はそれ以上のウェブアプリケーションを選択するのに使用することのできるグラフィカルユーザーインターフェースの別の例を示している。 1つ又はそれ以上のウェブアプリケーションを選択するのに使用することのできるグラフィカルユーザーインターフェースの別の例を示している。 eメールウェブアプリケーションのためのグラフィカルユーザーインターフェースの一例を示している。 連絡先又は住所録ウェブアプリケーションのためのグラフィカルユーザーインターフェースの一例を示している。 カレンダーウェブアプリケーションのためのグラフィカルユーザーインターフェースの一例である。 地図又は地図支援付き探索ウェブアプリケーションのためのグラフィカルユーザーインターフェースの一例である。 ワードプロセッシング文書、プレゼンテーション文書、及びスプレッドシート文書の様な、ユーザー文書へのアクセスを可能にするためのグラフィカルユーザーインターフェースの一例である。 本発明の様々な実施形態で使用することのできるデータ処理システムの一例をブロック線図形式で示している。 本発明の幾つかの実施形態で有用なソフトウェアスタックの例示としての実施形態を示している。 本発明の幾つかの実施形態で有用な例示としてAPIアーキテクチャのブロック線図を描いている。
本発明の様々な実施形態及び態様が、以下に論じられている詳細事項に関連して説明されており、添付図面はそれら様々な実施形態を示している。次に続く説明及び図面は、本発明を例示するものであり、本発明を限定するものと解釈されてはならない。本発明の様々な実施形態を十分に理解してもらうために、数々の具体的な詳細事項が記載されている。とはいえ、本発明の実施形態の簡潔な論考を提供するために、場合によっては、周知の又は従来の詳細事項は記述されていない。
明細書中の「1つの実施形態」又は「或る実施形態」という言及は、実施形態と関連して説明されている或る特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態の中に含まれ得ることを意味する。明細書中の様々な場に「1つの実施形態では」という語句が登場するが、これは、必ずしもどれもが同じ実施形態を指しているわけではない。付随する図中に描かれているプロセスは、ハードウェア(例えば、回路構成、専用論理、など)、ソフトウェア、又はその両者の或る組合せ、を備えている処理論理によって遂行される。プロセスは以下には何らかの順次的動作の観点から説明されているが、説明されている動作の幾つかは異なった順序で遂行されてもよいものと評価されたい。また、幾つかの動作は、順次ではなしに並列に遂行されてもよい。
ウェブアプリケーションアーキテクチャは、ウェブブラウザ上で走る仮想機械様の環境又はオペレーティングシステムを提供することのできるラッパーアプリケーションを利用することができる。eメールアプリケーション、カレンダーアプリケーション、連絡先アプリケーション、又は別のアプリケーションの様な、1つ又はそれ以上のウェブアプリケーションのセットが、当該アプリケーションのセット中のアプリケーションのそれぞれについてライフサイクル管理を提供することのできるラッパーアプリケーションの一番上で走っている。ラッパーアプリケーションは、アプリケーションが起動された後、アプリケーションのセット中のアプリケーション間での切り替え中もアプリケーションのそれぞれを引き続き実行させておくことができ、これが全て単一のウェブブラウザウインドウ内で遂行されることになる。ラッパーアプリケーションは、ユーザーをアプリケーションのセット中のウェブアプリケーションの全てについて認証するのに単一のログイン点を提供することができ、ラッパーアプリケーションは、ひとたびログアウト(又は認証時間の失効)が1つのアプリケーションで起こったら、起動されているウェブアプリケーションの全てに自動ログアウトをもたらすことができる。このアーキテクチャを通じて創出される環境は、ユーザーにとってより良いユーザーインターフェースを提供することができ、というのも、例えば、開ける必要のあるウインドウはより少なく、ユーザーがアプリケーション間で切り替える際に単一のウェブブラウザウインドウ内に多数のウインドウ又は多数のタブを開かなくてもそれぞれの実行中のウェブアプリケーションの状態及びコンテキストを維持させられるからである。この環境は、更に、通知(例えばプッシュ通知)を隠されているアプリケーション宛てに提供できるようにし、また、アプリケーションエラーを、他のアプリケーションに影響を及ぼすこと無く、隔離し、回復させられるようにする。
図1は、ウェブアプリケーションアーキテクチャの一例であって、図1に示されているソフトウェアスタックを有するウェブアプリケーションアーキテクチャを示している。このアーキテクチャ101では、アプリケーションのセット103は、1つ又はそれ以上のAPI104を通じてラッパーアプリケーション105相手に動作しており、ラッパーアプリケーション105はウェブブラウザ107上で1つ又はそれ以上のAPI106を通じて走っている。ウェブブラウザ107はというと、1つ又はそれ以上のAPI108を通じて、1つの実施形態ではプリエンプティブマルチタスキングオペレーティングシステム109上で走っているが、別の実施形態では、マルチタスキングオペレーティングシステムは、プリエンプティブでもない又はマルチタスキングでもない他の既知のオペレーティングシステムと置き換えられてもよい。図1のソフトウェアスタックに示されているソフトウェア全ては、データ処理システム上で、具体的にはデータ処理システム110のハードウェア上で動作している。
アプリケーションのセット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上で走っている。
ラッパーアプリケーション105は、1つの実施形態では、アプリケーションのセット103のための仮想マシン環境を提供することができ、ウェブブラウザ107上で走ることができ、ラッパーアプリケーションとウェブブラウザの間でAPI106を通じて呼び出しを伝送することができる。図5A−図5Dは、API106を通じた呼び出しの例を幾つか提供している。1つの実施形態では、ラッパーアプリケーションは、ウェブブラウザ中のURLテキストエントリフィールドを所有していて、ウェブブラウザへの呼び出しを使用してURLフィールドを制御し、またウェブブラウザへの呼び出しを使用してタイトルバーを制御しており、例えば、ラッパーアプリケーションは、ラッパーアプリケーションとウェブブラウダの間の呼び出しを通じて、タイトルバー中の名前を現在最前面のアプリケーションを反映するように変更させることができる。どの様にラッパーアプリケーションがタイトルバーの名前を制御するのかという例が図11から図15を通して示されている。ラッパーアプリケーションは、アプリケーションのセット中のそれぞれのアプリケーションについてライフサイクル管理を提供することができる。1つの実施形態では、これには、アプリケーションのそれぞれを起動する段階及び終了する段階が含まれる。また、ラッパーアプリケーションは、アプリケーション間での切り替え、アプリケーションのエラーの対処(例えば、誤った振る舞いをしているアプリケーション又はクラッシュしたアプリケーションを解体し、ユーザーに向けてアプリケーションを再度立ち上げることを申し出ること)を含め、他の機構及び機能や動作を提供することができる。また、1つの実施形態では、ラッパーアプリケーションは、非アクティブであるか又はクラッシュしているか振る舞いが不良であるアプリケーションのシャットダウンを強制することができる。また、ラッパーアプリケーションは、ユーザーについて及びアプリケーションのセット中のアプリケーション全てについて、単一のログイン点及び単一のログアウト点を提供することもできる。1つの実施形態では、ラッパーアプリケーションは、カーネル、メモリの扱い、プロセス及びスレッドの動作のスケジューリングといった様な、従来のオペレーティングシステムの一定の機構を含んでいないが、別の実施形態では、ラッパーアプリケーションは、従来のオペレーティングシステムのこれらの機能又は機構或いはこれら機能又は機構の一部分を含んでいてもよい。
1つの実施形態では、ラッパーアプリケーションは、アプリケーションのセット103中のウェブアプリケーションの1つ又はそれ以上へのプッシュ通知を提供することもでき、1つの実施形態では、アプリケーションのセット103中の最前面ではないアプリケーション宛てのプッシュ通知を最前面になっているアプリケーション上のユーザーインターフェースを通じて提示させることができる。1つの実施形態では、ラッパーアプリケーション及びアプリケーションのセット103は、ウェブブラウザのメモリ空間によって定義されているメモリ空間の中で動作し、ラッパーアプリケーション及びアプリケーションのセット103が走っているウェブブラウザのウインドウによって定義されているスレッド又はプロセス内で動作する。
ウェブブラウザ107は、MicrosoftのInternet Explorer、又はカリフォルニア州クパチーノのApple Inc.のSafari、又はFirefox、Opera、又は他の既知のウェブブラウザ、の様な従来のウェブブラウザとすることができる。ウェブブラウザは、HTMLの様なマークアップ言語にエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、ウェブページはウェブブラウザによって1つ又はそれ以上のURL(ユニフォームリソースロケータ)を通じて検索される。1つの実施形態でのウェブブラウザは、ウェブブラウザ中のレイアウトエンジンを使用して、ウェブページのマークアップ言語をウェブページのDOM(文書オブジェクトモデル)へ処理するように構成されており、更にウェブブラウザは、ウェブページと関連付けられるカスケーディングスタイルシートを処理してウェブページを提示させるように構成されていてもよい。1つの実施形態では、ウェブブラウザ107は、オペレーティングシステム109と対話するのに1つ又はそれ以上のAPI108を使用することができ、これらのAPIは、オペレーティングシステムへの、当技術で既知のTCP/IPなどの様なウインドウ化機能及びネットワーク化機能を求める呼び出しをサポートすることができる。
図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中の直近に使用されたアプリケーションを起動するようにしてもよいし、追加的に、以下に更に説明されている様にアプリケーション間の切り替えのために使用することのできるアイコンを提示するようにしてもよい。
図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つ又はそれ以上のウェブサーバと対話する。
図6は、1つ又はそれ以上のクライアントデバイスと対話することのできるその様なウェブサーバの例を示している。ユーザーは、或る時点では、ユーザーの会社に在るユーザーのクライアントデバイスの様な1つのクライアントデバイスを使用しているかもしれないし、また別の時点では、自宅に在るユーザー用のコンピュータの様な別のクライアントデバイスを使用しているかもしれないが、何れの場合も、従来の又は標準的なウェブブラウザをウェブアプリケーションと共に使用して、図6に示されている様な1つ又はそれ以上のウェブサーバ上に記憶されているデータにアクセスしデータと対話することができる。
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のアプリしか見えず、その間、他のアプリは少なくとも部分的に隠されている。
動作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で、ラッパーアプリケーションは、それぞれの実行中のアプリケーションに各々のデータを保存させ、次いでそれぞれの起動されているアプリケーションを終結及び解体し、ユーザーをそれぞれの起動されているアプリケーションについてログアウトさせる。この様に、ラッパーアプリケーションは、ユーザーが起動されているアプリケーションの全てを取り扱い、全ての起動されているアプリケーションを終結し、それらのウェブアプリケーションのそれぞれについてウェブサービスからログアウトするのに、単一の点を提供している。この特定の実施形態では、これにより、ユーザーは個々のウェブサービスを一々ログアウトする必要がなくなるため、ユーザーインターフェース及びユーザーの各種ウェブサービスとの対話が簡略化される。
図3に示されている方法は、アプリケーションのセット103中の2つのアプリケーションの使用を示しているが、評価しておきたいこととして、より多くのアプリケーションが同時に起動され使用されることができ、且つ1つの実施形態では、タブインターフェース無しにどれもが同じウェブブラウザウインドウ内に提示されていて、そのそれぞれは同じウェブブラウザウインドウ中のウェブブラウザ上で走っているラッパーアプリケーション内のiframとして又はiframeの中で実行している。1つの実施形態では、当該ウェブブラウザウインドウのメモリ空間は、ラッパーアプリケーション及びアプリケーションのセット103中のそれぞれのアプリケーションへも割り付けられており、それらは当該特定のウェブブラウザウインドウへ割り付けられている当該メモリ空間内で走るように拘束されている。
図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つの実施形態では、ラッパーアプリケーションは、ユーザーをアプリケーションのセット中の全アプリケーションについてログアウトさせることができ、その結果、ユーザーはユーザー名及びパスワードの様な認証情報を再入力することを求められる。
図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中のアプリケーションのそれぞれは、ユーザーロングインの都度ダウンロードされるようになっていてもよい。
図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中に起こる呼び出しと動作の例を提供している。
図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とすることができる。
図7は、1つ又はそれ以上のウェブサーバからラッパーアプリケーション105のiframeの中で走る或る特定のアプリケーションへ通知を送信するのにプッシュ通知をどの様に使用することができるかの一例を説明している。プッシュ通知は、eメールサーバ601A、カレンダーサーバ601B、又は連絡先サーバ601Cの様な、ウェブサーバのうちの何れか1つが、クライアントデバイス605の様なクライアントデバイス上のウェブブラウザへ通知を提供することによって始まる。ウェブブラウザ705は、API106を介するといった様に呼び出しを通じて、クライアントデバイス上のウェブブラウザの中で走っているラッパーアプリケーション105の様なラッパーアプリケーションへ連絡することができる。すると、ラッパーアプリケーションは、709に示されている様に、プッシュ通知を送った該当するウェブサーバと対話するアプリへ通知を提供する。
図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は、ここに説明されている様に、選択されたアイコンに対応している選択されたアプリケーションの起動(前に起動されていない場合)を引き起こすことになる。
図11から図15は、アプリケーションのセット103の中に在る特定のアプリケーション又はウェブアプリケーションの例を提供している。具体的には、図11は、タイトルバー805中の「メール」の語によって指し示されている様にeメールアプリケーションを示している。先に説明されている様に、ラッパーアプリケーションは、ウェブブラウザとの呼び出しのセットを通じて(例えば、API106を通じて)、タイトルバー805を制御又は所有することができ、現在の最前面アプリケーションとして適正なタイトルを提供することができる。図12は、1つの実施形態ではアプリケーションのセット103の一部である連絡先又は住所録アプリケーションのユーザーインターフェースの一例を示している。図13は、1つの実施形態ではアプリケーションのセット103中のアプリケーションのうちの1つであるカレンダーアプリケーションのユーザーインターフェースの一例を示している。
図14は、スマートフォンの様なデバイスを探索するのに使用することができ、1つの実施形態によればアプリケーションのセット103のセット中のアプリケーションのうちの1つとされている地図アプリケーションの一例を示している。図15は、ユーザーが、プレゼンテーション文書、ワードプロセッシング文書、及びスプレッドシート、の様な文書の集合体にアクセスすること及び/又はそれらと対話することを可能にするユーザーインターフェースの一例であり、具体的には、文書アプリケーション1501は、ユーザーが、1つ又はそれ以上のウェブサーバ上にユーザーが記憶させている文書と対話できるようにする。
図16は、本発明の幾つかの実施形態で使用することのできる、コンピュータシステムの様な例示としてのデータ処理システムを描いているブロック線図である。図16は、コンピュータシステムの様々な構成要素を例示しているが、構成要素の相互接続の何らかの特定のアーキテクチャ又は方式については、その様な詳細は本発明には密接な関係のないことから、表現しないことにする。より少ない構成要素又はより多くの構成要素を有する他のコンピュータシステムの様な他のデータ処理システムも、本発明と共に使用することができるものと評価しておきたい。
図16に描かれている様に、データ処理システムの形態であるシステム1600は、処理システム1620、電源1625、メモリ1630、及び不揮発性メモリ1640(例えば、ハードドライブ、フラッシュメモリ、相変化メモリ(PCM)、など)と連結されている(単数又は複数の)バス1650を含んでいる。(単数又は複数の)バス1650は、当技術で周知されている様に、各種ブリッジ、コントローラ、及び/又はアダプタを通じて互いへ接続されていてもよい。処理システム1620は、メモリ1630及び/又は不揮発性メモリ1640から、記憶されている(単数又は複数の)命令を取り出し、命令を実行して、上述の動作を遂行させることができよう。バス1650は、以上の構成要素を一体に相互接続し、更には、それらの構成要素を、随意のドック1660、ディスプレイコントローラ及びディスプレイデバイス1670、入力/出力デバイス1680(例えば、NIC(ネットワークインターフェースカード)、カーソルコントロール(例えば、マウス、タッチスクリーン、タッチパッド、など)、キーボード、など)、及び随意の(単数又は複数の)ワイヤレス送受信器1690(例えば、ブルートゥース、WiFi、赤外線、セルラー電話受信器、など)へ相互接続している。データ処理システム1600は、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント(PDA)、移動体電話、携帯式ゲームシステム、携帯式メディアプレーヤ、移動体電話やメディアプレーヤ及び/又はゲームシステムを備えていることもあるタブレット、又はハンドヘルドコンピューティングデバイス、又は他の型式の消費者向け電子デバイスであってもよい。別の例として、データ処理システム1600は、ネットワークコンピュータ又は別のデバイス内の埋込式処理デバイスであってもよい。
幾つかの実施形態では、1つ又はそれ以上のアプリケーションプログラミングインターフェース(API)が使用されている。APIは、プログラムコード構成要素又はハードウェア構成要素(以下「API実施構成要素」)によって実施されるインターフェースであって、異なったプログラムコード構成要素又はハードウェア構成要素(以下「API呼び出し構成要素」)がAPI実施構成要素によって提供されている1つ又はそれ以上の機能、方法、手続き、データ構造、クラス、及び/又は他のサービスにアクセスし使用できるようにするインターフェースである。APIは、API呼び出し構成要素とAPI実施構成要素の間で受け渡される1つ又はそれ以上のパラメータを定義することができる。
APIは、API呼び出し構成要素の開発者(第三者機関開発者であってもよい)が、API実施構成要素によって提供されている規定の機構を活用できるようにしている。API呼び出し構成要素は1つのこともあれば、1つより多いこともあろう。APIは、コンピュータシステム又はプログラムライブラリが、アプリケーションからのサービスを求める要求をサポートするために提供しているソースコードインターフェースとしてもよい。オペレーティングシステム(OS)は複数のAPIを有し、OS上で走るアプリケーションがそれらAPIのうちの1つ又はそれ以上を呼び出せるようにしていてもよく、サービス(例えばプログラムライブラリなど)は複数のAPIを有し、サービスを使用するアプリケーションがそれらAPIのうちの1つ又はそれ以上を呼び出せるようにしていてもよい。APIは、アプリケーションが構築されるときに翻訳又はコンパイルできるものとしてプログラミング言語に照らして規定されていよう。
いくつかの実施形態では、API実施構成要素は、1つより多くのAPIを提供していて、APIそれぞれは、API実施構成要素によって実施される異なった態様の機能性にアクセスする異なった態様の違ったビュー又はそれら異なった態様を備える違ったビューを提供していてもよい。例えば、API実施構成要素の1つのAPIは、機能の第1のセットを提供していて、第三者機関開発者へ露出されているものとしてもよく、API実施構成要素の別のAPIは、隠蔽されていて(露出されていない)、機能の第1のセットのサブセットを提供し、更には機能の第1のセット中には無い試験又はデバッグの様な機能の別のセットを提供しているものとしてもよい。他の実施形態では、API実施構成要素は、それ自身が、下層のAPIを介して1つ又はそれ以上の他の構成要素を呼び出すようになっていてもよく、ひいては、API呼び出し構成要素とAPI実施構成要素を兼ねていてもよい。
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経由で受け渡されることになるデータ又は他のアイテムを指し示す機能又は方法又は別の方途に対するポインタ、とすることができる。
また、データタイプ又はクラスは、APIによって提供されていて、API実施構成要素によって実施されるものである。而して、API呼び出し構成要素は、API中に提供されている定義を使用することによって、変数を宣言し、ポインタを使用して、その様な型式又はクラスの不変値を使用又はインスタンス化する。
概して、APIは、API実施構成要素によって提供されるサービス又はデータへアクセスするのに、又はAPI実施構成要素によって提供される動作又は演算処理の遂行を開始させるのに、使用することができる。一例として、API実施構成要素及びAPI呼び出し構成要素は、それぞれ、オペレーティングシステム、ライブラリ、デバイスドライバ、API、アプリケーションプログラム、又は他のモジュールの何れか1つとすることができる(API実施構成要素及びAPI呼び出し構成要素は、互いに同じ型式のモジュールであってもよいし互いと異なった型式のモジュールであってもよいものと理解されたい)。API実施構成要素は、幾つかの場合には、ファームウェア、マイクロコード、又は他のハードウェア論理に、少なくとも部分的に埋め込まれていてもよい。幾つかの実施形態では、APIは、クライアントプログラムがソフトウェア開発キット(SDK)ライブラリによって提供されるサービスを使用できるようにしていてもよい。他の実施形態では、アプリケーション又は他のクライアントプログラムは、アプリケーションフレームワークによって提供されるAPIを使用している。これらの実施形態では、アプリケーション又はクライアントプログラムは、SDKによって提供されAPIによって提供される機能又は方法への呼び出しを組み入れているか、又はSDKによって定義されAPIによって提供されるデータ型式又はオブジェクトを使用していよう。アプリケーションフレームワークは、これらの実施形態では、フレームワークによって定義される各種事象へ応答するプログラムのための主事象ループを提供している。APIは、アプリケーションが、事象及び事象への応答を、アプリケーションフレームワークを使用して規定できるようにしている。幾つかの実施形では、API呼び出しは、アプリケーションに、ハードウェアデバイスの能力及び状態を、入力能力及び状態、出力能力及び状態、処理能力、パワー状態、記憶能力及び状態、通信能力、など、の様な態様に関するものを含め、報告することができ、APIは、部分的に、ファームウェア、マイクロコード、又は一部がハードウェア構成要素上で実行している他の低級論理によって、実施されていてもよい。
API呼び出し構成要素は、ローカル構成要素(即ち、API実施構成要素と同じデータ処理システム上)であってもよいし、リモート構成要素(即ち、API実施構成要素とは異なったデータ処理システム上)であって、APIを通じてネットワーク経由でAPI実施構成要素と通信するものであってもよい。API実施構成要素は、API呼び出し構成要素として行動する(即ち、それは異なったAPI実施構成要素によって露出されているAPIへの呼び出しを行う)こともあり、API呼び出し構成要素もまた異なったAPI呼び出し構成要素へ露出されるAPIを実施することによってAPI実施構成要素として行動することがあるものと理解されたい。
APIは、異なったプログラミング言語で書かれた複数のAPI呼び出し構成要素がAPI実施構成要素と通信できるようにしていてもよく(而して、APIは、API実施構成要素とAPI呼び出し構成要素の間の呼び出しと戻しを翻訳するための機構を含むものとなる)、とはいえ、APIは特定のプログラミング言語に照らして実施されていてもよい。API呼び出し構成要素は、1つの実施形態では、APIの或るセットを或るOSプロバイダから、APIの別のセットをプラグインプロバイダから、APIのもう1つのセットを別のプロバイダ(例えば、ソフトウェアライブラリのプロバイダ)又は当該APIの別のセットのクリエータから、という様に、異なったプロバイダからAPIを呼び出すこともある。
図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へ或る値を戻す。
API実施構成要素1810は、追加の機能、方法、クラス、データ構造、及び/又はAPI1820を通じて規定されておらずAPI呼び出し構成要素1830には利用可能となっていない他の機構を含んでいてもよいものと評価しておきたい。API呼び出し構成要素1830は、API実施構成要素1810と同じシステム上に在ってもよいし、リモートに置かれていて、API1820を使用してネットワーク経由でAPI実施構成要素1810にアクセスしていてもよいものと理解されたい。図18は、単一のAPI呼び出し構成要素1830がAPI1820と対話しているのを描いているが、API呼び出し構成要素1830とは異なった言語(又は同じ言語)で書かれている他のAPI呼び出し構成要素がAPI1820を使用していることもあろう。
API実施構成要素1810、API1820、及びAPI呼び出し構成要素1830は、情報を機械(例えば、コンピュータ又は他のデータ処理システム)によって読み出せる形式で記憶するための何らかのメカニズムを含んでいる機械可読非一時的記憶媒体に記憶されていてもよい。例えば、機械可読媒体には、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイス、など、が含まれ、機械可読媒体は、ローカル記憶媒体とすることもできるし、1つ又はそれ以上のネットワークによってクライアントデバイスへ連結されているリモートデバイス上の記憶媒体とすることもできる。
図17(「ソフトウェアスタック」)の例示としての実施形態では、アプリケーションは、幾つかのサービスAPIを使用してサービス1又はサービス2へ呼び出しを行い、また幾つかのOS APIを使用してオペレーティングシステム(OS)へ呼び出しを行うことができる。サービス1及びサービス2は、幾つかのOS APIを使用してOSへ呼び出しを行うことできる。
サービス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から戻された値を受信する。
明細書中の「1つの実施形態」又は「或る実施形態」という言及は、実施形態と関連して説明されている或る特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態の中に含まれていることを意味する。明細書中の様々な場に「1つの実施形態では」という語句が登場するが、これは、必ずしもどれもが同じ実施形態を指しているわけではない。
以上の明細書中に、本発明をその具体的な実施形態に関して説明してきた。とはいえ、それに対し様々な修正及び変更が本発明のより広範な精神及び範囲から逸脱すること無く成され得ることは明らかであろう。従って、明細書及び図面は、制限を課す意味ではなしに説明を目的とする意味で考慮されるべきである。
(補遺1)ラッパーアプリケーションAPI
Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236
(補遺2)クラウドキットAPI
Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236

Figure 0005930236
101 ウェブアプリケーションアーキテクチャ
103 アプリケーションのセット
104 API(アプリケーションプログラミングインターフェース)
105 ラッパーアプリケーション
106 API
107 ウェブブラウザ
108 API
109 オペレーティングシステム
110 データ処理システムハードウェア
401 シーケンス
501 ログインシーケンス
503 スタートアップシーケンス
505 バックグラウンドシーケンス
507、509 シーケンス
515 認証サーバ
517 ブラウザ
519 コンテンツ配信ネットワーク
521 アプリケーションサーバ
601 サーバのセット
601A eメールサーバ
601B カレンダーサーバ
601C 連絡先サーバ
603 インターネット
605 クライアントデバイス
607 セットアップサービス
705 ウェブブラウザ
709 アプリ
801 ディスプレイデバイス
802 デスクトップ
803 メニューバー
804 ウェブブラウザウインドウ
805 タイトルバー
806 URLテキストエントリフィールド
807 閉じるボタン
808 戻るボタン
809 進むボタン
810、811、812 アプリケーションを表現しているアイコン
813 スイッチャーアイコン
814 ログアウトアイコン、サインアウトボタン
1101 eメールアプリケーション
1201 連絡先アプリケーション
1501 文書アプリケーション
1620 処理システム
1625 電源
1630 メモリ
1640 不揮発性メモリ
1650 バス
1660 ドック
1670 ディスプレイコントローラ及びディスプレイデバイス
1680 入力/出力デバイス)
1690 ワヤレス送受信器
1800 APIアーキテクチャ
1810 API実施構成要素
1820 API
1830 API呼び出し構成要素

Claims (20)

  1. データ処理システム上で実行されたときに前記データ処理システムに或る方法を遂行させる実行可能な命令を格納している機械可読非一時的記憶媒体において、前記方法は、
    第1のオペレーティングシステム(OS)を実行する段階と、
    前記第1のOS上のウェブブラウザを実行する段階と、
    前記ウェブブラウザのメモリ空間によって定義されるメモリ空間内のラッパーアプリケーションであって、少なくとも第1のアプリケーションについてライフサイクル管理を提供しているラッパーアプリケーションを実行する段階と、
    前記ラッパーアプリケーションの中で前記第1のアプリケーションを実行する段階であって、前記ラッパーアプリケーションは少なくとも第1のアプリケーションについてライフサイクル管理を提供し、最前面状態から非最前面状態への切り替えを提供し、前記第1のアプリケーションは、ウェブページの対応するiframeにおいて実行し、それが非最前面状態へ切り替えられた後も、実行中の状態のままである、段階と、
    前記第1のアプリケーションが実行に向け起動されるときの前記ラッパーアプリケーションと前記第1のアプリケーションの間の少なくとも1つの呼び出し、及び前記第1のアプリケーションが終結されるときの前記ラッパーアプリケーションと前記第1のアプリケーションの間の少なくとも1つの呼び出し、を伝送する段階と、
    前記第1のアプリケーションが起動されるときの前記ウェブブラウザと前記ラッパーアプリケーションの間の少なくとも1つの呼び出しを伝送する段階と、を備えている、機械可読非一時的記憶媒体。
  2. 少なくとも1つの呼び出しを伝送する段階は、呼び出し又はメッセージを、発行する段階、開始する段階、発動する段階、又は受信する段階の1つを備え、前記第1のOSは、プリエンプティブマルチタスキングOSであ、請求項1に記載の媒体。
  3. 前記ウェブブラウザは、当該ウェブブラウザが1つ又はそれ以上のURL(ユニフォームリソースロケータ)を通じて検索した、マークアップ言語でエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、前記ウェブブラウザは、当該ウェブブラウザ中のレイアウトエンジンを使用して、前記ウェブページの前記マークアップ言語を当該ウェブページのDOM(文書オブジェクトモデル)へ処理するように構成されていて、且つ前記ウェブページと関連付けられているカスケーディングスタイルシートを処理して当該ウェブページを提示させるように構成されている、請求項2に記載の媒体。
  4. アプリケーションのセットが前記ラッパーアプリケーションの中で実行しており、前記セットは、eメールアプリケーションである前記第1のアプリケーション、カレンダーアプリケーションである第2のアプリケーション、及び連絡先又は住所録アプリケーションである第3のアプリケーションを含んでおり、前記セット中のそれぞれのアプリケーションは、それが最前面となったときに前記ウェブブラウザの同じ単一のウインドウ中に提示される、請求項2に記載の媒体。
  5. 前記ラッパーアプリケーションは、前記アプリケーションのセットのためのオペレーティングシステムとして動作しており、前記セット中のそれぞれのアプリケーションは少なくとも部分的にJavaScriptで書かれている、請求項4に記載の媒体。
  6. 前記セット中のそれぞれのアプリケーションは、ウェブページの対応するiframeの中で実行しており、前記セット中のそれぞれのアプリケーションのための対応する前記iframeは、前記ラッパーアプリケーションによる行動を通じて、最前面アプリケーションとして提示されるか又は最前面アプリケーションとして提示されない、請求項4に記載の媒体。
  7. 前記ラッパーアプリケーションは、前記ウェブブラウザからの呼び出しに応えて、それぞれのアイコンが前記アプリケーションのセット中の或るアプリケーションを表現しているアイコンのセットの表示のためにデータを生成しており、前記呼び出しは、前記ウェブブラウザ中の前記同じ単一ウインドウの中での第1のアイコンの選択によって引き起こされるものである、請求項6に記載の媒体。
  8. 前記第1のアイコンの前記選択は、前記アプリケーション間で切り替えるために使用されており、前記ウェブブラウザの前記同じ単一ウインドウ中の前記アイコンのセットの前記提示を引き起こす、請求項7に記載の媒体。
  9. 前記アプリケーションのセット中のそれぞれのアプリケーションは、それが最前面アプリケーションから非最前面状態へ切り替えられた後も、コンテキスト及び状態が保存されて実行中の状態のままである、請求項8に記載の媒体。
  10. 前記コンテキストは、テキスト入力フォーカス及び位置の状態並びに入力されたユーザーデータを含み、前記ウェブブラウザの前記同じ単一ウインドウは、タブ付きウインドウを含んでおらず、前記ラッパーアプリケーションは、前記ウェブブラウザの前記同じ単一ウインドウのURLテキストエントリフィールド及びタイトルバーを所有している、請求項9に記載の媒体。
  11. 前記ラッパーアプリケーションは、前記アプリケーションのセット中のそれぞれのアプリケーションについてユーザーを認証し、ユーザーが前記セット中の前記アプリケーションのうちの1つでログアウトすると、又は前記セット中の前記アプリケーションのうちの1つでアクセスが失効すると、前記ラッパーアプリケーションは、当該ユーザーを前記アプリケーションのセット中の残りのアプリケーションからログアウトさせる、請求項9に記載の媒体。
  12. 前記ラッパーアプリケーションは、前記アプリケーションのセット中のそれぞれのアプリケーションについて別々にエラーに対処しており、前記セット中の1つのアプリケーションの再始動を、当該セット中の他のアプリケーションが実行を継続している間に行わせる、請求項9に記載の媒体。
  13. 前記ラッパーアプリケーションは、適正なユーザー認証がセットアップサービスへ送信されたことに応えて、前記アプリケーションのセット中の前記アプリケーションのそれぞれについてウェブサーバのアドレス情報を受信する、請求項12に記載の媒体。
  14. データ処理システムによる実行のための実行可能な命令を格納している機械可読非一時的記憶媒体において、前記命令は、
    前記データ処理システムのオペレーティングシステム上で走っているウェブブラウザのメモリ空間によって定義されたメモリ空間内で走るように構成されているラッパーアプリケーションと、
    前記ラッパーアプリケーションの中で走るように構成されているアプリケーションのセットであって、1つ又はそれ以上のサーバからのデータを提供しているアプリケーションのセットと、を備えており、前記ラッパーアプリケーションは、前記アプリケーションのセット中のそれぞれのアプリケーションについてライフサイクル管理を提供し、前記アプリケーションのセット中の前記アプリケーション間の切り替えを提供し、前記切り替えはアプリケーションに最前面状態から非最前面状態へ切替えさせ、前記セット中の各アプリケーションは、ウェブページの対応するiframeにおいて実行し、それが最前面状態から非最前面状態へ切替えられた後も、実行中の状態のままである、機械可読非一時的記憶媒体。
  15. 前記ラッパーアプリケーションとそれぞれのアプリケーションの間では、前記アプリケーションが起動されるとき及び前記アプリケーションが最前面と非最前面の間で切り替えられるときに呼び出しが伝送され、前記ライフサイクル管理は、前記アプリケーションのセット中のそれぞれのアプリケーションの起動段階及び終了段階を備えている、請求項14に記載の媒体。
  16. 前記ラッパーアプリケーションと前記アプリケーションのセットは、同じ単一のウェブブラウザの中で実行するように構成されており、前記アプリケーションのセット中のそれぞれのアプリケーションは、前記非最前面状態のときも実行中のままであり、前記ラッパーアプリケーションは、前記ウェブブラウザからの呼び出しに応えて、それぞれのアイコンが前記アプリケーションのセット中の或るアプリケーションを表現しているアイコンのセットを提示し、前記呼び出しは、前記同じ単一のウェブブラウザウインドウの中での第1のアイコンの選択によって引き起こされるものであり、前記第1のアイコンは前記アプリケーションのセット中の前記アプリケーション間で切り替えるのに使用されている、請求項15に記載の媒体。
  17. 機械実施式の方法において、
    第1のオペレーティングシステム(OS)を実行する段階と、
    前記第1のOS上のウェブブラウザを実行する段階であって、前記ウェブブラウザは、当該ウェブブラウザが1つ又はそれ以上のURL(ユニフォームリソースロケータ)を通じて検索した、マークアップ言語でエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、前記ウェブブラウザは、当該ウェブブラウザ中のレイアウトエンジンを使用して、前記ウェブページの前記マークアップ言語を当該ウェブページのDOM(文書オブジェクトモデル)へ処理するように構成されていて、且つ前記ウェブページと関連付けられているカスケーディングスタイルシートを処理して当該ウェブページを提示させる、段階と、
    前記ウェブブラウザのメモリ空間によって定義されたメモリ空間内のラッパーアプリケーションであって、少なくとも第1のアプリケーションについてライフサイクル管理を提供しているラッパーアプリケーションを実行する段階と、
    前記ラッパーアプリケーション上の前記第1のアプリケーションを実行する段階であって、ラッパーアプリケーションの動作を通じて前記第1のアプリケーションが最前面アプリケーションとして提示されるか又は最前面アプリケーションとして提示されず、前記第1のアプリケーションは、前記ウェブページの対応するiframeにおいて実行し、それが最前面アプリケーションから非最前面状態へ切替えられた後も、実行中の状態のままである、段階と、
    前記第1のアプリケーションが実行に向け起動されるときの前記ラッパーアプリケーションと前記第1のアプリケーションの間の少なくとも1つの呼び出し、及び前記第1のアプリケーションが終結されるときの前記ラッパーアプリケーションと前記第1のアプリケーションの間の少なくとも1つの呼び出し、を伝送する段階と、
    前記第1のアプリケーションが起動されるときの前記ウェブブラウザと前記ラッパーアプリケーションの間の少なくとも1つの呼び出しを伝送する段階と、を備えており、少なくとも1つの呼び出しを伝送する段階は、呼び出し又はメッセージを、発行する段階、開始する段階、発動する段階、又は受信する段階の1つを備え、前記第1のOSは、プリエンプティブマルチタスキングOSであり、前記ラッパーアプリケーションのメモリ空間は前記ウェブブラウザの前記メモリ空間によって定義されている、方法。
  18. アプリケーションのセットが前記ラッパーアプリケーションの中で実行しており、前記セットは、eメールアプリケーションである前記第1のアプリケーション、カレンダーアプリケーションである第2のアプリケーション、及び連絡先又は住所録アプリケーションである第3のアプリケーションを含んでおり、前記セット中のそれぞれのアプリケーションは、それが最前面となったときに前記ウェブブラウザの同じ単一のウインドウ中に提示され、前記ラッパーアプリケーションは、前記アプリケーションのセットのためのオペレーティングシステムとして動作しており、前記セット中のそれぞれのアプリケーションは少なくとも部分的にJavaScriptで書かれている、請求項17に記載の方法。
  19. データ処理システムにおいて、
    第1のオペレーティングシステム(OS)を実行するための手段と、
    前記第1のOS上のウェブブラウザを実行するための手段と、
    前記ウェブブラウザ内のメモリ空間によって定義されたメモリ領域内のラッパーアプリケーションであって、アプリケーションのセットにおける複数のアプリケーションについてライフサイクル管理を提供しているラッパーアプリケーションを実行するための手段と、
    前記ラッパーアプリケーション上の前記アプリケーションのセットを実行するための手段であって、前記セットにおける各アプリケーションはウェブページの対応するiframeにおいて実行し、前記セットにおける各アプリケーションのための対応するiframeは前記ラッパーアプリケーションによる動作を通じて最前面アプリケーションとして提示されるか又は最前面アプリケーションとして提示されず、前記アプリケーションのセットにおける各アプリケーションは、それが前記最前面アプリケーションから非最前面状態へ切替えられた後も、実行中の状態のままである、手段と、
    前記アプリケーションのセットにおける第1のアプリケーションが実行に向け起動されるときの前記ラッパーアプリケーションと前記第1のアプリケーションの間の少なくとも1つの呼び出し、及び前記第1のアプリケーションが終結されるときの前記ラッパーアプリケーションと前記第1のアプリケーションの間の少なくとも1つの呼び出し、を伝送するための手段と、
    前記第1のアプリケーションが起動されるときの前記ウェブブラウザと前記ラッパーアプリケーションの間の少なくとも1つの呼び出しを伝送するための手段と、を備えているデータ処理システム。
  20. 少なくとも1つの呼び出しを伝送する段階は、呼び出し又はメッセージを、発行する段階、開始する段階、発動する段階、又は受信する段階の1つを備え、前記第1のOSは、プリエンプティブマルチタスキングOSであり、前記ウェブブラウザは、当該ウェブブラウザが1つ又はそれ以上のURL(ユニフォームリソースロケータ)を通じて検索した、マークアップ言語でエンコードされているウェブページを処理するソフトウェアアプリケーションプログラムであり、前記ウェブブラウザは、当該ウェブブラウザ中のレイアウトエンジンを使用して、前記ウェブページの前記マークアップ言語を当該ウェブページのDOM(文書オブジェクトモデル)へ処理するように構成されていて、且つ前記ウェブページと関連付けられているカスケーディングスタイルシートを処理して当該ウェブページを提示させるように構成されている、請求項19に記載のデータ処理システム。
JP2014522846A 2011-07-26 2012-07-06 ウェブアプリケーションアーキテクチャ Active JP5930236B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161511938P 2011-07-26 2011-07-26
US61/511,938 2011-07-26
US13/282,311 2011-10-26
US13/282,311 US9384101B2 (en) 2011-07-26 2011-10-26 Web application architecture
PCT/US2012/045736 WO2013015968A1 (en) 2011-07-26 2012-07-06 Web application architecture

Publications (2)

Publication Number Publication Date
JP2014522039A JP2014522039A (ja) 2014-08-28
JP5930236B2 true JP5930236B2 (ja) 2016-06-08

Family

ID=47598304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014522846A Active JP5930236B2 (ja) 2011-07-26 2012-07-06 ウェブアプリケーションアーキテクチャ

Country Status (7)

Country Link
US (1) US9384101B2 (ja)
EP (1) EP2737402B1 (ja)
JP (1) JP5930236B2 (ja)
KR (1) KR101702726B1 (ja)
CN (1) CN103718161B (ja)
AU (1) AU2012287409B2 (ja)
WO (1) WO2013015968A1 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8600803B1 (en) * 2010-05-18 2013-12-03 Google Inc. Incentivizing behavior to address pricing, tax, and currency issues in an online marketplace for digital goods
US8452837B2 (en) * 2010-11-03 2013-05-28 Google Inc. Data delivery
US8893077B1 (en) * 2011-10-12 2014-11-18 Google Inc. Service to generate API libraries from a description
US9830596B2 (en) * 2011-11-01 2017-11-28 Stripe, Inc. Method for conducting a transaction between a merchant site and a customer's electronic device without exposing payment information to a server-side application of the merchant site
US9092540B2 (en) 2012-02-14 2015-07-28 International Business Machines Corporation Increased interoperability between web-based applications and hardware functions
US8910115B2 (en) * 2012-04-02 2014-12-09 Kony Solutions, Inc. Systems and methods for application development
US8898766B2 (en) * 2012-04-10 2014-11-25 Spotify Ab Systems and methods for controlling a local application through a web page
US9798457B2 (en) * 2012-06-01 2017-10-24 Microsoft Technology Licensing, Llc Synchronization of media interactions using context
US9106690B1 (en) * 2012-06-14 2015-08-11 Bromium, Inc. Securing an endpoint by proxying document object models and windows
KR20140009778A (ko) * 2012-07-13 2014-01-23 라인 가부시키가이샤 메신저 플랫폼의 사용자 관계정보에 기반하여 다양한 서비스를 제공하는 방법 및 시스템
US9348490B2 (en) * 2012-09-14 2016-05-24 Ca, Inc. User interface with configuration, registration, and runtime selection of views
US9009804B2 (en) * 2012-11-30 2015-04-14 Ca, Inc. Method and system for hybrid software as a service user interfaces
US11669584B2 (en) 2013-02-10 2023-06-06 Wix.Com Ltd. System and method for third party application activity data collection
US20140237020A1 (en) * 2013-02-20 2014-08-21 Sap Portals Israel Ltd. Web-based operating system framework application network
US20140280699A1 (en) * 2013-03-13 2014-09-18 General Instrument Corporation Method and apparatus for enabling discovery and communications between unrelated browser sessions
US9888059B2 (en) * 2013-03-15 2018-02-06 Gordon E. Seay Methods and systems for switching between software applications
US20140310045A1 (en) * 2013-04-16 2014-10-16 Go Daddy Operating Company, LLC Generating and Displaying a Calendar Event Recurrence Preview
US9658747B2 (en) 2013-10-01 2017-05-23 Microsoft Technology Licensing, Llc Virtual tabs supporting web content suspension
KR102251844B1 (ko) * 2013-12-04 2021-05-13 윅스.컴 리미티드 제 3 자 애플리케이션 활동 데이터 수집을 위한 시스템 및 방법
US9369874B2 (en) * 2014-07-26 2016-06-14 Bernard Mallala Otiato Controlling network access using a wrapper application executing on a mobile device
TWI502482B (zh) * 2014-07-29 2015-10-01 Insyde Software Corp Handheld electronic device with the function of starting electronic device and its method, computer program product
CN104299155A (zh) * 2014-09-11 2015-01-21 浪潮软件集团有限公司 一种基于社交工具的电子发票开具方法
CN104573025B (zh) * 2015-01-12 2018-09-04 北京京东尚科信息技术有限公司 一种提高页面加载速度的方法及系统
US10756985B2 (en) * 2015-01-27 2020-08-25 Nutanix, Inc. Architecture for implementing user interfaces for centralized management of a computing environment
US10454899B1 (en) * 2015-03-16 2019-10-22 Amazon Technologies, Inc. Controlling firewall ports in virtualized environments through public key cryptography
GB2537943A (en) * 2015-05-01 2016-11-02 Telemetry Ltd Secure reporting of events
US10073720B2 (en) * 2015-07-30 2018-09-11 Airwatch, Llc Restricted application visibility
CN105279064A (zh) * 2015-09-11 2016-01-27 浪潮电子信息产业股份有限公司 一种基于Windows平台Exchange Server压力测试方法
US20170201551A1 (en) * 2016-01-13 2017-07-13 Doky Inc. Collaborative Platform for Communication, Application Development and Use
CN105467708B (zh) * 2016-02-03 2021-04-20 京东方科技集团股份有限公司 一种写字板、电子写字设备及制作方法
CN105847322B (zh) * 2016-03-11 2019-03-29 王卓 一种app管理系统及方法
CN106254315A (zh) * 2016-07-19 2016-12-21 青松智慧(北京)科技有限公司 云安全业务系统接入方法及装置
US10404765B2 (en) 2016-11-01 2019-09-03 Microsoft Technology Licensing, Llc Re-homing embedded web content via cross-iframe signaling
US10715510B2 (en) * 2017-01-16 2020-07-14 Citrix Systems, Inc. Secure device notifications from remote applications
US11233867B2 (en) 2017-03-13 2022-01-25 Microsoft Technology Licensing, Llc On-demand push notification mechanism
CN107729107B (zh) * 2017-10-09 2021-02-02 武汉斗鱼网络科技有限公司 一种模态对话框处理方法及装置
US10803167B1 (en) 2018-02-20 2020-10-13 NortonLifeLock, Inc. Systems and methods for executing application launchers
US10747874B2 (en) 2018-05-22 2020-08-18 NortonLifeLock, Inc. Systems and methods for controlling an application launch based on a security policy
US11361284B1 (en) 2018-05-31 2022-06-14 Stripe, Inc. Payment processing method and apparatus using an intermediary platform
US11240247B2 (en) * 2018-07-27 2022-02-01 Microsoft Technology Licensing, Llc Multi-user computing device configured for executing applications in multiple user contexts simultaneously
US11113389B1 (en) 2019-08-15 2021-09-07 NortonLifeLock Inc. Systems and methods for providing persistent visual warnings for application launchers
US11054962B1 (en) 2019-12-16 2021-07-06 Digits Financial, Inc. System and method for displaying changes to a number of entries in a set of data between page views
US11048378B1 (en) * 2019-12-16 2021-06-29 Digits Financial, Inc. System and method for tracking changes between a current state and a last state seen by a user
US11789726B2 (en) * 2020-02-24 2023-10-17 Snowflake Inc. Semantic functional wrappers of services
KR102572197B1 (ko) * 2020-08-14 2023-08-29 주식회사 카카오 컨텐츠 박스 제공 방법 및 사용자 단말
US11765165B2 (en) * 2020-09-22 2023-09-19 Bank Of America Corporation Web-browser extension analysis and enhancement
CN112433877B (zh) * 2020-12-01 2024-05-17 北京五八信息技术有限公司 应用启动崩溃的检测方法、装置、电子设备及存储介质
US11610050B2 (en) * 2021-06-22 2023-03-21 Walkme Ltd. Cross-domain storage
KR102662989B1 (ko) * 2023-12-29 2024-05-03 주식회사 티맥스와플 어플리케이션 플랫폼을 제공하기 위한 방법 및 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014702A (en) * 1997-06-04 2000-01-11 International Business Machines Corporation Host information access via distributed programmed objects
DE69841777D1 (de) 1997-11-12 2010-09-02 Palus A1 Llc Automatischer übergang einer benutzerschnittstelle von einem programm zu einem anderen programm während dass erste noch verarbeitet
US8255809B2 (en) 1999-12-23 2012-08-28 International Business Machines Corporation Webtop: multiple applet delivery within a fixed-sized viewing space
WO2002069121A1 (en) 2001-02-26 2002-09-06 Ip Planet Networks Ltd. Modular interactive application generation system
US20070128899A1 (en) * 2003-01-12 2007-06-07 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows
US20040163087A1 (en) * 2003-02-14 2004-08-19 Carl Sandland Computer program code and method for delivering external data to a process running on a virtual machine
US8726173B2 (en) 2004-10-26 2014-05-13 International Business Machines Corporation Enabling browser based applications through customized temporary browser profiles
US8051143B2 (en) 2005-10-14 2011-11-01 Oracle International Corporation Sharing sessions between web-based applications
US8793584B2 (en) 2006-05-24 2014-07-29 International Business Machines Corporation Customizable user interface wrappers for web applications
US8230320B2 (en) * 2006-12-26 2012-07-24 International Business Machines Corporation Method and system for social bookmarking of resources exposed in web pages that don't follow the representational state transfer architectural style (REST)
US10019570B2 (en) * 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
WO2009049088A1 (en) * 2007-10-10 2009-04-16 Sun Microsystems, Inc. Method and system for changing execution environments during application execution
US20090183155A1 (en) * 2008-01-15 2009-07-16 Microsoft Corporation Isolation of Content by Processes in an Application
JPWO2010013609A1 (ja) * 2008-07-30 2012-01-12 株式会社Access 実行環境ソフトウェア、クライアント装置、およびサーバ装置
US8782676B2 (en) 2009-09-30 2014-07-15 Sap Ag System and method for communication between portal applications and portlet containers

Also Published As

Publication number Publication date
US20130031462A1 (en) 2013-01-31
WO2013015968A1 (en) 2013-01-31
AU2012287409A1 (en) 2014-01-23
EP2737402B1 (en) 2023-04-26
AU2012287409B2 (en) 2015-11-26
JP2014522039A (ja) 2014-08-28
KR101702726B1 (ko) 2017-02-06
EP2737402A1 (en) 2014-06-04
CN103718161A (zh) 2014-04-09
US9384101B2 (en) 2016-07-05
KR20140027507A (ko) 2014-03-06
CN103718161B (zh) 2017-07-28

Similar Documents

Publication Publication Date Title
JP5930236B2 (ja) ウェブアプリケーションアーキテクチャ
JP5933589B2 (ja) コンテキストに残りながら行われる共有のための拡張可能なシステム・アクション
KR101516903B1 (ko) 운영 체제 환경 간의 웹 데이터 전달
JP5757533B2 (ja) ウェブブラウザ経由のアプリケーションに対するコンテンツ入力
US20150207800A1 (en) Systems and methods for enabling access to a web application
KR20130069775A (ko) 복수의 컴퓨터에 걸쳐서 애플리케이션에 액세스하는 방법, 장치 및 시스템
WO2012122376A2 (en) Device specific handling of user interface components
US20140208326A1 (en) File presenting method and apparatus for a smart terminal
JP2013513160A (ja) Webアプリケーションとブラウザーの外部のプロセスとの間の通信チャンネル
WO2011066434A2 (en) Client-server input method editor architecture
US20150058770A1 (en) Method and appratus for providing always-on-top user interface for mobile application
WO2013097650A1 (zh) 一种应用程序启动方法、系统及终端设备
AU2014207730A1 (en) Systems and methods for building and using hybrid mobile applications
CN117501223A (zh) 在小组件板中显示的具有多种形式认证的服务驱动小组件
US20130110798A1 (en) Intercepting and processing database commands
CN112491940B (zh) 代理服务器的请求转发方法及装置、存储介质及电子设备
US20210026913A1 (en) Web browser control feature
US9886290B2 (en) Component loading based on user preferences
EP2622880B1 (en) Method, apparatus and system for transmitting an application using a plurality of computers
US20120079008A1 (en) Method, apparatus and system for providing event notifications across a plurality of computers
US20230315826A1 (en) User verification with state machines
Garg et al. Xml based lucid web operating system
CN118414613A (zh) 用于在web浏览器内暴露上下文驱动的服务的框架
JP2009169953A (ja) ウェブランチングシステム及びウェブランチング方法
Janowski Mobile application development: PCRemote controller for Android and Windows Phone

Legal Events

Date Code Title Description
A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20140124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140123

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151102

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160419

R150 Certificate of patent or registration of utility model

Ref document number: 5930236

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250