(57)【要約】【課題】ウェブアプリケーションを作成及び管理するための技術を提供すること。【解決手段】実施形態は、編成済みデータを受信することと、編成済みデータを分析して、編成済みデータに含まれる１つ以上のデータタイプを判別することと、を含む。１つ以上のデータタイプに基づいて、特定のデータタイプを２つ以上のデータタイプに分割することができるかどうかを判定することと、各分割されたデータタイプについてのウィジェットを提案することと、を含め、提案ウィジェットが決定される。提案ウィジェットが、ユーザに提示され、提案ウィジェットを承諾するユーザ入力に応じて、提案ウィジェットを含むウェブアプリケーションが作成される。【選択図】図４
2020064679.tif 000002
【特許請求の範囲】
【請求項１】
ウェブアプリケーションを作成するためのシステムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサにより実行されたときに、
編成済みデータを受信することと、
前記編成済みデータを受信した後に、
前記編成済みデータに含まれる複数のデータタイプを判別することと、
前記複数のデータタイプの各データタイプについての１つ以上の提案ウィジェットを決定することであって、各データタイプについての前記１つ以上の提案ウィジェットを決定することは、
特定のデータタイプを２つ以上のデータタイプに分割することができると判定することと、
前記特定のデータタイプについての前記２つ以上のデータタイプからの各データタイプについての提案ウィジェットを決定することと、
を含む、決定することと、
前記複数のデータタイプと、前記特定のデータタイプについての前記２つ以上のデータタイプからの各データタイプについての前記提案ウィジェットを含む、前記複数のデータタイプの各データタイプについての決定された前記１つ以上の提案ウィジェットと、を表示することと、
前記１つ以上の提案ウィジェットを承諾するユーザ入力を受信したことに応じて、前記１つ以上の提案ウィジェットを含むウェブアプリケーションを作成することと、
を生じさせる命令を記憶している記憶媒体と、
を有する、システム。
【請求項２】
前記１つ以上の提案ウィジェットの各ウィジェットは、特定のウィジェットタイプであり、各データタイプについての１つ以上の提案ウィジェットを決定することは、当該データタイプに対応する１つ以上の特定のウィジェットタイプを選択することを含む、請求項１に記載のシステム。
【請求項３】
前記複数のデータタイプを表示することは、前記特定のデータタイプについての前記２つ以上のデータタイプを表示することを含む、請求項１に記載のシステム。
【請求項４】
前記記憶媒体は、前記１つ以上のプロセッサにより実行されたときに、
前記複数のデータタイプのうちの２つ以上のデータタイプを分割することができると判定することと、
選択可能なオプションとして該２つ以上のデータタイプを表示することと、
前記複数のデータタイプのうちの該２つ以上のデータタイプから前記特定のデータタイプを選択するユーザ入力を受信したことに応じて、前記特定のデータタイプを２つ以上のデータタイプに分割することと、
を生じさせる命令をさらに記憶している、請求項１に記載のシステム。
【請求項５】
前記記憶媒体は、前記１つ以上のプロセッサにより実行されたときに、
前記特定のデータタイプを２つ以上のデータタイプに分割することができると判定したことに応じて、２つ以上の提案データタイプを表示することと、
前記２つ以上の提案データタイプを承諾するユーザ入力を受信したことに応じて、前記特定のデータタイプを前記２つ以上の提案データタイプに分割することと、
を生じさせる命令をさらに記憶している、請求項１に記載のシステム。
【請求項６】
前記記憶媒体は、前記１つ以上のプロセッサにより実行されたときに、前記１つ以上の提案ウィジェットを表示した後に、
特定の提案ウィジェットを分割するユーザ要求を受信することと、
前記特定の提案ウィジェットについての２つ以上の提案ウィジェットを決定することと、
前記特定の提案ウィジェットを、前記特定の提案ウィジェットについての前記２つ以上の提案ウィジェットで置換することと、
を生じさせる命令をさらに記憶しており、
前記ウェブアプリケーションは、前記２つ以上の提案ウィジェットを含むが、前記特定の提案ウィジェットを含まない、請求項１に記載のシステム。
【請求項７】
前記記憶媒体は、前記１つ以上のプロセッサにより実行されたときに、前記１つ以上の提案ウィジェットを表示した後に、
２つ以上の特定の提案ウィジェットをマージするユーザ要求を受信することと、
前記２つ以上の特定の提案ウィジェットについての置換用提案ウィジェットを決定することと、
前記２つ以上の特定の提案ウィジェットを、前記置換用提案ウィジェットで置換することと、
を生じさせる命令をさらに記憶しており、
前記ウェブアプリケーションは、前記置換用提案ウィジェットを含むが、前記２つ以上の特定の提案ウィジェットを含まない、請求項１に記載のシステム。
【請求項８】
前記記憶媒体は、前記１つ以上のプロセッサにより実行されたときに、
前記ウェブアプリケーションを使用して、前記編成済みデータを記憶すること
を生じさせる命令をさらに記憶しており、
前記編成済みデータを記憶することは、前記編成済みデータを複数の部分に分割することを含み、前記複数の部分の各部分は、前記１つ以上の提案ウィジェットのうちの提案ウィジェットに関連付けられる、請求項１に記載のシステム。
【請求項９】
前記特定のデータタイプを２つ以上のデータタイプに分割することができると判定することは、前記編成済みデータのうちの、前記特定のデータタイプに関連する部分が、２つ以上の異なるデータタイプに対応すると判定することを含む、請求項１に記載のシステム。
【請求項１０】
前記特定のデータタイプを２つ以上のデータタイプに分割することができると判定することは、前記編成済みデータのうちの、前記特定のデータタイプに関連する部分が、１つ以上のデリミタを含むと判定することを含む、請求項１に記載のシステム。
【請求項１１】
ウェブアプリケーションを作成するための方法であって、
編成済みデータを受信することと、
前記編成済みデータを受信した後に、
前記編成済みデータに含まれる複数のデータタイプを判別することと、
前記複数のデータタイプの各データタイプについての１つ以上の提案ウィジェットを決定することであって、各データタイプについての前記１つ以上の提案ウィジェットを決定することは、
特定のデータタイプを２つ以上のデータタイプに分割することができると判定することと、
前記特定のデータタイプについての前記２つ以上のデータタイプからの各データタイプについての提案ウィジェットを決定することと、
を含む、決定することと、
前記複数のデータタイプと、前記特定のデータタイプについての前記２つ以上のデータタイプからの各データタイプについての前記提案ウィジェットを含む、前記複数のデータタイプの各データタイプについての決定された前記１つ以上の提案ウィジェットと、を表示することと、
前記１つ以上の提案ウィジェットを承諾するユーザ入力を受信したことに応じて、前記１つ以上の提案ウィジェットを含むウェブアプリケーションを作成することと、
を含む、方法。
【請求項１２】
前記１つ以上の提案ウィジェットの各ウィジェットは、特定のウィジェットタイプであり、各データタイプについての１つ以上の提案ウィジェットを決定することは、当該データタイプに対応する１つ以上の特定のウィジェットタイプを選択することを含む、請求項１１に記載の方法。
【請求項１３】
前記複数のデータタイプを表示することは、前記特定のデータタイプについての前記２つ以上のデータタイプを表示することを含む、請求項１１に記載の方法。
【請求項１４】
前記複数のデータタイプのうちの２つ以上のデータタイプを分割することができると判定することと、
選択可能なオプションとして該２つ以上のデータタイプを表示することと、
前記複数のデータタイプのうちの該２つ以上のデータタイプから前記特定のデータタイプを選択するユーザ入力を受信したことに応じて、前記特定のデータタイプを２つ以上のデータタイプに分割することと、
をさらに含む、請求項１１に記載の方法。
【請求項１５】
前記特定のデータタイプを２つ以上のデータタイプに分割することができると判定したことに応じて、２つ以上の提案データタイプを表示することと、
前記２つ以上の提案データタイプを承諾するユーザ入力を受信したことに応じて、前記特定のデータタイプを前記２つ以上の提案データタイプに分割することと、
をさらに含む、請求項１１に記載の方法。
【請求項１６】
前記１つ以上の提案ウィジェットを表示した後に、
特定の提案ウィジェットを分割するユーザ要求を受信することと、
前記特定の提案ウィジェットについての２つ以上の提案ウィジェットを決定することと、
前記特定の提案ウィジェットを、前記特定の提案ウィジェットについての前記２つ以上の提案ウィジェットで置換することと、
をさらに含み、
前記ウェブアプリケーションは、前記２つ以上の提案ウィジェットを含むが、前記特定の提案ウィジェットを含まない、請求項１１に記載の方法。
【請求項１７】
前記１つ以上の提案ウィジェットを表示した後に、
２つ以上の特定の提案ウィジェットをマージするユーザ要求を受信することと、
前記２つ以上の特定の提案ウィジェットについての置換用提案ウィジェットを決定することと、
前記２つ以上の特定の提案ウィジェットを、前記置換用提案ウィジェットで置換することと、
をさらに含み、
前記ウェブアプリケーションは、前記置換用提案ウィジェットを含むが、前記２つ以上の特定の提案ウィジェットを含まない、請求項１１に記載の方法。
【請求項１８】
前記ウェブアプリケーションを使用して、前記編成済みデータを記憶すること
をさらに含み、
前記編成済みデータを記憶することは、前記編成済みデータを複数の部分に分割することを含み、前記複数の部分の各部分は、前記１つ以上の提案ウィジェットのうちの提案ウィジェットに関連付けられる、請求項１１に記載の方法。
【請求項１９】
前記特定のデータタイプを２つ以上のデータタイプに分割することができると判定することは、前記編成済みデータのうちの、前記特定のデータタイプに関連する部分が、２つ以上の異なるデータタイプに対応すると判定することを含む、請求項１１に記載の方法。
【請求項２０】
前記特定のデータタイプを２つ以上のデータタイプに分割することができると判定することは、前記編成済みデータのうちの、前記特定のデータタイプに関連する部分が、１つ以上のデリミタを含むと判定することを含む、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、ウェブアプリケーションの作成及び管理に関する。
【背景技術】
【０００２】
このセクションに記載されるアプローチは、追求され得るアプローチであるが、必ずしも、以前に着想又は追求されたアプローチであるとは限らない。したがって、別途示されない限り、このセクションに記載されるアプローチのいずれも、単にこのセクションに含まれることにより従来技術に該当するとみなされるべきではない。
【０００３】
中堅・中小企業（ＳＭＢ）環境におけるユーザは、注文書、依頼書、日常取引データ等、様々なビジネスタスクのためにデータを追跡及び編成する（organize）必要がある。ＳＭＢユーザは、データを記憶するために、スプレッドシートソフトウェア、単純なデータベースアプリケーション、又はワードプロセッシングソフトウェアを使用することがある。しかしながら、そのようなデータは、通常、ファイルとして記憶され、複数のユーザは、同時には、ファイルにアクセスできない又はファイルを変更できないことがある。ユーザは、他のユーザとファイルを共有するために又はデータに対する変更を追跡するために、ファイルの複数のコピーを生成することもあるし、異なるビジネスタスクに対応する複数のファイルを記憶することもある。ユーザが、ファイルの複数のバージョンの間でデータを統合すること、どのファイルが最新であるかを判別すること、又は、ファイルを共有及び編成することは、難しい。
【０００４】
大きなデータベースシステムは、多くのユーザ又はクライアントアプリケーションが、同時にデータベースに接続することを可能する。しかしながら、大きなデータベースシステムは、ＳＭＢが実現するには、コストがかかることもあるし、実用的でないこともある。大きなデータベースシステムは、ＳＭＢに対するそのようなシステムの有用性を超える可能性があるセットアップコスト及び管理コストを生じさせる。加えて、データベースアプリケーションは、特定のユースケースに基づいて特にプログラムされ得る。新たなアプリケーションは、既存のユースケースに対応しない新たな独特のトランザクションが記憶される必要があるときに、開発される必要があり得る。
【０００５】
したがって、複数のユーザの間での共有を可能にする低コストでフレキシブルなシステムにおいてデータベースデータを記憶及び管理することが望ましく有用である。
【発明の概要】
【０００６】
一実施形態に従うと、システムは、１つ以上のプロセッサと、命令を記憶している非一時的なコンピュータ読み取り可能な媒体と、を含む。命令は、１つ以上のプロセッサにより実行されたときに、編成済みデータ（organized  data）を受信することを生じさせる。編成済みデータを受信したことに応じて、編成済みデータに含まれる複数のデータタイプが判別される。複数のデータタイプの各データタイプについての１つ以上の提案ウィジェットが決定される。１つ以上の提案ウィジェットを決定することは、特定のデータタイプを２つ以上のデータタイプに分割することができると判定することと、特定のデータタイプについての２つ以上のデータタイプからの各データタイプについての提案ウィジェットを決定することと、を含む。複数のデータタイプと、特定のデータタイプについての２つ以上のデータタイプからの各データタイプについての提案ウィジェットを含む、複数のデータタイプの各データタイプについての決定された１つ以上の提案ウィジェットと、が表示される。１つ以上の提案ウィジェットを承諾するユーザ入力を受信したことに応じて、１つ以上の提案ウィジェットを含むウェブアプリケーションが作成される。
【図面の簡単な説明】
【０００７】
【図１】ウェブアプリケーションを作成及び管理するための構成を示すブロック図。
【図２】例示的なウェブアプリケーショングラフィカルユーザインタフェースを示す図。
【図３】ウェブアプリケーションを手動作成するための例示的なグラフィカルユーザインタフェースを示す図。
【図４】受信された編成済みデータに基づく、ウェブアプリケーションのガイドされる作成のためのアプローチを示すフロー図。
【図５】ウェブアプリケーションを作成するための例示的な編成済みデータを示す図。
【図６】１つ以上の提案ウィジェットを含むプレビュー画面を示す図。
【図７】実施形態が実現され得る例示的なコンピュータシステムを示すブロック図。
【発明を実施するための形態】
【０００８】
以下の記載において、説明の目的のために、多数の具体的な詳細が、本発明の完全な理解を提供するように記載されている。しかしながら、本発明は、これらの具体的な詳細がなくても実施され得ることが明らかであろう。他の例において、周知の構造及びデバイスが、本発明を不必要に曖昧にしないようにするために、ブロック図の形で示されている。
Ｉ．概要
ＩＩ．システムアーキテクチャ
ＩＩＩ．ウェブアプリケーション概要
Ａ．手動作成
Ｂ．自動作成
ＩＶ．所定の実施形態の利点
Ｖ．実現例
【０００９】
Ｉ．概要
本開示においてウェブアプリとも呼ばれるウェブアプリケーションを作成するためのアプローチが提供される。ウェブアプリケーションは、ユーザが、データを入力又はインポートし、該データを構造化された形で記憶することを可能にする。例えば、ウェブアプリケーションデータは、スプレッドシート又はデータベーステーブルのデータと同様に構造化され得る。ウェブアプリケーションは、複数のユーザにより、共有、アクセス、編集、及び利用され得る。
【００１０】
このアプローチに従うと、編成済みデータが、ウェブアプリケーションを作成するためのシステムにおいて受信される。編成済みデータを受信したことに応じて、編成済みデータに含まれる複数のデータタイプが判別される。例えば、編成済みデータは、文字列データタイプに対応する名前と、数値データタイプに対応するジップコード（郵便番号）と、を含み得る。各データタイプについての１つ以上の提案ウィジェットが決定される。例えば、文字列データタイプは、テキストボックスウィジェットに対応し得、数値データタイプは、数値ウィジェットに対応し得、日付データタイプは、カレンダーウィジェットに対応し得る、等である。１つ以上の提案ウィジェットを決定することは、特定のデータタイプを２つ以上のデータタイプに分割することができると判定することを含み得る。例えば、住所に対応する文字列データタイプは、住所の道路番号部分に対応する数値データタイプと、住所の道路名部分に対応する文字列データタイプと、に分割され得る。別の例として、顧客名に対応する文字列データタイプは、顧客のファーストネーム（名）に対応する第１の文字列データタイプと、顧客のラストネーム（姓）に対応する第２の文字列データタイプと、に分割され得る。第３の例として、電話番号に対応する数値データタイプは、国コードとエリアコード（市外局番）とメイン電話番号（main  phone  number）とにそれぞれ対応する３つの数値データタイプに分割され得る。提案ウィジェットは、各分割されたデータタイプについて決定され得る。
【００１１】
分割されたデータタイプの各々についての提案ウィジェットを含む、各データタイプについての１つ以上の提案ウィジェット及び対応するデータタイプが、ユーザに表示される。システムは、ユーザが、データタイプを２つ以上のデータタイプに分割すること又は２つ以上のデータタイプを単一のデータタイプにマージすることを可能にし、分割又はマージに応じて、１つ以上の変更されたウィジェットを提案することができる。加えて、システムは、ユーザが、提案ウィジェットを変更又は除去することを可能にし得る。
【００１２】
現在の提案ウィジェットのセットを承諾するユーザ入力を受信すると、現在の提案ウィジェットのセットを含むウェブアプリケーションが作成される。編成済みデータの内容は、生成されたウェブアプリケーションにより管理されるデータとして、自動的にインポートされ得る。
【００１３】
ＩＩ．システムアーキテクチャ
図１に示されている例において、アプリケーションサーバ１１０は、データインタフェース１１２、ユーザインタフェース１１４、ウェブアプリケーション管理アプリケーション１１６、及び１つ以上のウェブアプリケーション１１８を含む。アプリケーションサーバ１１０は、ウェブアプリケーションを作成しウェブアプリケーションを管理しウェブアプリケーションにアクセスするための機能を提供する。一例として、アプリケーションサーバ１１０は、ウェブアプリケーションを作成しウェブアプリケーションを管理しウェブアプリケーションにアクセスするためのグラフィカルユーザインタフェースを提供する１つ以上のウェブページを生成及び提供することができる。アプリケーションサーバ１１０は、具体的な実装に応じて変わり得る様々な他のコンポーネントを含んでよく、アプリケーションサーバ１１０は、特定のコンポーネント又は機能のセットに限定されるものではない。アプリケーションサーバ１１０は、具体的な実装に応じて変わり得る様々なハードウェアコンポーネント及びソフトウェアコンポーネントを含んでよく、アプリケーションサーバ１１０は、特定のハードウェアコンポーネント及びソフトウェアコンポーネントに限定されるものではない。
【００１４】
データインタフェース１１２は、クライアントデバイス１０２からデータを受信するよう構成されており、様々な通信プロトコルを使用して、様々な媒体から、そのようなデータを受信することができる。例示的なプロトコルは、ファイル転送プロトコル（ＦＴＰ）、テルネットプロトコル、伝送制御プロトコル（ＴＣＰ）、ＴＣＰ／インターネットプロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ）、又は、任意の他のデータ通信プロトコルを含む。データインタフェース１１２は、ＦＴＰフォルダ、電子メールフォルダ、ウェブサーバ、メモリスティック等のリモート媒体、又は任意の他の媒体からデータを読み取るよう構成され得る。データインタフェース１１２は、これらの伝送方法をサポートするための対応する要素を含み得る。
【００１５】
例えば、データインタフェース１１２は、クライアントデバイス１０２におけるＦＴＰクライアントからの要求を処理するＦＴＰサーバを含んでもよいし、そのようなＦＴＰサーバとインタラクトしてもよい。別の例として、データインタフェース１１２は、電子メールサーバから電子メールを取得するための電子メールクライアントを含んでもよいし、そのような電子メールクライアントとインタラクトしてもよい。さらに別の例として、データインタフェース１１２は、クライアントデバイス１０２におけるｈｔｔｐクライアントからの要求に応答するウェブサーバを含んでもよいし、そのようなウェブサーバとインタラクトしてもよい。データインタフェース１１２は、さらに、アプリケーションサーバ１１０から、例えば、クライアントデバイス１０２、他のコンピューティングデバイス、ウェブアプリケーション管理アプリケーション１１６及びウェブアプリケーション１１８等の他のサービス等といった他のデバイス及びプロセスへの、データの伝送をサポートするよう構成されている。
【００１６】
ユーザインタフェース１１４は、以下でより詳細に説明されるように、管理者等のユーザが、アプリケーションサーバ１１０、ストレージ１２０に記憶されているデータ、及び／又は、ウェブアプリケーション管理アプリケーション１１６により管理されるウェブアプリケーションにアクセスするための機構を提供する。ユーザインタフェース１１４は、アプリケーションサーバ１１０用のＡＰＩとして実現され得る。代替的に、ユーザインタフェース１１４は、他の機構により実現されてもよい。例えば、ユーザインタフェース１１４は、アプリケーションサーバ１１０についてのウェブベースのユーザインタフェースを提供するウェブページを提供するウェブサーバとして実現されてもよい。
【００１７】
ウェブアプリケーション管理アプリケーション１１６は、ウェブアプリケーションを作成及び管理するための機能を提供する。例示的な機能は、編成済みデータを受信すること、編成済みデータを分析して１つ以上のウィジェットを提案すること、及び、提案された１つ以上のウィジェットを含むウェブアプリケーションを作成することを含む。例示的な機能はまた、１つ以上のウィジェットを指定するユーザ入力を受信すること、及び、指定されたウィジェットを含むウェブアプリケーションを作成すること、並びに、ユーザ入力に基づいて、作成されたウェブアプリケーションを変更又は削除することを含む。ウェブアプリケーションを変更することは、ウェブアプリケーションに１つ以上のウィジェットを追加すること、１つ以上のウィジェットを変更すること、又は、ウェブアプリケーションから１つ以上のウィジェットを除去することを含み得る。ウェブアプリケーションを変更することはまた、ウェブアプリケーションについてのデータにアクセスする、そのようなデータを変更する、且つ／又はそのようなデータを閲覧する権限を有するユーザを変更することを含み得る。
【００１８】
一実施形態に従うと、ウェブアプリケーション管理アプリケーション１１６は、ユーザが前述の機能にアクセスすることを可能にするグラフィカルユーザインタフェースを提供する。グラフィカルユーザインタフェースは、クライアントデバイス１０２におけるアプリケーションソフトウェア、アプリケーションサーバ１１０におけるアプリケーションソフトウェア、又は、クライアントデバイス１０２におけるアプリケーションソフトウェアとアプリケーションサーバ１１０におけるアプリケーションソフトウェアとの何らかの組み合わせにより提供され得る。一例として、グラフィカルユーザインタフェースは、アプリケーションサーバ１１０において生成されクライアントデバイス１０２に提供される１つ以上のウェブページにより実現され得る。ウェブアプリケーション管理アプリケーション１１６は、コンピュータハードウェア、コンピュータソフトウェア、又は、コンピュータハードウェアとコンピュータソフトウェアとの何らかの組み合わせにより実現され得る。例えば、ウェブアプリケーション管理アプリケーション１１６は、アプリケーションサーバ１１０において実行される、例えばウェブアプリケーションといったアプリケーションとして実現され得る。
【００１９】
１つ以上のウェブアプリケーション１１８は、ウェブアプリケーション管理アプリケーション１１６により作成される。１つ以上のウェブアプリケーションは、データを管理及び記憶するデータ管理アプリケーションであり得る。例えば、オーダー情報ウェブアプリケーションは、オーダー番号、オーダーアイテム、数量、及び総コスト等の、会社により受注されたオーダーに関連するデータを管理することができる。アイテムウェブアプリケーションは、会社が販売する商品についてのアイテムデータを記憶することができる。ウェブアプリケーションはまた、他のウェブアプリケーションにより記憶されたデータへのリンクを記憶することもできるし、他のウェブアプリケーションにより記憶されたデータをインポートすることもできる。例えば、オーダー情報ウェブアプリケーションは、アイテムウェブアプリケーションから取得されたアイテム情報を含み得る。
【００２０】
各ウェブアプリケーションは、１つ以上のウィジェットを含む。１つ以上のウェブアプリケーション１１８は、以下でより詳細に説明されるように、クライアントデバイス１０２から受信されたデータを処理及び管理する。ウェブアプリケーション１１８により管理されるデータは、ストレージ１２０に記憶され得る。
【００２１】
一実施形態に従うと、ウェブアプリケーション１１８は、ユーザがデータを追加、変更、削除、又は閲覧することを可能にするグラフィカルユーザインタフェースを提供する。グラフィカルユーザインタフェースは、クライアントデバイス１０２におけるアプリケーションソフトウェア、アプリケーションサーバ１１０におけるアプリケーションソフトウェア、又は、クライアントデバイス１０２におけるアプリケーションソフトウェアとアプリケーションサーバ１１０におけるアプリケーションソフトウェアとの何らかの組み合わせにより提供され得る。一例として、グラフィカルユーザインタフェースは、アプリケーションサーバ１１０において生成されクライアントデバイス１０２に提供される１つ以上のウェブページにより実現され得る。ウェブアプリケーション管理アプリケーション１１６は、コンピュータハードウェア、コンピュータソフトウェア、又は、コンピュータハードウェアとコンピュータソフトウェアとの何らかの組み合わせにより実現され得る。
【００２２】
ストレージ１２０は、揮発性メモリ及び／又は不揮発性メモリ、ハードドライブ等といった任意のタイプのストレージを含み得る。
【００２３】
ネットワーク１３０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、パブリックインターネット等の１つ以上のインターネットワーク、セルラネットワーク、会社ネットワーク等といった任意の数及びタイプの有線ネットワーク又は無線ネットワークを含み得る。ネットワーク１３０はまた、１つ以上のサーバコンピュータ、ロードバランシングコンピュータ、クラウドベースのコンピュータ、データセンター、記憶デバイス、及び／又は、任意の他の特殊目的コンピューティングデバイス等の１つ以上のコンピューティングデバイスを含み得る。図１に示されている様々な要素はまた、直接通信リンクを介して、互いと通信してもよい。
【００２４】
一実施形態において、クライアントコンピューティングデバイス１０２は、ワークステーション、パーソナルコンピュータ、汎用コンピュータ、ラップトップ、ハンドヘルドコンピュータ、ウェアラブルコンピュータ、セルラ電話機又は移動電話機、ポータブルデジタルアシスタント（ＰＤＡ）、タブレットコンピュータ等といった任意のコンピューティングデバイスである。実施形態が、単一のクライアントコンピューティングデバイスのコンテキストにおいて、図面に示され本明細書において説明されるが、これは、説明の目的のためになされるに過ぎず、実施形態は、任意の数のクライアントコンピューティングデバイスに適用可能である。各クライアントコンピューティングデバイス１０２は、ネットワーク１３０を介して、サーバコンピュータ１１０に通信可能に接続される。
【００２５】
クライアントコンピューティングデバイス１０２は、説明の目的のために図１に示されていない、１つ以上の入力デバイス、メモリ、プロセッサ等といった他の要素を含んでよい。クライアントコンピューティングデバイス１０２はまた、本開示に記載の実施形態の様々な態様を促進するためのアプリケーション、ソフトウェア、及び他の実行可能な命令を含んでよい。これらのアプリケーション、ソフトウェア、及び他の実行可能な命令は、ユーザ、所有者、製造業者、又は、クライアントコンピューティングデバイスに関連する他のエンティティによりインストールされ得る。
【００２６】
一実施形態において、クライアントコンピューティングデバイス１０２は、ブラウザを含む。ブラウザは、ディスプレイ等の１つ以上のデバイスを介してユーザに提示されるグラフィカルユーザインタフェースを生成するために、アプリケーションサーバ１１０等のウェブサーバに対してウェブページを要求し、ウェブサーバからのウェブページを処理することができるコンピュータアプリケーションである。
【００２７】
ＩＩＩ．ウェブアプリケーション概要
ウェブアプリケーションは、ネットワークを介してクライアントコンピューティングデバイスからアクセス可能である、アプリケーションサーバ１１０等のサーバにおいて実行されるアプリケーションである。一実施形態において、１つ以上のウェブアプリケーション１１８は、スプレッドシートアプリケーション又はデータベースアプリケーション等のデータ管理アプリケーションである。ユーザは、ウェブアプリケーションにデータを入力又はインポートすることができる。ウェブアプリケーションは、受信されたデータを記憶及び管理する。ウェブアプリケーションはまた、表、グラフ、チャート等、記憶されているデータの様々な視覚化を提供することもでき、データをフィルタリング又はソートすることもできる。
【００２８】
一実施形態において、ウェブアプリケーションにより管理されるデータは、編成済みの形式で記憶される。明確な例を示す目的のために、データが１つ以上のデータレコードを含み、各データレコードがデータフィールドのセットを含む実施形態が、本開示において説明される。しかしながら、他の実施形態において、データは、具体的な実装に応じて変わり得る他の方法で編成されることもある。
【００２９】
一実施形態において、ウェブアプリケーションは、１つ以上のウィジェットを含む。本開示において使用されるウィジェットは、ウェブアプリケーションのグラフィカルユーザインタフェースにおける任意のコントロール要素を指す。ウィジェットは、例えば、表示ウィジェット、入力ウィジェット、ユーザインタフェースウィジェット、データ処理ウィジェット、決定ウィジェット、ダイアログウィジェット、イベントリスナーウィジェット等であり得る。ウィジェットはまた、複数のウィジェットタイプ又は機能の組み合わせであり得る。一実施形態において、ユーザは、１つ以上のウィジェットを使用して、ウェブアプリケーションについてのデータを入力する。ウェブアプリケーションの各ウィジェットは、ウェブアプリケーションにより記憶されるデータレコードについてのデータフィールドに対応し得る。例えば、顧客情報を格納する顧客レコードは、顧客名フィールド及び顧客住所フィールドを含み得る。第１のウィジェットは、顧客名フィールドに対応し得、第２のウィジェットは、顧客住所フィールドに対応し得る。ユーザは、第１のウィジェット及び第２のウィジェットをそれぞれ使用して、顧客名及び顧客住所を入力することができる。これに応じて、ウェブアプリケーションは、入力された顧客情報を含むデータレコードを生成して記憶する。
【００３０】
一実施形態において、ウェブアプリケーションの各ウィジェットは、特定のウィジェットタイプである。例示的なウィジェットタイプは、数値、単一行テキスト、複数行テキスト、リッチテキスト、チェックボックス、ラジオボタンリスト、日付／カレンダー、時間、ドロップダウンリスト、電子メール等を含む。ウィジェットを使用して入力されるデータのタイプは、ウィジェットタイプに応じて変わり得る。上記の例を参照すると、顧客名を入力するためのウィジェットは、単一行テキストウィジェットタイプであり得る。
【００３１】
一実施形態において、ウェブアプリケーションは、ウェブアプリケーションの１つ以上のウィジェットを含む、データ入力のためのグラフィカルユーザインタフェースを含む。１つ以上のウィジェットに対応するグラフィカルユーザインタフェース要素は、データ入力グラフィカルユーザインタフェース内に特定のレイアウトで配置され得る。
【００３２】
各ウィジェットは、１つ以上のプロパティを含み得る。プロパティは、関連するデータフィールドのフィールド名に対応するウィジェット名を含み得る。ウィジェットについての追加のプロパティは、具体的なウィジェットタイプに応じて変わり得る。プロパティは、ウィジェットに入力されるデータのフォーマット、タイプ、及び／又は他のプロパティを指定することができる。例えば、数値ウィジェットタイプは、数字フォーマット、最小値、最大値、カンマ配置、及び小数部桁数等のプロパティを含み得る。別の例として、ドロップダウンウィジェットタイプは、ドロップダウン値のリストを含み得る。一実施形態において、ウィジェットについての１つ以上のプロパティの各々は、デフォルト値を含む。
【００３３】
一実施形態において、ウィジェットタイプは、計算ウィジェットタイプを含む。計算ウィジェットタイプであるウィジェットは、式プロパティを含み、式に基づくデータ値を計算する。式は、予め規定された値を含むこともあるし、且つ／又は、他のウィジェットから受け取られる値を指定することもある。
【００３４】
一例として、ウェブアプリケーションは、アイテム価格に対応するウィジェット及びオーダー数量に対応するウィジェットを含み得る。オーダー価格に対応する計算ウィジェットは、「アイテム価格＊オーダー数量」という式を含み得る。データが、アイテム価格ウィジェット及びオーダー数量ウィジェットについて入力された後、オーダー価格ウィジェットは、アイテム価格ウィジェット及びオーダー数量ウィジェットについて入力されたデータに基づく値を自動的に計算することができる。加えて、計算ウィジェットは、対応するウィジェット値（例えば、アイテム価格及び／又はオーダー数量）が変更されたとき、その値を自動的に更新することができる。
【００３５】
一実施形態において、ウィジェットタイプは、ルックアップウィジェットタイプを含む。ルックアップウィジェットタイプであるウィジェットは、ソースアプリケーションプロパティ値及びキーフィールドプロパティ値を含む。ソースアプリケーションプロパティ値は、どのウェブアプリケーションからデータをルックアップするかを示し、キーフィールドプロパティ値は、値がチェックされるべきであるフィールド又は列を示す。このウィジェットは、ルックアップ値を受け取り、ルックアップ値に合致するキーフィールド値を有するデータレコードについて、ソースアプリケーションを検索する。このウィジェットはまた、フィールドマッピングプロパティを含み得る。フィールドマッピングは、ソースアプリケーションにおけるフィールド値を、ウェブアプリケーションにおける特定のウィジェットにマッピングする。１つ以上の検索結果から特定のレコードを選択することは、マッピングされたフィールドの値を、特定のウィジェットに入力させる。
【００３６】
上記の例を参照すると、オーダー情報ウェブアプリケーションは、顧客データを記憶する顧客データウェブアプリケーションの「顧客名」フィールドを検索するルックアップウィジェットを含み得る。顧客データウェブアプリケーションからの「顧客ＩＤ」フィールドが、オーダー情報ウェブアプリケーションにおける「顧客ＩＤ」ウィジェットにマッピングされる。ユーザが、顧客名をルックアップウィジェットに入力したとき、このルックアップ値に合致する顧客名を有する１つ以上のレコードのセットが表示される。ユーザは、合致する１つ以上のレコードから特定のレコードを選択することができ、特定のレコードの顧客ＩＤが、オーダーウェブアプリケーションにおける「顧客ＩＤ」ウィジェットについての値として入力される。一実施形態において、対応するレコードを更新することは、マッピングされる値も更新する。
【００３７】
一実施形態において、ウェブアプリケーションは、管理されるデータをソート、フィルタリング、及び表示するための機能を提供する。ウェブアプリケーションは、表、グラフ、チャート、又は他のデータ視覚化等、グラフィカルな形式でデータを表示することができる。ウェブアプリケーションにより管理されるデータはまた、カンマ区切り値（ＣＳＶ）ファイル、又は、編成済みデータを格納するための他のファイルフォーマット等のデータファイルにエクスポートされ得る。
【００３８】
図２は、例示的なウェブアプリケーショングラフィカルユーザインタフェース２００を示している。グラフィカルユーザインタフェース２００は、ウェブアプリケーションにより記憶されたデータを表示するデータ部分２０２を含む。データ部分２０２は、単一のデータレコードを変更するためのコントロール、複数のデータレコードを同時に変更するためのコントロール（バッチ変更）、及び／又は、単一のフィールドを変更するためのコントロールを含む。これらのコントロールは、ユーザが、データ部分２０２の表示内に埋め込まれたレコードを変更することを可能にし得る。
【００３９】
グラフィカルユーザインタフェース２００はまた、記憶されたビュー（ストアドビュー）のリストを表示するビューリスト２０４を含む。記憶されたビューは、データフィルタ、ソート、グループ化、及び他のデータ表示オプションを指定することができる。記憶されたビューを選択することは、データ部分２０２に表示されるデータを更新させ得る。
【００４０】
グラフィカルユーザインタフェース２００はまた、記憶されたグラフ（ストアドグラフ）のリストを表示するグラフリスト２０６を含む。記憶されたグラフは、グラフタイプとグラフで示される１つ以上のデータフィールドとを指定することができる。記憶されたグラフはまた、１つ以上のデータフィールドをグループ化、集約、フィルタリング、及び／又はソートすることができる。記憶されたグラフを選択することは、ウェブアプリケーションにより記憶された現在のデータのセットに基づいてグラフを生成させ得る。
【００４１】
Ａ．手動ウェブアプリケーション作成
一実施形態において、ウェブアプリケーション管理アプリケーションは、ウェブアプリケーションを手動作成するためのグラフィカルユーザインタフェースを提供する。ユーザは、ウェブアプリケーションに含める１つ以上のウィジェットを選択することができる。ユーザはまた、所望の順序及び／又はレイアウトでウィジェットを配置することができる。例えば、ユーザは、ウィジェットを、ウェブアプリケーション作成ＧＵＩ内の場所にドラッグアンドドロップすることができる。ユーザはまた、各ウィジェットについてのプロパティを指定することができる。図３は、例示的なウェブアプリケーション作成ＧＵＩを示している。ウェブアプリケーション作成ＧＵＩ３００は、ウィジェット選択部分３０２及びレイアウト部分３０４を含む。ウィジェット選択部分３０２は、利用可能なウィジェットのセットを表示する。図示されている例において、ウィジェット選択部分３０２は、各ウィジェットのウィジェットタイプを示す。
【００４２】
ユーザは、ウィジェットに対応するユーザインタフェース要素を、ウィジェット選択部分３０２からレイアウト部分３０４にドラッグすることができる。レイアウト部分３０４は、ユーザにより選択されたウィジェットに対応する１つ以上のユーザインタフェース要素を表示する。選択されたウィジェットに対応するユーザインタフェース要素は、該ユーザインタフェース要素がレイアウト部分３０４内でドロップされた位置に配置されてもよいし、ユーザインタフェース要素は、グリッド又は他のレイアウト位置にスナップされてもよい。いくつかの実施形態において、レイアウト部分３０４内の以前に配置されたユーザインタフェース要素は、ドロップされたウィジェットを入れるために移動され得る。ユーザインタフェース要素が、レイアウト部分３０４上にドラッグされると、レイアウト部分３０４内の他のユーザインタフェース要素の位置は、他のユーザインタフェース要素が、選択されたユーザインタフェース要素が現在の位置にドロップされるならば移動されるであろう位置を示すように更新され得る。
【００４３】
図３を参照すると、ウィジェットについてのユーザインタフェース要素が、レイアウト部分３０４に配置された後、ユーザインタフェース要素は、ウィジェットプロパティを変更するためのボタン及びウィジェットを削除するためのボタンを含むようになる。プロパティボタンを選択することは、ウィジェットプロパティについてのプロパティ値をユーザが入力できるダイアログを起動させ得る。例えば、数値ウィジェットタイプの場合、ユーザは、最小値及び最大値を指定し、数字フォーマットを指定することができ得る。
【００４４】
別の例として、計算ウィジェットの場合、計算のための式を入力するためのグラフィカルユーザインタフェースが提供され得る。グラフィカルユーザインタフェースは、ウェブアプリケーションにおける他のウィジェットのリスト及び演算のリストを提供することができる。ユーザは、計算を規定するために、これらのリストから選択することができる。
【００４５】
第３の例として、ルックアップウィジェットの場合、ルックアップソースを選択しフィールドマッピングを指定するためのグラフィカルユーザインタフェースが提供され得る。グラフィカルユーザインタフェースは、ウェブアプリケーション管理アプリケーション１１６により管理される他のウェブアプリケーションのリストを表示することができる。ソースウェブアプリケーションが選択された後、ソースウェブアプリケーションのウィジェットのリストが表示され得る。ソースウェブアプリケーションからのウィジェットが、現在のウェブアプリケーションにおけるウィジェットにマッピングされ得る。例えば、利用可能なウェブアプリケーションは、顧客ウェブアプリケーション及びアイテムウェブアプリケーションを含み得る。顧客が選択された場合、顧客名、顧客ＩＤ、顧客住所、及び顧客電話番号が、マッピングされ得るウィジェットとして表示され得る。数値ウィジェットタイプである顧客ＩＤを選択することは、顧客ＩＤにマッピングされ得る、現在のウィジェットにおける数値ウィジェットタイプのリストを表示させ得る。
【００４６】
一実施形態において、ユーザは、１つ以上のレイアウトウィジェットを選択することができる。レイアウトウィジェットは、例えば、ウェブアプリケーションの外観又はレイアウトに影響を及ぼすラベル、仕切り、ブランクスペース、又は他のグラフィカルユーザインタフェース要素であり得る。
【００４７】
次いで、ユーザは、ウェブアプリケーションを保存することを選択することができる。１つ以上のウィジェットを指定されたレイアウトで含む新たなウェブアプリケーションが作成される。新たなレコードが、ウェブアプリケーションについて追加されているときに、１つ以上のウィジェットに対応するユーザインタフェース要素を含むグラフィカルユーザインタフェースが、データ入力のために、指定されたレイアウトで表示される。
【００４８】
Ｂ．ガイドされる作成
図４は、編成済みデータに基づく、ウェブアプリケーションのガイドされる作成のための例示的なステップを示している。
【００４９】
ステップ４０２において、ウェブアプリケーションを作成するための編成済みデータが受信される。編成済みデータは、ユーザが、ウェブアプリケーション管理アプリケーション１１６を呼び出し、ウェブアプリケーションを作成するためのデータをインポートするオプションを選択し、編成済みデータを含むファイルを選択したことに応じて、取得され得る。例えば、ユーザは、ガイドされるウェブアプリケーション作成の命令を呼び出すための、ウェブアプリケーション管理アプリケーション１１６のグラフィカルユーザインタフェース内のアイコンを選択することができる。次いで、ユーザは、ウェブアプリケーションを作成するために使用される１つ以上のファイルについて問い合わせられる。次いで、ユーザは、使用される１つ以上のファイルを選択することもできるし、使用される１つ以上のファイルの例えばパスといった位置を指定することもできる。
【００５０】
編成済みデータは、クライアントコンピューティングデバイス１０２、ストレージ１２０、別のサーバコンピュータ、又は、別のサービス若しくはアプリケーションから等、任意のソースから取得され得る。ファイルは、ＣＳＶ、ＸＬＳ、ＸＭＬ、ＪＳＯＮ等といった構造化されたデータファイルであり得る。追加的又は代替的に、ファイルは、フォーム（form）を表すドキュメントであってもよいし、画像ファイル、テキストドキュメント、又はＰＤＦ等、他の構造化されたドキュメントであってもよい。図５は、１つ以上のデータタイプを含む例示的な編成済みデータを示している。図示されている例において、編成済みデータは、複数の行及び複数の列を含むスプレッドシートテーブル５００である。
【００５１】
ステップ４０４において、編成済みデータに含まれる１つ以上のデータタイプが判別される。図５を参照すると、テーブル５００の各列についてのデータタイプが判別される。これは、具体的な実装と受信されるデータファイルのタイプとに応じて変わり得る多様な技術を使用して実現され得、実施形態は、データタイプを判別するための特定の技術に限定されるものではない。例えば、テーブルの場合、データタイプは、ラベルから判別され得る。ラベルは、例えば、テーブルにおける行及び列についてのものであり得る。別の例として、テーブルの場合、ある列の各行に含まれるデータを分析して、その列のデータタイプを判別することができる。その列の全ての行におけるデータが、全て数値である等、特定のデータタイプである場合、その列についてのデータタイプは、その特定のデータタイプである。いくつかの実施形態において、データタイプを判別することができない場合、テキスト（文字列）データタイプ等のデフォルトのデータタイプが選択され得る。別の例として、ＣＳＶファイルを解析して、１つ以上のフィールドを含む１つ以上のレコードを判別することができる。フィールドの内容を分析して、１つ以上のデータタイプを判別することができる。
【００５２】
一実施形態において、ファイルは、フォームを表すドキュメントであってもよいし、他の構造化されたドキュメントであってもよい。ファイルを分析して、ドキュメントにおいて示される１つ以上のフィールドを識別することができる。データタイプは、１つ以上のフィールドの各フィールドについて判別される。多様な技術を使用して、１つ以上のフィールドを識別することができる。例えば、ファイルは、フォームの画像であり得る。テキスト認識及び／又は画像分析を用いて、フォームにおいて示される１つ以上のフィールドを識別することができる。
【００５３】
一実施形態において、１つ以上のデータタイプを判別することは、データタイプを２つ以上のデータタイプに分割することができるかどうかを判定することを含む。データタイプを分割することができるかどうかを判定することは、編成済みデータのうちの、このデータタイプに対応する部分を分析することに基づき得る。様々な技術を使用して、データタイプを２つ以上のデータタイプに分割することができるかどうかを判定することができる。
【００５４】
一実施形態において、データタイプを分割することができるかどうかを判定することは、対応するデータが２つ以上のサブデータタイプを含むかどうかを判定することを含む。例えば、住所フィールドのデータタイプは文字列であり得る。ウェブアプリケーション管理アプリケーション１１６は、対応するデータを分析して、このフィールドが、数字（住所の道路番号）及び文字（道路名）の両方を含むと判定することができる。この文字列データタイプは、数値データタイプ及び文字列データタイプに分割され得る。
【００５５】
一実施形態において、データタイプを分割することができるかどうかを判定することは、対応するデータが、キャリッジリターン、改行、スペース、カンマ、セミコロン等といった１つ以上のデリミタを含むかどうかを判定することを含む。例えば、顧客名フィールドのデータタイプは文字列であり得る。ウェブアプリケーション管理アプリケーション１１６は、対応するデータを分析して、顧客名が、スペース文字により分けられる第１の文字列（ファーストネーム）及び第２の文字列（ラストネーム）を含むと判定することができる。この文字列データタイプは、２つの文字列データタイプに分割され得る。
【００５６】
一実施形態において、データタイプを２つ以上のデータタイプに分割することができると判定したことに応じて、２つ以上のデータタイプが、グラフィカルユーザインタフェースにおいて、ユーザに提示される。ユーザは、２つ以上のデータタイプのうちの特定のデータタイプを選択することができる。例えば、グラフィカルユーザインタフェースは、名前文字列が、ファーストネーム、ミドルネーム、及びラストネームという３つの文字列に分割され得ることを示すことができる。ユーザは、名前文字列を、ファーストネームプラスミドルネーム及びラストネームという２つの文字列のみに分割することを選択することができる。この選択に基づいて、データタイプが、選択されたデータタイプに分割される。
【００５７】
追加的又は代替的に、提案分割データタイプが、グラフィカルユーザインタフェースにおいて、ユーザに提示される。ユーザは、２つ以上のデータタイプについて、データタイプを変更又は承諾することができる。例えば、グラフィカルユーザインタフェースは、提案データタイプと代替データタイプのリストとを示す各提案分割データタイプについてのドロップダウンボックスを提示することができる。ユーザは、ドロップダウンボックスから代替データタイプを選択することにより、データタイプを変更することができる。
【００５８】
一例として、ウェブアプリケーション管理アプリケーション１１６は、文字列データタイプを数値データタイプ及び文字列データタイプに分割することができると判定することがある。グラフィカルユーザインタフェースは、数値データタイプが選択されている第１のドロップダウンボックスと文字列データタイプが選択されている第２のドロップダウンボックスとを表示することができる。ユーザは、文字列が、数字及び文字列ではなく、２つの文字列に分割されるべきであることを示すことができる。
【００５９】
追加的又は代替的に、２つ以上のデータタイプに分割され得る複数のデータタイプが、グラフィカルユーザインタフェースにおいて、ユーザに提示される。ユーザは、どのデータタイプが２つ以上のデータタイプに分割されるべきであるかを選択することができる。この選択を受信したことに応じて、選択されたデータタイプが、２つ以上のデータタイプに分割される。例えば、編成済みデータは、住所に対応する文字列データタイプ、名前に対応する文字列データタイプ、及び、地理座標のセットに対応する文字列データタイプを含み得る。ウェブアプリケーション管理アプリケーション１１６は、３つの文字列データタイプの各々を２つ以上のデータタイプに分割することができると判定することができる。グラフィカルユーザインタフェースは、住所、名前、及び地理座標、並びに／又は、３つの文字列データタイプを含む選択可能なリストを表示することができる。ユーザは、２つ以上のデータタイプに分割されるべきである文字列データタイプを選択することができる。例えば、ユーザは、住所及び名前に対応する文字列データタイプは分割されるべきであるが、地理座標のセットに対応する文字列データタイプは分割されるべきでないことを示すことができる。これに応じて、選択された文字列データタイプが、上述したように分割され得る。
【００６０】
ステップ４０６において、ウェブアプリケーション管理アプリケーション１１６は、１つ以上のデータタイプの各データタイプについて、１つ以上の提案ウィジェットを決定する。各提案ウィジェットは、データタイプに対応するウィジェットタイプである。例えば、数値ウィジェットが、数値データタイプについて提案され得、日付ウィジェットが、日付データタイプについて提案され得る、等である。一実施形態において、複数のウィジェットが、あるデータタイプについての可能性のある提案ウィジェットである。複数のウィジェットのうちの特定のウィジェットが、編成済みデータのうちの、このデータタイプに対応する部分に基づいて選択され得る。例えば、文字列／テキストデータタイプについての可能性のある提案ウィジェットのウィジェットタイプは、単一行テキスト、複数行テキスト、リッチテキスト、又はドロップダウンボックスを含み得る。このデータタイプに対応するデータが、複数行のテキスト又は所定の文字数よりも多いテキストを含む場合、複数行テキストウィジェットが提案され得る。このデータタイプに対応するデータが、限られた数のオプションを含む場合（例えば、複数の行が、ある列について同じ値を有する場合）、ドロップダウンウィジェットが提案され得る。
【００６１】
一実施形態において、データタイプが２つ以上のデータタイプに分割された場合、提案ウィジェットは、分割された２つ以上のデータタイプの各データタイプについて決定される。
【００６２】
ステップ４０８において、提案ウィジェットが、グラフィカルユーザインタフェースにおいて、ユーザに表示される。一実施形態において、提案ウィジェットは、提案ウィジェットに対応するデータのプレビューとともに表示される。例えば、編成済みデータのうちの、提案ウィジェットに対応する１つ以上の部分が、提案ウィジェットとともに表示され得る。図６は、ユーザに提示され得る例示的な表示を示している。図示されている例において、複数の提案ウィジェットが、ヘッダ行に提示されている。各提案ウィジェットについてのウィジェットタイプが表示されている。後続の行は、行の各列が、上記で示された提案ウィジェットに対応するデータを含む、行を表示している。各行は、生成されている場合には、ウェブアプリケーションのデータレコードに対応し得、行の各列は、データレコードのデータフィールドに対応し得る。
【００６３】
一実施形態において、グラフィカルユーザインタフェースは、ユーザが、提案ウィジェットを並べ替えること、提案ウィジェットを変更すること、提案ウィジェットを２つ以上の提案ウィジェットに分割すること、又は、２つ以上の提案ウィジェットを単一のウィジェットにマージすることを可能にする。提案ウィジェットを変更することは、ウィジェットタイプを変更すること又は提案ウィジェットを除去することを含み得る。
【００６４】
一例として、２つ以上のウィジェットをマージするユーザ要求に応じて、マージされるウィジェットについての提案ウィジェットが提示され得る。提案ウィジェットのウィジェットタイプは、２つ以上のウィジェットのウィジェットタイプに基づき得る。例えば、日付ウィジェットと時間ウィジェットとがマージされる場合、提案ウィジェットは、日付−時間ウィジェットであり得る。追加的又は代替的に、提案ウィジェットのウィジェットタイプは、単一行テキスト等のデフォルトのウィジェットタイプであり得る。例えば、２つ以上のウィジェットが、適合しないウィジェットタイプ群に対応する場合、デフォルトのウィジェットタイプが選択され得る。ウィジェットタイプは、同じデータタイプに対応しない場合、適合しないものであり得る。例えば、２つのウィジェットのうちの第１のウィジェットが日付データタイプに対応し、２つのウィジェットのうちの第２のウィジェットが文字列データタイプに対応する場合、これらの２つのウィジェットは、適合しないものであり得る。加えて、対応するデータのプレビューが、マージを示すように変更され得る。
【００６５】
例えば、単一行テキストウィジェットは、市に対応し得、ドロップダウンリストウィジェットは、州に対応し得る。単一行テキストウィジェットは、編成済みデータに含まれる１つ以上の市とともに表示され得、ドロップダウンリストウィジェットは、編成済みデータに含まれる１つ以上の州とともに表示され得る。ユーザは、単一行テキストウィジェット及びドロップダウンリストウィジェットを選択し、これらの２つのウィジェットがマージされるべきであることを示すボタン又は他のユーザインタフェース要素を選択することができる。これに応じて、単一行テキストウィジェット及びドロップダウンリストウィジェットが除去され、これらのウィジェットが、市と州との組み合わせに対応する単一行テキストウィジェットで置換され得る。１つ以上の市及び１つ以上の州の各々がペアにされ得、１つ以上のペアが、マージされた単一行テキストウィジェットに関連して表示され得る。
【００６６】
一実施形態において、複数の可能性のあるウィジェットタイプが決定され、ユーザは、複数の可能性のあるウィジェットタイプのうちのウィジェットタイプを選択することができる。例えば、ドロップダウンリストウィジェットとラジオボタンリストウィジェットとがマージされる場合、マージされるウィジェットのウィジェットタイプは、ドロップダウンリスト、ラジオボタンリスト、コンボボックス等といったリストからオプションを選択することを可能にする任意のウィジェットタイプであり得る。提案が、選択可能なリストの一部として、ユーザに提示され得、ユーザは、オプションのリストから、代替ウィジェットタイプを選択することができる。
【００６７】
一実施形態において、特定のウィジェットタイプのウィジェットは、マージされることが可能でない。例えば、計算ウィジェット及びルックアップウィジェットは、他のウィジェットとマージされ得ない。ユーザは、これらの特定のウィジェットタイプのウィジェットを他のウィジェットとマージするために、これらの特定のウィジェットタイプのウィジェットを選択することはできない。
【００６８】
別の例として、特定のウィジェットを２つ以上のウィジェットに分割するユーザ要求に応じて、提案ウィジェットのセットが、特定のウィジェットに基づいて決定され得る。加えて、対応するデータのプレビューが、分割を示すように変更され得る。例えば、単一行テキストウィジェットは、顧客住所に対応し、編成済みデータに含まれる１つ以上の顧客住所とともに表示され得る。単一行テキストウィジェットを分割するユーザ要求に応じて、単一行テキストウィジェットは、道路番号に対応する数値ウィジェット及び道路名に対応する単一行テキストウィジェットに分割され得る。数値ウィジェットが１つ以上の顧客住所の道路番号とともに表示され、単一行テキストウィジェットが１つ以上の顧客住所の道路名とともに表示されるように、プレビューが更新され得る。
【００６９】
一実施形態において、特定のウィジェットを分割する要求を受信したことに応じて、ウェブアプリケーション管理アプリケーション１１６は、特定のウィジェットに対応するデータタイプを２つ以上のデータタイプに分割することができると判定する。特定のデータタイプを２つ以上のデータタイプに分割することができると判定することは、上述したように、データタイプに対応するデータに基づき得る。提案ウィジェットが、２つ以上のデータタイプの各々について決定され得る。一実施形態において、グラフィカルユーザインタフェースは、可能性のある分割のインジケーションを表示することができる。ユーザは、各データタイプ、及び／又は、各データタイプについての提案ウィジェットを変更することができる。
【００７０】
追加的又は代替的に、ユーザは、特定のウィジェット及び／又はウィジェットのタイプをいくつのウィジェットに分割するかのウィジェット数を指定してもよい。ウェブアプリケーション管理アプリケーションは、特定のウィジェットを、指定された数のウィジェットに自動的に分割することができる。一実施形態において、対応するデータタイプを、指定されたように、２つ以上のデータタイプに自動的に分割することができない場合、通知がユーザに送られ得、分割は遂行され得ない。代わりに、ユーザは、データがどのように分割されるべきであるかを示し得る、又は、ウィジェットは分割され得るが、データは、全ての分割されたウィジェットよりも少ないウィジェットに関連付けられ得る。一例として、編成済みデータのうちの、データタイプに対応する１つ以上の部分が、グラフィカルユーザインタフェースにおいて表示され得る。ユーザは、グラフィカルユーザインタフェースを使用して、編成済みデータのうちの１つ以上の部分がどのように分割されるべきであるかを特定することができる。例えば、ユーザは、表示されたデータの諸部分のあたりに、分割線、ボックス、又は他のインジケータを描くことができる。データタイプが、ユーザ入力に基づいて分割される。別の例として、顧客名に対応する特定のウィジェットは、ファーストネームとミドルイニシャルとラストネームとにそれぞれ対応する３つのウィジェットに分割され得る。１つ以上の顧客名は、ミドルイニシャルを含まないことがある。このウィジェットが分割されたとき、データがミドルイニシャルウィジェットに関連付けられるように、全ての顧客名が分割されるわけではない。
【００７１】
ステップ４１０において、提案ウィジェットのセットを承諾するユーザ入力を受信したことに応じて、提案ウィジェットのセットを含むウェブアプリケーションが作成される。ユーザが、ウィジェットを変更、移動、分割、又はマージしたとき、ウェブアプリケーションは、提案ウィジェットのセットに対する変更を含むようになる。
【００７２】
ステップ４１２において、編成済みデータが、この新たなウェブアプリケーションに自動的に追加される。データタイプが、２つ以上のデータタイプに分割された場合、編成済みデータを追加することは、編成済みデータのうちの対応する部分を分割することを含む。２つ以上のデータタイプが、単一のデータタイプにマージされた場合、編成済みデータを追加することは、編成済みデータのうちの対応する部分をマージすることを含む。
【００７３】
例えば、編成済みデータは、１つ以上のレコードに分割され得る。各レコードについてのデータは、１つ以上のフィールドに分割され得、各フィールドは、ウェブアプリケーションの１つのウィジェットに対応する。編成済みデータは、複数のデータレコードとして記憶され、各データレコードは、それぞれの１つ以上のデータフィールドを含む。
【００７４】
ＩＶ．所定の実施形態の利点
従来のスプレッドシートファイル及びスプレッドシートソフトウェアに伴う問題のうちの１つは、スプレッドシートを閲覧又は変更することを望むユーザが、スプレッドシートファイルに適合するソフトウェアを有する必要があることである。加えて、複数のユーザは、同時にファイルを開くことができないことがある。一実施形態において、ウェブアプリケーションを使用してデータを記憶及び管理するためのアプローチが説明される。このアプローチは、分散されるサーバのネットワークにおいてホストされるクラウドシステムを含む任意のネットワークストレージシステムにおいてスプレッドシートデータを記憶することを可能にする。ウェブアプリケーションが、ウェブブラウザを有する任意のコンピューティングデバイスを使用して任意のユーザによりアクセスされ得る。加えて、いくつかの実施形態に従うと、複数のユーザは、アプリケーションサーバに接続し、同時に同じウェブアプリケーションにアクセスすることができる。いく人かのユーザは、データを閲覧、追加、又は変更できるのに対し、いく人かのユーザは、データを閲覧することだけはできるが、データを追加できない又は既存のデータを変更できないように、ユーザ権限が、ウェブアプリケーションに割り当てられ得る。結果として、このアプローチは、ネットワークを介してアクセス可能である単一のウェブアプリケーションへとデータを統合し、該データを複数のユーザに容易に利用可能にすることにより、演算パワー、メモリ、及び／又は帯域幅の使用量を低減する。さらに、このアプローチは、複数のユーザによるデータへのセキュアでカスタマイズされたアクセスを可能にする。
【００７５】
一実施形態において、編成済みデータに基づく、ウェブアプリケーションのガイドされる作成のためのアプローチが提示される。このアプローチは、データタイプを識別するための編成済みデータの自動分析と、データタイプに対応するウィジェットの自動提案と、を可能にする。これは、記憶されるよう意図されている編成済みデータのタイプに正確に対応するウェブアプリケーションをもたらす。加えて、ウェブアプリケーションは、特にプログラムされる必要はないし、どのウィジェットがウェブアプリケーションに含められるべきであるかを手動で決定するようにユーザに要求することもない。ユーザは、ウェブアプリケーションを作成するために、コンピュータプログラミングの専門的な知識又は編成済みデータに含まれるデータの専門的な知識を有する必要がない。いくつかの実施形態において、提案ウィジェットのユーザ承諾が必要とされないことがあり、ウェブアプリケーションは、上述した技術に従って、編成済みデータから自動的に作成され得、提案ウィジェットが、作成されるウェブアプリケーションに自動的に含められ得る。
【００７６】
さらに、このアプローチは、複数のデータタイプに分割され得るデータタイプの自動識別及び分割と、分割された複数のデータタイプに対応するウィジェットの提案と、を可能にする。このアプローチは、編成済みデータ内では分割されていないデータタイプを自動的に分割することにより、提案ウィジェットにおけるより高い正確度レベルを提供する。加えて、データが、新たなウェブアプリケーションにインポートされるときに、データが、自動的に分割され、対応するウィジェットに関連付けられることが可能である。対照的に、「従来の」スプレッドシート又はデータベースを用いると、１つの列を複数の列に分割することは、各新たな列に属するデータを再入力することを必要とする。新たに追加されるテーブル又はスプレッドシート列には、自動的には入力されない。したがって、本開示に記載のアプローチを用いると、コンピューティングデバイス及び関連するアプリケーションのユーザビリティ及び機能全般も向上する。
【００７７】
Ｖ．実現例
一実施形態に従うと、本開示に記載の技術は、少なくとも１つのコンピューティングデバイスにより実現される。本技術は、全部又は一部が、少なくとも１つのサーバコンピュータ及び／又はパケットデータネットワーク等のネットワークを使用して接続される他のコンピューティングデバイスの組み合わせを使用して、実現され得る。コンピューティングデバイスは、本技術を実行するようにハードワイヤードされてもよいし、本技術を実行するように永続的にプログラムされる少なくとも１つの特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のデジタル電子デバイスを含んでもよいし、ファームウェア、メモリ、他のストレージ、又はこれらの組み合わせにおけるプログラム命令に従って本技術を実行するようにプログラムされる少なくとも１つの汎用ハードウェアプロセッサを含んでもよい。そのようなコンピューティングデバイスはまた、記載されている技術を実現するために、カスタムハードワイヤードロジック、ＡＳＩＣ、又はＦＧＰＡを、カスタムプログラミングと組み合わせてもよい。コンピューティングデバイスは、サーバコンピュータ、ワークステーション、パーソナルコンピュータ、ポータブルコンピュータシステム、ハンドヘルドデバイス、モバイルコンピューティングデバイス、ウェアラブルデバイス、身体取り付け型又は埋め込み型デバイス、スマートフォン、スマートアプライアンス、インターネットワーキングデバイス、ロボット又は無人地上車両若しくは航空機等の自律又は半自律デバイス、記載されている技術を実現するためにハードワイヤードロジック及び／又はプログラムロジックを組み込んだ任意の他の電子デバイス、データセンターにおける１つ以上の仮想コンピューティングマシン又はインスタンス、及び／又は、サーバコンピュータ及び／又はパーソナルコンピュータのネットワークであってよい。
【００７８】
図７は、実施形態が実現され得る例示的なコンピュータシステムを示すブロック図である。図７の例において、コンピュータシステム７００と、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアとの組み合わせにより、開示されている技術を実現するための命令と、が、コンピュータアーキテクチャ及びコンピュータシステム実装について伝達するために、本開示に関連する当業者により通常用いられるのと同じ詳細レベルで、例えば、ボックス及び円として、概略的に表されている。
【００７９】
コンピュータシステム７００は、入力／出力（Ｉ／Ｏ）サブシステム７０２を含み、Ｉ／Ｏサブシステム７０２は、電子信号パスを介してコンピュータシステム７００のコンポーネントの間で情報及び／又は命令を通信するためのバス及び／又は１つ以上の他の通信機構を含み得る。Ｉ／Ｏサブシステム７０２は、Ｉ／Ｏコントローラ、メモリコントローラ、及び少なくとも１つのＩ／Ｏポートを含み得る。電子信号パスは、図において、例えば、線、一方向矢印、又は両方向矢印として、概略的に表されている。
【００８０】
少なくとも１つのハードウェアプロセッサ７０４は、情報及び命令を処理するために、Ｉ／Ｏサブシステム７０２に接続される。ハードウェアプロセッサ７０４は、例えば、汎用マイクロプロセッサ若しくはマイクロコントローラ、及び／又は、組み込みシステム、グラフィックス処理装置（ＧＰＵ）、デジタル信号プロセッサ、若しくはＡＲＭプロセッサ等の特殊目的マイクロプロセッサを含み得る。プロセッサ７０４は、統合された算術論理演算装置（ＡＬＵ）を含んでもよいし、別個のＡＬＵに接続されてもよい。
【００８１】
コンピュータシステム７００は、プロセッサ７０４により実行される命令及びデータを電子的にデジタルで記憶するために、Ｉ／Ｏサブシステム７０２に接続されるメインメモリ等のメモリ７０６の１つ以上のユニットを含む。メモリ７０６は、様々な形態のランダムアクセスメモリ（ＲＡＭ）又は他の動的記憶デバイス等の揮発性メモリを含み得る。メモリ７０６はまた、プロセッサ７０４により実行される命令の実行中に一時変数又は他の中間情報を記憶するために使用され得る。そのような命令は、プロセッサ７０４にアクセス可能である非一時的なコンピュータ読み取り可能な記憶媒体に記憶されているときに、コンピュータシステム７００を、そのような命令において指定されている動作を実行するようにカスタマイズされる特殊目的マシンに変換することができる。
【００８２】
コンピュータシステム７００は、プロセッサ７０４用の命令及び情報を記憶するために、Ｉ／Ｏサブシステム７０２に接続される読み取り専用メモリ（ＲＯＭ）７０８又は他の静的記憶デバイス等の不揮発性メモリをさらに含む。ＲＯＭ７０８は、様々な形態のプログラム可能なＲＯＭ（ＰＲＯＭ）（消去可能なＰＲＯＭ（ＥＰＲＯＭ）又は電気的に消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）等）を含み得る。永続的ストレージ７１０のユニットは、様々な形態の不揮発性ＲＡＭ（ＮＶＲＡＭ）（ＦＬＡＳＨメモリ等）、ソリッドステートストレージ、磁気ディスク、又は、光ディスク（ＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭ等）を含み得、命令及び情報を記憶するためにＩ／Ｏサブシステム７０２に接続され得る。ストレージ７１０は、プロセッサ７０４により実行されたときに、本開示における技術を実行するための、コンピュータにより実現される方法を実行させる命令及びデータを記憶するために使用され得る非一時的なコンピュータ読み取り可能な記憶媒体の例である。
【００８３】
メモリ７０６、ＲＯＭ７０８、又はストレージ７１０における命令は、モジュール、メソッド、オブジェクト、ファンクション、ルーチン、又はコールとして編成される１つ以上の命令セットを含み得る。命令は、１つ以上のコンピュータプログラム、オペレーティングシステムサービス、又は、モバイルアプリケーションを含むアプリケーションプログラムとして編成され得る。命令は、オペレーティングシステム及び／又はシステムソフトウェア；マルチメディアプログラミング又は他の機能をサポートするための１つ以上のライブラリ；ＴＣＰ／ＩＰ、ＨＴＴＰ、又は他の通信プロトコルを実装するためのデータプロトコル命令又はスタック；ＨＴＭＬ、ＸＭＬ、ＪＰＥＧ、ＭＰＥＧ、又はＰＮＧを使用してコード化されたファイルを解析又はレンダリングするためのファイルフォーマット処理命令；グラフィカルユーザインタフェース（ＧＵＩ）、コマンドラインインタフェース、又はテキストユーザインタフェース用のコマンドをレンダリング又は解釈するためのユーザインタフェース命令；オフィススイート、インターネットアクセスアプリケーション、設計及び製造アプリケーション、グラフィックスアプリケーション、オーディオアプリケーション、ソフトウェアエンジニアリングアプリケーション、教育アプリケーション、ゲームアプリケーション、又は各種アプリケーション等のアプリケーションソフトウェア；を含み得る。命令は、ウェブサーバ、ウェブアプリケーションサーバ、又はウェブクライアントを実現し得る。命令は、プレゼンテーション層、アプリケーション層、及び、構造化クエリ言語（ＳＱＬ）を用いる又はＳＱＬを用いないリレーショナルデータベースシステム、オブジェクトストア、グラフデータベース、フラットファイルシステム、又は他のデータストレージ等のデータ記憶層として編成され得る。
【００８４】
コンピュータシステム７００は、Ｉ／Ｏサブシステム７０２を介して、少なくとも１つの出力デバイス７１２に接続され得る。一実施形態において、出力デバイス７１２は、デジタルコンピュータディスプレイである。様々な実施形態において使用され得るディスプレイの例は、タッチスクリーンディスプレイ、発光ダイオード（ＬＥＤ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）、又は電子ペーパーディスプレイを含む。コンピュータシステム７００は、ディスプレイデバイスに代えて又はディスプレイデバイスに加えて、１つ以上の他のタイプの出力デバイス７１２を含んでもよい。他の出力デバイス７１２の例は、プリンタ、チケットプリンタ、プロッタ、プロジェクタ、サウンドカード、ビデオカード、スピーカ、ブザー、圧電デバイス、若しくは他の可聴デバイス、ランプ、ＬＥＤインジケータ若しくはＬＣＤインジケータ、触覚デバイス、アクチュエータ、又はサーボ機構を含む。
【００８５】
少なくとも１つの入力デバイス７１４が、信号、データ、コマンド選択、又はジェスチャをプロセッサ７０４に伝達するために、Ｉ／Ｏサブシステム７０２に接続される。入力デバイス７１４の例は、タッチスクリーン、マイクロフォン、スチールデジタルカメラ、ビデオデジタルカメラ、英数字キー、他のキー、キーパッド、キーボード、グラフィックスタブレット、イメージスキャナ、ジョイスティック、クロック、スイッチ、ボタン、ダイアル、スライド、及び／又は、様々なタイプのセンサ（力覚センサ、動きセンサ、熱センサ、加速度計、ジャイロスコープ、及び慣性測定ユニット（ＩＭＵ）センサ等）、及び／又は、様々なタイプのトランシーバ（セルラトランシーバ、Ｗｉ−Ｆｉ（登録商標）トランシーバ、無線周波数（ＲＦ）トランシーバ、又は赤外線（ＩＲ）トランシーバ等の無線トランシーバ、及び全地球測位システム（ＧＰＳ）トランシーバ等）を含む。
【００８６】
別のタイプの入力デバイスは、入力機能に代えて又は入力機能に加えて、カーソル制御、又は、ディスプレイスクリーン上のグラフィカルインタフェースにおける誘導等の他の自動制御機能を実行してもよい制御デバイス７１６である。制御デバイス７１６は、タッチパッド、マウス、トラックボール、又は、方向情報及びコマンド選択をプロセッサ７０４に伝達し、ディスプレイ７１２上でのカーソル移動を制御するためのカーソル方向キーであってよい。入力デバイスは、第１の軸（例えばｘ軸）及び第２の軸（例えばｙ軸）という２つの軸における少なくとも２自由度を有することができ、これは、デバイスが平面内の位置を指定することを可能にする。別のタイプの入力デバイスは、ジョイスティック、ワンド、コンソール、ステアリングホイール、ペダル、ギアシフト機構、又は他のタイプの制御デバイス等の有線制御デバイス、無線制御デバイス、又は光学制御デバイスである。入力デバイス７１４は、ビデオカメラ及び奥行きセンサ等の複数の異なる入力デバイスの組み合わせを含んでもよい。
【００８７】
別の実施形態において、コンピュータシステム７００は、出力デバイス７１２、入力デバイス７１４、及び制御デバイス７１６のうちの１つ以上が省かれるインターネットオブシングス（ＩｏＴ）デバイスを含み得る。あるいは、そのような実施形態において、入力デバイス７１４が、１つ以上のカメラ、動き検出器、温度計、マイクロフォン、地震検知器、他のセンサ若しくは検出器、測定デバイス、又はエンコーダを含んでもよく、出力デバイス７１２が、シングルラインＬＥＤ若しくはＬＣＤディスプレイ等の特殊目的ディスプレイ、１つ以上のインジケータ、ディスプレイパネル、計器、バルブ、ソレノイド、アクチュエータ、又はサーボ機構を含んでもよい。
【００８８】
コンピュータシステム７００がモバイルコンピューティングデバイスである場合、入力デバイス７１４は、複数の全地球測位システム（ＧＰＳ）衛星に対して三角測位し、コンピュータシステム７００の地球物理学的位置についての緯度−経度値等のジオロケーション又は位置データを判定して生成することができるＧＰＳモジュールに接続されるＧＰＳ受信機を含んでもよい。出力デバイス７１２は、単独で、又は、他の特定用途向けデータが向けられるホスト７２４又はサーバ７３０との組み合わせで、コンピュータシステム７００の位置を指定する位置報告パケット、通知、パルス若しくはハートビート信号、又は他の繰り返しデータ伝送を生成するためのハードウェア、ソフトウェア、ファームウェア、及びインタフェースを含んでもよい。
【００８９】
コンピュータシステム７００は、カスタマイズされたハードワイヤードロジック、少なくとも１つのＡＳＩＣ又はＦＰＧＡ、ファームウェア、及び／又は、コンピュータシステムとの組み合わせでロードされて使用又は実行されたときに、コンピュータシステムに特殊目的マシンとして動作させる又は特殊目的マシンとして動作するようにコンピュータシステムをプログラムするプログラム命令若しくはロジックを使用して、本開示に記載の技術を実現することができる。一実施形態に従うと、本開示における技術は、プロセッサ７０４が、メインメモリ７０６に含まれる少なくとも１つの命令の少なくとも１つのシーケンスを実行したことに応じて、コンピュータシステム７００により実行される。そのような命令は、ストレージ７１０等の別の記憶媒体からメインメモリ７０６に読み出され得る。メインメモリ７０６に含まれる命令のシーケンスの実行は、プロセッサ７０４に、本開示に記載のプロセスステップを実行させる。代替実施形態において、ハードワイヤード回路が、ソフトウェア命令の代わりに又はソフトウェア命令との組み合わせで、使用されてもよい。
【００９０】
本開示において使用される「記憶媒体」という用語は、マシンに特定のやり方で動作を実行させる命令及び／又はデータを記憶する任意の非一時的な媒体を指す。そのような記憶媒体は、不揮発性媒体及び／又は揮発性媒体を含み得る。不揮発性媒体は、例えば、ストレージ７１０等の光ディスク又は磁気ディスクを含む。揮発性媒体は、メモリ７０６等の動的メモリを含む。一般的な形態の記憶媒体は、例えば、ハードディスク、ソリッドステートドライブ、フラッシュドライブ、磁気データ記憶媒体、任意の光学的又は物理的データ記憶媒体、メモリチップ等を含む。
【００９１】
記憶媒体は、伝送媒体とは異なるが、伝送媒体とともに使用され得る。伝送媒体は、記憶媒体の間で情報を転送することに関与する。例えば、伝送媒体は、Ｉ／Ｏサブシステム７０２のバスを含むワイヤを含め、同軸ケーブル、銅線、及び光ファイバを含む。伝送媒体はまた、電波及び赤外線データ通信中に生成されるもの等、音響又は光波の形態をとり得る。
【００９２】
様々な形態の媒体が、実行のために少なくとも１つの命令の少なくとも１つのシーケンスをプロセッサ７０４に伝達することに関与し得る。例えば、命令は、初期には、リモートコンピュータの磁気ディスク又はソリッドステートドライブに存在し得る。リモートコンピュータは、その動的メモリに命令をロードし、モデムを使用して、光ファイバ、同軸ケーブル、又は電話回線等の通信リンクを介して、命令を送信することができる。コンピュータシステム７００のローカルにあるモデム又はルータは、通信リンクを介してデータを受信し、データを、コンピュータシステム７００により読み取り可能なフォーマットに変換することができる。例えば、無線周波数アンテナ又は赤外線検出器等の受信機は、無線信号又は光信号において伝達されたデータを受信することができ、適切な回路は、データをバスに配置する等、データをＩ／Ｏサブシステム７０２に提供することができる。Ｉ／Ｏサブシステム７０２は、データをメモリ７０６に伝達し、プロセッサ７０４は、メモリ７０６からデータを読み出し、命令を実行する。メモリ７０６により受信された命令は、任意的に、プロセッサ７０４による実行の前又は後に、ストレージ７１０に記憶されてもよい。
【００９３】
コンピュータシステム７００はまた、バス７０２に接続される通信インタフェース７１８を含む。通信インタフェース７１８は、ネットワーク７２２、又はインターネット上のパブリッククラウド若しくはプライベートクラウド等の少なくとも１つの通信ネットワークに直接的に又は間接的に接続される１つ以上のネットワークリンク７２０への双方向データ通信接続を提供する。例えば、通信インタフェース７１８は、Ｅｔｈｅｒｎｅｔ（登録商標）ネットワーキングインタフェース、サービス総合デジタル通信網（ＩＳＤＮ）カード、ケーブルモデム、衛星モデム、又は、例えばＥｔｈｅｒｎｅｔ（登録商標）ケーブル、任意の種類の金属ケーブル、光ファイバ回線、又は電話回線といった対応するタイプの通信回線へのデータ通信接続を提供するためのモデムであってよい。ネットワーク７２２は、幅広く、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、キャンパスネットワーク、インターネットワーク、又はこれらの任意の組み合わせを表す。通信インタフェース７１８は、適合するＬＡＮへのデータ通信接続を提供するためのＬＡＮカード、若しくは、セルラ無線電話無線ネットワーキング標準に従ってセルラデータを送信又は受信するように接続されるセルラ無線電話インタフェース、又は、衛星無線ネットワーキング標準に従ってデジタルデータを送信又は受信するように接続される衛星無線インタフェースを含み得る。そのような実装において、通信インタフェース７１８は、様々なタイプの情報を表すデジタルデータストリームを伝達する信号パスを介して、電気信号、電磁気信号、又は光信号を送受信する。
【００９４】
ネットワークリンク７２０は、典型的には、例えば、衛星技術、セルラ技術、Ｗｉ−Ｆｉ（登録商標）技術、又はＢＬＵＥＴＯＯＴＨ（登録商標）技術を使用して、直接的に又は少なくとも１つのネットワークを介して他のデータデバイスに、電気データ通信、電磁気データ通信、又は光データ通信を提供する。例えば、ネットワークリンク７２０は、ネットワーク７２２を介するホストコンピュータ７２４への接続を提供することができる。
【００９５】
さらに、ネットワークリンク７２０は、インターネットサービスプロバイダ（ＩＳＰ）７２６により運用されるコンピュータ及び／又はインターネットワーキングデバイスを介して、ネットワーク７２２を介する又は他のコンピューティングデバイスへの接続を提供することができる。ＩＳＰ７２６は、インターネット７２８として表されているワールドワイドのパケットデータ通信ネットワークを介するデータ通信サービスを提供する。サーバコンピュータ７３０は、インターネット７２８に接続され得る。サーバ７３０は、幅広く、任意のコンピュータ、データセンター、ハイパーバイザを伴う又は伴わない仮想マシン又は仮想コンピューティングインスタンス、又は、ＤＯＣＫＥＲ又はＫＵＢＥＲＮＥＴＥＳ等のコンテナプログラムシステムを実行するコンピュータを表す。サーバ７３０は、２つ以上のコンピュータ又はインスタンスを使用して実現される電子デジタルサービスであって、ウェブサービス要求、ＨＴＴＰペイロード内のパラメータを含むユニフォームリソースロケータ（ＵＲＬ）文字列、ＡＰＩコール、アプリケーションサービスコール、又は他のサービスコールを送信することによりアクセス及び使用される電子デジタルサービスを表すこともある。コンピュータシステム７００及びサーバ７３０は、タスクを協調して実行する又はアプリケーション若しくはサービスを協調して実行する他のコンピュータ、処理クラスタ、サーバファーム、又は、コンピュータの他の団体構成を含む分散型コンピューティングシステムの要素を形成することができる。サーバ７３０は、モジュール、メソッド、オブジェクト、ファンクション、ルーチン、又はコールとして編成される１つ以上の命令セットを含み得る。命令は、１つ以上のコンピュータプログラム、オペレーティングシステムサービス、又は、モバイルアプリケーションを含むアプリケーションプログラムとして編成され得る。命令は、オペレーティングシステム及び／又はシステムソフトウェア；マルチメディアプログラミング又は他の機能をサポートするための１つ以上のライブラリ；ＴＣＰ／ＩＰ、ＨＴＴＰ、又は他の通信プロトコルを実装するためのデータプロトコル命令又はスタック；ＨＴＭＬ、ＸＭＬ、ＪＰＥＧ、ＭＰＥＧ、又はＰＮＧを使用してコード化されたファイルを解析又はレンダリングするためのファイルフォーマット処理命令；グラフィカルユーザインタフェース（ＧＵＩ）、コマンドラインインタフェース、又はテキストユーザインタフェース用のコマンドをレンダリング又は解釈するためのユーザインタフェース命令；オフィススイート、インターネットアクセスアプリケーション、設計及び製造アプリケーション、グラフィックスアプリケーション、オーディオアプリケーション、ソフトウェアエンジニアリングアプリケーション、教育アプリケーション、ゲームアプリケーション、又は各種アプリケーション等のアプリケーションソフトウェア；を含み得る。サーバ７３０は、プレゼンテーション層、アプリケーション層、及び、構造化クエリ言語（ＳＱＬ）を用いる又はＳＱＬを用いないリレーショナルデータベースシステム、オブジェクトストア、グラフデータベース、フラットファイルシステム、又は他のデータストレージ等のデータ記憶層をホストするウェブアプリケーションサーバを含み得る。
【００９６】
コンピュータシステム７００は、１つ以上のネットワーク、ネットワークリンク７２０、及び通信インタフェース７１８を介して、メッセージを送信し、プログラムコードを含む命令及びデータを受信することができる。インターネットの例において、サーバ７３０は、インターネット７２８、ＩＳＰ７２６、ローカルネットワーク７２２、及び通信ネットワーク７１８を介して、アプリケーションプログラムについての要求されたコードを送信することがある。コードが、受信されると、且つ／又は、後の実行のためにストレージ７１０又は他の不揮発性ストレージにおいて記憶されると、受信されたコードが、プロセッサ７０４により実行され得る。
【００９７】
このセクションにおいて説明された命令の実行は、実行されておりプログラムコード及びその現在のアクティビティからなるコンピュータプログラムのインスタンスの形で、プロセスを実施し得る。オペレーティングシステム（ＯＳ）に応じて、プロセスは、同時に命令を実行する複数の実行スレッドから構成され得る。このコンテキストにおいて、コンピュータプログラムは、命令の受動的集合体であり、プロセスは、これらの命令の実際の実行であり得る。複数のプロセスが、同じプログラムに関連付けられ得る。例えば、同じプログラムの複数のインスタンスを開始することは、２つ以上のプロセスが実行されていることをしばしば意味する。複数のプロセスがプロセッサ７０４を共用することを可能にするために、マルチタスキングが実行され得る。各プロセッサ７０４又はプロセッサのコアが、一度に１つのタスクを実行する間、コンピュータシステム７００は、各タスクが終了するのを待つ必要なく、各プロセッサが、実行されているタスクの間で切り替えることを可能にするマルチタスキングを実行するようにプログラムされ得る。一実施形態において、タスクが入力／出力動作を実行するときに、切り替えることが可能であることをタスクが示したときに、又はハードウェア割り込みのときに、切り替えが実行され得る。複数のプロセスの並行実行の発生を提供するようにコンテキスト切り替えを迅速に実行することにより、インタラクティブなユーザアプリケーションについて迅速な応答を可能にするために、時分割が実行され得る。一実施形態において、セキュリティ及び信頼性のために、オペレーティングシステムは、厳格に調停及び制御されるプロセス間通信機能を提供することで、独立したプロセスの間の直接通信を防ぐことができる。
【符号の説明】
【００９８】
１０２  クライアント（コンピューティング）デバイス
１１０  アプリケーションサーバ
１１２  データインタフェース
１１４  ユーザインタフェース
１１６  ウェブアプリケーション管理アプリケーション
１１８  ウェブアプリケーション
１２０  ストレージ
１３０  ネットワーク
７００  コンピュータシステム
７０２  入力／出力（Ｉ／Ｏ）サブシステム
７０４  プロセッサ
７０６  メモリ
７０８  ＲＯＭ
７１０  ストレージ
７１２  出力デバイス
７１４  入力デバイス
７１６  制御デバイス
７１８  通信インタフェース
７２０  ネットワークリンク
７２２  ネットワーク
７２４  ホスト
７２６  ＩＳＰ
７２８  インターネット
７３０  サーバ
【図１】
2020064679.tif 000003
【図２】
2020064679.tif 000004
【図３】
2020064679.tif 000005
【図４】
2020064679.tif 000006
【図５】
2020064679.tif 000007
【図６】
2020064679.tif 000008
【図７】
2020064679.tif 000009