詳細な説明
以下の記載においては、説明の目的で、開示の実施形態の完全な理解をもたらすために具体的な詳細が述べられている。しかしながら、さまざまな実施形態がこれらの具体的な詳細なしでも実施され得ることは明らかであるだろう。図および記載は限定するよう意図されたものではない。
I.表示管理システムの高レベルの概要
図1は、いくつかの実施形態に従った、内容の表示を管理するシステム100の例を示す。以下に記載される技術のうち1つ以上は、1つ以上のコンピュータシステムにおいて実現され得るかまたは1つ以上のコンピュータシステムを必要とし得る。図1におけるコンピューティング環境は、記載される実施形態の使用または機能の範囲に関する如何なる限定をも示唆するように意図されたものではない。
システム100は、1つ以上のコンピュータシステム102、120(この明細書中においては「クライアントシステム」または「クライアント」と称される)および表示管理システム150を含み得る。クライアントはまた、この明細書中において「クライアント」と称され得る1つ以上のアプリケーションを含み得る。クライアントシステム120は1つ以上のアプリケーション122にアクセスし得る。表示管理システム150はコンピュータシステムによって実現され得る。クライアントシステムは1人以上のユーザによって操作され得る。各々のアプリケーションは表示管理システム150によって提供され得る。
クライアントシステム102、120および表示管理システム150は、1つ以上の通信ネットワーク130を介して通信可能に接続され得る。通信ネットワークの例は、インターネット、ワイドエリアネットワーク(wide area network:WAN)、ローカルエリアネットワーク(local area network:LAN)、イーサネット(登録商標)ネットワーク、パブリックネットワークまたはプライベートネットワーク、有線ネットワーク、無線ネットワークなど、およびそれらの組合せを含むが、それらに限定されない。さまざまな通信プロトコルは、IEEE802XXスイートのプロトコル、TCP/IP、IPX、SAN、アップルトーク、Bluetooth(登録商標)および他のプロトコルなどの有線プロトコルおよび無線プロトコルをともに含む通信を容易にするために用いられてもよい。一般に、通信ネットワーク130は、クライアントシステムと表示管理システム150との間の通信を容易にする如何なる通信ネットワークまたはインフラストラクチャをも含み得る。
いくつかの実施形態においては、システム100は、表示管理システム150、クライアントシステムまたはそれらの組合せによって実現される通信システムを含み得る。通信システムは、プッシュ通知サービス(たとえば、アップル社(Apple corporation)によって提供されるアップルプッシュ通知サービス(Apple Push Notification)またはグーグル社(Google corporation)によって提供されるグーグル通知サービス)を実現し得る。プッシュ通知サービスは、ネットワーク130を介する遠隔装置(たとえばエンドポイントのデバイスまたはクライアント)との通信を容易にし得る。プッシュ通知サービスは、構成されたアプリケーションをクライアントに送達し得る。内容の表示の変更は、通信のためのプル機構および/またはプッシュ機構(たとえば、プッシュまたはプル通知サービス)を用いて通信システムを介してシステム100内において伝達され得る。プッシュ機構および/またはプル機構は表示管理システム150によって提供されるサービスのためにサブスクリプションベースで構成されてもよい。
表示管理システム150は、汎用コンピュータ、特化サーバコンピュータ(一例として、PCサーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式のサーバなどを含む)、サーバファーム、サーバクラスタ、分散型サーバ、またはその他の適切な配置および/もしくはそれらの組み合わせであり得る1つ以上のコンピュータおよび/またはサーバを含み得るコンピュータシステムを用いて実現されてもよい。たとえば、表示管理システム150は、本開示の一実施形態に従った、この明細書中に記載されるとおりに処理を実行するためのコンピュータシステムに対応し得る。表示管理システム150を構成するコンピューティングシステムは、HTTPサーバ、FTPサーバ、CGIサーバ、Java(登録商標)サーバ、データベースサーバなどを含む、任意の数のオペレーティングシステムまたはさまざまな追加のサーバアプリケーションおよび/もしくは中間層アプリケーションを実行し得る。例示的なデータベースサーバとしては、マイクロソフトなどから市販されているものが挙げられるが、これらに限定されない。一例においては、表示管理システム150は、オラクル社(Oracle Corporation)によって提供されるオラクル・エンタープライズ・パフォーマンス・レポーティング・クラウドサービス(Oracle Enterprise Performance Reporting Cloud Service:EPRCS)などのサービスに含まれ得るかまたは当該サービスとして実現され得る。さまざまな実施形態においては、表示管理システム150は、以下の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように構成され得る。たとえば、表示管理システム150はサブスクリプションに従ってサービスを提供してもよい。
いくつかの実施形態においては、表示管理システム150は、上述のものを含み得る1つ以上のコンピュータおよび/またはサーバを含むエンタープライズコンピューティングシステムまたはクラウドコンピューティングシステムとして実現されてもよい。表示管理システム150はいくつかのサブシステムおよび/またはモジュールを含み得るが、これらのうちいくつかは図示されていない可能性もある。たとえば、表示管理システム150はインターフェイス154および表示管理エンジン152を含み得る。表示管理エンジン152は表示管理機能を実行し得る。表示管理システム150は、図に示されるよりも多くもしくは少ない数のサブシステムおよび/もしくはモジュールを有してもよく、2つ以上のサブシステムおよび/もしくはモジュールを組合わせてもよく、または、サブシステムおよび/もしくはモジュールの別の構成もしくは配置を有していてもよい。表示管理システム150のサブシステムおよびモジュールは、ソフトウェア(たとえば、プログラムコード、プロセッサによって実行可能な命令)、ファームウェア、ハードウェアまたはそれらの組合せで実現されてもよい。いくつかの実施形態においては、ソフトウェアは、メモリ(たとえば、非一時的なコンピュータ読取り可能媒体)内、メモリデバイス上、または他のいくつかの物理的メモリ上に格納されてもよく、1つ以上の処理ユニット(たとえば、1つ以上のプロセッサ、1つ以上のプロセッサコア、1つ以上のGPUなど)によって実行されてもよい。
いくつかの実施形態においては、表示管理システム150は他のサービスを提供してもよく、または、ソフトウェアアプリケーションは非仮想環境および仮想環境を含み得る。いくつかの実施形態においては、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、または、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルで、クライアントシステム102および120のユーザに提供されてもよい。表示管理システム150によって提供されるサービスはアプリケーションサービスを含み得る。アプリケーションサービスはSaaSプラットフォームを介して表示管理システム150によって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリ下に入るサービスを提供するように構成されてもよい。SaaSプラットフォームは、SaaSサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステムとして実現され得る、表示管理システム150において実行するアプリケーションを利用することができる。ユーザは、顧客が別個のライセンスおよびサポートを購入することを必要としないアプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供され得る。クライアントシステム102および120を操作するユーザは、さらに、1つ以上のアプリケーションを利用して表示管理システム150と対話して、表示管理システム150のサブシステムおよび/またはモジュールによって提供されるサービスを利用し得る。
表示管理システム150は、少なくとも1つのメモリ、1つ以上の処理ユニット(またはプロセッサ)およびストレージを含み得る。処理ユニットは、ハードウェア、コンピュータ実行可能命令、ファームウェアまたはそれらの組合せにおいて適宜実現され得る。処理ユニットのコンピュータ実行可能命令またはファームウェア実現例は、この明細書中に記載されるさまざまな動作、機能、方法および/またはプロセスを実行するために任意の好適なプログラミング言語で書込まれたコンピュータ実行可能命令またはマシン実行可能命令を含み得る。表示管理システム150内のメモリは、処理ユニット上でロード可能かつ実行可能なプログラム命令だけでなく、これらのプログラムの実行中に生成されるデータをも格納し得る。メモリは、揮発性(ランダムアクセスメモリ(random access memory:RAM)など)および/または不揮発性(読取専用メモリ(read-only memory:ROM)、フラッシュメモリなど)であってもよい。メモリは、コンピュータ読取り可能記憶媒体などの任意の種類の永続的なストレージデバイスを用いて実現されてもよい。いくつかの実施形態においては、コンピュータ読取り可能記憶媒体は、悪意のあるコードを含む電子通信からコンピュータを保護するように構成されてもよい。コンピュータ読取り可能記憶媒体は、プロセッサ上で実行されるとこの明細書中に記載される動作を実行する命令を格納していてもよい。
表示管理システム150はまた、メモリ記憶装置または他の非一時的コンピュータ読取り可能記憶媒体などの任意の種類の永続的ストレージデバイスを用いて実現され得るストレージを含み得るかまたは当該ストレージに結合され得る。いくつかの実施形態においては、ローカルストレージは、1つ以上のデータベース(たとえば、ドキュメントデータベース、リレーショナルデータベースまたは他の種類のデータベース)、1つ以上のファイルストア、1つ以上のファイルシステム、またはそれらの組合せを含み得るか実現し得る。たとえば、表示管理システム150は、データストア170などの1つ以上のデータストアに結合されてもよく、または当該1つ以上のデータストアを含んでもよい。メモリおよび追加のストレージはコンピュータ読取り可能記憶媒体の全ての例として挙げられている。たとえば、コンピュータ読取り可能記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報を格納するためのいずれかの方法または技術において実現される揮発性または不揮発性の、取外し可能であるかまたは取外し不可能である媒体を含み得る。さまざまなデータストアとして記載されているが、この明細書中に開示される技術に従ってデータを格納するためにより多くまたはより少ないデータストアが実現されてもよい。
表示管理システム150は、インターフェイス154を介してクライアントシステム102および120の複数のインスタンスを伝達し得る。インターフェイス154は1つ以上の通信プロトコルまたは言語によって規定されてもよい。いくつかの実施形態においては、インターフェイス154は、プログラミングインターフェイス(たとえば、アプリケーションプログラミングインターフェイス(application programming interface:API))によって規定されてもよい。プログラミングインターフェイスは、内容の表示を管理するための呼出し可能な機能を含んでもよい。たとえば、インターフェイス154は、ウェブベースのサービスとしてアクセスを可能にするレプレゼンテーショナル・ステート・トランスファ(Representational State Transfer:REST)ベースのインターフェイスを提供してもよい。
いくつかの実施形態においては、インターフェイス154は、グラフィカルインターフェイスを生成してクライアントシステム102および120に提供し得る。たとえば、インターフェイス154は、ユーザ(たとえば、アドミニストレータ)が内容の表示を管理することを可能にするためにアドミニストレータグラフィカルインターフェイスを提供することができる。クライアントシステムは、インターフェイス154によって提供されるインターフェイスを介して内容の表示を管理する(たとえば、作成する、削除する、編集する、修正する、更新する、または読取る)ことができる。図4〜図9に示されるグラフィカルインターフェイスは、内容の表示を管理するためのグラフィカルインターフェイスの例である。
システム100はまた、メモリ記憶装置または他の非一時的なコンピュータ読取り可能記憶媒体などの任意の種類の永続的ストレージデバイスを用いて実現され得るストレージを含み得るかまたは当該ストレージに結合され得る。いくつかの実施形態においては、ローカルストレージは、1つ以上のデータベース(たとえば、ドキュメントデータベース、リレーショナルデータベースまたは他の種類のデータベース)、1つ以上のファイルストア、1つ以上のファイルシステム、またはそれらの組合せを含み得るかまたは実現する。たとえば、システム100はデータストア170に結合され得るかまたはデータストア170を含み得る。メモリおよび追加のストレージはコンピュータ読取り可能記憶媒体の全ての例として挙げられている。たとえば、コンピュータ読取り可能記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報を格納するためのいずれかの方法または技術において実現される揮発性または不揮発性の、取外し可能であるかまたは取外し不可能である媒体を含み得る。データストア170はネットワークを介してアクセス可能であってもよい。いくつかの実施形態においては、表示管理システム150は、データストア170を用いて内容の表示を管理してもよい。
表示管理システム150は、この開示における技術に従って内容の表示を管理してもよい。内容は、電子画像、電子データ、音声、映像、メタデータまたは他の種類のデータを含み得る。電子ドキュメントは、電子ファイル、電子スプレッドシート、ハイパーテキスト・マークアップ言語(Hypertext markup language:HTML)ドキュメント、または電子的に表示することができる内容を含む他の種類のドキュメントを含み得る。いくつかの実施形態においては、表示管理システム150は、自動的に、および/または、クライアントシステムからの要求に基づいて動作し得る。この開示により、本開示のいくつかの実施形態に従ったプロセスを例示するさまざまなフローチャートおよび技術が開示される。個々の実施形態は、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスと記載される可能性もある。フローチャートは動作を連続的な処理として記載することもあるが、動作の多くは並行してまたは同時に実行されてもよい。加えて、動作の順序は並び変えられてもよい。その動作が完了するとプロセスが終了するが、図に含まれない付加的なステップを有していてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが機能に対応している場合、それが終了することは、機能を呼出し機能または主機能に戻すことに対応し得る。
図に示されるプロセスは、1つ以上の処理ユニット(たとえば、プロセッサコア)、ハードウェアまたはそれらの組合せによって実行されるソフトウェア(たとえば、コード、命令、プログラム)において実現されてもよい。たとえば、図1の表示管理システム150は、図のいずれかに関連付けて記載されるプロセスを実現することができる。この明細書中に開示されるプロセスの全てまたはいくつかは、表示管理システム150、クライアントまたはそれらの組合せによって実行されてもよい。プロセスのうちのいずれかがサービスとして実現されてもよい。いくつかの実施形態においては、図における要素のいずれかが図に示されるよりも多くまたはより少ないサブシステムおよび/もしくはモジュールで実現されてもよく、2つ以上のサブシステムおよび/もしくはモジュールを組合わせてもよく、または、サブシステムおよび/もしくはモジュールの別の構成もしくは配置を有していてもよい。サブシステムおよびモジュールは、ソフトウェア(たとえば、プログラムコード、プロセッサによって実行可能な命令)、ファームウェア、ハードウェアまたはそれらの組合せにおいて実現されてもよい。いくつかの実施形態においては、ソフトウェアは、メモリ(たとえば、非一時的なコンピュータ読取り可能媒体)内、メモリデバイス上、または他のいくつかの物理的メモリ上に格納されてもよく、1つ以上の処理ユニット(たとえば、1つ以上のプロセッサ、1つ以上のプロセッサコア、1つ以上のGPUなど)によって実行されてもよい。
図における特定の一連の処理ステップは、限定するように意図されたものではない。他のシーケンスのステップも代替的な実施形態に従って実行されてもよい。たとえば、本開示の代替的な実施形態は、概略的に上述されたステップを異なる順序で実行してもよい。さらに、図に示される個々のステップは、個々のステップにとって適切となるさまざまなシーケンスで実行され得る複数のサブステップを含み得る。さらに、特定の用途に応じて付加的なステップが追加されてもよくまたは削除されてもよい。当業者であれば、多くの変形例、変更例および代替例を認識するだろう。
いくつかの実施形態においては、データは1つ以上のデータ構造を用いて格納されてもよい。データ構造は、データをどのように格納しているか、どのようなデータが格納されているか、および/または、データがどこに格納されているかに応じてさまざまな方法で編成され得る。特定のデータを含むデータ構造の各々が示されているが、データを格納するためにより多くのデータ構造またはより少ないデータ構造が実現されてもよい。データ構造は、他のデータ構造に対する基準を含んでもよい。データ構造は、リンクリスト、アレイ、ハッシュテーブル、マップ、記録、グラフまたは他のタイプのデータ構造を含むがこれらに限定されない1つ以上のタイプのデータ構造を用いて実現されてもよい。データ構造は階層的に実現されてもよい。データ構造の各々は、ユーザによる入力に基づいて宣言的に規定されてもよい。データ構造は、テンプレート(たとえば、拡張マークアップ言語(Extended Markup Language:XML)などのマークアップ言語に基づいて定義されるテンプレート)に基づいて定義することができる。データ構造は、ドキュメントフォーマットとも称される1つ以上のフォーマットを有していてもよい。
II.電子ドキュメントにおけるヘッダの表示を管理するためのプロセス
図2A、図2B、図2C、図2Dおよび図3は、電子ドキュメントにおける内容の表示を管理するためのプロセスを示す。電子ドキュメント内の内容に対応するデータの表示が決定されると、プロセスの一部が設計時間中に実現され得る。設計時間の全体または一部において、実行時間中に実現されるプロセスを続行してもよい。実行時間は、デバイス(たとえば、クライアントデバイス)におけるディスプレイ上に電子ドキュメント内の内容を表示するためのビューをリアルタイムで決定するために実現されてもよい。以下に記載されるように、設計時間中、電子ドキュメント中の内容に対応するデータを表示するためのレイアウトが決定されてもよい。
図2Aは、電子ドキュメントの内容を表示するための配置についての表示レイアウトの線図200を示す。表示レイアウトは複数の部分または複数のコンポーネントを用いて配置されてもよい。当該配置を用いれば、内容が、当該内容のために表示されるヘッダを管理することができるようにレイアウトに表示され得る。表示管理システムは、デバイス(たとえば、クライアント)における電子ドキュメント内の内容に対応するデータを表示するためのレイアウトを決定してもよい。内容は文字、数、値および他の情報であってもよい。データは内容の電子的表現であってもよい。
レイアウトは、データに基づいて内容を表示するのに用いられるフォーマットであり得る。たとえば、レイアウトは、データテーブルなどのテーブルまたはグリッドであってもよい。レイアウトは、行ヘッダ210および列ヘッダ204などの1つ以上のヘッダを含み得るかまたは当該1つ以上のヘッダによって規定され得る。ヘッダは、内容に対応するデータの次元に対応し得る。たとえば、ある次元は、当該次元に対応するデータがデバイスのディスプレイ上の内容のビューに表示されるようなデータの属性であってもよい。少なくとも1つの実施形態においては、レイアウトは複数のヘッダを含み得る。ヘッダは、行ヘッダ、列ヘッダまたはそれらの組合せを含み得る。ヘッダは、1つ以上の次元に対応していてもよい。レイアウトは、列ヘッダと比べて、不均等な数の行ヘッダを有する可能性がある。各々のヘッダは複数の次元によって規定されてもよい。たとえば、レイアウトは、行ヘッダである第1のヘッダと、列ヘッダである第2のヘッダとを含み得る。たとえば、レイアウトは、列ヘッダである第1のヘッダと、行ヘッダである第2のヘッダとを含み得る。
内容に対応するデータは、第1のヘッダの次元および第2のヘッダの第2の次元に基づいて表示され得る。各々のヘッダに対応する次元は、列ヘッダの次元および行ヘッダの次元に対応するテーブルのセルにおけるデータなどの、交差する次元と一致するデータに基づいてデータが表示され得るように、異なっていてもよい。たとえば、ある次元は、データの特定のタイプ、カテゴリまたはアスペクトを規定する属性であってもよい。以下に開示されるように、ビューは、レイアウトを用いて電子ドキュメントの内容を表示するために生成されてもよい。ビューは、当該ビューがディスプレイ上で調整されるのに応じて変更されてもよくまたは生成されてもよい。
少なくとも1つの実施形態においては、表示管理システム150は内容を表示するためのレイアウトを決定し得る。たとえば、表示管理システム150は、セクション1(データ本体212)、セクション2(行ヘッダ210)、セクション3(列ヘッダ204)、およびセクション4(コーナー202)などの複数のセクションを有するレイアウトで内容を如何に表示するかを決定してもよい。内容は、4つのセクションなどの複数のセクションに基づいてレンダリングされたテーブルまたはグリッドに表示されてもよい。レイアウトは、レイアウトを規定するためのインターフェイスに対する入力に基づいて生成されてもよい。レイアウトは、この明細書中に開示されるように複数のセクションを用いて規定されてもよい。複数のセクションは、あるヘッダの次元を特定する入力に基づいて規定される複数のヘッダを含み得る。インターフェイスは、ユーザが次元を含むヘッダのサイズを指定することを可能にし得る。テーブルについての内容は、ヘッダなどのいくつかのセクションが別のセクションの内容(たとえば、データ本体212または内容に対応するデータ)の表示の調整に基づいて調整され得るように、複数のセクションを用いてレンダリングされてもよい。いくつかの実施形態においては、テーブルについて内容は、スプレッドシートアプリケーションなどのアプリケーションのインターフェイスによって提供されるヘッダ(たとえば、行ヘッダまたは列ヘッダ)の代わりにドキュメント内のヘッダ付きレイアウトに従って表示するように生成されてもよい。一例においては、データ本体212は、以下に説明するように、右下のコーナーにおいて表示されてもよい。この場合、列ヘッダ204はデータ本体212の上方に水平に位置決めされており、行ヘッダ210はデータ本体212の左側に垂直に位置決めされている。いくつかの実施形態においては、レイアウトは、ヘッダ210および204の位置を決定するために用いられるコーナー202を含んでもよい。いくつかの実施形態においては、テーブルは、ドキュメントの表示を調整可能にするためのレイアウトに基づいて表示される。このような実施形態は、複数のテーブルを電子ドキュメントにおいて示すことを可能にし得る。ヘッダは、これらヘッダがドキュメントのためにレンダリングされた内容とともに浮動または移動するように、内容の一部であってもよい。
内容は、行ヘッダおよび/または列ヘッダの浮動を可能にするように複数のテーブルのレイアウトを用いて表示されてもよい。コードまたは命令(JavaScript(登録商標)/jQueryなど)は、テーブルを表示するためのビューのためにドキュメントが調整される(たとえば、垂直または水平にスクロールされる)のに応じて、テーブルのヘッダを位置決めしてロックするように実現されてもよい。
ドキュメント内のテーブルは、スクロールしたときに適切なクリッピングを可能にする順序を規定するドキュメント・オブジェクト・モデル(document object model:DOM)を用いて表示されてもよい。言いかえれば、ドキュメントのレイアウトはDOMによって規定されてもよい。レイアウトは、電子ドキュメントとともに含まれるかまたは電子ドキュメントによって示される情報に基づいて決定されてもよい。たとえば、ドキュメントは、レイアウトを決定するために用いることができるメタデータを含み得る。別の例においては、レイアウトを決定するために、ドキュメント内の内容の言語(たとえば、HTML)および/またはスタイル(たとえば、カスケードスタイルシート)のフォーマットが処理されてもよい。その順序はDOMを用いて決定されてもよい。たとえば、順序は以下のように規定されてもよい。(1)データ本体212、(2)行ヘッダ210、(3)列ヘッダ204および(4)コーナー202。この順序はビューを生成するために用いられてもよい。デバイスのディスプレイ(たとえばスクリーン)の表示サイズが制限されている場合、表示するのをドキュメント内のデータの一部に制限することにより、ビューはデータおよび/またはヘッダの部分を隠すように生成され得る。セクションの順序は、データおよび/またはヘッダの部分を隠すために用いられてもよい。スティッキーなヘッダは、オーバーフローを用いてコンポーネントを自然にスクロールすることを可能にし得るが、データ本体がいずれも視認不可能となるまで必要に応じて当該ヘッダを制限することもできる。
いくつかの実施形態においては、レイアウトは、ドキュメントを表示するためのドキュメント内の内容の位置を分析することによって決定されてもよい。当該位置はコード(たとえば、JavaScript)によって決定されてもよい。ドキュメントのフォーマットでの内容の座標および/または所在地などの情報が分析される。ヘッダおよび/またはデータは、情報を表示するための複数のセルを有していてもよい。ヘッダおよびデータの位置が決定され得る。いくつかの実施形態においては、列ヘッダ(たとえば、列ヘッダの左側)と行ヘッダ(たとえば、行ヘッダの最上部)との交差の間のコーナーが、ヘッダの相対的位置を監視するために用いられてもよい。
図2Bは、電子ドキュメントの内容を表示するための配置についての表示レイアウトの線図250を示す。線図250は、図2Aの線図200に示されるレイアウトにおける垂直スクロールに基づき得る。図2Aの線図200の表示レイアウトにおけるセクション202、204、210および212は、ドキュメントについてのDOMとして追加または規定され得る。テーブルを規定するセクションは、スクロールしたときに適切なクリッピングを可能にするための特定の順序でドキュメントについてのDOMを形成するように追加されてもよい。少なくとも1つの実施形態においては、当該順序は以下のとおりであり得る。(1)データ本体212、(2)行ヘッダ210、(3)列ヘッダ204、および(4)コーナー202。スティッキーなヘッダは、基本的には、オーバーフローを用いてコンポーネントの本来のスクローリングを可能にするが、データ本体がいずれも視認不可能となるまで必要に応じて行ヘッダ、コーナーおよび列ヘッダを制限する。図2Bの例においては、垂直にスクロールする場合、コーナー202および1つ以上の列ヘッダ(たとえば列ヘッダ204)はコーナーおよび行ヘッダの垂直スクロール252のためにロックされ、列ヘッダ204およびデータ本体212は、データ本体(たとえば、データ本体212)の底部に達するまで垂直スクロール254のためにロックされる。行ヘッダ(たとえば、行ヘッダ210)およびデータ本体は、それぞれ、コーナーおよび列ヘッダの下を流動する。
図2Cは、電子ドキュメントの内容を表示するための配置についての表示レイアウトの線図270を示す。線図270は、図2Aの線図200に示されるレイアウトにおける垂直スクロールに基づき得る。図2Cに示される例においては、スクロール272、スクロール274などの水平スクロールの場合、コーナー204および行ヘッダ204は、データ本体212の右側に達するまで、列ヘッダ210およびデータ本体212と同様にロックされる。列ヘッダ204およびデータ本体は、それぞれ、コーナーおよび行ヘッダの下を流動する。
図2Dは、電子ドキュメントの内容を表示するための配置についての表示レイアウトの線図280を示す。線図280は、図2Aの線図200に示されるレイアウトにおける水平方向および垂直方向の両方へのスクロールに基づき得る。図2Dに示される例においては、水平方向284および垂直方向282の両方の場合、データ本体212の右底部に達するまで、コーナー202がロックされる。行ヘッダ210が上方にスクロールでき、列ヘッダ204が左側にスクロールできることに留意されたい。行ヘッダ210、データ本体212および列ヘッダ204はコーナー202の下を流動する。最終的に、スティッキーなコーナー202、行ヘッダ210、列ヘッダ204およびデータ本体212がスクロールされて視界から外れる。スティッキーなヘッダのアルゴリズムが全てのスクロールに対して呼出される。
図3は、電子ドキュメント内の内容の表示を管理するためのプロセスのフローチャート300を示す。フローチャート300の一部は、電子ドキュメント内の内容に対応するデータの表示が決定される設計時間中に実現されてもよい。設計時間の全体または一部において、実行時間中に実現されるプロセスを続行してもよい。フローチャート300はステップ302〜314を含み得る。いくつかの実施形態が含み得るステップはより多くてもよくまたはより少なくてもよい。
ステップ302において、デバイス(たとえば、クライアント)において電子ドキュメント内の内容に対応するデータを表示するためのレイアウトが決定され得る。内容は文字、数、値および他の情報であってもよい。内容は、1つ以上のデータソースからアクセスされてもよく、および/または、別のコンピュータシステムから受取られてもよい。データは内容の電子的表現であってもよい。少なくとも1つの実施形態においては、レイアウトは、電子ドキュメントの内容を表示するための設計時間中に実現されるプロセスの一部として決定されてもよい。
レイアウトは、データに基づいて内容を表示するのに用いられるフォーマットであり得る。たとえば、レイアウトはグリッドまたはテーブルであってもよい。レイアウトは、1つ以上のヘッダに含まれていてもよく、または1つ以上のヘッダによって規定されてもよい。ヘッダは、内容に対応するデータの次元に対応し得る。たとえば、ある次元は、当該次元に対応するデータがデバイスのディスプレイ上の内容のビューに表示されるようなデータの属性であってもよい。少なくとも1つの実施形態においては、レイアウトは複数のヘッダを含み得る。ヘッダは、行ヘッダ、列ヘッダまたはそれらの組合せを含み得る。ヘッダは、1つ以上の次元に対応していてもよい。レイアウトは、列ヘッダと比べて、不均等な数の行ヘッダを有する可能性がある。各々のヘッダは複数の次元によって規定されてもよい。たとえば、レイアウトは、行ヘッダである第1のヘッダと、列ヘッダである第2のヘッダとを含み得る。たとえば、レイアウトは、列ヘッダである第1のヘッダと、行ヘッダである第2のヘッダとを含み得る。
いくつかの実施形態においては、レイアウトは設計プロセスの一部として決定されてもよい。レイアウトは、データのさまざまな次元を規定する属性を含んで表示されるようにデータに基づいて予め決定されてもよい。少なくとも1つの実施形態においては、レイアウトは、図4〜図9に関連付けて記載される技術を用いて決定されてもよい。特に図4〜図9は、電子ドキュメントを表示するための内容としてデータを表示するためのレイアウトを構成して決定するための設計プロセスを実現するためのグラフィカルインターフェイスを例示している。
内容に対応するデータは、第1のヘッダの次元および第2のヘッダの第2の次元に基づいて表示することができる。各々のヘッダに対応する次元は、列ヘッダの次元および行ヘッダの次元に対応するテーブルのセルにおけるデータなどの、交差する次元と一致するデータに基づいてデータが表示されるように、異なっていてもよい。たとえば、ある次元は、データの特定のタイプ、カテゴリまたはアスペクトを規定する属性であってもよい。以下に開示されるように、ビューは、レイアウトを用いて電子ドキュメントの内容を表示するために生成されてもよい。ビューは、当該ビューがディスプレイ上で調整されるのに応じて変更されてもよくまたは生成されてもよい。
少なくとも1つの実施形態においては、レイアウトは複数のセクションを有していてもよい。たとえば、テーブルまたはグリッドは、内容を表示するために4つのセクション(たとえば個々のテーブル)にレンダリングされてもよい。レイアウトは、レイアウトを規定するためのインターフェイスに対する入力に基づいて生成されてもよい。レイアウトは、この明細書中に開示されるように複数のセクションを用いて規定されてもよい。複数のセクションは、あるヘッダの次元を特定する入力に基づいて規定される複数のヘッダを含み得る。インターフェイスは、ユーザが次元を含むヘッダのサイズを指定することを可能にし得る。テーブルについての内容は、ヘッダなどのいくつかのセクションが別のセクションの内容(たとえば、データ本体または内容に対応するデータ)の表示の調整に基づいて調整され得るように、複数のセクションを用いてレンダリングされてもよい。いくつかの実施形態においては、テーブルについて内容は、スプレッドシートアプリケーションなどのアプリケーションのインターフェイスによって提供されるヘッダ(たとえば、行ヘッダまたは列ヘッダ)の代わりにドキュメント内のヘッダ付きレイアウトに従って表示するために生成されてもよい。一例においては、データ本体は、以下に記載されるように、右下のコーナーにおいて表示されてもよい。この場合、列ヘッダはデータ本体の上方に水平に位置決めされており、行ヘッダはデータ本体の左側に垂直に位置決めされている。いくつかの実施形態においては、レイアウトは、ヘッダの位置を決定するために用いられるコーナーを含んでもよい。いくつかの実施形態においては、テーブルは、ドキュメントの表示を調整可能にするためのレイアウトに基づいて表示される。このような実施形態は、複数のテーブルを電子ドキュメントにおいて示すことを可能にし得る。ヘッダは、これらヘッダがドキュメントのためにレンダリングされた内容とともに浮動または移動するように、内容の一部であってもよい。上に説明されるように、セクションは、スクロールしたときに適切なクリッピングを可能にする順序を規定するドキュメント・オブジェクト・モデル(DOM)を用いて表示されてもよい。言いかえれば、ドキュメントのレイアウトはDOMによって規定されてもよい。
いくつかの実施形態においては、レイアウトは、ドキュメントを表示するためのドキュメント内の内容の位置を分析することによって決定されてもよい。位置は、コード(たとえばJavaScript)によって決定されてもよい。ドキュメントのフォーマットでの内容の座標および/または所在地などの情報が分析される。ヘッダおよび/またはデータは、情報を表示するための複数のセルを有していてもよい。ヘッダおよびデータの位置が決定され得る。いくつかの実施形態においては、列ヘッダ(たとえば、列ヘッダの左側)と行ヘッダ(たとえば、行ヘッダの最上部)との交差の間のコーナーが、ヘッダの相対的位置を監視するために用いられてもよい。
ステップ304において、デバイスにおける表示のためのビュー(たとえば第1のビュー)を表示するための1つ以上の属性が識別されてもよい。属性は、表示されるべきデータおよび属性間の関係に基づき得る。各々の属性は、データを表示するための次元に対応し得る。各々の次元は、データ表示の目的であるヘッダに対応し得る。属性は、データを表示するためのレイアウトに基づいて識別されてもよい。各々の属性はある次元に関して識別されてもよい。以下に説明するように、属性は、データのビューを規定するセクションの構成に基づいて識別されてもよい。
ステップ306において、グラフィカルインターフェイスがビュー(たとえば、第1のビュー)の表示のためにデバイスにおいて提供され得る。電子ドキュメント内の内容のビュー(たとえば、第1のビュー)は、グラフィカルインターフェイス内のディスプレイ上に提供される。グラフィカルインターフェイスを提供することは、ビューを含むグラフィカルインターフェイスを生成することを含み得る。インターフェイスはディスプレイであってもよく、またはディスプレイに含まれていてもよい。インターフェイスは、デバイスにおけるアプリケーションに含まれていてもよい。ビューは、デバイスに提供されるインターフェイスにおいて生成されてもよい。グラフィカルインターフェイスを提供することは、ビューをレンダリングさせるように動作を実行することを含み得る。グラフィカルインターフェイスを提供することはデバイスにビューを送信することを含み得る。グラフィカルインターフェイスは、デバイスに、グラフィカルインターフェイスにおいてビューを表示させる態様で送信されてもよい。グラフィカルインターフェイスはデバイスからの要求に応答して提供されてもよい。
グラフィカルインターフェイスは、添付の図面に関連付けて記載されるような追加の情報または1つ以上の追加のグラフィカルインターフェイスを表示するように修正されてもよい。この明細書中に開示されるようなグラフィカルインターフェイスとの対話に応答して、更新済みのグラフィカルインターフェイスまたは新しいグラフィカルインターフェイスについての情報を生成するための処理を実行することができ、更新済みのグラフィカルインターフェイス/新しいグラフィカルインターフェイスを作成することができる。
この開示においては、「要素」がグラフィカルインターフェイスに含まれていてもよい。グラフィカルインターフェイスは入力を受取るように対話型であってもよい。この入力は、グラフィカルインターフェイスに提供される調整、移動またはデータなどの対話に対応し得る。グラフィカルインターフェイスは、ビューとの対話、またはグラフィカルインターフェイスにおいて表示されるビューを調整するかまたは移動させるための対話についての入力を受信するように対話型であってもよい。要素は表示可能であってもよく、および/またはグラフィカルインターフェイスの一部であってもよい。要素の例は、音声、視覚、触覚またはそれらの組合せによって感知することができるインターフェイスの一部であり得る制御、ボタン、ナビゲーションバーまたは他の視覚的構成要素を含むがこれらに限定されない。要素は入力を受信することができる。たとえば、対話型要素は入力を受信するように対話する要素であってもよい。対話型要素は、グラフィカルインターフェイスとの対話を可能にするための入力を受信し得る。たとえば、対話型要素はグラフィカルインターフェイスにおける多くの要素のうちの1つであってもよい。この明細書中に開示されるグラフィカルインターフェイスのうちのいずれかを表示するコンピュータシステムの場合、コンピュータシステムは、グラフィカルインターフェイスとの対話に対応する1つ以上の入力を受信することができる。当該入力を処理することでグラフィカルインターフェイスに対する対話を決定することができる。
グラフィカルインターフェイス内の内容のビューの表示は、デバイスにおけるディスプレイのサイズに基づき得る。ビューは、ディスプレイのサイズに対応するサイズを有していてもよい。ディスプレイ(たとえば、スクリーン)のサイズ(たとえば、スクリーン次元)は、内容が表示されるべきであるデバイスにおけるディスプレイの表示領域における次元に対応し得る。ディスプレイは、内容のビューがレンダリングされている表示装置または表示領域に対応していてもよい。サイズは、デバイスまたは第三者システムから取得されてもよい。いくつかの実施形態においては、サイズは、インターフェイスにおいて見ることができる視認可能区域に基づいて決定されてもよい。サイズはディスプレイの次元未満であってもよい。サイズは、内容を表示するために用いられるグラフィカルインターフェイスに基づいていてもよい。サイズは、要求時に視認可能な区域に基づいて変化し得る。いくつかの実施形態においては、サイズは、クライアントにおいて決定されて表示管理システム150に送信されてもよい。サイズは、ディスプレイのために利用可能な面積に基づいてクライアントによって異なっていてもよい。
サイズは、ドキュメント内の内容に対応するデータが表示可能である区域よりも小さい区域に対応していてもよい。結果として、ビューは、表示するべき内容に対応するデータおよびデータに関する表示すべきヘッダのうちのいくつかに制限される可能性がある。ビューは、内容に対応するデータの一部分(たとえば、第1の部分)をレンダリングしてもよく、この場合、ビュー内のデータの部分に対応するヘッダを有する部分がレンダリングされている。たとえば、当該一部分は、第1のビューに第1のヘッダおよび第2のヘッダを含み得る。第1のヘッダおよび第2のヘッダはそれぞれ行ヘッダおよび列ヘッダであってもよく、逆の場合もまた同様である。第1のビューは、データの第1の部分が第1のヘッダの第1の次元および第2のヘッダの第2の次元に基づいて表示されている第1のデータ本体を含み得る。
ビューを提示するグラフィカルインターフェイスは、グラフィカルインターフェイスとの対話に対応する入力を受信するように対話型であってもよい。対話は、ビューの調整または移動を可能にし得る。異なるビューが入力に基づいて生成されてもよい。たとえば、内容の第1のビューが提供されてもよい。第1のビューは、ディスプレイ上にデータの一部分を表示してもよい。当該一部分は、内容に対応するデータの全てまたはいくらかを含んでいてもよい。ビューによって表示される部分は、ディスプレイのサイズに基づいていてもよい。ディスプレイは表示装置のスクリーンよりも小さくてもよい。ヘッダは、示されるデータの部分に基づいてビューにおいて表示されてもよい。ヘッダの全てまたは一部分がサイズに基づいて示されてもよい。データは、当該データが満たしているヘッダに対応して表示され得る。データは、セルに表示されてもよく、当該セルの境界は視認可能であってもよくまたは視認不可能であってもよい。データに対応するヘッダはビューにあるデータに基づいて表示されてもよい。内容に対応するデータは、ヘッダについてのデータ(たとえば、ラベル)を含み得る。ヘッダに対応するデータはセルにおいて表示されてもよい。セルは視認可能であってもよくまたは視認不可能であってもよい。ヘッダに対応するデータはヘッダの各次元に対応していてもよい。
ステップ308において、グラフィカルインターフェイスとの対話に対応する入力が監視され得る。当該入力は、グラフィカルインターフェイスにおけるビュー(たとえば、第1のビュー)の調整に対応するイベントを検出するように監視され得る。当該イベントは、ビューにおける入力または変更などのイベントを検出するように構成された命令(たとえば、イベントリスナー)またはコードに基づいて決定されてもよい。イベントは、インターフェイス(たとえば、グラフィカルインターフェイス)を介して受信される入力に対応し得る。当該入力は、インターフェイスにおける対話型要素(たとえば、スクロールバー)との対話に対応していてもよい。たとえば、対話はグラフィカルインターフェイスにおける要素の移動に対応していてもよい。この移動は、垂直方向への第1のビューの調整をもたらし得る。変化した第1のヘッダは行ヘッダであってもよく、第2のヘッダは静的な列ヘッダである。別の例においては、対話はグラフィカルインターフェイスにおける要素の移動に対応する。当該移動は水平方向への第1のビューの調整をもたらし得る。変化した第1のヘッダは列ヘッダであってもよく、第2のヘッダは静的な行ヘッダであってもよい。対話は、ドキュメントにおける内容に対応するデータのうち異なる部分を見るためにビューを異なるビューに変更するためのビューの調整であってもよい。この異なる部分は、その時点でディスプレイ上にあるビューにおける部分のうちのいくらかを含んでいてもよい。当該入力は、第1のビューのうち一部分が第1のビューへの調整のためにグラフィカルインターフェイスにおいて視認不可能であることを判断するために監視されてもよい。この視認不可能な部分は、ヘッダ、および/または、ヘッダによって表現される属性に対応するデータ、のうちのいずれかを含み得る。
ステップ310において、グラフィカルインターフェイスへの入力を監視することによって検出される第1のビューへの調整に基づいて、第1のビューのうちのヘッダを含む一部分が、第1のビューへの調整のためにグラフィカルインターフェイスにおいて視認不可能であるという判断がなされる。第1のビューの調整は、データおよび/またはヘッダに対する変更を判断するために処理されてもよい。いくつかの実施形態においては、コードまたは命令は、第1のビューのレイアウトにおけるセクションの移動を追跡するための対話を監視するように実現されてもよい。
ビュー(たとえば、現在のビュー)の一部分は、ディスプレイ上の第1のビューの調整に対応するイベントに基づいてディスプレイ上で視認不可能なものとして検出され得る。ビューのうち視認不可能なものとして検出される部分は、1つ以上のヘッダ、ビュー内のデータの当該部分またはそれらの組合せに対応し得る。たとえば、ビューのうちディスプレイ上で視認不可能なものとして検出される部分は、データを全て表示することができるビューよりも小さい表示サイズに起因する可能性がある。イベントの結果、ヘッダの一部分、ビュー内のデータまたはそれらの組合せは視認不可能となり得る。
いくつかの実施形態においては、ビューの当該部分は、列ヘッダの左側の位置を監視することに基づいて視認不可能なものとして検出され、行ヘッダテーブルの最上部が更新される。高さまたは幅がヘッダのサイズ(たとえば、列ヘッダの高さまたは行ヘッダの幅)と同じであると判断されると、ビューは修正も更新もされない。しかしながら、高さまたは幅がヘッダのサイズ(たとえば列ヘッダの高さまたは行ヘッダの幅)よりも大きいと判断されると、ビューはイベントに基づいて修正または更新され得る。ビューの調整に基づいたコーナーの位置は、ヘッダ、およびヘッダに対応するデータ本体の位置を決定するために用いられてもよい。たとえば、コーナーの位置は、ビューのサイズがヘッダテーブルサイズよりも小さい場合、同様に更新されてもよい。
ステップ312において、上記検出に基づいて、デバイスにおける電子ドキュメントの第2のビューが生成されてもよい。第2のビューは、内容に対応するデータの第2の部分を表示してもよく、第2の部分は検出された部分に基づいて決定される。第2のビューは、データの第2の部分が表示されている第2のデータ本体を含み得る。第2の部分は、データの第1の部分のうちのいくらかを含み得る。第2の部分は、第1のビューのうち検出された部分に基づいて第1のヘッダに対応する変更として表示されてもよい。第2のビューは、第1のビューにおいてレンダリングされるとおりに第2のヘッダを表示してもよい。
ディスプレイ上の電子ドキュメント内における内容の更新済みのビュー(たとえば第2のビュー)が生成され得る。更新済みのビューは、新しく生成されたビューであってもよく、または、ステップ306においてグラフィカルインターフェイスにおいて提供されるビューに基づいて更新されるビューであってもよい。この明細書中に開示される技術は、電子ドキュメントの複数のビューが1つ以上のイベント(たとえば、ビューの調整)に基づいて生成されることを可能にする。ビューは、ディスプレイ上のデータの一部分(たとえば、第2の部分)として生成されてもよい。当該一部分は、イベントよりも前のビュー内のデータの部分とは異なっている可能性がある。当該一部分は、データのうちのいくらかを含んでもよい。第2の部分は、検出された部分に従った第1の部分の修正に基づいて決定されてもよい。一例においては、第2の部分は、検出された部分に基づいて第1のヘッダに対応する変更として表示されてもよく、第2のヘッダへの変更が提示されていなくてもよい。第1のヘッダに対応する変更は、検出された部分に基づいた第1のヘッダ、データまたはそれらの組合せに対応する変更に基づいていてもよい。第2の部分には、第1のビューうちの検出された部分に基づいて第1のヘッダに対応する変更についての修正済みの第1のヘッダが提示されてもよい。第2のビュー内における修正済みの第1のヘッダは、データのうち第2の部分についての第1の次元を表していてもよい。
いくつかの実施形態においては、第2のビューは、第1のビューの更新として生成されてもよい。第1のビューの調整は、データおよび/またはヘッダに対する変更を決定するために処理されてもよい。いくつかの実施形態においては、内容に対応するヘッダおよびデータの位置または所在地は、ドキュメントのメタデータを分析することによって識別されてもよい。ドキュメントは、当該位置を決定するために用いることができるレイアウトを含んでもよく、または当該レイアウトに関連付けられてもよい。いくつかの実施形態においては、レイアウトにおけるコーナーが、ヘッダおよびデータの相対的位置を決定するために用いられてもよい。検出される調整を用いてコーナーを調整してもよく、これに基づいてヘッダおよびデータが調整されてもよい。いくつかの実施形態においては、第1のビューにあるヘッダおよび/またはデータのうちの一部分は、当該一部分のうちの一部が調整に基づいて第2のビューにおいて視認できなくなるように修正されてもよい。いくつかの実施形態においては、第2のビューにおいて隠されているヘッダおよびデータは、第2のビューのうち視認可能な部分のビューの背後に配置されている。たとえば、データおよびヘッダのうち視認不可能な部分は、変化なかったヘッダの背後に隠されて、スクロール移動を出現させる可能性があるが、この場合、データの次元を把握するために必要なヘッダの外観を変更させることはない。
ステップ314において、グラフィカルインターフェイスにおける第1のビューがステップ312において生成された第2のビューと置換えらえれてもよい。第2のビューは、ディスプレイ上に提供される第1のビューを置換えるために提供されてもよい。第1のビューは第2のビューと置換えられてもよい。いくつかの実施形態においては、第1のビューが第2のビューに更新されてもよい。イベントに対応する調整を示すために、ビューがリアルタイムで提供されてもよい。グラフィカルインターフェイスは、第1のビューを第2のビューと置換えるために再生成または更新されてもよい。ビューおよび/またはビューを含むグラフィカルインターフェイスがデバイスに提供されてもよい。ビューを提供することにより、グラフィカルインターフェイスが第2のビューを表示するように更新され得る。
少なくとも1つの実施形態においては、内容の表示を管理するためのプロセスが開示される。当該プロセスは、表示装置においてレンダリングするべき内容にアクセスすることを含み得る。当該プロセスは内容のレイアウトを決定することを含み得る。内容のレイアウトに基づいて、複数のセクションを有する電子ドキュメントが生成されてもよい。当該複数の表示セクションのうち1つ以上は内容のデータを含めるように生成されてもよく、この場合、電子ドキュメントは1つ以上のヘッダとともに生成される。ヘッダの各々は、複数の表示セクションのうち別々のセクションに対応していてもよい。表示装置における電子ドキュメント内における内容のレンダリングがなされる。電子ドキュメントをレンダリングするための内容の表示の移動が検出されてもよい。複数のセクションのうち1セクションが、検出される移動に基づいて調整されてもよい。いくつかの実施形態においては、内容の表示の移動を検出することは、電子ドキュメント内の内容の表示の1つ以上の座標を監視することと、当該監視に基づいて、1つ以上のヘッダのうちのあるヘッダに関する内容が移動したと判断することとを含み得る。セクションを調整することは、移動した内容に基づいてセクションの調整を決定することを含み得る。1つ以上のヘッダは列ヘッダまたは行ヘッダを含み得る。
いくつかの実施形態においては、或るビューに対する調整に関する各イベントにそれぞれ対応している複数のビューが生成されてもよい。内容の全ての部分が視認できなくなるまでビューが生成されてもよい。いくつかの実施形態においては、ビューは、第1の内容に対応するデータおよび第2の内容に対応するデータを示すように表示されてもよい。異なる内容の各々は異なるデータおよび異なるヘッダを有し得る。いくつかの実施形態においては、或るビューは、第1の内容のうちの一部分および第2の内容のうちの一部分を含むように生成されてもよい。このプロセスにおいて開示される技術は、複数の内容(たとえばテーブル)に適用可能であってもよく、これら複数の内容の部分が単一のビューに表示され得る。ビューの調整などのイベントを検出することに基づいて、第1の内容および第2の内容のうち一部分を表示するビューが、単一のビューについてこの明細書中に開示されているとおりに調整されてもよい。いくつかの実施形態においては、ビューの調整に基づいて、或るビューに表示される内容の部分は、データではなく1つ以上のヘッダを含み得る。データは、ビューのさらなる調整が行われると視認可能になり得る。
III.内容を表示してヘッダの表示を管理するためのグラフィカルインターフェイス
図4〜図9は、いくつかの実施形態に従った、内容を表示してヘッダの表示を管理するためのグラフィカルインターフェイスを示す。図4〜図9に示されるグラフィカルインターフェイスの例は、内容の表示を管理するために用いることができるアプリケーション(たとえば、企業業績報告)において提供されてもよい。さまざまなグラフィカルインターフェイスは、ユーザが表示すべき内容を手作業で生成するかまたは自動で生成することを可能にする特徴の例を示している。グラフィカルインターフェイスは、内容を表示するために設計時間、実行時間またはこれら両方の時間中に提供されてもよい。アプリケーションは、ユーザが、データの1つ以上のソースを指定することを可能にし得る。データは、各々のセクションまたは個々のテーブルごとに指定されてもよい。アプリケーションは、内容のレイアウトに基づいた表示のために電子ドキュメントを生成してもよい。内容が図2A〜図2Dに記載されるようにレイアウトされてもよい。内容がセクションにまで分解されていることにより、表示管理システム150がデータ本体セクションにおけるデータの移動に基づいてヘッダの表示を管理することが可能となり得る。
図4は、電子ドキュメント内の内容を表示するためのレイアウトを決定するために設計時間において提供され得るグラフィカルインターフェイス400を示す。グラフィカルインターフェイス400は、内容を表示するとともにレイアウトにおけるセクションを規定するためのレイアウト(たとえば、テーブル)を選択するための1つ以上の要素を含み得る。図5は、グラフィカルインターフェイス400との対話に基づいて提供されるグラフィカルインターフェイス500を示す。グラフィカルインターフェイス500は、セクションに基づいてドキュメント内の内容についてのレイアウトを表示する。各々のセクションは、ドキュメントとしてデータを表示するための属性に対応している。セクションの各々(たとえば、子孫、子供、財政、および収益)は、グラフィカルインターフェイス500における1つ以上の要素によって構成されてもよい。
図6は、ドキュメントについての内容を表示するためにデータのための1つ以上のデータソースを特定するためのグラフィカルインターフェイス600を示す。セクションについてのデータを提供するために1つ以上のデータソースが指定されてもよい。これらのセクションは、それらのセクションについての属性によって規定される次元に基づいたレイアウトに対応し得る。図7は、グラフィカルインターフェイス600との対話に基づいて表示されるグラフィカルインターフェイス700を示す。グラフィカルインターフェイス700は、図6に示されるセクションによって規定されるレイアウトを有するテーブル702を表示し得る。グラフィカルインターフェイス700は、セクション同士の間の属性の関係などの、レイアウトについてのセクションの関係を構成するためにグラフィカルインターフェイス710を表示するように対話型であってもよい。
図8は、ドキュメント内の内容についてのレイアウトでセクションを構成するためのグラフィカルインターフェイス800を示す。具体的には、グラフィカルインターフェイス800は、レイアウトにおけるそれぞれのセクションに対応する属性の順序、関係または配置を構成するための入力を受信するように対話型であってもよい。図9は、ドキュメントについての内容を表示するためのレイアウトのビューをレンダリングするグラフィカルインターフェイス900を示す。ビューは、内容における次元についての複数の属性を表現するために行ヘッダ(「会計」)および列ヘッダ(「財政カレンダ」)とともにあるはずである。
図10〜図21は内容を表示するとともにヘッダの表示を管理するためのグラフィカルインターフェイスを示す。グラフィカルインターフェイスの追加の例が、優先権出願1)2016年9月16日に提出され、「電子ドキュメントにおけるヘッダの表示を管理するための技術(TECHNIQUES FOR MANAGING DISPLAY OF HEADERS IN AN ELECTRONIC DOCUMENT)」と題された米国仮出願第62/396,065号、および、2)2016年11月30日に提出され、「電子ドキュメントにおけるヘッダの表示を管理するための技術(TECHNIQUES FOR MANAGING DISPLAY OF HEADERS IN AN ELECTRONIC DOCUMENT)」と題された米国仮出願第62/428,470号において開示されている。図10〜図21に例示されている特徴は、機能的な工業デザイン、使用インターフェイスの審美的および装飾的なアスペクトを開示している。具体的には、図の各々における要素のレイアウト、配置および場所と各々のグラフィカルユーザインターフェイス(GUI)の全体的外観とは、同様の動作特徴を維持しつつ装飾的、審美的、工業的デザイン、機能的、およびそれらの組合せに基づいて他の形態をとることもできる。たとえば、この明細書中に開示されているそれらの実施形態などのように、GUIのディスプレイにおける各々のヘッダは陰影、1本以上の線および/または他のタイプの審美的、装飾的もしくは工業的デザインで示すことができる。各々のヘッダは、複数のセクションを識別する1本以上の線を含んでいてもよく、各々のセクションは、ヘッダ内のタイトル/ラベルに対応する列または行などの、そのタイトルまたはラベルに対応するデータについてのタイトルまたはラベルに対応している。テーブルのデータ本体内のデータは、ヘッダ内の異なるタイトル/ラベルに対応する異なるデータを識別するために1本以上の線または他の視覚的外観とともに示されてもよい。これらの線は、データ表示用のテーブルまたは他の設計のために示されてもよい。各々のフィールドまたはセルは、データ本体内のデータの別個のアイテムを示す境界または他の外観で表示されてもよい。ビュー、パターンおよび文字のためにグラフィカルインターフェイスにおいて示される線(たとえば、実線および破線)は、例示だけを目的としたものであって、機能に影響を及ぼすものではない。ディスプレイスクリーン上に示される陰影は、動画化されたグラフィカルユーザインターフェイスのためのデータテーブルヘッダの選択的な移動を示している。図10〜図21は、記載および図示された実施形態の機能に影響を及ぼすことなく例示のためだけに示されている。これらの図示が含み得る要素または構成要素はより多くてもよくまたはより少なくてもよい。ディスプレイの外観の変化は例示されているビューを含むグラフィカルインターフェイスの機能に影響を及ぼさない。単一の要素として示されているが、ヘッダは、境界または他の外観によって規定される複数の要素(たとえばセル)を含んでもよく、または、当該複数の要素として現われてもよく、これら複数の要素の各々はデータについての次元の属性に対応している。データ本体において示される各値などのデータは、行ヘッダおよび列ヘッダにおける次元または属性に対応するデータを規定するフィールドまたはセルに対応していてもよい。いくつかの実施形態においては、各々のGUIは、「コーナー」などのデータを持たない部分を含んでもよい。テーブル内のヘッダは、データおよび/または他のヘッダの移動に対して相対的にグラフィカルユーザインターフェイスにおいて動画化される設計として例示されてもよい。
図10〜図15は垂直スクロールを示している。この場合、各テーブルの最上部におけるヘッダ(たとえば、列ヘッダ)は固定されたままであるが、テーブル内のデータが視認可能である限り視認可能となるように調整される。左側の行ヘッダは、当該行ヘッダのうち一部分についてのデータが視認できなくなるまで、視認可能なままである。グラフィカルインターフェイスは、視認可能なデータに従ってヘッダを表示するようにディスプレイが調整されるように、動画化して表示され得る。具体的には、図10〜図15は、ユーザが垂直にスクロールするのに応じて、ヘッダ124が図2〜図5のそれぞれの224、324、424および524に調整されるとともに、図12のヘッダ344が図13〜図15のそれぞれの444、544および644に調整される。ヘッダ126および346は、これらのヘッダについてのデータ本体が視認できる限り、視認可能なままである。
図10は、ドキュメント内の内容を表示するためのビュー104を含むグラフィカルインターフェイス102を示す。ビュー104は、ビュー104にデータを表示する構造を規定するレイアウト120などの1つ以上のレイアウトを含み得る。レイアウト120は、コーナー122、列ヘッダ126、行ヘッダ124およびデータ本体128などの複数のセクションによって規定されてもよい。単一の要素として示されているが、ヘッダは、境界または他の外観によって規定される複数の要素(たとえばセル)を含み得るかまたは当該複数の要素として現われ得る。これら複数の要素の各々はデータについての次元の属性に対応している。データ本体128において示される各値などのデータは、行ヘッダ124および列ヘッダ126における次元または属性に対応するデータを規定するフィールドまたはセルに対応していてもよい。
グラフィカルインターフェイスは、ビューを調整するための入力を受信するように対話型であってもよい。たとえば、ビューは、要素106(たとえば、垂直スクロールバー)および要素108(たとえば、水平スクロールバー)を含み得る。各々の要素は、ビュー102におけるデータ本体のうちヘッダ124および126に関する部分を変更するように対話するものであってもよい。データ本体128に示される内容は、ドキュメント内の内容のうち一部分を含んでいてもよい。行ヘッダ124および列ヘッダ126は、データ本体128において示されるデータのうちそれらのヘッダ124および126によって表現される次元の属性を満たす部分に対応して示されてもよい。
図11は、要素106との対話(たとえば、下方にスクロール)に対応する入力に基づいた更新済みのビューまたは新しいビューへのビュー104の変更に基づいてレンダリングされるグラフィカルインターフェイス102を示す。データ本体128は、図10に示されるデータのうち一部分を含む別のデータを表示するように変化する。ヘッダ126は、ヘッダ126における次元が垂直スクロールのために変化したデータ本体の各列におけるデータに対応している場合には、固定されたままである。図10のヘッダ124は、データ本体128において示されるデータの行に対応する次元を表示するように図11のヘッダ224に変化してもよい。ビュー104は、ヘッダ224における変化を反映するように更新されてもよく、これにより、データ本体128における行のうちの一部分に対応する次元のいくつかの部分を表示する。データ本体128は、垂直スクロールに基づいて表示されている行に対応する新しいデータ228を表示するように修正されてもよい。行ヘッダ224は、列ヘッダ126が固定されたままであるときに行が視認可能になるのに応じてこれら行に対応して調整されてもよい。
図12は、要素106との継続的な対話(たとえば、下方へのスクロール)に対応する入力に基づいた更新済みのビューまたは新しいビューへのビュー104の変更に基づいてレンダリングされるグラフィカルインターフェイス102を示す。データ本体128は、図11に示されるデータの一部分を含む別のデータを表示するように変化する。ヘッダ126は、ヘッダ126における次元が垂直スクロールのために変化したデータ本体の各列におけるデータに対応している場合には、固定されたままであり得る。図11のヘッダ224は、データ本体328において示されるデータの行に対応する次元を表示するように図11のヘッダ324に変化してもよい。ビュー104は、ヘッダ224における変化を反映するように更新されてもよく、これにより、データ本体128における行のうちの一部分に対応する次元のいくつかの部分を表示する。データ本体128は、垂直スクロールに基づいて表示されている行に対応する新しいデータ328を表示するように修正されてもよい。行ヘッダ324は、列ヘッダ126が固定されたままであるときに行が視認可能になるのに応じてこれら行に対応して調整されてもよい。
図12は、ドキュメントについてデータのより多くのセクションを含むレイアウト120の別の部分を示す。グラフィカルインターフェイス102は、図11における要素106との対話に基づいて図12に示されるものを表示するように更新されてもよい。ビュー104におけるレイアウト120は、異なるデータ本体348におけるドキュメントについての異なる内容を表示するように更新されてもよい。内容は、コーナー342、列ヘッダ346、行ヘッダ344およびデータ本体348などのセクションによって規定される別のテーブル340に表示されてもよい。テーブル340は、他のテーブルを有する同じビュー102において表示されてもよい。ヘッダ344は、レイアウト102において示されるデータ本体348に関するフィールドを表示するように生成されてもよい。ヘッダ346は同じままであってもよい。
図12においては、データ本体348は、第1のテーブルについての残存データを示すためにデータ本体448に変化する。ヘッダ344は、データ本体448において示されるデータと一致する属性を示すためにヘッダ444に変化する。図13〜図15は、図12に元々示されているデータ本体348に関するテーブル340内の変化を示す。ユーザが要素106をスクロールすると、データ本体は、ヘッダ344を図13〜図15におけるそれぞれのヘッダ444、544および644に調整しながら、348から図13〜図15におけるそれぞれの448、548および648に変化させる。列ヘッダ346は変化しないままである一方で、列ヘッダ344は、それらの次元だけまたはデータ本体348におけるそれらの次元についてのデータに対応するそれらの部分だけを示すことによって、スティッキーに表示されるように元の表示から変化する。
図16〜21は水平スクロールを示している。この場合、各テーブルの最上部におけるヘッダ(たとえば、行ヘッダ)は固定されたままであるが、テーブル内のデータが視認可能である限り視認できるように調整される。最上部の列ヘッダは、当該列ヘッダのうちの一部分についてのデータが視認不可能になるまで視認可能なままである。グラフィカルインターフェイスは、視認可能なデータに従ってヘッダを表示するようにディスプレイが調整されるように、動画化して表示され得る。図16は、ドキュメントについて内容のビュー104を含むグラフィカルインターフェイス102を示す。ビュー104は、ビュー104におけるデータを表示する構造を規定するレイアウト720によって規定されてもよい。レイアウト120は、コーナー722、列ヘッダ726、行ヘッダ724およびデータ本体728などの複数のセクションによって規定されてもよい。単一の要素として示されているが、ヘッダは、境界または他の外観によって規定される複数の要素(たとえばセル)を含み得るかまたは当該複数の要素として現われ得る。複数の要素の各々はデータについての次元の属性に対応している。データ本体728において示される各値などのデータは、行ヘッダ724および列ヘッダ726における次元または属性に対応するデータを規定するフィールドまたはセルに対応していてもよい。
図16〜図19は、図16のヘッダ726が図17〜図19のそれぞれの826、926および1026に調整されることを示す。データ本体内のデータに対応する属性を示すように調整されるヘッダはスティッキーであるため、その属性についてのデータに関する適切な属性をヘッダ内に見ることができる。図16〜図20においては、ヘッダ724は変化しないままである。なぜなら、ヘッダ724における属性に対応するデータ本体728内のデータが、図16〜図19に示される例においては常に視認可能であるからである。ヘッダ724は、当該ヘッダについてのデータ本体が視認可能である限り視認可能なままである。図19〜図21は、ユーザが要素108で水平にスクロールすると、図19のヘッダ1046が図20の1146および図21の1246に調整されることを示している。ヘッダ1044は、図19に示されるデータ本体1048に関連付けて示される。ユーザが要素108で水平にスクロールすると、ヘッダ1044は図20の1144および図21の1244に変化する。図19〜図21の例においては、両方のヘッダは、ヘッダにおける属性に対応するデータを示すデータ本体の部分に関してスティッキーとなるように変化してもよい。
IV.表示管理システムについてのコンピューティング環境
図22は、一実施形態を実現するための分散型システム2200を示す簡略図である。図示される実施形態においては、分散型システム2200は、1つ以上のクライアントコンピューティングデバイス2202、2204、2206および2208を含む。1つ以上のクライアントコンピューティングデバイス2202、2204、2206および2208は、1つ以上のネットワーク2210を介してウェブブラウザ、プロプライエタリ・クライアント(たとえばオラクルフォーム)などのクライアントアプリケーションを実行して動作させるように構成されている。サーバ2212は、ネットワーク2210を介してリモートクライアントコンピューティングデバイス2202、2204、2206および2208と通信可能に連結されていてもよい。
さまざまな実施形態においては、サーバ2212は、1つ以上のサービスまたはソフトウェアアプリケーションを実行させるように適合されてもよい。いくつかの実施形態においては、サーバ2212はまた、他のサービスを提供してもよく、または、ソフトウェアアプリケーションは非仮想環境および仮想環境を含み得る。いくつかの実施形態においては、これらのサービスは、クライアントコンピューティングデバイス2202、2204、2206および/または2208のユーザに対し、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルの下で提供されてもよい。クライアントコンピューティングデバイス2202、2204、2206および/または2208を動作させるユーザは、さらに、これらのコンポーネントによって提供されるサービスを利用するために、1つ以上のクライアントアプリケーションを利用してサーバ2212と対話してもよい。
図22に示される構成においては、システム700のソフトウェアコンポーネント2218、2220および2222が、サーバ2212上において実現されるものとして示されている。他の実施形態においては、システム2200のコンポーネントのうち1つ以上および/またはこれらのコンポーネントによって提供されるサービスはまた、クライアントコンピューティングデバイス2202、2204、2206および/または2208のうち1つ以上によって実現されてもよい。次いで、クライアントコンピューティングデバイスを動作させるユーザは、これらのコンポーネントによって提供されるサービスを用いるために1つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントはハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せで実現されてもよい。分散型システム2200とは異なり得るさまざまな異なるシステム構成が実現可能であることが認識されるはずである。図22に示される実施形態は、このため、実施形態のシステムを実現するための分散型システムの一例であり、限定するように意図されたものではない。
クライアントコンピューティングデバイス2202、2204、2206および/または2208はさまざまなタイプのコンピューティングシステムを含み得る。たとえば、クライアントコンピューティングデバイスは、携帯可能な手持ち式のデバイス(たとえばiPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(personal digital assistant:PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)を含んでもよく、Microsoft Windows(登録商標)Mobileなどのソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 10、Palm OSなどのさまざまなモバイルオペレーティングシステムを実行し得る。デバイスは、さまざまなインターネット関連アプリ、電子メール、ショートメッセージサービス(short message service:SMS)アプリケーションなどのさまざまなアプリケーションをサポートしてもよく、さまざまな他の通信プロトコルを使用してもよい。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータも含んでもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、たとえばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを限定を伴うことなく含む、市場で入手可能なさまざまなUNIX(登録商標)またはUNIX系のオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。クライアントコンピューティングデバイスは、ネットワーク2210を介して通信することができる、シンクライアントコンピュータ、インターネットにより可能化されるゲームシステム(たとえばKinect(登録商標)ジェスチャ入力デバイス付きまたはKinect(登録商標)ジェスチャ入力デバイス無しのMicrosoft Xboxゲームコンソール)および/または個人メッセージ伝達デバイスなどの電子機器も含んでもよい。
図22の分散型システム2200は4つのクライアントコンピューティングデバイスとともに示されているが、いくつのクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどの他のデバイスがサーバ2212と対話してもよい。
分散型システム2200におけるネットワーク2210は、伝送制御プロトコル/インターネットプロトコル(transmission control protocol/Internet protocol:TCP/IP)、システムネットワークアーキテクチャ(systems network architecture:SNA)、インターネットパケット交換(Internet packet exchange:IPX)、AppleTalkなどを限定を伴うことなく含む、さまざまな入手可能なプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単に一例として、ネットワーク2210は、ローカルエリアネットワーク(local area network:LAN)、イーサネット(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク、インターネット、仮想ネットワーク、仮想プライベートネットワーク(virtual private network:VPN)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば米国電気電子学会(Institute of Electrical and Electronics:IEEE)802.11のプロトコル一式、Bluetooth(登録商標)、および/もしくはその他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/またはこれらの任意の組合せおよび/もしくは他のネットワークであり得る。
サーバ2212は、1つ以上の汎用コンピュータ、専用のサーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組合わせで構成されてもよい。サーバ2212は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。論理ストレージデバイスの1つ以上のフレキシブルなプールを仮想化してサーバのために仮想ストレージデバイスを維持することができる。仮想ネットワークを、サーバ2212によって、ソフトウェア定義のネットワーク接続を用いて制御することができる。さまざまな実施形態において、サーバ2212は、前述の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ2212は、本開示の実施形態に従って上記の処理を実行するためのサーバに対応し得る。
サーバ2212は、上記のもののうちのいずれかを含むオペレーティングシステム、および市場で入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ2212は、ハイパーテキスト転送プロトコル(hypertext transport protocol:HTTP)サーバ、ファイル転送プロトコル(file transfer protocol:FTP)サーバ、コモンゲートウェイインターフェイス(common gateway interface:CGI)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまな付加的なサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれをも実行し得る。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース、IBM(International Business Machines:インターナショナルビジネスマシンズ)などから市場で入手可能なものを含むが、それらに限定されるものではない。
いくつかの実現例では、サーバ2212は、クライアントコンピューティングデバイス2202、2204、2206および2208のユーザから受信されるデータフィードおよび/またはイベント更新情報を解析および整理統合するための1つ以上のアプリケーションを含んでもよい。一例として、データフィードおよび/またはイベント更新情報は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などに関連するリアルタイムのイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)更新情報またはリアルタイムの更新情報を含んでもよいが、それらに限定されるものではない。サーバ2212は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス2202、2204、2206および2208の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションを含んでもよい。
分散型システム2200はまた、1つ以上のデータベース2214および2216を含んでもよい。これらのデータベースは、本開示の実施形態によって使用されるユーザ対話情報、用法パターン情報、適合ルール情報および他の情報などの情報を記憶するためのメカニズムを提供してもよい。データベース2214および2216は、さまざまな位置にあってもよい。一例として、データベース2214および2216のうちの1つ以上は、サーバ2212に局在する(および/またはサーバ2212に常駐する)非一時的な記憶媒体上にあってもよい。代替的には、データベース2214および2216は、サーバ2212から遠隔にあってもよく、ネットワークに基づく接続または専用の接続を介してサーバ2212と通信してもよい。一組の実施形態においては、データベース2214および2216は、ストレージエレアネットワーク(storage-area network:SAN)に常駐していてもよい。同様に、サーバ2212に帰する機能を実行するための任意の必要なファイルが、適宜、サーバ2212上においてローカルに、および/または遠隔で格納されてもよい。一組の実施形態においては、データベース2214および2216は、SQLフォーマットされたコマンドに応答してデータを記憶、更新および検索するように適合される、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでもよい。
いくつかの実施形態においては、クラウド環境は1つ以上のサービスを提供してもよい。図23は、本開示の一実施形態に従って、サービスがクラウドサービスとして提供され得るシステム環境2300のうちの1つ以上のコンポーネントの簡略ブロック図を示す。図23に例示される実施形態においては、システム環境2300は、1つ以上のクライアントコンピューティングデバイス2304、2306および2308を含み、1つ以上のクライアントコンピューティングデバイス2304、2306および2308は、クラウドサービスを提供するクラウドインフラストラクチャシステム2302と対話するようにユーザによって使用されてもよい。クラウドインフラストラクチャシステム2302は、サーバ2212のための上記のものを含み得る1つ以上のコンピュータおよび/またはサーバを備えてもよい。
図23に示されるクラウドインフラストラクチャシステム2302は図示されるもの以外のコンポーネントを有してもよいことが理解されるべきである。さらに、図23に示される実施形態は、開示される一実施形態を組込み得るクラウドインフラストラクチャシステムの一例に過ぎない。他のいくつかの実施形態においては、クラウドインフラストラクチャシステム2302は、図に示されるよりも多いコンポーネントもしくは少ないコンポーネントを有してもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
クライアントコンピューティングデバイス2304、2306および2308は、クライアントコンピューティングデバイス2202、2204、2206および2208に関して上記されたものと同様のデバイスであってもよい。クライアントコンピューティングデバイス2304、2306および2308は、ウェブブラウザ、プロプライエタリ・クライアントアプリケーション(たとえばオラクルフォーム)、または他の何らかのアプリケーションなどのクライアントアプリケーションを動作させるように構成されてもよく、当該クライアントアプリケーションは、クラウドインフラストラクチャシステム2302と対話して、クラウドインフラストラクチャシステム2302によって提供されるサービスを使用するようにクライアントコンピューティングデバイスのユーザによって使用されてもよい。例示的なシステム環境2300が3つのクライアントコンピューティングデバイスとともに示されているが、いくつの数のクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどの他のデバイスがクラウドインフラストラクチャシステム2302と対話してもよい。
ネットワーク2310は、クライアントコンピューティングデバイス2304、2306および2308とクラウドインフラストラクチャシステム2302との間におけるデータの通信および交換を容易にし得る。各ネットワークは、ネットワーク2310について上記されたものを含む、市場で入手可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している如何なるタイプのネットワークであってもよい。
特定の実施形態においては、クラウドインフラストラクチャシステム2302によって提供されるサービスは、オンデマンドでクラウドインフラストラクチャシステムのユーザにとって利用可能にされるサービスのホストを含んでもよい。内容の表示を管理することに関連するサービスに加えて、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホストされるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどを限定を伴うことなく含む他のさまざまなサービスも提供されてもよい。クラウドインフラストラクチャシステムによって提供されるサービスは、動的にスケーリングしてそのユーザのニーズを満たすことができる。
特定の実施形態においては、クラウドインフラストラクチャシステム2302によって提供される或るサービスの或る具体的なインスタンス化は、本明細書では「サービスインスタンス」と称され得る。一般に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザに利用可能にされるサービスはいずれも、「クラウドサービス」と称される。典型的には、パブリッククラウド環境においては、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、ホストされるデータベース、ホストされるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、サービスは、クラウド上のリモートストレージに対するインターネットを介してのパスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスベースのホストされたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイトにおいてホストされる電子メールソフトウェアアプリケーションに対するアクセスを含み得る。
特定の実施形態においては、クラウドインフラストラクチャシステム2302は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルで、信頼性があり、高可用性があり、かつセキュリティ上安全な態様で顧客に対して配送されるアプリケーション、ミドルウェア、データベースサービス提供品一式を含んでもよい。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクル・パブリック・クラウド(Oracle Public Cloud)である。
クラウドインフラストラクチャシステム2302は、「ビッグデータ」関連の計算および解析ツールも提供し得る。「ビッグデータ」という語は、一般に、大量のデータを視覚化し、傾向を検出し、および/またはその他の態様でデータと対話するようにアナリストおよび研究者によって記憶および操作され得る非常に大きなデータセットを指すのに用いられる。このビッグデータおよび関連のアプリケーションは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールでホストおよび/または操作され得る。そのようなデータを表示するため、またはデータもしくはデータが表現するものに対する外部の力をシミュレートするために、並列に連結された何十、何百または何千ものプロセッサがそのようなデータに対して作用し得る。これらのデータセットは、データベースにおいてもしくは構造化モデルに従って編成されたような構造化データ、および/または非構造化データ(たとえば電子メール、画像、データブロブ(バイナリラージオブジェクト)、ウェブページ、複合イベント処理)を含み得る。より多くの(またはより少ない)計算リソースを比較的迅速に対象に集中させることができるいくつかの実施形態の機能を活用することによって、クラウドインフラストラクチャシステムは、ビジネス、政府機関、研究組織、私人、同じ考えを持った個人もしくは組織のグループ、または他のエンティティからの要求に基づいて大きなデータセットに対してタスクを実行するために、より適切に利用できるであろう。
さまざまな実施形態においては、クラウドインフラストラクチャシステム2302は、クラウドインフラストラクチャシステム2302によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、およびトラッキングするように適合されてもよい。クラウドインフラストラクチャシステム2302は、クラウドサービスをさまざまな展開モデルを介して提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム2302が(たとえばオラクル社によって所有される)クラウドサービスを販売する組織によって所有されるとともにサービスが一般大衆またはさまざまな業界企業に対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム2302が単一の組織に対してのみ稼働され得るとともにその組織内における1つ以上のエンティティに対してサービスを提供し得るプライベートクラウドモデルの下で提供されてもよい。また、クラウドサービスは、クラウドインフラストラクチャシステム2302およびクラウドインフラストラクチャシステム2302によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有されているコミュニティクラウドモデルの下で提供されてもよい。また、クラウドサービスは、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの実施形態においては、クラウドインフラストラクチャシステム2302によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)カテゴリ、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリ、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される1つ以上のサービスを含んでもよい。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム2302によって提供される1つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム2302は、次いで、処理を実行して、顧客のサブスクリプションオーダーでサービスを提供する。
いくつかの実施形態においては、クラウドインフラストラクチャシステム2302によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、それらに限定されるものではない。いくつかの例では、アプリケーションサービスは、クラウドインフラストラクチャシステムによってSaaSプラットフォームを介して提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに入るクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、オンデマンドアプリケーション一式を統合された開発および展開プラットフォーム上で構築し配送する機能を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御してもよい。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供されてもよい。その例としては、大きな組織に対する売上実績管理、企業統合、および事業柔軟性に対するソリューションを提供するサービスが挙げられるが、それらに限定されるものではない。
いくつかの実施形態においては、プラットフォームサービスは、クラウドインフラストラクチャシステム2302によってPaaSプラットフォームを介して提供されてもよい。PaaSプラットフォームは、PaaSカテゴリに入るクラウドサービスを提供するよう構成されてもよい。プラットフォームサービスの例としては、(オラクルなどの)組織が既存のアプリケーションを共有の共通アーキテクチャにおいて整理統合することを可能にするサービス、およびプラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する機能を挙げることができるが、それらに限定されるものではない。PaaSプラットフォームは、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステム2302によって提供されるPaaSサービスを、別のライセンスおよびサポートを購入する必要なく取得することができる。プラットフォームサービスの例としては、オラクル・ジャバ・クラウド・サービス(Oracle Java Cloud Service:JCS)、オラクル・データベース・クラウド・サービス(Oracle Database Cloud Service:DBCS)などが挙げられるが、それらに限定されるものではない。
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを使用することができ、展開されたサービスを制御することもできる。いくつかの実施形態においては、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばオラクル・フュージョン・ミドルウェアサービス)、およびJavaクラウドサービスを含んでもよい。一実施形態においては、データベースクラウドサービスは、組織がデータベースリソースをプールし、顧客にデータベース・アズ・ア・サービス(Database as a Service)をデータベースクラウドの形式で提供することを可能にする共有のサービス展開モデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発および展開するためのプラットフォームをクラウドインフラストラクチャシステムにおいて提供してもよく、Javaクラウドサービスは、顧客がJavaアプリケーションを展開するためのプラットフォームをクラウドインフラストラクチャシステムにおいて提供してしてもよい。
さまざまな異なるインフラストラクチャサービスがIaaSプラットフォームによってクラウドインフラストラクチャシステムにおいて提供されてもよい。インフラストラクチャサービスは、ストレージ、ネットワーク、ならびにSaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客に対する他の基礎的計算リソースなどの基本的な計算リソースの管理および制御を容易にする。
特定の実施形態においては、クラウドインフラストラクチャシステム2302は、クラウドインフラストラクチャシステムの顧客に対してさまざまなサービスを提供するために用いられるリソースを提供するためのインフラストラクチャリソース2330も含み得る。一実施形態においては、インフラストラクチャリソース2330は、サーバ、ストレージ、ならびにPaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するためのネットワーク接続リソース、ならびに他のリソースなどの、ハードウェアの予め統合され最適化された組合せを含んでもよい。
いくつかの実施形態においては、クラウドインフラストラクチャシステム2302におけるリソースは、複数のユーザによって共有され、要求に従って動的に再割り当てされてもよい。加えて、リソースは、ユーザに対してさまざまな時間ゾーンで割り当てられてもよい。たとえば、クラウドインフラストラクチャシステム2302は、第1の時間ゾーンにおける第1のユーザセットがクラウドインフラストラクチャシステムのリソースをある特定の時間の間利用することを可能にし、次いで、異なる時間ゾーンに位置する別のユーザセットに対する同じリソースの再割り当てを可能にし、これにより、リソースの利用を最大化し得る。
特定の実施形態においては、クラウドインフラストラクチャシステム2302のさまざまなコンポーネントまたはモジュールによって共有されてクラウドインフラストラクチャシステム2302によるサービスのプロビジョニングを可能にするいくつかの内部共有サービス2332が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、それらに限定されるものではない。
特定の実施形態においては、クラウドインフラストラクチャシステム2302は、クラウドインフラストラクチャシステムにおいてクラウドサービス(たとえばSaaSサービス、PaaSサービスおよびIaaSサービス)の包括的な管理を提供してもよい。一実施形態においては、クラウド管理機能は、クラウドインフラストラクチャシステム2302によって受信される顧客のサブスクリプションをプロビジョニングし、管理し、およびトラッキングする機能などを含んでもよい。
一実施形態においては、図23に示されるように、クラウド管理機能は、オーダー管理モジュール2320、オーダーオーケストレーションモジュール2322、オーダープロビジョニングモジュール2324、オーダー管理および監視モジュール2326、ならびにアイデンティティ管理モジュール2328などの1つ以上のモジュールによって提供されてもよい。これらのモジュールは、1つ以上のコンピュータおよび/もしくはサーバを含んでもよく、またはそれらを用いて提供されてもよく、それらは、汎用コンピュータ、専用のサーバコンピュータ、サーバファーム、サーバクラスタ、または他の如何なる適切な構成および/もしくは組合せであってもよい。
例示的な動作では、ステップ2334において、クライアントコンピューティングデバイス2304、2306または2308などのクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム2302によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム2302によって提供される1つ以上のサービスに対するサブスクリプションに対するオーダーを行なうことによって、クラウドインフラストラクチャシステム2302と対話してもよい。特定の実施形態においては、顧客は、クラウドユーザインターフェイス(User Interface:UI)(たとえば、クラウドUI2312、クラウドUI2314および/またはクラウドUI2316など)にアクセスし、これらのUIを介してブスクリプションオーダーを行なってもよい。顧客がオーダーを行なうことに応答してクラウドインフラストラクチャシステム2302によって受信されるオーダー情報は、顧客を識別する情報、およびクラウドインフラストラクチャシステム2302によって提供される、その顧客が利用することを意図する1つ以上のサービスを含んでもよい。
ステップ2336において、顧客から受信されたオーダー情報は、オーダーデータベース2318に保存されてもよい。これが新たなオーダーである場合には、当該オーダーに対して新たな記録が作成されてもよい。一実施形態においては、オーダーデータベース2318は、クラウドインフラストラクチャシステム2318によって操作されるいくつかのデータベースのうちの1つであり得るとともに、他のシステム要素と連携して操作され得る。
ステップ2338において、オーダー情報は、オーダー管理モジュール2320に転送されてもよく、当該オーダー管理モジュール2320は、オーダーの検証、および検証後のそのオーダーの予約などの、オーダーに関連する請求および課金の機能を実行するように構成されてもよい。
ステップ2340において、オーダーに関する情報は、オーダーオーケストレーションモジュール2322に伝達されてもよく、当該オーダーオーケストレーションモジュール2322は、顧客によってなされたオーダーに対してサービスおよびリソースのプロビジョニングをオーケストレーションするよう構成されている。いくつかの例では、オーダーオーケストレーションモジュール2322は、オーダープロビジョニングモジュール2324のサービスをプロビジョニングに使用してもよい。特定の実施形態においては、オーダーオーケストレーションモジュール2322は、各オーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネス論理を適用して、オーダーがプロビジョニングに進むべきか否かを判断する。
図23に示される実施形態に示されるように、ステップ2342において、新たなサブスクリプションに対するオーダーを受信すると、オーダーオーケストレーションモジュール2322は、オーダープロビジョニングモジュール2324に対して、リソースを割り当てて、サブスクリプションオーダーを満たすのに必要とされるリソースを構成するようにとの要求を送信する。オーダープロビジョニングモジュール2324は、顧客によってオーダーされたサービスに対するリソースの割り当てを可能にする。オーダープロビジョニングモジュール2324は、クラウドインフラストラクチャシステム2300によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするのに用いられる物理的インプリメンテーション層との間にある抽象化レベルを提供する。これにより、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか、または、サービスおよびリソースが予めプロビジョニングされて要求時にのみ割当て/割振りがなされるかなどの、インプリメンテーション詳細からオーダーオーケストレーションモジュール2322を分離することができる。
ステップ2344において、サービスおよびリソースがプロビジョニングされると、要求されたサービスが使用できる準備ができた状態であることを示す通知が、加入している顧客に送信され得る。いくつかの例では、顧客が要求されたサービスの使用を開始することを可能にする情報(たとえばリンク)が顧客に送信されてもよい。
ステップ2346において、顧客のサブスクリプションオーダーは、オーダー管理および監視モジュール2326によって管理およびトラッキングされ得る。いくつかの例では、オーダー管理および監視モジュール2326は、加入したサービスの顧客使用に関する使用統計を収集するように構成され得る。たとえば、統計は、使用されるストレージの量、転送されるデータの量、ユーザの人数、ならびにシステムアップ時間およびシステムダウン時間の量などについて収集されてもよい。
特定の実施形態においては、クラウドインフラストラクチャシステム2300はアイデンティティ管理モジュール2328を含み得る。アイデンティティ管理モジュール2328は、クラウドインフラストラクチャシステム2300におけるアクセス管理および承認サービスなどのアイデンティティサービスを提供するように構成されている。いくつかの実施形態においては、アイデンティティ管理モジュール2328は、クラウドインフラストラクチャシステム2302によって提供されるサービスを利用することを望む顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報、およびそれらの顧客がさまざまなシステムリソース(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを実行することが承認されるかを記述する情報を含み得る。アイデンティティ管理モジュール2328は、各顧客についての記述的情報と、その記述的情報がどのように誰によってアクセスおよび修正され得るかについての記述的情報との管理も含み得る。
図24は、本開示の一実施形態を実現するのに使用され得る例示的なコンピュータシステム2400を示す。いくつかの実施形態においては、コンピュータシステム2400は、上記のさまざまなサーバおよびコンピュータシステムのうちのいずれかを実現するために用いられてもよい。図24に示されるように、コンピュータシステム2400は、バスサブシステム2402を介していくつかの周辺サブシステムと通信する処理ユニット2404を含むさまざまなサブシステムを含む。これらの周辺サブシステムは、処理加速ユニット2406、I/Oサブシステム2408、ストレージサブシステム2418および通信サブシステム2424を含み得る。ストレージサブシステム2418は、有形のコンピュータ読取り可能記憶媒体2422およびシステムメモリ2410を含んでもよい。
バスサブシステム2402は、コンピュータシステム2400のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム2402は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実施形態は、複数のバスを利用してもよい。バスサブシステム2402は、さまざまなバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含んでもよい。
処理サブシステム2404は、コンピュータシステム2400の動作を制御し、1つ以上の処理ユニット2432,2434などを備えてもよい。処理ユニットは、単一コアもしくはマルチコアプロセッサを含む1つ以上のプロセッサ、プロセッサの1つ以上のコア、またはそれらの組合せを含んでもよい。いくつかの実施形態においては、処理サブシステム2404は、グラフィックスプロセッサ、デジタル信号プロセッサ(digital signal processor:DSP)などの1つ以上の特殊用途コプロセッサを含み得る。いくつかの実施形態においては、処理サブシステム2404の処理ユニットの一部または全ては、特定用途向け集積回路(application specific integrated circuit:ASIC)またはフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)などのカスタマイズされた回路を用いて実現され得る。
いくつかの実施形態においては、処理サブシステム2404における処理ユニットは、システムメモリ2410またはコンピュータ読取り可能記憶媒体2422に記憶された命令を実行することができる。さまざまな実施形態においては、処理ユニットは、さまざまなプログラムまたはコード命令を実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与のときに、実行されるべきプログラムコードの一部または全ては、システムメモリ2410、および/または、場合によっては1つ以上のストレージデバイスを含むコンピュータ読取り可能記憶媒体2422に常駐することができる。好適なプログラミングにより、処理サブシステム2404は、内容の表示を管理するための上記のさまざまな機能を提供することができる。
特定の実施形態においては、コンピュータシステム2400によって実行される処理全体を加速させるように、カスタマイズされた処理を実行するため、または処理サブシステム2404によって実行される処理の一部をオフロードするための処理加速ユニット2406が設けられてもよい。
I/Oサブシステム2408は、コンピュータシステム2400に情報を入力するため、および/または、コンピュータシステム2400からもしくはコンピュータシステム2400を介して情報を出力するためのデバイスおよびメカニズムを含んでもよい。一般に、「入力デバイス」という語の使用は、コンピュータシステム2400に情報を入力するための実現可能な全てのタイプのデバイスおよびメカニズムを含むよう意図されている。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスはまた、ユーザが入力デバイスを制御して入力デバイスと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび話し言葉コマンドを用いて入力を受信するためのインターフェイスを備えたデバイスなどのモーション感知および/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の活動(たとえば写真を撮っている間および/またはメニュー選択を行なっている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
ユーザインターフェイス入力デバイスの他の例としては、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスが挙げられるが、それらに限定されるものではない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査デバイスなどの医療画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という語の使用は、コンピュータシステム2400からユーザまたは他のコンピュータに情報を出力するための実現可能な全てのタイプのデバイスおよびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
ストレージサブシステム2418は、コンピュータシステム2400によって使用される情報を記憶するためのリポジトリまたはデータストアを提供する。ストレージサブシステム2418は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形の非一時的なコンピュータ読取り可能記憶媒体を提供する。処理サブシステム2404によって実行されたときに上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)がストレージサブシステム2418に記憶されてもよい。当該ソフトウェアは、処理サブシステム2404の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム2418は、本発明に従って使用されるデータを記憶するためのリポジトリも備えていてもよい。
ストレージサブシステム2418は、揮発性メモリデバイスおよび不揮発性メモリデバイスを含む1つ以上の非一時的なメモリデバイスを含んでもよい。図24に示されるように、ストレージサブシステム2418は、システムメモリ2410と、コンピュータ読取り可能記憶媒体2422とを含む。システムメモリ2410は、プログラム実行中に命令およびデータを記憶するための揮発性メインランダムアクセスメモリ(random access memory:RAM)と、固定命令が記憶される不揮発性リードオンリメモリ(read only memory:ROM)またはフラッシュメモリとを含む複数のメモリを含んでもよい。いくつかの実現例では、起動中などにコンピュータシステム2400内の要素間における情報の転送を助ける基本的なルーティンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)が、典型的には、ROMに記憶されてもよい。RAMは、典型的には、処理サブシステム2404によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ2410は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含んでもよい。
一例として、限定を伴うことなく、図24に示されるように、システムメモリ2410は、アプリケーションプログラム2412を記憶してもよく、当該アプリケーションプログラム2412は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)など、プログラムデータ2414およびオペレーティングシステム2416を含んでもよい。一例として、オペレーティングシステム2416は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinux(登録商標)オペレーティングシステム、市場で入手可能なさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、ならびに/または、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)10 OS、およびPalm(登録商標)OSオペレーティングシステムを含んでもよい。
コンピュータ読取り可能記憶媒体2422は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構造を記憶してもよい。処理サブシステム2404によって実行されたときにプロセッサに上記の機能を提供させるソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム2418に記憶されてもよい。一例として、コンピュータ読取り可能記憶媒体2422は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、ブルーレイ(登録商標)ディスクなどの光ディスクドライブ、または他の光学式媒体などの不揮発性メモリを含んでもよい。コンピュータ読取り可能記憶媒体2422は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digital:SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されるものではない。コンピュータ読取り可能記憶媒体2422は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(solid-state drive:SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(magnetoresistive RAM:MRAM)SSDなどの揮発性メモリに基づくSSD、およびDRAMとフラッシュメモリベースのSSDとの組合せを使用するハイブリッドSSDを含んでもよい。コンピュータ読取り可能媒体2422は、コンピュータ読取り可能な命令、データ構造、プログラムモジュールおよび他のデータのストレージをコンピュータシステム2400に提供してもよい。
特定の実施形態においては、ストレージサブシステム2400は、コンピュータ読取り可能記憶媒体2422にさらに接続可能なコンピュータ読取り可能記憶媒体リーダ2420を含んでもよい。システムメモリ2410とともに、およびオプションとしてシステムメモリ2410との組合せで、コンピュータ読取り可能記憶媒体2422は、コンピュータ読取り可能な情報を記憶するための、遠隔の、ローカルな、固定された、および/またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表わしてもよい。
特定の実施形態においては、コンピュータシステム2400は、1つ以上の仮想マシンを実行するためのサポートを提供してもよい。コンピュータシステム2400は、仮想マシンの構成および管理を容易にするためのハイパーバイザなどのプログラムを実行してもよい。各仮想マシンは、割り当てられたメモリ、計算(たとえばプロセッサ、コア)、I/Oおよびネットワーク接続リソースであってもよい。各仮想マシンは、典型的には、それ自体のオペレーティングシステムを実行し、当該オペレーティングシステムは、コンピュータシステム2400によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同一であってもよく、または異なっていてもよい。したがって、場合によっては、複数のオペレーティングシステムがコンピュータシステム2400によって同時に実行されてもよい。各仮想マシンは、一般に、他の仮想マシンから独立して実行される。
通信サブシステム2424は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム2424は、コンピュータシステム2400から他のシステムへのデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム2424は、コンピュータシステム2400が1つ以上のクライアントコンピューティングデバイスとの情報の送受のためにインターネットを介して当該1つ以上のクライアントコンピューティングデバイスへの通信チャネルを確立することを可能にし得る。
通信サブシステム2424は、有線通信プロトコルおよび/または無線通信プロトコルをサポートしてもよい。たとえば、特定の実施形態においては、通信サブシステム2424は、(たとえばセルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組合せを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)送受信機コンポーネント、グローバルポジショニングシステム(global positioning system:GPS)受信機コンポーネント、ならびに/または、他のコンポーネントを含んでもよい。いくつかの実施形態においては、通信サブシステム2424は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(たとえばイーサネット)を提供することができる。
通信サブシステム2424は、さまざまな形式でデータを送受信することができる。たとえば、いくつかの実施形態においては、通信サブシステム2424は、構造化されたおよび/または構造化されていないデータフィード2426、イベントストリーム2428、イベント更新情報2430などの形式で入力通信を受信してもよい。たとえば、通信サブシステム2424は、ソーシャルメディアネットワークならびに/または他の通信サービス(たとえば、Twitter(登録商標)フィード、Facebook(登録商標)更新情報、Rich Site Summary(RSS)フィードなどのウェブフィード、および/もしくは1つ以上の第三者情報源からのリアルタイム更新情報など)のユーザからリアルタイムでデータフィード2426を受信(または送信)するように構成されてもよい。
特定の実施形態においては、通信サブシステム2424は、連続データストリームの形式でデータを受信するよう構成されてもよく、当該連続データストリームは、明示的な端部を有さない本質的に連続的または無限であり得る、リアルタイムイベントのイベントストリーム2428および/またはイベント更新情報2430を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを挙げることができる。
また、通信サブシステム2424は、構造化されたおよび/または構造化されていないデータフィード2426、イベントストリーム2428、イベント更新情報2430などを、コンピュータシステム2400に結合される1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するよう構成されてもよい。
コンピュータシステム2400は、手持ち式の携帯デバイス(たとえばiPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、または他のいずれかのデータ処理システムを含む、さまざまなタイプのもののうちの1つであり得る。
コンピュータおよびネットワークが常に変化する性質を有しているため、図24に示されるコンピュータシステム2400の記載は、単に具体的な例として意図される。図24に示されるシステムよりも多いかまたは少ないコンポーネントを有する多くの他の構成が実現可能である。本明細書において提供されている開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および/または方法を理解するであろう。
本開示の具体的な実施形態について説明してきたが、さまざまな変形例、変更例、代替的な構成および同等例も本開示の範囲内に包含される。これら変形例も本開示の範囲内に包含される。本発明の実施形態は、特定の具体的なデータ処理環境内でのオペレーションに限定されるものではなく、複数のデータ処理環境内で自由に機能し得る。加えて、特定の一連のトランザクションおよびステップを用いて本開示の実施形態について説明してきたが、本開示の範囲が、記載されている一連のトランザクションおよびステップに限定されるものではないことが当業者に明らかになるはずである。上記の実施形態のさまざまな特徴および局面は、個々にまたは一緒に使用されてもよい。
さらに、ハードウェアとソフトウェアとの特定の組合せを用いて本開示の実施形態について説明してきたが、ハードウェアとソフトウェアとの他の組合せも本開示の範囲内であることが認識されるはずである。本開示の実施形態のいくつかは、ハードウェアのみで実現されてもよく、またはソフトウェアのみで実現されてもよく、またはそれらの組合せを用いて実現されてもよい。本明細書に記載されているさまざまなプロセスは、任意の組合せで同一のプロセッサまたは異なるプロセッサ上で実現され得る。したがって、コンポーネントまたはモジュールが特定のオペレーションを実行するよう構成されるものとして記載されている場合、このような構成は、たとえばオペレーションを実行するように電子回路を設計することによって、オペレーションを実行するように(マイクロプロセッサなどの)プログラム可能な電子回路をプログラミングすることによって、またはそれらの任意の組合せによって、達成されることができる。プロセスは、従来のプロセス間通信技術を含むがそれに限定されないさまざまな技術を用いて通信することができ、プロセスの異なる対は、異なる技術を使用してもよく、またはプロセスの同一の対は、異なる時に異なる技術を使用してもよい。
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で考えられるべきである。しかしながら、特許請求の範囲に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の変形および変更がそれに対してなされてもよいことが明白になるであろう。したがって、具体的な開示実施形態について説明してきたが、これらは限定的であるよう意図されるものではない。さまざまな変形例および同等例は添付の特許請求の範囲内である。