図面 (/)

技術 サードパーティアプリケーションのアクティビティデータの収集のためのシステムおよび方法

出願人 ウィックス.コムリミテッド.
発明者 アブラハミヨアヴブロシュクフィルアクサフニザン
出願日 2014年12月4日 (4年7ヶ月経過) 出願番号 2016-536678
公開日 2017年1月19日 (2年6ヶ月経過) 公開番号 2017-502392
状態 特許登録済
技術分野 計算機間の情報転送
主要キーワード ベーステンプレート ダミー電 適合器 デザイン環境 可視要素 更新オプション 統合コード セクションタイプ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年1月19日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題・解決手段

本システムは、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の少なくとも1つのアクティビティメッセージを調整する少なくとも1つのハブと、少なくとも1つのアクティビティメッセージをリスンし、少なくとも1つのメッセージから抽出されたデータを、ウェブサイトの利用者である、識別されたコンタクトおよび匿名のコンタクトのうちの少なくとも一方に関連付けられるアクティビティストリームに少なくとも加える、アクティビティコーディネータと、を含む。さらに、本システムは、コンタクト関連情報をアクティビティストリームから取得および分析して、コンタクトの以前に保持された情報の質を高める、コンタクトコーディネータと、ウェブサイトおよびコンタクトによって使用できるように、アクティビティストリームおよびコンタクト関連情報を格納する少なくとも1つのデータベースと、を含む。

概要

背景

ウェブサイトおよびその他のオンラインアプリケーションを作成および編集する目的に使用することのできる数多くのウェブサイト構築システムや、その他の対話型アプリケーション構築ツールが市販されている。エンドユーザは、通常のパーソナルコンピュータスマートフォンタブレット、および他のデスクトップまたはモバイルデバイスなどの幅広プラットフォーム上のクライアントソフトウェアを使用して、このようなウェブサイトにアクセスすることができる。

これらのウェブサイト構築システムは、さまざまな形態で提供され、例えば、インターネットに接続されている1つまたは複数のサーバ上でホストされ、HTTPハイパーテキスト転送プロトコル)などのインターネット通信プロトコルを使用してアクセスされる完全にオンラインのウェブサイト構築システムなどである。これらのウェブサイト構築システムの作成、編集、およびデプロイは、すべてサーバによる直接的なオンライン動作によって実行される。

ウェブサイト構築システムは、部分的にオンラインとする、または完全にオンラインとすることもできる。部分的にオンラインのシステムの場合、ウェブサイトの編集をユーザのマシン上でローカルに実行し、後から中央の1つまたは複数のサーバにアップロードしてデプロイする。ウェブサイトがアップロードされると、これらのウェブサイト構築システムは、完全にオンラインのウェブサイト構築システムと同じように機能する。

ウェブサイト構築システムは、システム内のデータおよび要素を体系化する目的で、内部のデータアーキテクチャを有する。このアーキテクチャは、ユーザから見える対象のサイト外観とは異なることがあり、さらに、一般的なHTML(ハイパーテキストマークアップ言語ページブラウザに送られる方式とも異なることがある。例えば、内部のデータアーキテクチャは、ページ上の各要素の追加のプロパティ作成者作成日時、アクセス許可テンプレートへのリンクなど)を含むことができ、これらの追加のプロパティは、ウェブサイト構築システム内でサイトを編集および維持管理するうえで欠かせないものであるが、外部のエンドユーザ(場合によっては編集を行う一部のユーザ)には見えない。ウェブサイト構築システムに基づくサイトの一般的なアーキテクチャは、コンポーネント(例えば、形状コンポーネント、写真コンポーネント、テキストコンポーネントのほか、ミニページを含むシングルページコンテナおよびマルチページコンテナなど)を含むページから構成することができる。

コンポーネントは、内部コンテンツを持たない星形などのコンテンツレスとすることができ(ただし色、大きさ、位置、およびその他の属性は有する)、あるいは、テキストパラグラフコンポーネントなど内部コンテンツを有することができ、このようなコンポーネントの内部コンテンツには、表示されるテキストに加えて、フォント書式レイアウトの情報が含まれる。当然ながら、このコンテンツは、テキストパラグラフコンポーネントごとに異なりうる。

このようなウェブサイト構築システムを使用するデザイナーは、何もない状態から新しいサイトをデザインする(空白画面から開始する)、または、デザイナー自身、システムクリエーター、またはデザイナーのコミュニティによって作成された事前定義されたアプリケーションテンプレートを利用することができる。ウェブサイト構築システムは、単なるコンポーネントの集合であるテンプレート、完全なページ(またはミニページ)または一連のページであるテンプレート、および完全なウェブサイトであるテンプレートをサポートすることができる。

アプリケーションのテンプレートが提供されるときには、デザイナーは、それを自由にカスタマイズすることができ、テンプレートのすべての要素の追加、削除、または修正を行って、デザイナー自身のテンプレートのバージョンを作成する。このようなカスタマイズは、テンプレートの修正されたバージョン(テンプレートとは異なる個別のバージョン)を作成することによって実施することができる。あるいは、ウェブサイト構築システムが、継承メカニズム(inheritance-type mechanism)を通じてカスタマイズを適用することができ、継承型メカニズムは、元のテンプレートへのリンクを維持し、したがってテンプレートに対して後から行われる変更が反映される。

さらに、ウェブサイト構築システムは、サードパーティアプリケーションおよびその中に埋め込まれているコンポーネントを使用して、拡張することができる。このようなサードパーティアプリケーションは、ウェブサイト構築システムのデザイン環境に含まれていることがあり、または、さまざまな配布機構を通じて、例えばウェブサイト構築システムに組み込まれているアプリケーションストア(AppStore)から、またはウェブサイト構築システム(WBS)のベンダーまたは別の組織によって運営されているウェブベースまたは独立したアプリケーションリポジトリ(またはAppStore)から、個別に購入する(または他の方法で取得する)ことができる。さらに、サードパーティアプリケーションは、サードパーティアプリケーションのベンダーから(AppStoreを通じて、または通じずに)直接取得することもでき、この場合、ベンダーは、実際のインストールモジュールを提供する、またはアクティベーションコードまたはアクセスコードのみを提供する。

サードパーティアプリケーションには、フロントエンド(表示)要素とバックオフィス要素の任意の組合せ(これらはウェブサイトには表示されない)が含まれることがある。サードパーティアプリケーションは、全体がバックオフィスである(すなわち表示要素を含まない)、または全体がフロントエンドである(すなわちウェブサイトで使用されるときのみ起動される)、または2つの組合せであることがある。

サードパーティアプリケーションのバックオフィス要素には、データベース通信オプションや外部更新オプションなどの機能が含まれることがある。例えば、ブログのサードパーティアプリケーションには、人以外の発信元(例えば、大手ニュースサービスからのRSSニュース配信)からと、ウェブサイトに関係ない人の発信元(例えば、ブログエントリ投稿できるスタンドアロンのスマートフォンアプリケーション)から、更新を受信することのできるバックオフィス要素が含まれることがある。

サードパーティアプリケーションの視覚要素を、それらが含められるウェブサイトに組み込む処理は、さまざまな方法で行うことができる。ウィジェットタイプのサードパーティアプリケーションは、ウェブサイトのページの内側にコンポーネントとして埋め込むことができるのに対して、セクションタイプのサードパーティアプリケーションは、ウェブサイトに1つまたは複数の追加のページとして加えることができる。

さらには、サードパーティアプリケーション(ウィジェットタイプおよびセクションタイプの両方)は、シングルページのサードパーティアプリケーション、またはマルチページのサードパーティアプリケーション(内部URL構造として表される内部ミニページを有する)とすることができる。システムは、4つの可能な組合せ(ウィジェットまたはセクション、シングルページまたはマルチページ)のうちの1つまたは複数、あるいはすべてを実装することができる。

マルチページのサードパーティアプリケーションは、通常ではデフォルトの「ランディング」ミニページを提供し、このミニページは、オープニングページ、特定の内部のミニページ(例えばブログのサードパーティアプリケーションにおける最新のブログエントリ)、ミニページ選択画面、またはその他のミニページである。

ウェブサイト構築システムに基づくウェブサイトにおけるサードパーティアプリケーションの使用は、サードパーティアプリケーションのインスタンスを通じて行われる。ウェブサイト構築システムは、複数のレベルにおけるサードパーティアプリケーションの複数の使用法をサポートすることができ、例えば、ウェブサイト全体においてサードパーティアプリケーションの1つのインスタンスを許可する、ウェブサイトの内側で複数のサードパーティアプリケーションのインスタンスを作成することを許可する(ただし1つのサードパーティアプリケーションあたり1つのインスタンスのみ)、複数のサードパーティアプリケーションの複数のインスタンスを作成することを許可する(ただし1ページあたり1つのインスタンスのみ)が挙げられる。さらに、コンポーネント型サードパーティアプリケーション(セクションタイプのサードパーティアプリケーションではない)のページあたり複数のインスタンスを許可することもでき、さらに、サードパーティアプリケーションのインスタンスの数、多重度、または位置の制限なしに、複数のサードパーティアプリケーションの複数のインスタンスを作成することを許可することもできる。

サードパーティアプリケーションのインスタンスは、インスタンスに固有なコンテンツを有することができる。例えば、オンラインショップ(e-Shop)のサードパーティアプリケーションは、特定のインスタンスに関連付けられる製品データベースを有することができ、この製品データベースは、(同じサイトまたは別のサイト内の)同じオンラインショップのサードパーティアプリケーションの別のインスタンスに関連付けられる製品データベースとは異なる。

説明を目的として、サードパーティアプリケーションおよびそのミニページや要素を含むウェブサイトページ(またはミニページ)(すなわち「ラッパーページ」)は、含有ウェブページ(containing web page)と称するものとし、ウェブサイト全体にメインサイトとして既知であるものとする。ユーザに示される統合されたページ(メインページおよび埋め込まれたTPAミニページ/コンポーネントを含む)を、合成ページと称する。セクションタイプのサードパーティアプリケーションの場合、サードパーティアプリケーションを含む「仮想ページ」が、含有ウェブページの役割を果たす。

サードパーティアプリケーションは、通常では、ウェブサイト構築システムのベンダーのサーバ上、サードパーティアプリケーションのベンダーのサーバ上、外部(フォースパーティ)のサーバ上、またはこれらのサーバの任意の組合せ上にデプロイされる。サードパーティアプリケーションは、エンドユーザのマシン上で実際に実行される要素(例えば、静的にインストールされるブラウザエクステンションや、図1に示したようにウェブサイト構築システムのクライアント側コードの内側で動的に実行されるJavaScript(登録商標)コンポーネントなど)も含むことができる。以下ではこの図1を参照する。

ウェブサイト構築システムのベンダーのサーバは、エンドユーザのための連絡口として機能し、要求に応答する(場合によってはサードパーティアプリケーションのベンダーのサーバに接続して必要な情報を受け取る)。ウェブサイト構築システムは、例えばビデオストリーミングが要求されるとき、クライアントのコンピュータとサードパーティアプリケーションのベンダーのサーバとの間に(必要に応じて)直接的な接続を形成することができる。

含まれているサードパーティアプリケーションのインスタンスは、通常のコンポーネントが内部コンテンツを含むのと同様に、自身の内部コンテンツを有することができる。図2を参照し、この図に示したように、サードパーティアプリケーションは、ウェブサイト構築システムと、ウェブサイト構築システムを使用して生成されたウェブサイトとは無関係に、このコンテンツを管理することができる。1つまたは複数のサードパーティアプリケーションの複数のインスタンスは、共有コンテンツを有することができ、例えば、2つの個別のウェブサイトページにおける2つのオンラインショップのインスタンスが、同じ製品データベースを参照することができる。

含まれているサードパーティアプリケーションからの出力は、例えば以下のようなさまざまな方法で、含有ウェブページに組み込むことができる。

サーバ側の処理: (以下では図3を参照する。)図3に示したこの方法においては、サードパーティアプリケーション[a](デザイン要素および表示要素を含む)と、ユーザに固有なサードパーティアプリケーションのデータ[b]とが、サードパーティアプリケーションのベンダーのサーバ[d]上で実行されているサードパーティアプリケーションのサーバコード[c]によってマージされる。これらは通信媒体[e]を介してウェブサイト構築システムのサーバコード[f]に送られ、サーバコード[f]は、これらを含有ウェブページの情報[g]とマージした後、これらをユーザのクライアントステーション[h]に表示できるように送る。

クライアント側の処理: (以下では図4を参照する。)図4に示したこの方法においては、サードパーティアプリケーション[a](デザイン要素および表示要素を含む)と、ユーザに固有なサードパーティアプリケーションのデータ[b]とが、サードパーティアプリケーションのベンダーのサーバ[d]上で実行されているサードパーティアプリケーションのサーバコード[c]によってマージされる。これらは通信媒体[e]を介してクライアント側の処理コンポーネント[h]に送られる。ウェブサイト構築システムのサーバコード[f]は、含有ウェブページの情報[g]を、このクライアント側の処理コンポーネント[h]に送る。クライアント側の処理コンポーネント[h]は、2つの情報源のマージを実行し、統合されたアプリケーションをブラウザ(または他のクライアントエージェント)[i]に提示する。

iFrameのインクルージョン(inclusion): (以下では図5を参照する。)図5に示した方法においては、サードパーティアプリケーション[a](デザイン要素および表示要素を含む)と、ユーザに固有なサードパーティアプリケーションのデータ[b]とが、サードパーティアプリケーションのベンダーのサーバ[d]上で実行されているサードパーティアプリケーションのサーバコード[c]によってマージされる。これらは、ユーザエージェント(例えばウェブブラウザ)[i]の内側で実行されているブラウザベースのアプリケーション[h]に、通信媒体[e]を介して送られる。ウェブサイト構築システムのサーバコード[f]は、含有ウェブページの情報[g]を、このブラウザベースのアプリケーション[h]に送る。含有ウェブページは、サードパーティアプリケーションのサーバ[d]からのコンテンツを含める1つまたは複数のiframeディレクティブを含むウェブページとして作成される。追加の方法および代替方法も適用可能である。

概要

本システムは、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の少なくとも1つのアクティビティメッセージを調整する少なくとも1つのハブと、少なくとも1つのアクティビティメッセージをリスンし、少なくとも1つのメッセージから抽出されたデータを、ウェブサイトの利用者である、識別されたコンタクトおよび匿名のコンタクトのうちの少なくとも一方に関連付けられるアクティビティストリームに少なくとも加える、アクティビティコーディネータと、を含む。さらに、本システムは、コンタクト関連情報をアクティビティストリームから取得および分析して、コンタクトの以前に保持された情報の質を高める、コンタクトコーディネータと、ウェブサイトおよびコンタクトによって使用できるように、アクティビティストリームおよびコンタクト関連情報を格納する少なくとも1つのデータベースと、を含む。

目的

さらに、サードパーティアプリケーションは、サードパーティアプリケーションのベンダーから(AppStoreを通じて、または通じずに)直接取得することもでき、この場合、ベンダーは、実際のインストールモジュールを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

クライアントサーバシステムを介してウェブサイト上に実装可能なシステムであって、前記クライアント/サーバシステムが、前記システムを定義する命令を処理する少なくとも1つのプロセッサを有し、前記システムが、前記ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の少なくとも1つのアクティビティメッセージを調整する少なくとも1つのハブであって、前記少なくとも1つのアクティビティメッセージが、標準化されたフォーマットを有する、前記少なくとも1つのハブと、前記少なくとも1つのアクティビティメッセージをリスンし、前記少なくとも1つのメッセージから抽出されたデータを、識別されたコンタクトおよび匿名のコンタクトのうちの少なくとも一方に関連付けられるストリームに少なくとも加える、アクティビティコーディネータであって、識別されたコンタクトおよび匿名のコンタクトのうちの前記少なくとも一方が、前記ウェブサイトの利用者である、前記アクティビティコーディネータと、コンタクト関連情報を前記ストリームから取得および分析して、前記コンタクトの以前に保持された情報の質を高める、コンタクトコーディネータと、前記ウェブサイトおよび前記コンタクトによって使用できるように、前記アクティビティストリームおよび前記コンタクト関連情報を格納する少なくとも1つのデータベースと、を備えている、システム。

請求項2

前記少なくとも1つのハブが、前記ウェブサイトと前記少なくとも1つのサードパーティアプリケーションとの間の前記少なくとも1つのアクティビティメッセージをルーティングおよび追跡するルータ追跡器と、前記ウェブサイトと前記少なくとも1つのサードパーティアプリケーションとの間のプライバシーポリシーを実施するプライベートポリシーエンフォーサと、前記ウェブサイトと前記少なくとも1つのサードパーティアプリケーションとの間の事前に指定される少なくとも1つのメッセージ変換コンテンツ適合規則を適用する変換器適合器と、プライベートデータプロキシとプライベートデータ置換のうちの少なくとも一方を実施し、前記ウェブサイトと前記少なくとも1つのサードパーティアプリケーションとの間の利用者許可フィールドの制限を実施する、プライベートデータプロキシと、前記少なくとも1つのアクティビティメッセージの署名を、前記少なくとも1つのサードパーティアプリケーションの入力鍵を使用して検証し、前記少なくとも1つのアクティビティメッセージに関連付けられる外部IDを内部ウェブサイトIDを使用して変換し、送出される前記少なくとも1つのアクティビティメッセージに、前記少なくとも1つのサードパーティアプリケーションの出力鍵を使用して署名する、検証器/署名器と、のうちの少なくとも1つを備えている、請求項1に記載のシステム。

請求項3

前記アクティビティコーディネータが、前記少なくとも1つのアクティビティメッセージに関連付けられる前記コンタクトを識別し、関連付けられるコンタクトが存在しない場合にデータの前記ストリームを作成する、ストリーム作成器と、前記少なくとも1つのアクティビティメッセージからのデータを既存のストリームにマージし、前記アクティビティストリームのうちの少なくとも2つからのデータを1つのストリームにマージする、ストリームマージャと、前記アクティビティストリームからのアクティビティデータを前記少なくとも1つのデータベースに記録するログ作成器と、のうちの少なくとも1つを備えている、請求項1に記載のシステム。

請求項4

前記コンタクトコーディネータが、前記少なくとも1つのアクティビティメッセージ、前記ストリーム、別のコンタクト、外部ソースのうちの少なくとも1つから、コンタクト関連情報を抽出するデータ抽出器と、少なくとも2つのコンタクト情報レコードをマージし、前記抽出されたコンタクト関連情報を、事前に定義されるマージ規則に従って、既存のコンタクトの関連情報にマージする、データマージャであって、前記レコードが、同じ識別されたコンタクトとの関連性を有する、前記データマージャと、識別可能な新しいコンタクトおよび匿名のコンタクトの少なくとも一方を作成し、前記ウェブサイトのセッションの間、コンタクトのアクティビティを追跡する、コンタクトハンドラと、抽出されたコンタクト関連情報のプライバシー保護および許可を処理するデータ/許可ハンドラと、のうちの少なくとも1つを備えている、請求項1に記載のシステム。

請求項5

前記ルータ/追跡器が、前記少なくとも1つのサードパーティアプリケーションによって指定されるリスニングクエリを使用して前記少なくとも1つのアクティビティメッセージをルーティングすることをサポートする、請求項2に記載のシステム。

請求項6

前記ストリームマージャが、前記データを、前記識別されたコンタクトに関連付けられる前記ストリームにマージするアクティビティ−ストリームマージャと、少なくとも2つの個別のストリームを1つのストリームにマージするストリーム−ストリームマージャと、を備えている、請求項3に記載のシステム。

請求項7

前記ストリーム−ストリームマージャが、前記少なくとも2つの個別のストリームを、識別された共通のコンタクトに従ってマージする水平ストリームマージャと、匿名のコンタクトと、登録されたコンタクトとが、ログイン時または登録時に結びつけられたときに、前記匿名のコンタクトに対して作成されたストリームを、前記登録されたコンタクトに関連付けられるストリームにマージする、垂直ストリームマージャと、のうちの少なくとも一方を備えている、請求項6に記載のシステム。

請求項8

前記データマージャが、前記コンタクト情報レコードのうちの少なくとも2つの中の同じプライマリIDフィールド値を特定する、前記コンタクト情報レコードのうちの少なくとも2つの中の、正規化されたときに同じであるプライマリIDフィールド値を特定する、クッキーを使用してサイト利用者を識別する、登録された利用者の場合にサイトログインを使用してサイト利用者を識別する、ソーシャルネットワークに関連付けられるアカウントを持つサイト利用者の場合にソーシャルログインを通じてサイト利用者を識別する、のうちの少なくとも1つを行うコンタクト識別器と、言語解析構文解析、およびテキスト解析のうちの少なくとも1つと、外部データソースおよび外部サービスの参照・利用とを用いて、コンタクト情報を結合する結合器と、コンタクトレコード間の矛盾を、事前に定義される規則に従って解消する矛盾解消器と、リスト値フィールドを作成し、前記コンタクトレコード間の明確な優先順位を定義する、リスト値作成器と、共通のプライマリIDが検出されたことにより、互いに関連しない2人のコンタクトをマージする水平コンタクトマージャと、匿名のコンタクトと、登録された利用者に関連付けられるコンタクトとが、ログイン時または登録時に結びつけられたときに、前記匿名のコンタクトを、登録された利用者に関連付けられる前記コンタクトにマージする、垂直コンタクトマージャと、のうちの少なくとも1つを備えている、請求項4に記載のシステム。

請求項9

前記水平コンタクトマージャが、少なくとも2つのコンタクトレコードを個別のレコードとして維持し、前記2つのコンタクトレコードが同じコンタクトを表していることが示されるように前記2つのコンタクトレコードを互いにリンクする、仮想マージャ、を備えている、請求項8に記載のシステム。

請求項10

前記垂直コンタクトマージャが、匿名のコンタクトと、登録された利用者に関連付けられるコンタクトとを個別のコンタクトとして維持し、前記匿名のコンタクトおよび登録された利用者に関連付けられる前記コンタクトが同じコンタクトを表していることが示されるように、前記匿名のコンタクトおよび登録された利用者に関連付けられる前記コンタクトを互いにリンクする、仮想マージャ、を備えている、請求項8に記載のシステム。

請求項11

前記利用者許可フィールドが、前記ウェブサイトもしくは前記ウェブサイトのオーナーまたはその両方によって決定される、請求項2に記載のシステム。

請求項12

前記標準化されたフォーマットが、事前に定義されるスキーマによって定義されるフォーマット、継承によって定義されるフォーマット、コールバックリンクによって定義されるフォーマット、前記少なくとも1つのサードパーティアプリケーションによって符号化および定義されるフォーマット、外部の正式標準業界標準、または事実上の標準に基づくフォーマット、のうちの少なくとも1つである、請求項1に記載のシステム。

請求項13

クライアント/サーバシステムを介してウェブサイト上に実装可能な方法であって、前記クライアント/サーバシステムが、前記方法を定義する命令を処理する少なくとも1つのプロセッサを有し、前記方法が、前記ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の少なくとも1つのアクティビティメッセージを調整するステップであって、前記少なくとも1つのアクティビティメッセージが、標準化されたフォーマットを有する、ステップと、前記少なくとも1つのアクティビティメッセージをリスンし、前記少なくとも1つのメッセージから抽出されたデータを、識別されたコンタクトおよび匿名のコンタクトのうちの少なくとも一方に関連付けられるストリームに少なくとも加えるステップであって、前記識別されたコンタクトおよび前記匿名のコンタクトのうちの少なくとも一方が、前記ウェブサイトの利用者である、ステップと、コンタクト関連情報を前記ストリームから取得および分析して、前記コンタクトの以前に保持された情報の質を高めるステップと、前記ウェブサイトおよび前記コンタクトによって使用できるように、前記アクティビティストリームおよび前記コンタクト関連情報を格納するステップと、を含む、方法。

請求項14

前記調整するステップが、前記ウェブサイトと前記少なくとも1つのサードパーティアプリケーションとの間の前記少なくとも1つのアクティビティメッセージをルーティングおよび追跡するステップと、前記ウェブサイトと前記少なくとも1つのサードパーティアプリケーションとの間のプライバシーポリシーを実施するステップと、前記ウェブサイトと前記少なくとも1つのサードパーティアプリケーションとの間の事前に指定される少なくとも1つのメッセージ変換/コンテンツ適合化規則を適用するステップと、プライベートデータプロキシとプライベートデータ置換のうちの少なくとも一方を実施し、前記ウェブサイトと前記少なくとも1つのサードパーティアプリケーションとの間の利用者許可フィールドの制限を実施するステップと、前記少なくとも1つのアクティビティメッセージの署名を、前記少なくとも1つのサードパーティアプリケーションの入力鍵を使用して検証し、前記少なくとも1つのアクティビティメッセージに関連付けられる外部IDを内部ウェブサイトIDを使用して変換し、送出される前記少なくとも1つのアクティビティメッセージに、前記少なくとも1つのサードパーティアプリケーションの出力鍵を使用して署名するステップと、のうちの少なくとも1つを含む、請求項13に記載の方法。

請求項15

前記リスンして少なくとも加えるステップが、前記少なくとも1つのアクティビティメッセージに関連付けられる前記コンタクトを識別し、関連付けられるコンタクトが存在しない場合にデータの前記ストリームを作成するステップと、前記少なくとも1つのアクティビティメッセージからのデータを既存のストリームにマージし、前記アクティビティストリームのうちの少なくとも2つからのデータを1つのストリームにマージするステップと、前記アクティビティストリームからのアクティビティデータを前記少なくとも1つのデータベースに記録するステップと、のうちの少なくとも1つを含む、請求項13に記載の方法。

請求項16

前記取得および分析するステップが、前記少なくとも1つのアクティビティメッセージ、前記ストリーム、別のコンタクト、外部ソースのうちの少なくとも1つから、コンタクト関連情報を抽出するステップと、少なくとも2つのコンタクト情報レコードをマージし、前記抽出されたコンタクト関連情報を、事前に定義されるマージ規則に従って、既存のコンタクトの関連情報にマージするステップであって、前記レコードが、同じ識別されたコンタクトとの関連性を有する、ステップと、識別可能な新しいコンタクトおよび匿名のコンタクトの少なくとも一方を作成し、前記ウェブサイトのセッションの間、コンタクトのアクティビティを追跡するステップと、抽出されたコンタクト関連情報のプライバシー保護および許可を処理するステップと、のうちの少なくとも1つを含む、請求項13に記載の方法。

請求項17

前記ルーティングおよび追跡するステップが、前記少なくとも1つのサードパーティアプリケーションによって指定されるリスニングクエリを使用して前記少なくとも1つのアクティビティメッセージをルーティングすることをサポートする、請求項14に記載の方法。

請求項18

前記マージするステップが、前記データを、前記識別されたコンタクトに関連付けられる前記ストリームにマージするステップと、少なくとも2つの個別のストリームを1つのストリームにマージするステップ、を含む、請求項15に記載の方法。

請求項19

前記データを前記識別されたコンタクトに関連付けられる前記ストリームにマージする前記ステップと、少なくとも2つの個別のストリームを1つのストリームにマージする前記ステップが、前記少なくとも2つの個別のストリームを、識別された共通のコンタクトに従って水平にマージするステップと、匿名のコンタクトと、登録されたコンタクトとが、ログイン時または登録時に結びつけられたときに、前記匿名のコンタクトに対して作成されたストリームを、前記登録されたコンタクトに関連付けられるストリームに垂直にマージするステップと、のうちの少なくとも一方を含む、請求項18に記載の方法。

請求項20

少なくとも2つのコンタクト情報レコードをマージする前記ステップが、前記コンタクト情報レコードのうちの少なくとも2つの中の同じプライマリIDフィールド値を特定する、前記コンタクト情報レコードのうちの少なくとも2つの中の、正規化されたときに同じであるプライマリIDフィールド値を特定する、クッキーを使用してサイト利用者を識別する、登録された利用者の場合にサイトログインを使用してサイト利用者を識別する、および/または、ソーシャルネットワークに関連付けられるアカウントを持つサイト利用者の場合にソーシャルログインを通じてサイト利用者を識別する、ステップと、言語解析、構文解析、およびテキスト解析のうちの少なくとも1つと、外部のデータソースおよび外部サービスの参照・利用とを用いて、コンタクト情報を結合するステップと、コンタクトレコード間の矛盾を、事前に定義される規則に従って解消するステップと、リスト値フィールドを作成し、前記コンタクトレコード間の明確な優先順位を定義するステップと、共通のプライマリIDが検出されたことにより、互いに関連しない2人のコンタクトを水平にマージするステップと、匿名のコンタクトと、登録された利用者に関連付けられるコンタクトとが、ログイン時または登録時に結びつけられたときに、前記匿名のコンタクトを、登録された利用者に関連付けられる前記コンタクトに垂直にマージするステップと、のうちの少なくとも1つを含む、請求項16に記載の方法。

請求項21

前記水平にマージするステップが、少なくとも2つのコンタクトレコードを個別のレコードとして維持し、前記2つのコンタクトレコードが同じコンタクトを表していることが示されるように前記2つのコンタクトレコードを互いにリンクして仮想的にマージするステップ、を含む、請求項20に記載の方法。

請求項22

前記垂直にマージするステップが、匿名のコンタクトと、登録された利用者に関連付けられるコンタクトとを個別のコンタクトとして維持し、前記匿名のコンタクトおよび登録された利用者に関連付けられる前記コンタクトが同じコンタクトを表していることが示されるように、前記匿名のコンタクトおよび登録された利用者に関連付けられる前記コンタクトを互いにリンクして仮想的にマージするステップ、を含む、請求項20に記載の方法。

請求項23

前記利用者許可フィールドが、前記ウェブサイトもしくは前記ウェブサイトのオーナーまたはその両方によって決定される、請求項14に記載の方法。

請求項24

前記標準化されたフォーマットが、事前に定義されるスキーマによって定義されるフォーマット、継承によって定義されるフォーマット、コールバックリンクによって定義されるフォーマット、前記少なくとも1つのサードパーティアプリケーションによって符号化および定義されるフォーマット、外部の正式標準、業界標準、または事実上の標準に基づくフォーマット、のうちの少なくとも1つである、請求項13に記載の方法。

技術分野

0001

本発明は、オンラインアプリケーションと、特に、そこに含まれるサードパーティアプリケーションと組み合わせての使用方法とに関する。

背景技術

0002

ウェブサイトおよびその他のオンラインアプリケーションを作成および編集する目的に使用することのできる数多くのウェブサイト構築システムや、その他の対話型アプリケーション構築ツールが市販されている。エンドユーザは、通常のパーソナルコンピュータスマートフォンタブレット、および他のデスクトップまたはモバイルデバイスなどの幅広プラットフォーム上のクライアントソフトウェアを使用して、このようなウェブサイトにアクセスすることができる。

0003

これらのウェブサイト構築システムは、さまざまな形態で提供され、例えば、インターネットに接続されている1つまたは複数のサーバ上でホストされ、HTTPハイパーテキスト転送プロトコル)などのインターネット通信プロトコルを使用してアクセスされる完全にオンラインのウェブサイト構築システムなどである。これらのウェブサイト構築システムの作成、編集、およびデプロイは、すべてサーバによる直接的なオンライン動作によって実行される。

0004

ウェブサイト構築システムは、部分的にオンラインとする、または完全にオンラインとすることもできる。部分的にオンラインのシステムの場合、ウェブサイトの編集をユーザのマシン上でローカルに実行し、後から中央の1つまたは複数のサーバにアップロードしてデプロイする。ウェブサイトがアップロードされると、これらのウェブサイト構築システムは、完全にオンラインのウェブサイト構築システムと同じように機能する。

0005

ウェブサイト構築システムは、システム内のデータおよび要素を体系化する目的で、内部のデータアーキテクチャを有する。このアーキテクチャは、ユーザから見える対象のサイト外観とは異なることがあり、さらに、一般的なHTML(ハイパーテキストマークアップ言語ページブラウザに送られる方式とも異なることがある。例えば、内部のデータアーキテクチャは、ページ上の各要素の追加のプロパティ作成者作成日時、アクセス許可テンプレートへのリンクなど)を含むことができ、これらの追加のプロパティは、ウェブサイト構築システム内でサイトを編集および維持管理するうえで欠かせないものであるが、外部のエンドユーザ(場合によっては編集を行う一部のユーザ)には見えない。ウェブサイト構築システムに基づくサイトの一般的なアーキテクチャは、コンポーネント(例えば、形状コンポーネント、写真コンポーネント、テキストコンポーネントのほか、ミニページを含むシングルページコンテナおよびマルチページコンテナなど)を含むページから構成することができる。

0006

コンポーネントは、内部コンテンツを持たない星形などのコンテンツレスとすることができ(ただし色、大きさ、位置、およびその他の属性は有する)、あるいは、テキストパラグラフコンポーネントなど内部コンテンツを有することができ、このようなコンポーネントの内部コンテンツには、表示されるテキストに加えて、フォント書式レイアウトの情報が含まれる。当然ながら、このコンテンツは、テキストパラグラフコンポーネントごとに異なりうる。

0007

このようなウェブサイト構築システムを使用するデザイナーは、何もない状態から新しいサイトをデザインする(空白画面から開始する)、または、デザイナー自身、システムクリエーター、またはデザイナーのコミュニティによって作成された事前定義されたアプリケーションテンプレートを利用することができる。ウェブサイト構築システムは、単なるコンポーネントの集合であるテンプレート、完全なページ(またはミニページ)または一連のページであるテンプレート、および完全なウェブサイトであるテンプレートをサポートすることができる。

0008

アプリケーションのテンプレートが提供されるときには、デザイナーは、それを自由にカスタマイズすることができ、テンプレートのすべての要素の追加、削除、または修正を行って、デザイナー自身のテンプレートのバージョンを作成する。このようなカスタマイズは、テンプレートの修正されたバージョン(テンプレートとは異なる個別のバージョン)を作成することによって実施することができる。あるいは、ウェブサイト構築システムが、継承メカニズム(inheritance-type mechanism)を通じてカスタマイズを適用することができ、継承型メカニズムは、元のテンプレートへのリンクを維持し、したがってテンプレートに対して後から行われる変更が反映される。

0009

さらに、ウェブサイト構築システムは、サードパーティアプリケーションおよびその中に埋め込まれているコンポーネントを使用して、拡張することができる。このようなサードパーティアプリケーションは、ウェブサイト構築システムのデザイン環境に含まれていることがあり、または、さまざまな配布機構を通じて、例えばウェブサイト構築システムに組み込まれているアプリケーションストア(AppStore)から、またはウェブサイト構築システム(WBS)のベンダーまたは別の組織によって運営されているウェブベースまたは独立したアプリケーションリポジトリ(またはAppStore)から、個別に購入する(または他の方法で取得する)ことができる。さらに、サードパーティアプリケーションは、サードパーティアプリケーションのベンダーから(AppStoreを通じて、または通じずに)直接取得することもでき、この場合、ベンダーは、実際のインストールモジュールを提供する、またはアクティベーションコードまたはアクセスコードのみを提供する。

0010

サードパーティアプリケーションには、フロントエンド(表示)要素とバックオフィス要素の任意の組合せ(これらはウェブサイトには表示されない)が含まれることがある。サードパーティアプリケーションは、全体がバックオフィスである(すなわち表示要素を含まない)、または全体がフロントエンドである(すなわちウェブサイトで使用されるときのみ起動される)、または2つの組合せであることがある。

0011

サードパーティアプリケーションのバックオフィス要素には、データベース通信オプションや外部更新オプションなどの機能が含まれることがある。例えば、ブログのサードパーティアプリケーションには、人以外の発信元(例えば、大手ニュースサービスからのRSSニュース配信)からと、ウェブサイトに関係ない人の発信元(例えば、ブログエントリ投稿できるスタンドアロンのスマートフォンアプリケーション)から、更新を受信することのできるバックオフィス要素が含まれることがある。

0012

サードパーティアプリケーションの視覚要素を、それらが含められるウェブサイトに組み込む処理は、さまざまな方法で行うことができる。ウィジェットタイプのサードパーティアプリケーションは、ウェブサイトのページの内側にコンポーネントとして埋め込むことができるのに対して、セクションタイプのサードパーティアプリケーションは、ウェブサイトに1つまたは複数の追加のページとして加えることができる。

0013

さらには、サードパーティアプリケーション(ウィジェットタイプおよびセクションタイプの両方)は、シングルページのサードパーティアプリケーション、またはマルチページのサードパーティアプリケーション(内部URL構造として表される内部ミニページを有する)とすることができる。システムは、4つの可能な組合せ(ウィジェットまたはセクション、シングルページまたはマルチページ)のうちの1つまたは複数、あるいはすべてを実装することができる。

0014

マルチページのサードパーティアプリケーションは、通常ではデフォルトの「ランディング」ミニページを提供し、このミニページは、オープニングページ、特定の内部のミニページ(例えばブログのサードパーティアプリケーションにおける最新のブログエントリ)、ミニページ選択画面、またはその他のミニページである。

0015

ウェブサイト構築システムに基づくウェブサイトにおけるサードパーティアプリケーションの使用は、サードパーティアプリケーションのインスタンスを通じて行われる。ウェブサイト構築システムは、複数のレベルにおけるサードパーティアプリケーションの複数の使用法をサポートすることができ、例えば、ウェブサイト全体においてサードパーティアプリケーションの1つのインスタンスを許可する、ウェブサイトの内側で複数のサードパーティアプリケーションのインスタンスを作成することを許可する(ただし1つのサードパーティアプリケーションあたり1つのインスタンスのみ)、複数のサードパーティアプリケーションの複数のインスタンスを作成することを許可する(ただし1ページあたり1つのインスタンスのみ)が挙げられる。さらに、コンポーネント型サードパーティアプリケーション(セクションタイプのサードパーティアプリケーションではない)のページあたり複数のインスタンスを許可することもでき、さらに、サードパーティアプリケーションのインスタンスの数、多重度、または位置の制限なしに、複数のサードパーティアプリケーションの複数のインスタンスを作成することを許可することもできる。

0016

サードパーティアプリケーションのインスタンスは、インスタンスに固有なコンテンツを有することができる。例えば、オンラインショップ(e-Shop)のサードパーティアプリケーションは、特定のインスタンスに関連付けられる製品データベースを有することができ、この製品データベースは、(同じサイトまたは別のサイト内の)同じオンラインショップのサードパーティアプリケーションの別のインスタンスに関連付けられる製品データベースとは異なる。

0017

説明を目的として、サードパーティアプリケーションおよびそのミニページや要素を含むウェブサイトページ(またはミニページ)(すなわち「ラッパーページ」)は、含有ウェブページ(containing web page)と称するものとし、ウェブサイト全体にメインサイトとして既知であるものとする。ユーザに示される統合されたページ(メインページおよび埋め込まれたTPAミニページ/コンポーネントを含む)を、合成ページと称する。セクションタイプのサードパーティアプリケーションの場合、サードパーティアプリケーションを含む「仮想ページ」が、含有ウェブページの役割を果たす。

0018

サードパーティアプリケーションは、通常では、ウェブサイト構築システムのベンダーのサーバ上、サードパーティアプリケーションのベンダーのサーバ上、外部(フォースパーティ)のサーバ上、またはこれらのサーバの任意の組合せ上にデプロイされる。サードパーティアプリケーションは、エンドユーザのマシン上で実際に実行される要素(例えば、静的にインストールされるブラウザエクステンションや、図1に示したようにウェブサイト構築システムのクライアント側コードの内側で動的に実行されるJavaScript(登録商標)コンポーネントなど)も含むことができる。以下ではこの図1を参照する。

0019

ウェブサイト構築システムのベンダーのサーバは、エンドユーザのための連絡口として機能し、要求に応答する(場合によってはサードパーティアプリケーションのベンダーのサーバに接続して必要な情報を受け取る)。ウェブサイト構築システムは、例えばビデオストリーミングが要求されるとき、クライアントのコンピュータとサードパーティアプリケーションのベンダーのサーバとの間に(必要に応じて)直接的な接続を形成することができる。

0020

含まれているサードパーティアプリケーションのインスタンスは、通常のコンポーネントが内部コンテンツを含むのと同様に、自身の内部コンテンツを有することができる。図2を参照し、この図に示したように、サードパーティアプリケーションは、ウェブサイト構築システムと、ウェブサイト構築システムを使用して生成されたウェブサイトとは無関係に、このコンテンツを管理することができる。1つまたは複数のサードパーティアプリケーションの複数のインスタンスは、共有コンテンツを有することができ、例えば、2つの個別のウェブサイトページにおける2つのオンラインショップのインスタンスが、同じ製品データベースを参照することができる。

0021

含まれているサードパーティアプリケーションからの出力は、例えば以下のようなさまざまな方法で、含有ウェブページに組み込むことができる。

0022

サーバ側の処理: (以下では図3を参照する。)図3に示したこの方法においては、サードパーティアプリケーション[a](デザイン要素および表示要素を含む)と、ユーザに固有なサードパーティアプリケーションのデータ[b]とが、サードパーティアプリケーションのベンダーのサーバ[d]上で実行されているサードパーティアプリケーションのサーバコード[c]によってマージされる。これらは通信媒体[e]を介してウェブサイト構築システムのサーバコード[f]に送られ、サーバコード[f]は、これらを含有ウェブページの情報[g]とマージした後、これらをユーザのクライアントステーション[h]に表示できるように送る。

0023

クライアント側の処理: (以下では図4を参照する。)図4に示したこの方法においては、サードパーティアプリケーション[a](デザイン要素および表示要素を含む)と、ユーザに固有なサードパーティアプリケーションのデータ[b]とが、サードパーティアプリケーションのベンダーのサーバ[d]上で実行されているサードパーティアプリケーションのサーバコード[c]によってマージされる。これらは通信媒体[e]を介してクライアント側の処理コンポーネント[h]に送られる。ウェブサイト構築システムのサーバコード[f]は、含有ウェブページの情報[g]を、このクライアント側の処理コンポーネント[h]に送る。クライアント側の処理コンポーネント[h]は、2つの情報源のマージを実行し、統合されたアプリケーションをブラウザ(または他のクライアントエージェント)[i]に提示する。

0024

iFrameのインクルージョン(inclusion): (以下では図5を参照する。)図5に示した方法においては、サードパーティアプリケーション[a](デザイン要素および表示要素を含む)と、ユーザに固有なサードパーティアプリケーションのデータ[b]とが、サードパーティアプリケーションのベンダーのサーバ[d]上で実行されているサードパーティアプリケーションのサーバコード[c]によってマージされる。これらは、ユーザエージェント(例えばウェブブラウザ)[i]の内側で実行されているブラウザベースのアプリケーション[h]に、通信媒体[e]を介して送られる。ウェブサイト構築システムのサーバコード[f]は、含有ウェブページの情報[g]を、このブラウザベースのアプリケーション[h]に送る。含有ウェブページは、サードパーティアプリケーションのサーバ[d]からのコンテンツを含める1つまたは複数のiframeディレクティブを含むウェブページとして作成される。追加の方法および代替方法も適用可能である。

先行技術

0025

米国特許出願公開第2013/0219263号明細書

課題を解決するための手段

0026

本発明の好ましい実施形態によると、クライアント/サーバシステムを介してウェブサイト上に実装可能なシステムであって、クライアント/サーバシステムが、本システムを定義する命令を処理する少なくとも1つのプロセッサを有する、システム、を提供する。本システムは、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の少なくとも1つのアクティビティメッセージを調整する少なくとも1つのハブであって、少なくとも1つのアクティビティメッセージが、標準化されたフォーマットを有する、少なくとも1つのハブ、を含む。さらに、本システムは、少なくとも1つのアクティビティメッセージをリスンし、これら少なくとも1つのメッセージから抽出されたデータを、識別されたコンタクトおよび匿名のコンタクトのうちの少なくとも一方に関連付けられるストリームに少なくとも加える、アクティビティコーディネータであって、識別されたコンタクトおよび匿名のコンタクトのうちの少なくとも一方が、ウェブサイトの利用者である、アクティビティコーディネータ、を含む。さらに、本システムは、コンタクト関連情報をストリームから取得および分析して、コンタクトの以前に保持された情報の質を高める、コンタクトコーディネータと、ウェブサイトおよびコンタクトによって使用できるように、アクティビティストリームおよびコンタクト関連情報を格納する少なくとも1つのデータベースと、を含む。

0027

さらに、本発明の好ましい実施形態によると、少なくとも1つのハブは、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の少なくとも1つのアクティビティメッセージをルーティングおよび追跡するルータ追跡器(router and tracker)と、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間のプライバシーポリシーを実施するプライバシーポリシーエンフォーサと、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の事前に指定される少なくとも1つのメッセージ変換/コンテンツ適合規則を適用する変換器適合器(translator and adapter)と、プライベートデータプロキシとプライベートデータ置換のうちの少なくとも一方を実施し、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の利用者許可フィールドの制限を実施する、プライベートデータプロキシ(private data proxy)と、少なくとも1つのアクティビティメッセージの署名を、少なくとも1つのサードパーティアプリケーションの入力鍵を使用して検証し、少なくとも1つのアクティビティメッセージに関連付けられる外部IDを内部ウェブサイトIDを使用して変換し、送出される少なくとも1つのアクティビティメッセージに、少なくとも1つのサードパーティアプリケーションの出力鍵を使用して署名する、検証器/署名器と、のうちの少なくとも1つ、を含む。

0028

さらに、本発明の好ましい実施形態によると、アクティビティコーディネータは、少なくとも1つのアクティビティメッセージに関連付けられるコンタクトを識別し、関連付けられるコンタクトが存在しない場合にデータのストリームを作成する、ストリーム作成器と、少なくとも1つのアクティビティメッセージからのデータを既存のストリームにマージし、アクティビティストリームのうちの少なくとも2つからのデータを1つのストリームにマージする、ストリームマージャと、アクティビティストリームからのアクティビティデータを少なくとも1つのデータベースに記録するログ作成器と、のうちの少なくとも1つ、を含む。

0029

さらに、本発明の好ましい実施形態によると、コンタクトコーディネータは、少なくとも1つのアクティビティメッセージ、ストリーム、別のコンタクト、外部ソースのうちの少なくとも1つから、コンタクト関連情報を抽出するデータ抽出器と、少なくとも2つのコンタクト情報レコードをマージし、抽出されたコンタクト関連情報を、事前に定義されるマージ規則に従って、既存のコンタクトの関連情報にマージする、データマージャであって、レコードが、同じ識別されたコンタクトとの関連性を有する、データマージャと、識別可能な新しいコンタクトおよび匿名のコンタクトの少なくとも一方を作成し、ウェブサイトのセッションの間、コンタクトのアクティビティを追跡する、コンタクトハンドラと、抽出されたコンタクト関連情報のプライバシー保護および許可を処理するデータ/許可ハンドラと、のうちの少なくとも1つ、を含む。

0030

さらに、本発明の好ましい実施形態によると、ルータ/追跡器は、少なくとも1つのサードパーティアプリケーションによって指定されるリスニングクエリ(listening query)を使用して少なくとも1つのアクティビティメッセージをルーティングすることをサポートする。

0031

さらに、本発明の好ましい実施形態によると、ストリームマージャは、データを、識別されたコンタクトに関連付けられるストリームにマージするアクティビティ−ストリームマージャと(activity-to-stream merger)、少なくとも2つの個別のストリームを1つのストリームにマージするストリーム−ストリームマージャ(stream-to-stream merger)と、を含む。

0032

さらに、本発明の好ましい実施形態によると、ストリーム−ストリームマージャは、少なくとも2つの個別のストリームを、識別された共通のコンタクトに従ってマージする水平ストリームマージャ(horizontal stream merger)と、匿名のコンタクトと、登録されたコンタクトとが、ログイン時または登録時に結びつけられたときに、匿名のコンタクトに対して作成されたストリームを、登録されたコンタクトに関連付けられるストリームにマージする、垂直ストリームマージャ(vertical stream merger)と、のうちの少なくとも一方、を含む。

0033

さらに、本発明の好ましい実施形態によると、データマージャは、コンタクト情報レコードのうちの少なくとも2つの中の同じプライマリIDフィールド値を特定する、コンタクト情報レコードのうちの少なくとも2つの中の、正規化されたときに同じであるプライマリIDフィールド値を特定する、クッキーを使用してサイト利用者を識別する、登録された利用者の場合にサイトログインを使用してサイト利用者を識別する、ソーシャルネットワークに関連付けられるアカウントを持つサイト利用者の場合にソーシャルログインを通じてサイト利用者を識別する、のうちの少なくとも1つを行うコンタクト識別器、を含む。さらに、データマージャは、言語解析構文解析、およびテキスト解析のうちの少なくとも1つと、外部データソースおよび外部サービスの参照・利用とを用いて、コンタクト情報を結合する結合器と、コンタクトレコード間の矛盾を、事前に定義される規則に従って解消する矛盾解消器と、リスト値フィールドを作成し、コンタクトレコード間の明確な優先順位を定義する、リスト値作成器と、共通のプライマリIDが検出されたことにより、互いに関連しない2人のコンタクトをマージする水平コンタクトマージャ(horizontal contact merger)と、匿名のコンタクトと、登録された利用者に関連付けられるコンタクトとが、ログイン時または登録時に結びつけられたときに、匿名のコンタクトを、登録された利用者に関連付けられるコンタクトにマージする、垂直コンタクトマージャ(vertical contact merger)と、を含む。

0034

さらに、本発明の好ましい実施形態によると、水平コンタクトマージャは、少なくとも2つのコンタクトレコードを個別のレコードとして維持し、これら2つのコンタクトレコードが同じコンタクトを表していることが示されるように2つのコンタクトレコードを互いにリンクする、仮想マージャ(virtual merger)、を含む。

0035

さらに、本発明の好ましい実施形態によると、垂直コンタクトマージャは、匿名のコンタクトと、登録された利用者に関連付けられるコンタクトとを個別のコンタクトとして維持し、匿名のコンタクトおよび登録された利用者に関連付けられるコンタクトが同じコンタクトを表していることが示されるように互いにリンクする、仮想マージャ、を含む。

0036

さらに、本発明の好ましい実施形態によると、利用者許可フィールドは、ウェブサイトもしくはウェブサイトのオーナーまたはその両方によって決定される。

0037

さらに、本発明の好ましい実施形態によると、標準化されたフォーマットは、事前に定義されるスキーマによって定義されるフォーマット、継承によって定義されるフォーマット、コールバックリンクによって定義されるフォーマット、少なくとも1つのサードパーティアプリケーションによって符号化および定義されるフォーマット、外部の正式標準業界標準、または事実上の標準に基づくフォーマット、のうちの少なくとも1つである。

0038

本発明の好ましい実施形態によると、クライアント/サーバシステムを介してウェブサイト上に実装可能な方法であって、クライアント/サーバシステムが、本方法を定義する命令を処理する少なくとも1つのプロセッサを有する、方法、を提供する。本方法は、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の少なくとも1つのアクティビティメッセージを調整するステップであって、少なくとも1つのアクティビティメッセージが、標準化されたフォーマットを有する、ステップと、少なくとも1つのアクティビティメッセージをリスンし、これら少なくとも1つのメッセージから抽出されたデータを、識別されたコンタクトおよび匿名のコンタクトのうちの少なくとも一方に関連付けられるストリームに少なくとも加えるステップであって、識別されたコンタクトおよび匿名のコンタクトのうちの少なくとも一方が、ウェブサイトの利用者である、ステップと、を含む。さらに、本方法は、コンタクト関連情報をストリームから取得および分析して、コンタクトの以前に保持された情報の質を高めるステップと、ウェブサイトおよびコンタクトによって使用できるように、アクティビティストリームおよびコンタクト関連情報を格納するステップと、を含む。

0039

さらに、本発明の好ましい実施形態によると、調整するステップは、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の少なくとも1つのアクティビティメッセージをルーティングおよび追跡するステップと、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間のプライバシーポリシーを実施するステップと、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の事前に指定される少なくとも1つのメッセージ変換/コンテンツ適合化規則を適用するステップと、プライベートデータプロキシとプライベートデータ置換のうちの少なくとも一方を実施し、ウェブサイトと少なくとも1つのサードパーティアプリケーションとの間の利用者許可フィールドの制限を実施するステップと、少なくとも1つのアクティビティメッセージの署名を、少なくとも1つのサードパーティアプリケーションの入力鍵を使用して検証し、少なくとも1つのアクティビティメッセージに関連付けられる外部IDを内部ウェブサイトIDを使用して変換し、送出される少なくとも1つのアクティビティメッセージに、少なくとも1つのサードパーティアプリケーションの出力鍵を使用して署名するステップと、のうちの少なくとも1つ、を含む。

0040

さらに、本発明の好ましい実施形態によると、リスンして少なくとも加えるステップは、少なくとも1つのアクティビティメッセージに関連付けられるコンタクトを識別し、関連付けられるコンタクトが存在しない場合にデータのストリームを作成するステップと、少なくとも1つのアクティビティメッセージからのデータを既存のストリームにマージし、アクティビティストリームのうちの少なくとも2つからのデータを1つのストリームにマージするステップと、アクティビティストリームからのアクティビティデータを少なくとも1つのデータベースに記録するステップと、のうちの少なくとも1つを含む。

0041

さらに、本発明の好ましい実施形態によると、取得および分析するステップは、少なくとも1つのアクティビティメッセージ、ストリーム、別のコンタクト、外部ソースのうちの少なくとも1つから、コンタクト関連情報を抽出するステップと、少なくとも2つのコンタクト情報レコードをマージし、抽出されたコンタクト関連情報を、事前に定義されるマージ規則に従って、既存のコンタクトの関連情報にマージするステップであって、レコードが、同じ識別されたコンタクトとの関連性を有する、ステップと、のうちの少なくとも1つを含む。さらに、取得および分析するステップは、識別可能な新しいコンタクトおよび匿名のコンタクトの少なくとも一方を作成し、ウェブサイトのセッションの間、コンタクトのアクティビティを追跡するステップと、抽出されたコンタクト関連情報のプライバシー保護および許可を処理するステップと、を含む。

0042

さらに、本発明の好ましい実施形態によると、ルーティングおよび追跡するステップは、少なくとも1つのサードパーティアプリケーションによって指定されるリスニングクエリを使用して少なくとも1つのアクティビティメッセージをルーティングすることをサポートする。

0043

さらに、本発明の好ましい実施形態によると、マージするステップは、データを、識別されたコンタクトに関連付けられるストリームにマージするステップと、少なくとも2つの個別のストリームを1つのストリームにマージするステップ、を含む。

0044

さらに、本発明の好ましい実施形態によると、データを識別されたコンタクトに関連付けられるストリームにマージするステップと、少なくとも2つの個別のストリームを1つのストリームにマージするステップは、少なくとも2つの個別のストリームを、識別された共通のコンタクトに従って水平にマージする(horizontally merging)ステップと、匿名のコンタクトと、登録されたコンタクトとが、ログイン時または登録時に結びつけられたときに、匿名のコンタクトに対して作成されたストリームを、登録されたコンタクトに関連付けられるストリームに垂直にマージする(vertically merging)ステップと、のうちの少なくとも一方を含む。

0045

さらに、本発明の好ましい実施形態によると、少なくとも2つのコンタクト情報レコードをマージするステップは、コンタクト情報レコードのうちの少なくとも2つの中の同じプライマリIDフィールド値を特定するステップ、コンタクト情報レコードのうちの少なくとも2つの中の、正規化されたときに同じであるプライマリIDフィールド値を特定するステップ、クッキーを使用してサイト利用者を識別するステップ、登録された利用者の場合にサイトログインを使用してサイト利用者を識別するステップ、ソーシャルネットワークに関連付けられるアカウントを持つサイト利用者の場合にソーシャルログインを通じてサイト利用者を識別するステップ、のうちの少なくとも1つを含む。さらに、少なくとも2つのコンタクト情報レコードをマージするステップは、言語解析、構文解析、およびテキスト解析のうちの少なくとも1つと、外部のデータソースおよび外部サービスの参照・利用とを用いて、コンタクト情報を結合するステップと、コンタクトレコード間の矛盾を、事前に定義される規則に従って解消するステップと、リスト値フィールドを作成し、コンタクトレコード間の明確な優先順位を定義するステップと、共通のプライマリIDが検出されたことにより、互いに関連しない2人のコンタクトを水平にマージするステップと、匿名のコンタクトと、登録された利用者に関連付けられるコンタクトとが、ログイン時または登録時に結びつけられたときに、匿名のコンタクトを、登録された利用者に関連付けられるコンタクトに垂直にマージするステップと、を含む。

0046

さらに、本発明の好ましい実施形態によると、水平にマージするステップは、少なくとも2つのコンタクトレコードを個別のレコードとして維持し、これら2つのコンタクトレコードが同じコンタクトを表していることが示されるように2つのコンタクトレコードを互いにリンクして仮想的にマージする(virtual merging)ステップ、を含む。

0047

さらに、本発明の好ましい実施形態によると、垂直にマージするステップは、匿名のコンタクトと、登録された利用者に関連付けられるコンタクトとを個別のコンタクトとして維持し、匿名のコンタクトおよび登録された利用者に関連付けられるコンタクトが同じコンタクトを表していることが示されるようにこれらを互いにリンクして仮想的にマージするステップ、を含む。

0048

さらに、本発明の好ましい実施形態によると、利用者許可フィールドは、ウェブサイトもしくはウェブサイトのオーナーまたはその両方によって決定される。

0049

さらに、本発明の好ましい実施形態によると、標準化されたフォーマットは、事前に定義されるスキーマによって定義されるフォーマット、継承によって定義されるフォーマット、コールバックリンクによって定義されるフォーマット、少なくとも1つのサードパーティアプリケーションによって符号化および定義されるフォーマット、外部の正式標準、業界標準、または事実上の標準に基づくフォーマット、のうちの少なくとも1つである。

0050

本発明とみなされる主題は、本明細書の結論部分に具体的に指摘して明確に記載してある。しかしながら、添付の図面を参照しながら以下の詳細な説明を読み進めることによって、本発明について、その編成および動作方法の両方に関してと、本発明の目的、特徴、および利点とを、深く理解することができる。

図面の簡単な説明

0051

ウェブサイト構築システムとサードパーティアプリケーションとの間のデプロイ構成の概略図
サードパーティアプリケーションの内部コンテンツ管理の概略図
サーバ側の処理によって含有ウェブページにサードパーティアプリケーションを含めるときの概略図
クライアント側の処理によって含有ウェブページにサードパーティアプリケーションを含めるときの概略図
iframeのインクルージョンによって含有ウェブページにサードパーティアプリケーションを含めるときの概略図
ページレイアウトの変更時における既存の非最適なサードパーティアプリケーションの表示の概略図
本発明に従って構築されて動作する、ウェブサイト構築システムと1つまたは複数のサードパーティアプリケーションとを統合するシステムの概略図
本発明に従って構築されて動作する、ウェブサイト構築システムと1つまたは複数のサードパーティアプリケーションとを統合するシステムの概略図
コンポーネントモデルと比較してのドキュメントオブジェクトモデルの概略図
ブログのマルチパートサードパーティアプリケーションの例の概略図
販売用のモジュール式サードパーティアプリケーションの例の概略図
本発明に従って構築されて動作する通信ハブの異なる実装の概略図
本発明に従って構築されて動作する通信ハブの異なる実装の概略図
本発明に従って構築されて動作する図11Aおよび図11Bの通信ハブの要素の概略図
本発明に従って構築されて動作する図11Aおよび図11Bの通信ハブによって実行される通信変換処理の概略図
本発明に従って構築されて動作する、関連付けられるテンプレートを有するサードパーティアプリケーションを扱う含有ウェブページの概略図
本発明に従って構築されて動作する、関連付けられるテンプレートを有するサードパーティアプリケーションをミニページの内側に含む含有ウェブページの概略図
ウェブサイト構築システムと1つまたは複数の埋め込まれたサードパーティアプリケーションとの間で交換されるさまざまなメッセージからのデータを調整および収集する、本発明に従って構築されて動作するシステムの概略図
本発明に従って構築されて動作する、図15のシステムの要素の概略図
本発明に従って構築されて動作する、図15のシステムの要素の概略図
本発明に従って構築されて動作する、図15のシステムの要素の概略図
本発明に従って構築されて動作する、図15のシステムの要素の概略図
本発明に従って構築されて動作する、コンタクトに関連付けられるアクティビティストリームを表示するグラフィカルユーザインタフェースの一例の概略図
クライアント側およびサーバ側のサードパーティアプリケーションのアクティビティメッセージのメッセージパッシングの概略図
利用者のウェブサイトセッション時におけるログイン/ログアウト処理の概略図

実施例

0052

図を簡潔かつ明瞭にするため、図面に示した要素は必ずしも正しい縮尺で描かれていないことを理解されたい。例えば、明瞭さのため、いくつかの要素の寸法が別の要素よりも誇張されていることがある。さらに、適切と考えられる場合、複数の図面において対応する要素または類似する要素を同じ参照数字によって表してある。

0053

以下の詳細な説明においては、本発明を完全に理解できるようにする目的で、膨大な具体的な細部を記載してある。しかしながら、これらの具体的な細部なしでも本発明を実施できることが、当業者には理解されるであろう。さらには、本発明が曖昧になることがないように、周知の方法、手順、およびコンポーネントについては、詳細には説明していない。

0054

出願人は、サードパーティアプリケーションが一般にウェブサイト構築システムに統合される現在の方法と、統合されたサードパーティアプリケーションとウェブサイト構築システムとが対話する現在の方法には、多くの制限が存在することを認識した。

0055

このような制限としては、サードパーティアプリケーションの表示が、含有ウェブページの内側の1つの長方形領域(この領域はiframeに含まれる)に制限されることが挙げられる。さらなる制限として、サードパーティアプリケーションのウィンドウのサイズおよび位置と、サードパーティアプリケーションの実際の表示ウィンドウの外側である視覚要素(例えば、サードパーティアプリケーションのウィンドウの周囲の専用の表示フレーム)を、サードパーティアプリケーションが制御する能力が挙げられる。

0056

サードパーティアプリケーションは、自身の表示スタイル配色、フォント、文字サイズなど)を有しうる。これらのスタイルは、いくつかの含有ウェブページには適合するが、別の含有ウェブページでは視覚的に問題があったり調和しないことがある。

0057

別の制限は、含有サイトの観点からのサードパーティアプリケーションの表示に柔軟性がないことである。(例えば、画面サイズの異なるプラットフォームにデプロイするため、あるいは動的レイアウトイベントに起因して)サイトを視覚的に修正しなければならない場合、サードパーティアプリケーションに割り当てられているウィンドウのサイズを変更するように含有ウェブページに要求されることがある。このような場合、サードパーティアプリケーションの表示が途中で切り取られ、サードパーティアプリケーションにおけるさまざまなサブ領域に達するためにはスクロールバーを介してスクロールすることが要求される。図6を参照し、この図は、含有ウェブページ[a]をリサイズしたときに起こりうる状況の例を示している。オンラインショップのサードパーティアプリケーション[b]に割り当てられる領域が減少し、「購入」ボタン[c]を、ショッピングカート[d]の内容と一緒に表示させることができないため、購入を完了するためには何回かのスクロール操作が要求され、実際に購入が完了される可能性が大幅に減少する。

0058

サードパーティアプリケーションは含有ウェブページ内の別のコンポーネントと対話することができず、複雑な機能を達成するためにはこのような対話が必要となりうることを理解されたい。特に、サードパーティアプリケーションは、含有ウェブページ内のコンポーネントのタイプおよびコンテンツに従って異なる動作を実行することはできない。この1つの例は、オンライン料理教室ストリーミングするウェブサイトである。利用者は、動画を観ているバックグラウンドにおいて、画面の別の領域に、最新のニュースおよび天気情報(例えばCNNからのライブストリームなど)を配信するための専用の小さい画面領域を表示させたいことがある。利用者は、自分が住む地域の天気予報が始まったときに、学習セッションを自動的に一時停止させることを望むことがある。

0059

さらには、特に、複数のサードパーティアプリケーションが異なるベンダーによって提供されている場合、これらのサードパーティアプリケーションが互いに協力するための明確かつ標準的な方法は存在しない。したがって、デザイナーには、異なるベンダーからの複数のサードパーティアプリケーションを組み合わせる明確な方法がない。この1つの例は、サードパーティ発注システムモジュールと、出荷システムの異なるモジュールとを実行する電子商取引のウェブサイトの場合である。出荷スケジュールなどに従って商品発注することが望ましいことがある。

0060

出願人は、ウェブサイト構築システムと、その中に含まれるサードパーティアプリケーションインスタンスとの間と、同じ含有ページ内に実装することのできる複数の異なるサードパーティアプリケーションインスタンスの間の、構造化された双方向通信チャネルを使用することによって、この統合を達成できることを認識した。これらのチャネルは、レイアウト、スタイル、および追加の情報に関する情報を転送することもできる。

0061

以下の説明は、iframeインクルージョン法に焦点を当てており、この方法は、最近のブラウザに内蔵されたり統合されたりしており、専用の統合コードを作成する必要がないため、好ましい方法であることを理解されたい。さらに、iframeインクルージョン法では、ブラウザによってサポートされるカプセル化およびサンドボックス機能が提供されるほか、悪意のあるサードパーティアプリケーションによって採用されうるクロスサイトスクリプティング攻撃などのハッキング技術に対する本質的な保護も提供される。

0062

次に、図7Aおよび図7Bを参照し、これらの図は、本発明の実施形態による、ウェブサイト構築システムと1つまたは複数のサードパーティアプリケーションとを統合するシステム100を示している。図7Aは、デザイン段階におけるシステム100を示しており、図7Bは、実行時におけるシステム100を示している。図7Aにおいて理解できるように、システム100は、クライアント10と、ウェブサイト構築システム(WBS)サーバ20にインストールされているウェブサイト構築システム30と、1つまたは複数のサードパーティアプリケーションサーバ50にインストールされている1つまたは複数のサードパーティアプリケーション40とを備えている。ウェブサイト構築システム30は、WBSコーディネータ21と、アプリケーションリポジトリ22と、WBS側TPAプロパティシート23と、サードパーティアプリケーション(TPA)コーディネータ24と、AppStore 25(サーチャー26を含むことができる)とを備えている。クライアント10は、ページコンポーザ12と、TPAプロパティシート23のクライアント側表示とを備えている。いくつかの実施形態においては、クライアント10は、AppStore 25のクライアント側表示をさらに備えていることができる。ページコンポーザ12は、後からさらに詳しく説明するリンカ13を備えている。サードパーティサーバ50は、サードパーティアプリケーション40と、外部TPAコーディネータ51と、TPAデータベース52とを備えており、TPAデータベース52は、サードパーティアプリケーション40のコンポーネントやテンプレートなどを使用できるように格納している。なお、システム100は、サードパーティアプリケーション40の複数のベンダーに属する複数のサードパーティサーバ50を含むことができる。

0063

TPAプロパティシート23は、サードパーティアプリケーション40のインスタンスの属性が指定されるときに呼び出すことができることを理解されたい。さらには、呼び出されたとき、TPAプロパティシート23は、クライアント10においてはTPAプロパティシート23のクライアント側表示として表示されることを理解されたい。さらには、オフラインの実施形態は、インストールされているクライアントソフトウェアの一部として自身のプロパティシートを有することができ、したがって、アプリケーションTPAプロパティシート23やリポジトリは存在しないことを理解されたい。

0064

クライアント10の前に座っているデザイナーまたはエンドユーザ5は、ページコンポーザ12を使用してウェブサイトページおよび対話(インタラクション)(ページ間対話およびページ内対話)を作成することで、自身のウェブサイト(または他のオンラインアプリケーション)を作成することができることを理解されたい。デザイナー5は、アプリケーションリポジトリ22に格納されている、ウェブサイト構築システム30の一部であるコンポーネントやテンプレートなどを、WBSコーディネータ21を介して選択することができる。さらに、デザイナー5は、サードパーティアプリケーション40からのサードパーティアプリケーション40インスタンスを埋め込む含有ウェブページ203を作成することができ、サードパーティアプリケーション40は、あらかじめ購入することができ、そのテンプレートやコンポーネントなどをアプリケーションリポジトリ22に格納しておくことができる。代替実施形態においては、購入したテンプレートやコンポーネントなどは、TPAデータベース52に格納しておき、外部TPAコーディネータ51を介してアクセスすることができる。さらに別の実施形態においては、サードパーティアプリケーション40のテンプレートやコンポーネントなどを、必要に応じてAppStore 25を介して購入することができる。プロパティシート23は、デザイナー5によって指定することができ、後からさらに詳しく説明するように、購入したサードパーティアプリケーション40のインスタンスに関する情報(許可、インストールガイド支払いなど)を保持することができる。さらに、デザイナー5は、リンカ23を使用して、含まれる複数のサードパーティアプリケーション40の間の通信チャネル(必要な場合)を手操作で指定することができる。さらに、デザイナー5は、リンカ23を使用することで、構築している含有ウェブページと、そこに含まれるサードパーティアプリケーション40のインスタンスとの間の固有の通信接続および規則を指定できることを理解されたい(上述したように動画やCNNニュースレポートが同時に表示されるなど)。リンカ23によって作成されたリンクは、ウェブサイトが存続している限り修正できることを理解されたい。

0065

デザイナー5は、サードパーティアプリケーション40のベンダーまたは外部業者によって運営されている外部のAppStoreなど、AppStore 25の外部のチャネルを通じて、サードパーティアプリケーション40を取得することができることを理解されたい。このような場合、ウェブサイト構築システム30は、デザイナー5によってウェブサイト構築システム30を通じて作成されたウェブサイトにそのサードパーティアプリケーション40を最初にインストールするときに、サードパーティアプリケーション40およびその構成データ(configuration data)を登録することができる。

0066

必要な場合にリンカ23が通信チャネルを確立できるようにするためには、サードパーティアプリケーション40は、(自身が通信しようとする)含有ウェブページ203内のコンポーネント(別のサードパーティアプリケーション40のインスタンスを含む)を正しく認識および識別できる必要があることを理解されたい。関連付けられるテンプレートに基づくコンポーネント(後からさらに詳しく説明する)の場合、この識別は、サードパーティアプリケーション40のベンダーによってあらかじめ実行される。関連付けられるテンプレート内のコンポーネントには、固有の参照IDを与えることができ、サードパーティアプリケーション40は、これらのコンポーネントと通信するときに、これらのIDを使用することができる。

0067

さらに、(後からさらに詳しく説明する)マルチパートサードパーティアプリケーション40(すなわち複数のiframeにわたり分散する1つのサードパーティアプリケーション40)の場合、複数のパートは、互いに通信する方法を自動的に認識することができることを理解されたい。

0068

関連付けられるテンプレートに含まれていない、含有ウェブサイトページのコンポーネント(後からさらに詳しく説明する)については、サードパーティアプリケーション40は、自身が機能するために存在しているべき要求される(必須またはオプションの)含有ウェブページ203のコンポーネントのリストを含むことができる。このリストは、プロパティシート23の中に格納することができ、一意のIDと、説明と、コンポーネントの詳細(例えば、テキストコンポーネントでなければならない、ブログの応答(talkback)ラベルとして使用される)とを含むことができる。このリストは、AppStore 25へのサードパーティアプリケーション40のエントリに列挙することができ、デザイナー5は、サードパーティアプリケーション40の要件を満たす含有ウェブページ203の中のコンポーネント(フィールド)を、リンカ23を使用して指定することができる。ウェブサイト構築システム30は、サードパーティアプリケーション40のインスタンスが作成されたときに、含有ウェブページ203の不足しているコンポーネントを動的に作成することができ、デザイナー5は、後からこれらのコンポーネントを移動する、リサイズする、および完全に指定することができることを理解されたい。

0069

これに代えて、ウェブサイト構築システム30は、含有ウェブページ203のコンポーネントモデル全体または一部を、含有ウェブページ203に含まれるサードパーティアプリケーション40に公開することができる。この場合のコンポーネントモデルは、含有ウェブページ203のコンポーネントモデルであり、ドキュメントオブジェクトモデル(DOM)ではないことを理解されたい。含有ウェブページ203のドキュメントオブジェクトモデル(DOM)は、コンポーネントモデルよりもずっと複雑かつ詳細なモデルであることがあり、なぜなら実際の含有ウェブページ203には、ウェブサイト構築システム30のインフラストラクチャの一部である、または含有ウェブページ203のコンポーネントをサポートする、膨大なHTML要素非表示要素および可視要素の両方)が含まれうるためである。したがって、コンポーネントモデルはずっと単純である。

0070

次に、図8を参照し、図8は、複数のHTMLコンストラクト(一部を囲むdivタグ[b]、内部divタグ[c]、フレーム「ミニウィジェット」[d1]..[d5]など)を使用してテキストコンポーネント[a]を実装する方法を示している。含有ウェブページ203のDOMモデル[e]は、これらのサブ要素それぞれに対する個別のDOMツリーノードを含むことができる。コンポーネントモデル[f]はずっと単純にすることができ、1つのコンポーネントノード[g]のみを含む。

0071

システム100は、選択的なコンポーネントの公開をサポートすることもでき、デザイナー5は、どのコンポーネントをサードパーティアプリケーション40に公開するべきかをリンカ23を介して指定することができ、これらのコンポーネント(場合によってはこれらのコンポーネントに通じる「含有経路(containment path)」を含む)のみを、サードパーティアプリケーション40から可視である単純化されたコンポーネントモデルに含めることができることを理解されたい。この指定は、含まれているコンポーネントを、それらのタイプや、ウェブサイト構築システム30の他の属性に従って、明示的にマークすることによって実行することができる。これにより、サードパーティアプリケーション40は、含有ウェブページ203のコンポーネントモデルをたどって、要求されるコンポーネントを特定することができる。

0072

さらに、含有ウェブページ203とサードパーティアプリケーション40のインスタンスとの間のリンク(例えばブロードキャストリンク)を自動的に作成することもでき、ブロードキャストリンクでは、サードパーティアプリケーション40は、実行時に通信を送って特定のイベントを記録することができることを理解されたい。この通信は、オプションまたは必須とすることができる(すなわちサードパーティアプリケーション40は、このようなメッセージを受信するためにリンクされている対応するサードパーティアプリケーション40が存在しない限り、機能しない、またはインストールしない)。例えば、サードパーティアプリケーション40は、自身が実行する動作・機能に関する情報パケットブロードキャストすることができ、インストールされているロギングのサードパーティアプリケーション40は、これらの情報パケットを受信することができる。

0073

このようにして設定が完了した新たに作成されたページは、後からさらに詳しく説明するように、実行時に呼び出すことができるように、(WBSコーディネータ21を介して)アプリケーションリポジトリ22に格納しておくことができる。

0074

次に、図7Bを参照する。この実施形態においては、要素は、クライアント10の要素を除いて、図7Aにおける要素と同じである。実行時、クライアント10は、含有ウェブページ203を表示するためのビューア201を備えている。ビューア201は、それぞれがサードパーティアプリケーション40の異なるインスタンス(1つまたは複数のサードパーティアプリケーション40から派生するインスタンス)を表示させるための複数のビューポート202を備えていることができることを理解されたい。さらに、クライアント10は通信ハブ205を備えており、通信ハブ205は、通信を促進するものであり、含有ウェブページ203と、含有ウェブページ203がホストしているサードパーティアプリケーション40との間のバックチャネルと、ホストされている複数のサードパーティアプリケーション40の間で要求される通信とを、関連する含有ウェブページ203に接続することなく、提供する。ハブ205の機能については、後からさらに詳しく説明する。

0075

ハブ205はクライアント10に実装することができ、なぜなら、含有ウェブページ203とサードパーティアプリケーション40のインクルージョンの両方が、可視のウェブサイトの対話部分であり、これらの通信を、クライアントとサーバの間の往復によって遅延させるべきではないためであることを理解されたい。代替実施形態においては、サードパーティアプリケーションサーバ50が大量のデータを交換する必要があり、これらのデータをクライアント10を経由させないことが好ましい場合、ハブ205を、ウェブサイト構築システムのサーバ20に実装することができる。

0076

通信ハブ205は、ウェブサイト構築システム30と1つまたは複数のサードパーティアプリケーション40との間の通信と、複数のサードパーティアプリケーション40の間の通信のさまざまな組合せをサポートすることができることを理解されたい。例えば、ハブ205によって、サードパーティアプリケーション40が、メインサイト内の別のページに切り替えるようにウェブサイト構築システム30に要求することが可能になる。さらに、通信ハブ205によって、サードパーティアプリケーション40が、自身のウィンドウをリサイズする(場合によっては含有ページのレイアウトに影響しうる)ように要求することが可能になる。このリサイズは、後からさらに詳しく説明する動的レイアウト処理を通じて行うことができる。あるいは、(例えば)表示の変更に対応するためにはサードパーティアプリケーション40が別のバージョンに切り替えることが要求される場合、含有ウェブページ203は、この切り替えを要求することができる。この双方向通信は、サードパーティアプリケーション40のコンポーネントと、サードパーティアプリケーション40に関連するウェブサイト構築システム30の(追加の情報を表示する)コンポーネントとの間と、上述したようにマルチパートサードパーティアプリケーション40の要素とモジュール式サードパーティアプリケーションとの間に、確立することもできることを理解されたい。

0077

さらに、システム100は、オンラインおよびオフラインのウェブサイト構築システム30の両方を使用して実装することもでき、また、システム100は、ホスティング方法(例えば、クライアント側要素、ウェブサイト構築システム30のベンダーのサーバ、サードパーティアプリケーション40のベンダーのサーバ、他のフォースパーティのサーバなど)の任意の組合せを使用できることを理解されたい。上述したオフラインの実施形態の場合であっても、サーバはシステム100を実装することが要求されうることを理解されたい。

0078

さらに、システム100は、大きな組織におけるプライベートサイトホスティングシステムなど、(ウェブサイト構築システムのベンダーによって運営されていない)別のサーバセット上でホストすることもできる。

0079

さらに、システム100は、上述したサードパーティアプリケーション40からのインスタンスのインクルージョンオプションのすべてをサポートすることができる。しかしながら、システム100は、これらのオプションのサブセットのみをサポートすることもでき、あるいは、サードパーティアプリケーション40のインスタンスのインクルージョンオプションに制限を課すことができる。

0080

さらに、システム100は、マルチパートサードパーティアプリケーション40を実装することもできる。マルチパートサードパーティアプリケーション40は、それぞれが個別のiframeを使用して処理される複数の表示領域を含むことができる。これらの領域は、後からさらに詳しく説明するように、通信ハブ205を通じて(必要に応じて)協力することもできる。

0081

次に、図9を参照し、この図は、マルチパートサードパーティアプリケーション40の例を示している。図示したように、AppStore[b]から取得されたブログのサードパーティアプリケーション[a]が、含有ウェブページ203[c]に配置されている。ブログのサードパーティアプリケーション[a]は、3つの領域、すなわち、ブログエントリ領域[d]と、タグクラウド領域[e]と、ニュース更新領域[f]とを含む。マルチパートサードパーティアプリケーションは、自身の複数の領域をさまざまな方法で使用することができ、例えば、(上のブログの例におけるように)1つのアプリケーションの同時に存在する複数の部分として、あるいは、1つのアプリケーションのオプションとして存在する複数の部分(つねに表示される複数の領域と、要求されるときにのみ表示されるオプションの複数の領域とを含む)として、使用することができることを理解されたい。オプションの領域の表示は、サードパーティアプリケーション40によって、または(サードパーティアプリケーションを含めるときにそれをどのように構成するかを決定する)デザイナー5によって、制御することができる。さらに、表示は、構成領域や追加ダイアログ領域などのサポート機能領域として制御することもできる。代替として、(例えば、サードパーティアプリケーションのスモールバージョンおよびラージバージョンを有する、またはサードパーティアプリケーションのポートレートバージョンおよびランドスケープバージョンを有する)マルチバージョンのサードパーティアプリケーションの表示についても同様である。

0082

上述した機能は、サードパーティアプリケーション40の要素の表示にiframeを使用して実装することができ、したがって、iframeベースのアーキテクチャのカプセル化およびセキュリティの利点が得られることを理解されたい。

0083

さらに、マルチパートサードパーティアプリケーション40を実装するには、(それぞれのiframeの内側の)サードパーティアプリケーション40が、さまざまなiframeの表示(例えば、iframeの可視性、サイズ、位置)を制御できることが要求される。さらに、後からさらに詳しく説明するように、通信ハブ205によって、この表示を可能にできることを理解されたい。

0084

さらに、マルチパートサードパーティアプリケーション40が(視覚的に)複数の要素および領域からなるときでも、(例えばAppStore 25における)購入、インストール、設定などの点において、このアプリケーション40は依然として1つのサードパーティアプリケーション40とみなされることを理解されたい。

0085

既存のシステムにおいては、サードパーティアプリケーション40それぞれが個別のエンティティとみなされ、(同じベンダーからの、または提携しているベンダーからの)2つのサードパーティアプリケーション40の間の協力関係は、ケースバイケースでシステムごとに開発しなければならない。システム100は、個別に購入およびインストールすることのできる協力する複数のサブモジュールからなるモジュール式サードパーティアプリケーション40をサポートすることもできることを理解されたい。

0086

次に、図10を参照し、この図は、販売管理のモジュール式サードパーティアプリケーション[a]が、サブモジュールとして、顧客管理(CRM)モジュール[b]と、リードマネージメントモジュール[c]と、電子商取引モジュール[d]とを、どのように含むことができるかを示している。この1つのサードパーティアプリケーションのベンダーは、必要なサードパーティアプリケーションモジュールすべてを提供することができる。これに代えて、サードパーティアプリケーションのベンダーは、サードパーティアプリケーション40のモジュール(および機能)のサブセットを提供することができ、デザイナーは、補足的なサードパーティアプリケーションモジュールを、同じかまたは別のサードパーティアプリケーションベンダーから購入してインストールすることができる。マルチパートサードパーティアプリケーションは、1つのベンダーからの1つのサードパーティアプリケーションとして取得およびインストールされるのに対して(マルチパートサードパーティアプリケーションは複数の画面領域を占有するにすぎない)、モジュール式サードパーティアプリケーションは、個別に取得およびインストールすることのできる複数のモジュールを含み、場合によっては複数のサードパーティアプリケーションベンダーからのモジュールを含むことを理解されたい。複数のベンダーからの複数のサードパーティアプリケーションモジュールを統合できるようにするためには、サードパーティアプリケーションモジュールそれぞれが、自身が必要とするインタフェース/機能と、自身が提供するインタフェース/機能のリストを提供しなければならない。リストの提供は、例えば、ドットで区切られた階層的な名前表記法に基づくインタフェース名のリスト(例えば、My_CRM_TPA.NewClient.GetInfo)と、インタフェースパラメータの指定を使用することによって、行うことができる。

0087

サードパーティアプリケーション40のモジュールは、必須として要求されるインタフェース(すなわちそれがないとモジュールが機能しないインタフェース)、またはオプションとして要求されるインタフェース(すなわちそれがなくてもモジュールは機能するが提供される機能が制限されたり変化するインタフェース)を指定することができる。したがって、各インタフェースに提供されるパラメータは、一意のインタフェース名、インタフェースの説明(デザイナー5が(例えば)不足しているインタフェースによって扱われる機能を認識できるようにデザイナー5に示される)、必須/オプションのステータス、インタフェースパラメータのリストおよびタイプである。サードパーティアプリケーションモジュールそれぞれは、依然として個別のiframe(またはiframeのセット)に属すことを理解されたい。インタフェースの動作は、後からさらに詳しく説明する通信チャネルに基づく。

0088

サードパーティアプリケーション40のモジュールは、ウェブサイトのデザイン段階においてアセンブルすることができることを理解されたい。ウェブサイト構築システム30は、サードパーティアプリケーション40の追加モジュールが追加されるため、インタフェース参照(interface references)を解決することができ、この場合、サードパーティアプリケーション40の新しいモジュールが既存の必要なインタフェースを解決するが、場合によっては新しい(解決されていない)必要なインタフェースを追加する。

0089

さらに、デザイナー5は、必須(およびオプションの)インタフェースが依然として解決していない間に、完成したウェブサイトを編集して実行することができることを理解されたい。しかしながら、デザイナー5は、必須のインタフェースすべてが解決されるまでは、作成したウェブサイトを公開することはできず、解決していない必須のインタフェースを依然として有するサードパーティアプリケーションモジュールをハブ205が起動することを要求する機能を試みると、メッセージが表示される。

0090

さらに、AppStore 25は、要求されるサードパーティアプリケーションモジュールのインタフェースを解決するサードパーティアプリケーションモジュールを特定することを試みるサーチャー26を備えていることができることを理解されたい。サーチャー26は、特定のサードパーティアプリケーションモジュールまたはすべてのサードパーティアプリケーションモジュールを、解決されていないインタフェースに基づいて検索することができる。さらに、サーチャー26は、現時点で解決していないインタフェース、またはすでに解決したインタフェースに基づいて検索することができ、さらには、必須のインタフェース、オプションのインタフェース、または両方のタイプのインタフェースに基づいて検索することができる。さらに、サーチャー26を、特定のサードパーティアプリケーションの解決していないインタフェースを解決することと、特定のサードパーティアプリケーションベンダーを検索することに限定することができることを理解されたい。サーチャー26は、第1のレベルの検索(すなわち現時点で解決されていないインタフェースを満たすモジュール)、または複数レベルの検索(すなわち反復検索を実行し、前の検索によって見つかったサードパーティアプリケーションモジュールを考慮するときに加わる解決していないインタフェースを満たすモジュールも探す)のいずれかを実行することができる。

0091

システム100は、インタフェースの説明を使用して、いくつかの不足しているインタフェースを提供することの重要性に関する情報をデザイナー5に提供することができる。ハブ205は、依然として通信する必要のある非互換性のサードパーティアプリケーションの間のインタフェース変換を提供することができる。この変換は、ウェブサイト構築システム30の供給元または外部業者によって追加されるアダプタモジュールによって行うことができ、アダプタモジュールは、要求される指定のインタフェースを別のフォーマットに適合させる。

0092

さらに、システム100をオンラインアプリケーション編集システムに適用することができ、オンラインアプリケーション編集システムは、インターネット(または任意の別のネットワーク接続)と、ブラウザではないクライアント側ソフトウェアを使用して、作成されたオンラインアプリケーションを表示させる。このようなシステムでは、通常のウェブインフラストラクチャによって使用される特定の技術(例えば、IP通信、HTTP、HTMLなど)を使用する必要がない。

0093

この技術分野において公知である標準的なクロスドメイン通信方法を使用して、クロスドメイン通信を容易にすることができることを理解されたい。クロスドメイン通信方法としては以下が挙げられる。

0094

HTML5 PostMessage: HTML5の標準的な機能であり、この機能を使用することで、安全なクロスドメインメッセージングを提供することができる。HTML5 Windows.Postmessageを使用すると、たとえ異なるドメインに属していても、ウィンドウ、iframe、およびメインHTMLドキュメントの間で安全にメッセージを送ることができる。PostMessageでは、送信側iframeがメッセージの送信先のドメインを指定するためのツールと、受信側iframeがメッセージの送信元のドメインを確認するためのツールが提供される。

0095

メッセージのURLフラグメント識別子: この方法では、URLフラグメント識別子を使用して、1つのエンドポイントから別のエンドポイントにメッセージデータを送る。データをプレーンテキストに符号化し、ターゲットのエンドポイントドメインにおけるサービス、またはターゲットのエンドポイントiframeの内側の非表示iframeを呼び出すために使用されるURLに、(フラグメント識別子として)加える。フラグメント識別子を、ターゲットのサービスまたはiframeにおけるコードによって復号化する。

0096

専用の通信ウェブサービス:ウェブサイト構築システム30は、ウェブサイト構築システムのサーバ20上でホストされる専用ウェブを提供する。さまざまな通信エンドポイントがこのサーバに接続し、メッセージを送る、あるいは待機中のメッセージがないかチェックする。この方法は、pre−HTML5 Cometセットオブテクノロジ、HTML5ベースのWebSocket、または任意の他のキューイングポーリングサーバプッシュ、または類似する手法など、この技術分野において公知の方法によって行うことができる。

0097

HTML5のローカルストレージ: HTML5では、構造化されたローカルストレージ機能が提供され、この機能を使用することで、キューに入っているメッセージを格納することができる。しかしながら、ローカルストレージにアクセスできるのは、格納しているiframeと同じドメインに属するウェブコンテンツのみである。この技術分野において開発された解決策としては、Meebo XAuth製品(現在はGoogle社が所有)によって使用されている基礎技術などが挙げられ、この技術では、小型のサーバが、要求される中間iframeを作成するためのサポートを提供し、これにより、ドメインに固有なローカルストレージに、外部ドメインに属するiframeからアクセスすることができる。

0098

HTML5ローカルファイルアクセスAPI(アプリケーションプログラミングインタフェース): 上述したローカルストレージを使用する方法に似ており、HTML5のファイルアクセスAPI(File API、FileWriter API、FileReader API)を通じてアクセスされるユーザエージェントのローカルストレージ上のローカルファイルを使用して、クロスiframe通信チャネル(cross-iframe communication channel)を構築することができる。ただし、HTML5のファイルシステムアクセスAPIによって作成されるサンドボックス化されたローカルファイルシステムは、依然としてオリジン内からのみアクセス可能であり(origin-private)、したがって、同一オリジンという制限を克服するために中間iframe/サーバコンポーネントが要求される。

0099

専用のブラウザプラグイン:クロスiframeメッセージキューを管理するための、専用のブラウザ(または他のユーザエージェント)プラグインを作成することができる。このようなプラグインは、(すべてのレベルにおける)ウェブサイト構築システム30のユーザがインストールしなくてはならないが、すべてのiframeと、ウェブサイト構築システム30のメインページに、必要なサービスを提供する。

0100

通信ハブ205は、上述した転送方法のいずれかを使用するiframe間通信すべてにおいてブローカーとして機能することができることを理解されたい。さらに、ハブ205は、含有ウェブページ203の構造と、サードパーティアプリケーション40のベンダーによって提供されてプロパティシート23に格納されているサードパーティアプリケーション40の詳細情報を、完全に認識することができることを理解されたい。さらに、サードパーティアプリケーション40は、複数の異なるアプリケーションに含まれているときと、(上述したように)同じアプリケーション内に含められる複数の異なるインスタンスにおいて、異なるパラメータを有することができる。このようなパラメータとしては、(後からさらに詳しく説明する)スマートアドレッシング(smart addressing)に使用することのできる一意のインスタンス名が挙げられる。さらに、ハブ205は、プロパティシート23に格納されていない、サードパーティアプリケーション40の追加の詳細情報を認識することもできることを理解されたい。

0101

さらに、ハブ205は、スマートアドレッシングおよびスマート識別を容易にする、通信元を確認する、通信ポリシーを適用する、サードパーティアプリケーション40の非互換性の問題を解決する、さらにはサードパーティアプリケーション40からコンポーネントにリダイレクトすることができることを理解されたい。さらに、ハブ205は、後からさらに詳しく説明するように、含有ウェブページ203に行われた変更に基づいて、サードパーティアプリケーション40におけるレイアウトの動的な更新を可能にすることができる。

0102

次に、図11A図11B、および図11Cを参照する。図11Aおよび図11Bは、ハブ205の異なる実施形態を示しており、図11Cは、ハブ205のさまざまな要素の機能を示している。

0103

ハブ205は、スマート識別子/アドレッサ310、発信元確認器320、通信ポリシーエンフォーサ330、プロトコル変換器340、リダイレクタ350、動的レイアウト更新器360、構成マネージャ370、一般更新器380、およびホストされているAPI(アプリケーションプログラミングインタフェース)のラッパー390を備えていることができる。これらの要素の機能については、後から詳しく説明する。すべての機能を、すべてのクロスドメイン通信チャネル(例えば、サードパーティアプリケーション40からウェブサイト構築システム30へのチャネル、サードパーティアプリケーション40から別のサードパーティアプリケーション40へのチャネル)に適用することができることを理解されたい。

0104

次に、図11Aを参照し、この図は、中間iframe[a]を通じてのハブ205の一般的な実施形態を示しており、中間iframeは、内部通信API(アプリケーションプログラミングインタフェース)を使用してウェブサイト構築システム30と通信する。このようにすることで、(例えば)TPA(サードパーティアプリケーション)[d](通信APIモジュール[f]を使用する)からTPA[e](通信APIモジュール[g]を使用する)に送られるメッセージ[c]を、アプリケーションに固有な情報を適用する方法において、分析、確認、または修正することができる。

0105

次に、図11Bを参照し、この図は代替実施形態を示しており、この実施形態では、中間iframeを使用せずに、(サードパーティアプリケーション[c]に埋め込まれている)通信APIモジュール[a]と、(サードパーティアプリケーション[d]に埋め込まれている)通信APIモジュール[b]の一方または両方において、クロスドメイン通信を使用する。モジュール[a]およびモジュール[b]は、通信メッセージ[f]を扱うとき、ウェブサイト構築システム30と直接対話してアプリケーションに固有な情報を受信し、この情報を使用する。(図11Aに示した実施形態と比較したときの)この実施形態の欠点として、ウェブサイト構築システム30のレベルの相当な量の情報が、サードパーティアプリケーションに含まれているモジュールの内側で処理されることがあり、これらの情報が、悪意のあるサードパーティアプリケーションによってアクセスされる(場合によっては修正される)ことがある。

0106

上述したように、上に説明したすべてのクロス通信方法においては、iframeのアドレッシングは、iframeのオリジン(ソースドメインソースプロトコル、ソースポートなど)に基づき、すなわち、(受信側を指定するための)メッセージを送るときと、(受信側に提供される送信側の名前としての)メッセージを受信するときに、サードパーティアプリケーション40のダイレクトアドレッシングを使用する。さらに、メッセージを送るためには、送信側は、(JavaScriptのdocument.getElementById(”...”).contentWindowコールまたは任意の他のメソッドを使用して)ターゲットのiframeウィンドウを指定することが要求される。したがって、既存のシステムにおいては、サードパーティアプリケーション40それぞれが、自身が通信する先の別のサードパーティアプリケーション40の具体的な詳細情報すべて(ドメイン、プロトコル、ポート、iframe IDを含む)を含んでいなければならない。

0107

このタイプのダイレクトアドレッシングは、システム100の環境において扱いにくいことがあることを理解されたい。たとえデザイナー5が、提携していない複数のサードパーティアプリケーション40ベンダーからの複数のサードパーティアプリケーション40を統合しても、サードパーティアプリケーション40ベンダーによって供給されるサードパーティアプリケーション40が、最初は特定のドメインにおいてホストされるが、後から別のドメインまたはサブドメインに移動することがある。サードパーティアプリケーション40ベンダーは、特定のサードパーティアプリケーションと通信するために使用されるプロトコルまたはポートを変更することがある。デザイナー5には、サードパーティアプリケーション40を含む含有ウェブページ203のデザインを修正することが要求されうる。これらのすべては、運営中であり膨大な利用者によってアクセスされるウェブサイトにおいて使用されているサードパーティアプリケーション40において起こりうる。さらに、1つの含有ウェブページ203が、異なる機能を果たすことのできる、1つのサードパーティアプリケーション40の複数のインスタンスを含むことがある。例えば、製品サポートのウェブサイト内の1つのページに、チャットのためのサードパーティアプリケーション40の2つのインスタンス(1つは利用者同士のチャットおよびフォーラムのためのインスタンス、もう1つは、連絡可能なときにベンダーのサポート担当者相談するために使用されるインスタンス)が含まれることがある。

0108

アドレッサ/識別子310は、含有ウェブページ203の構造と、(サードパーティアプリケーション40のベンダーによってウェブサイト構築システム30に提供される)サードパーティアプリケーション40の詳細情報とを完全に認識していることができることを理解されたい。アドレッサ/識別子310は、送信元サードパーティアプリケーション40または送信先サードパーティアプリケーション40のアドレッシングを、(AppStore 25に登録されている)サードパーティアプリケーション40の一意の名前と、含有ウェブページ203におけるサードパーティアプリケーション40の各インスタンスに加えられ、したがって同じサードパーティアプリケーション40の複数のインスタンスのアドレッシングを可能にする、サードパーティアプリケーション40のインスタンスの記述ID(descriptive ID)と、要求されるサードパーティアプリケーションのタイプ/クラスの一般識別子(generic identifier)(例:「含有ウェブページ203におけるイベントロギングのサードパーティアプリケーション40のインスタンスにメッセージ<x>を送りたい」)、のうちのいずれかを使用して、互いに提供することができる。このような識別子は、サードパーティアプリケーション40によってサポートされるべき特定のサービスを記述することもできる。さらに、アドレッサ/識別子310は、バージョンの指示情報を使用することができる(例:「会計パッケージ<y>がバージョン<z>である場合のみ、会計パッケージ<y>のインスタンスにトランザクション<x>を送りたい」)。

0109

実行時、サードパーティアプリケーション40は、ハブ205と通信するのみであり、したがって、ハブ205の直接アドレスを認識しているのみでよく、他のサードパーティアプリケーション40のアドレスは認識している必要がないことを理解されたい。この1つの直接アドレスを、ウェブサイト構築システム30によってサードパーティアプリケーション40の提供業者に提供される通信APIラッパーによってカプセル化することができる(図11Aに示した通信モジュールfおよびg、図11Bに示した通信モジュールaおよびbなど)。呼出し側のサードパーティアプリケーション40は、アプリケーションが認識している自身の(上述した)記述アドレスを提供することができ、アドレッサ/識別子310は、これらのアドレスを、サードパーティアプリケーション40の直接アドレスに変換してルーティングを実行することができる。このようにすることで、サードパーティアプリケーション40は、自身が通信しうるすべてのサードパーティアプリケーション40の絶対アドレスのテーブルを維持する必要がない。

0110

メッセージの発信元の確認は重要であり、確認を行わないと、受信側のサードパーティアプリケーション40が、敵意のあるサードパーティアプリケーション40からのメッセージを受信しうることを理解されたい。すべての通信はハブ205を介して行われるため、発信元確認器320は、サードパーティアプリケーションからの入力メッセージすべての信頼性をチェックすることができる。さらに、発信元確認器320は、メッセージに追加することのできる追加情報を提供することができ、この追加情報を使用して追加の確認を行うことができる。AppStore 25に含まれておりシステム100によって使用されるすべてのサードパーティアプリケーション40それぞれは、ウェブサイト構築システム30に登録されるため、ハブ205は、メッセージに含まれている発信元の一意のIDがメッセージの発信元(ドメイン、ポートなど)に合致するかを、ウェブサイト構築システム30によって確認することができることを理解されたい。

0111

サードパーティアプリケーション40は、外部情報や含有ウェブページ203の情報などに依存しうる一般的な通信ポリシーを定義することができる。通信ポリシーエンフォーサ330は、仕様準拠しない通信を扱う必要がないように、該当する通信ポリシーが適用されるようにすることができる。例えば、機密情報を扱うウェブサイトにおいては、サードパーティアプリケーションに、それらのプロファイル内の機密レベルフィールドを付与することができる。機密レベルXを扱うことが許可されている、バックエンドのイベントロギングデータベースを提供するサードパーティアプリケーション40は、Xより高い機密レベルを有するイベントを受け入れてロギングしないというポリシーを定義することができる。このような状況において、通信ポリシーエンフォーサ330は、必要な事前フィルタリングを実行して、機密レベルの高いメッセージが、低い機密レベルしか扱うことのできないアプリケーションに到達することさえも防止することができる。

0112

さらには、デザイナー5は、協力することは可能であるがプロトコル互換性の問題のために実際には協力することのない2つ(またはそれ以上)のサードパーティアプリケーションを、作成した同じウェブサイトに含めることを望むことがあることを理解されたい。ここで図12を参照し、例えばこの図に示したように、オンラインショップのサードパーティアプリケーション[a]は、(異なるベンダーから提供されている)サードパーティアプリケーション[b]などの調達・出荷のサードパーティアプリケーションに、購入注文メッセージを送信する機能を有することがある。しかしながら、サードパーティアプリケーション[a]によって提供される情報に、サードパーティアプリケーション[b]において必要ないくつかのフィールドが含まれていないことがある。このような状況は、一般には、関与するサードパーティアプリケーションのベンダーによって解決されるべきであるが、場合によってはこのような解決を行うことができない(例えば、2つのサードパーティアプリケーションの一方が何らかの理由で現時点で更新されていない)。プロトコル変換器340は、[a]から[b]への関連するメッセージを、(例えば必要な追加のフィールドを提供することによって)変換することができる。このような変換は、プロトコル変換器340によって実行することができる、または、アプリケーションが埋め込まれているウェブサイトおよび含有ウェブページ203との対話を伴うことがある(例えば追加情報が必要である場合)。

0113

さらには、サードパーティアプリケーション40は、別のサードパーティアプリケーション40にメッセージを送信する、またはこのようなサードパーティアプリケーション40からメッセージを受信することが要求される機能を有することがあることを理解されたい(例えば、上述したオンラインショップ/調達のサードパーティアプリケーション40のペア)。しかしながら、場合によってはソリューションの一部が存在しないことがあり、上の例においては、対応する、または適切な調達のサードパーティアプリケーション40が存在しないことがある。このような場合、リダイレクタ350を使用することによって、デザイナー5は、特定のメッセージを含有ウェブページ203のコンポーネントにルーティングする、または含有ウェブページ203のコンポーネントからの特定のメッセージをルーティングするようにと、匹敵する機能を、含有ウェブページ203のコンポーネントと、コンポーネントが提供することのできる機能とによって解決するように指定することができる。これにより、専用のサードパーティアプリケーション40を構築する必要なしに、完全なウェブサイトを構築することができる。したがって、トランザクションをデータベースにロギングすることのできるウェブサイト構築システム30のコンポーネントにトランザクションを送信することができ、このデータベースを後から(別のプログラムによって)使用して、オフラインでの調達および出荷を実行することができる。

0114

サードパーティアプリケーション40は、同じコードベースを使用するが異なる機能が有効になる、異なる能力を有する複数の構成を提供することができる。例えば、サードパーティアプリケーション40は、無料バージョンを通じて基本的な機能を提供し、購入するプレミアムバージョン、複数の有料バージョン、またはサードパーティアプリケーション40の購入する追加機能を通じて、追加の機能を提供することができる。

0115

システム100は、ユーザごとの(実際にはデザイナーごとの)サードパーティアプリケーション40の購入状況を管理する、ウェブサイト構築システム30をベースとする機能を含むことができることを理解されたい。さらに、すべてのデザイナーを、ウェブサイト構築システム30の登録ユーザとすることができ、したがって、ウェブサイト構築システム30は、各デザイナー5のサードパーティアプリケーション40の購入状況のデータベースを管理することができることを理解されたい。この情報は、デザイン段階においてはTPAコーディネータ24によって、実行時には構成マネージャ370によって、プロパティシート23に格納することができる。例えば、サードパーティアプリケーション40は、ウェブサイト構築システム30のクライアント側要素にバージョン問い合わせメッセージを送ることができる。ウェブサイト構築システム30のクライアント側要素は、リポジトリ22、またはローカルにキャッシュされているリポジトリのコピー照会して、サードパーティアプリケーション40が提供するべき能力に関する情報を含む応答メッセージをサードパーティアプリケーション40に返す。

0116

代替実装においては、ウェブサイト構築システム30は、サードパーティアプリケーション40の必要な構成情報(暗号化されたiframeパラメータなど)を、事前の問い合わせメッセージを必要とすることなしに、代替チャネルを介してサードパーティアプリケーション40に提供することができる。

0117

上述したように、サードパーティアプリケーション40は、含有ウェブページ203の特定のコンポーネントと直接通信することができる。サードパーティアプリケーション40は、通信先のコンポーネントを、さまざまな方法で識別することができ、すなわち、(後からさらに詳しく説明するように)関連付けられるテンプレートに基づいてコンポーネントを直接的に識別する、またはデザイナー5によって含有ウェブページ203の特定のコンポーネントに明示的に指定されるアクセスIDを通じて識別する、または含有ウェブページ203によってサードパーティアプリケーション40に提供される(場合によっては選択的な)コンポーネントモデルをたどることによって識別する。

0118

実行時、更新器380は、含有ウェブページ203のコンポーネントとサードパーティアプリケーション40との間のメッセージおよび応答を実装することができることを理解されたい。例えば、サードパーティアプリケーション40は、含有ウェブページ203のコンポーネントの視覚・表示属性(コンポーネントの位置、サイズ、色、透明度など)を変更・修正する、または問い合わせることができる。さらに、更新器380によって、サードパーティアプリケーション40は、含有ウェブページ203のコンポーネントのコンテンツを読み取るまたは書き込むことを可能になり、さらには、サードパーティアプリケーション40が、メディア機能(例えば、指定のオーディオセグメントまたはビデオセグメントメディアプレイヤーコンポーネントに渡す、あるいは指定の期間にわたり再生を一時停止するようにメディアプレイヤーコンポーネントに要求する)を実行するコンポーネントに指示することが可能になる。

0119

さらに、更新器380によって、ウェブサイト構築システム30のコンポーネントが、サードパーティアプリケーション40に許可するアクセスのタイプを指定することが容易になり、この場合、最近のオペレーティングシステムにおいてファイルを保護するためにアクセス許可ビットアクセス制御リスト(ACL)が機能するのと類似する方法による。このような許可は、すべてのサードパーティアプリケーション40、特定のベンダーからのサードパーティアプリケーション40、または特定のサードパーティアプリケーション40に適用されるように、各コンポーネントに対して定義することができる。例えば、サードパーティアプリケーション40が、含有ウェブページ203の中の、サードパーティアプリケーション40の外側のテキストフィールドにアクセスできるようにすることができる。ブログのサードパーティアプリケーション40の場合、このテキストフィールドを使用してブログエントリを編集することができ、ブログのサードパーティアプリケーション40の領域自体の内側に提供することのできる画面領域よりも広い画面領域が提供される。マルチページコンテナの内側の特定のミニページに埋め込まれているサードパーティアプリケーション40の場合、ウェブサイト構築システム30は、サードパーティアプリケーション40からのアクセスを、その特定のミニページ内のコンポーネントのみに制限することができることを理解されたい。

0120

さらに、更新器380によって、サードパーティアプリケーション40がサイト全体の要素に影響を与えることが可能になることを理解されたい。例えば、サイト内の現在のページ、サードパーティアプリケーション40を含むコンテナ内の現在のミニページ、ページ履歴などの属性を取得して設定する処理が挙げられる。さらに、更新器380は、このような要求をフィルタリングまたは制限することができる。

0121

さらに、更新器380によって、ウェブサイト構築システム30がサードパーティアプリケーション40のスタイルおよび表示を変更・修正することが可能になる。更新器380は、ウェブサイト構築システム30がフォーマッティングおよびスタイルのガイドラインをサードパーティアプリケーション40に提供するときに使用する呼出しを実施することができる。ガイドラインは、色および配色、フォント、文字サイズ、透明度、アニメーションおよび特殊効果(例:ぼかし)などのプロパティを含むことができる。配色としては、特に、一般的配色(例えば以下のx色を使用する)や、ハイレベル配色(例えば、テキストに色xを使用し、フレームに色yを使用する)が挙げられる。

0122

複雑なスタイル情報表現するための1つの好ましい方法は、カスケードスタイルシート(CSS)を使用することであり、カスケードスタイルシートは、フォントやサイズ、色などの複数のスタイルディレクティブの組合せを表現することができることを理解されたい。更新器380は、このようなCSSベースのメッセージをサードパーティアプリケーション40に送ることができる。スタイルシートは、本質的に汎用とする、または、サードパーティアプリケーション40によって定義される固有のスタイル名を含むことができ、したがってウェブサイト構築システム30は、より適切なガイドラインをサードパーティアプリケーション40に提供することができる(例えば、スタイルシートは、特定のサードパーティアプリケーション40の要素を参照して、これらのガイドラインを提供することができる)。

0123

これにより、サードパーティアプリケーション40は、これらのガイドラインを使用して、含有ウェブページ203に良好に適合した自身の外観/操作感ルックアンドフィール)を生み出すことができる。このことは、同じサイト内の複数の含有ウェブページ203に含まれる、または複数の含有ウェブページ203から可視である(上述したマルチポートインクルージョン)サードパーティアプリケーション40にとって、特に重要である。複数の含有ウェブページが、異なる配色や基本デザインを採用することができる。サードパーティアプリケーション40は、これらのスタイルメッセージを通じて提供される情報を使用して、自身の表示色およびスタイルを、含有ページそれぞれに良好に合うように適合させ、含有ウェブページと比較して調和しない配色が表示されたり外観/操作感が生じることを回避することができる。

0124

動的レイアウト更新器360は、動的レイアウトイベントの結果としての表示の変更を処理するときに、ウェブサイト構築システム30とサードパーティアプリケーション40、あるいはサードパーティアプリケーション40と補助的なサードパーティアプリケーションが、協力することを可能にすることを理解されたい。ウェブサイト構築システム30は、ページ内のコンポーネントのいくつかを変更するイベント発生時に、ページデザインを維持する目的で、そのページ内のコンポーネントのサイズおよび位置を変更することができる。これらの動的レイアウトイベントとしては、例えば、異なるサイズを有する画面上でウェブサイトを閲覧する、ポートレートモードランドスケープモードの間で表示装置を回転させる、いくつかのコンポーネントのサイズや位置を変更する、特定のコンポーネントのコンテンツを変更する(結果としてコンポーネントのサイズ変更が要求される)、が挙げられる。さらに、動的レイアウトイベントとしては、(例えばデータフィード(data feed)からの情報を表示するコンポーネントにおける)サーバベースのコンテンツの更新、あるいは同じウェブサイトの別の同時ユーザによるコンテンツの変更による、コンポーネントの更新が挙げられる。さらに、動的レイアウトイベントは、デザイン環境のみならず実行時環境においても起こりうることを理解されたい。特に、コンポーネントおよびサードパーティアプリケーション40によっては、デザイナーによってのみならず、実行時に(すなわちエンドユーザによって)コンポーネントのコンテンツやサイズ/位置を変更することができる。

0125

さらに、動的レイアウトイベントは、サードパーティアプリケーション40によっても発生しうることを理解されたい。例えば、オンラインショップのサードパーティアプリケーション40では、利用者が製品カタログの表示から(異なるサイズを有する)ショッピングカートの表示に移動するときに、サイズの変更が要求されることがある。別の例として、製品カタログのサードパーティアプリケーション40は、製品を強調表示するためのオプションを含むことがあり、このオプションに起因して、サードパーティアプリケーション40は、より多くのコンテンツを含むより大きなカタログページを表示する。さらなる例としては、追加領域の表示を開始または停止させることができるマルチ領域のサードパーティアプリケーション40が挙げられる。

0126

ここで前出の図6を参照する。既存のシステムでは、このような状況は、たとえ扱うにしても、一般には、サードパーティアプリケーションの表示を途中で切り取り、表示にスクロールバーを追加する、または図6に示したようにページの他のコンポーネントを隠すポップアップウィンドウとして単に表示をリサイズすることによって処理する。動的レイアウト更新器360は、協力的な動的レイアウトを実装することができ、この場合、ウェブサイト構築システム30とサードパーティアプリケーション40とが協力して動的レイアウトを実行し、含有ウェブページ203の基本的なデザインを維持する。動的レイアウトの機能は、特許文献1(出願日:2013年2月20日、本発明の共通の譲受人に譲渡されている)にさらに記載されている。しかしながら、たとえ協力的な動的レイアウトをサポートするシステムにおいても、含有ウェブページ203における動的レイアウトメカニズムは、サードパーティアプリケーション40の内部レイアウトを完全には制御しない。さらには、ウェブサイト構築システム30のウィジェットは、(特定の範囲内で)任意のサイズにリサイズできるように設計されることがあるが、サードパーティアプリケーション40が任意のリサイズをサポートしないことがある。サードパーティアプリケーション40は、例えば、異なるサイズを有する複数の表示設定(例:より多くの、またはより少ない詳細情報を表示する)、サードパーティアプリケーション40の内部要素のいくつかをリサイズする機能、サードパーティアプリケーション40のテキスト要素のいくつかを複数のフォントサイズを使用して表示する機能、の任意の組合せを提供することがある。

0127

さらに、サードパーティアプリケーション40は、提供される可能な表示サイズの数が限られていることがあり、可能なサイズの範囲全体を有することがある。したがって、含有ウェブページ203からサードパーティアプリケーション40へのリサイズ要求は、サードパーティアプリケーション40が最も近い可能なサイズに切り替えることによって、またはサードパーティアプリケーション40の可能なサイズのリストを提供する(これによりウェブサイト構築システム30は使用する適切なサイズを選択することができる)ことによって、解決することができる。

0128

動的レイアウト更新器360は、[含有ウェブページ203からサードパーティアプリケーション40への]協力的な動的レイアウトを、次のシーケンスを使用して実装することができる。

0129

例えば、含有ウェブページ203に埋め込まれているサードパーティアプリケーション40を、特定の所望のサイズ(例:X1*Y1ピクセル)にリサイズすることが必要となることがある。動的レイアウト更新器360は、サードパーティアプリケーション40が自身のコンテンツを特定の所望のサイズ(例:X1*Y1ピクセル)にリサイズするように要求するメッセージを、サードパーティアプリケーション40に送ることができる。サードパーティアプリケーション40は、代替の表示設定、内部でのリサイズ処理、内部での動的レイアウト処理、または任意の他の手段を使用することによって、指定のサイズに調整することができる。さらには、含有ウェブページ203が、サードパーティアプリケーション40を含む外部iframeウィンドウを新しいサイズ(X1*Y1)にリサイズできることを理解されたい。

0130

さらに、サードパーティアプリケーション40は、可能なサイズの限られたセットにリサイズ処理できるのみでありうることを理解されたい(例えば特定のユーザインタフェース構成)。したがって、動的レイアウト更新器360は、サードパーティアプリケーション40が可能なサイズのセットを提供することができる次の代替アルゴリズムを使用することができる。

0131

含有ウェブページ203がリサイズされ、動的レイアウト更新器360は、サードパーティアプリケーション40が自身のコンテンツを特定の所望のサイズ(X1*Y1)にリサイズするように要求するメッセージを、サードパーティアプリケーション40に送る。サードパーティアプリケーション40は、最も近い可能なサイズ(例:X2*Y2ピクセル)を求め、代替の表示設定、内部でのリサイズ処理、内部での動的レイアウト処理、または任意の他の手段を使用することによって、そのサイズにリサイズする。次いで、更新器380は、リサイズ処理を確認する応答メッセージを含有ウェブページ203に送り、実際の新しいサイズ(X2*Y2)を提供することができる。含有ウェブページ203は、サードパーティアプリケーション40を含む外部iframeウィンドウを実際の新しいサイズ(X2*Y2)にリサイズすることができる。含有ウェブページ203は、実際の新しいサイズ(X2*Y2)に基づいて動的レイアウト処理を続行することができる。

0132

特に、含有ウェブページ203内に複数のサードパーティアプリケーション40(またはマルチ領域サードパーティアプリケーション40)が存在する場合、別の実施形態も適用可能であることを理解されたい。この実施形態においては、含有ウェブページ203は、埋め込まれているサードパーティアプリケーション40が複数のサードパーティアプリケーション40の複数のオプションを考慮して外観/操作感を最適化することを試みることができるように、埋め込まれているサードパーティアプリケーション40に問い合わせて表示サイズのリストを取得することができる。この実施形態は、サードパーティアプリケーション40が複数の領域にわたり表示される場合にも関連する。

0133

含有ウェブページ203は、動的レイアウト処理を実行して、1つまたは複数のサードパーティアプリケーション40(TPA[1]〜TPA[n])が含有ウェブページ203に埋め込まれており次のアルゴリズムを使用してリサイズするべきであることを認識する。

0134

iについて1からnまでループする。

0135

各TPA[i]について、以下を求める。

0136

最小サイズXmin[i]*Ymin[i]、
最大サイズXmax[i]*Ymax[i]、
最適サイズXopt[i]*Yopt[i]、
動的レイアウト更新器360は、上記の最小/最大/最適サイズを列挙するメッセージをTPA[i]に送り、サードパーティアプリケーション40の可能なサイズに関する情報を要求することができる。

0137

サードパーティアプリケーション40は、自身が採用することのできる可能なサイズオプションのセット(Xposs[i][j]*Yposs[i][j])を動的更新器360に提供することができる。

0138

含有ウェブページ203は、上記のようにして集めたXposs[][]/Yposs[][]情報に基づき、(例えば)サードパーティアプリケーションの可能なサイズの組合せすべての完全な評価、線形計画法、または動的レイアウトアルゴリズムによって使用される任意の他の手法を使用することによって、動的レイアウト計算の解を計算することができる。

0139

すべてのTPAについて結果をXfinal[i]/Yfinal[i]に格納する。

0140

iについて1からnまでループする。

0141

含有ウェブページ203が、Xfinal[i]/Yfinal[i]を含むリサイズメッセージをTPA[i]に送る。

0142

含有ウェブページ203が、TPA[i]を含む外部iframeウィンドウをXfinal[i]/Yfinal[i]にリサイズする。

0143

含有ウェブページ203が、実際の新しいサイズに基づいて動的レイアウト処理を続行する。

0144

動的レイアウト処理では、一般に、サードパーティアプリケーション40を単にリサイズするだけではなく、サードパーティアプリケーション40を移動させることが要求されうることを理解されたい。しかしながら、サードパーティアプリケーション40は、含有ウェブページ203の内側の自身のフレームの正確な位置に対して不変であるべきである。

0145

上述したように、サードパーティアプリケーション40は、その表示ウィンドウのサイズを変更する必要もときおり生じうる。iframeを表示するウィンドウのサイズは、ホスティングページ(すなわち含有ウェブページ203)によって管理されるため、サードパーティアプリケーション40のウィンドウサイズの変更は含有ウェブページ203によって実行されなければならず、この場合、サードパーティアプリケーション40はウィンドウサイズを変更するように含有ウェブページ203に(動的レイアウト更新器360を介して)要求する。

0146

さらに、サードパーティアプリケーション40は、含有ウェブページ203の内側の自身の位置を変更するように(動的レイアウト更新器360を介して)要求することもできることを理解されたい。この場合には、(サイズ変更のときのように)内部的にサードパーティアプリケーション40が影響されることはないが、含有ウェブページ203内の表示の変更が要求される。動的レイアウト更新器360は、この要求と動的レイアウトとを統合することができる。含有ウェブページ203は、動的レイアウト更新器360を起動して、サードパーティアプリケーション40のウィンドウサイズ(および場合によってはウィンドウの位置)を変更し、サイズおよび位置の変更の確認をサードパーティアプリケーション40に送ることができる。

0147

ハブ205は、サードパーティアプリケーション40のクラスに固有な追加のメッセージ、またはサードパーティアプリケーション40に固有な追加のメッセージとして、ウェブサイト構築システム30自体、または特定の含有ウェブページ203、または補助的なサードパーティアプリケーション40がサードパーティアプリケーション40に影響を与えることのできる追加のメッセージ、を実装することもできることを理解されたい。例えば、ブログのサードパーティアプリケーション40は、新しいブログエントリ、または現在のブログエントリへの新しい応答を投稿することのできる入力メッセージを定義することがある。このようなメッセージは、(例えば、サードパーティアプリケーションの領域の外側の大きな編集フィールドからブログエントリを投稿するための方法として)含有ウェブページ203によって使用することができる。さらに、このようなメッセージは、上位レベルアプリケーション間のリンクに使用することもでき、これにより例えば、サポートのサードパーティアプリケーションがブログのサードパーティアプリケーションにブログエントリを投稿することができる。

0148

サードパーティアプリケーション40では、自身のサイト内でサードパーティアプリケーション40を使用しているデザイナーがサードパーティアプリケーション40の内部で使用する、または下流で使用するための幅広い複雑なサービスがしばしば要求されることを理解されたい。このようなサービスとしては、ユーザ管理や請求・出荷管理が挙げられる。ウェブサイト構築システム30のベンダーは、(例えば技術的な問題またはビジネス上の理由で)ウェブサイト構築システムの一部としてこのようなサービスを提供できないことがある。さらには、これらのサービスは、単独でサードパーティアプリケーション40として「パッケージ化」するのに適していないことがある。さらに、サードパーティアプリケーション40のベンダーは、サードパーティアプリケーション40を使用するデザイナーに複数のそのようなサービス(例:サードパーティの複数の請求API)を提供して、デザイナー5が適切なサービスを選択して使用できるようにするオプションを必要とすることがある。

0149

例えば、ウェブサイト構築システム30において、PaypalTMによってホストされるAPIを提供することができ、このAPIをサードパーティアプリケーション40によって直接使用する、またはこのAPIを使用するデザイナー5にサードパーティアプリケーション40によって提供することができる。さらに、サードパーティアプリケーション40は、自身のオプションのセット(すなわち特定の請求タイプ、例えば一回単位請求、自動継続請求、レベニューシェア(revenue sharing)を使用する)を提供し、ホストされているPaypalのAPIを呼び出すことによってこれらのオプションを実装することもできる。

0150

したがって、ウェブサイト構築システム30を使用しているデザイナー5は、前払請求(advanced billing)を使用する固有のサービス(楽曲を販売するオンラインショップなど)を開発することができる。デザイナー5は、ホストされている請求APIを、直接的に使用する、または追加の抽象レベル(または抽象層)を提供するサードパーティアプリケーション40を通じて使用することによって、請求APIの提供者との特定の清算協定取引合意(merchant agreement)を交渉する必要性を回避することができる。この意味で、ウェブサイト構築システム30は、ホストされているAPIのベンダーの代理店となりうる。

0151

ホストされているAPIのラッパー390は、システムの複数の異なる部分(例えば、ウェブサイト構築システム30、ホストされているAPIコード、含まれているサードパーティアプリケーション40)の間のこの通信を容易にすることができる。APIのラッパー層と、実際のAPIの実装は、ウェブサイト構築システム30自体または別のサードパーティアプリケーション40に属することができることを理解されたい。サードパーティアプリケーション40のベンダー(またはデザイナー5)は、実際の下層のAPIの実装方法を認識することなく、ホストされているAPIのラッパー390を通じて、ホストされているAPIを使用することができる。

0152

本発明の補足的な代替実施形態においては、出願人は、ウェブサイト構築システムの追加のテンプレートおよびコンポーネントが、AppStore 25のレベルにおけるサードパーティアプリケーションと、関連するサードパーティアプリケーションのインスタンスとに関連付けられる統合モデルを使用することによって、ウェブサイト構築システム30と1つまたは複数のサードパーティアプリケーション40との間のスマートな統合を達成できることをさらに認識した。サードパーティアプリケーション40は、これらのコンポーネント(および関連付けられていないコンポーネント)と通信して、データおよび制御メッセージを交換することもできる。上述したように、含有ウェブページ203内のサードパーティアプリケーション領域40は、メインサイトがホストされているドメインとは異なる個別のドメイン(サードパーティアプリケーションのベンダーのドメインまたはそれ以外)においてコンテンツがホストされる個別のiframeである。したがって、複数の異なるiframe間の通信には、ブラウザの「同一オリジンポリシー」が適用され、上述した手法を使用することが要求される。

0153

既存のシステムでは、サードパーティアプリケーション40を、含有ウェブページ203に含まれるがそれ以外の点では含有ウェブページ203自体の外観/操作感には影響しない、一体的な柔軟性の低いオブジェクトとして実装する。サードパーティアプリケーション40のインスタンスは、(一般には長方形の)領域内に配置され、その動作・機能のすべてをこの領域内で実行する。

0154

さらに、出願人は、サードパーティアプリケーション40に関連付けられる、ウェブサイト構築システム30の(オプションの)追加のテンプレート(本発明の実施形態によると、関連付けられるテンプレートと称する)を有することによって、この概念を拡張できることを認識した。この関連付けは、サードパーティアプリケーション40の開発時または公開時に実行することができ、(AppStore 25からの)サードパーティアプリケーション40の選択/購入プロセスおよびサードパーティアプリケーション40のインスタンス作成の一部として、デザイナー5に提示することができることを理解されたい。サードパーティアプリケーション(TPA)コーディネータ24は、サードパーティアプリケーション40に関連付けられるテンプレートを、(AppStore 25によって管理される、またはサードパーティアプリケーション40のベンダーによって提供されるアプリケーションリポジトリの一部として)取得して、上述したように、後から使用できるようにテンプレートをリポジトリ22に格納することができる。

0155

システム100は、複数の関連付けられるテンプレートを有するサードパーティアプリケーション40の公開をサポートすることができ、これによりデザイナー5は、必要に応じて最適なテンプレートを選択することができることを理解されたい。

0156

含有ウェブページ203の中にサードパーティアプリケーション40のインスタンスを作成するとき、関連付けられるテンプレート内のコンポーネントを、含有ウェブページ203とマージすることができ、含有ウェブページ203の中の他のコンポーネントと一緒に表示することができることを理解されたい。

0157

次に、図13を参照し、この図は、本発明の実施形態による、関連付けられるテンプレートの使用例を示している。図示したように、サードパーティアプリケーション[a]は、コンポーネント[d]および[e]を含む関連付けられるテンプレート[c]とともに、AppStore[b]の中に配置されている。サードパーティアプリケーション[a]が含有ウェブページ203[f]に含まれているとき、サードパーティアプリケーション[a]を、ページ[f]の内側の指定された領域[g]に表示することができ、コンポーネント[d]および[e]のインスタンス[d’]および[e’]を、前から存在するコンポーネント[h]および[i]とともにページ[f]に表示することができることを理解されたい。

0158

システム100は、関連付けられるテンプレートコンポーネントのインスタンス(例えば上記の[d’]および[e’])を含有ウェブページ203[f]の中に配置する複数の方法をサポートすることができることを理解されたい。配置方法としては、絶対的な配置(すなわち、関連付けられるテンプレート[c]に指定されている、元のコンポーネント[d]および[e]のサイズおよび位置を使用する)、ターゲットを基準とする配置(すなわち、含有ウェブページ203[f]に従って新しいインスタンス[d’]および[e’]のサイズおよび位置を調整する)、サードパーティアプリケーション40を基準とする配置(すなわち、含有ウェブページ203[f]の内側のサードパーティアプリケーションのインスタンス[g]に指定されるサイズおよび位置を基準として、新しいインスタンス[d’]および[e’]のサイズおよび位置を調整する)、が挙げられる。採用する配置方法は、関連付けられるテンプレート[c]とともに含まれている設定に基づいて決定することができ、デザイナー5は、必要であれば別の配置方法を使用することができる。

0159

さらに、デザイナー5は、テンプレート[c]から継承される、[f]の中のコンポーネント[d]および[e]のインスタンスを修正することができることを理解されたい。変更は、[f](および場合によっては、ページ間継承(inter-page inheritance)をサポートするウェブサイト構築システム30の中から継承するページ)の中での[d]および[e]の使用に適用されるのみであり、AppStore[b]内のサードパーティアプリケーション[a]に関連付けられる「元の」テンプレート[c]には影響しない。

0160

上記の[d]および[e]のインスタンスへの変更としては、特に、フィールドのインスタンスに特定のコンテンツ(テキスト、画像など)を割り当てることや、通常の属性を変更することが挙げられることを理解されたい。さらに、図14を参照し、サードパーティアプリケーション40がミニページの内側に含まれる場合、図14に示したように、関連付けられるテンプレートは、サードパーティアプリケーション40が含まれている特定のミニページに適用されることを理解されたい。図示したように、サードパーティアプリケーション40はミニページ[x]に含まれており、したがってコンポーネント[d]および[e]は[x]に追加されるが、同じマルチページコンテナ[g]のさらなるミニページ[y]および[z]には追加されない。

0161

さらに、セクションタイプのミニページの場合、関連付けられるテンプレート(存在時)は、サードパーティアプリケーション40を含むために作成された仮想の(かつ空の)含有ウェブページ203に適用されることを理解されたい。

0162

代替実施形態においては、あらかじめ作成される関連付けられるテンプレートを、含有ウェブページ203に「並列」である新たに作成されるページまたはミニページに適用することができる。この新たに作成されるページまたはミニページをテンプレートによって初期化し、それを必要に応じて修正することができる。

0163

さらに、ウェブサイト構築システム30では、マルチポートインクルージョンも可能になり、この場合、サードパーティアプリケーション40の同じインスタンスがメインサイトの複数のページから可視であり、これらのページに「属する」。マルチポートインクルージョンは、メインサイト内の特定のサードパーティアプリケーション40の複数のインクルージョン(サードパーティアプリケーション40の複数のインスタンスを作成する)とは異なる。したがって、サードパーティアプリケーション40のコンテンツ(インスタンスに固有である)が、同じマルチポートサードパーティアプリケーション40の複数の表示の間で共有される。

0164

このようなマルチポートインクルージョンにおいては、関連付けられるテンプレートを、サードパーティアプリケーション40のインスタンスが追加されるページおよびミニページのそれぞれに個別に適用することができる。

0165

上述したように、システム100は、含有ウェブページ203の中のサードパーティアプリケーション40とコンポーネントとの間の双方向通信リンクを提供することができる。このようなコンポーネントとしては、サードパーティアプリケーションからの関連付けられるテンプレートをマージする結果としての、含有ウェブページ203のコンポーネントと、このような関連付けられるテンプレートに関連しないコンポーネントとが含まれることを理解されたい。

0166

したがって、サードパーティアプリケーション40のベンダーは、一般に、ベンダーによって提供されるサードパーティアプリケーション40に関連付けられる複数のテンプレートを作成することができることを理解されたい。これらのテンプレートとしては、実際に配布されている(すなわちその時点で配布されているサードパーティアプリケーションバージョンに関連付けられる)テンプレートに加えて、テストテンプレート、開発テンプレート、およびその他のテンプレートが挙げられる。

0167

上述したように、サードパーティアプリケーション40は、AppStore 25を通じて配布することができ、さらには、ウェブサイト構築システム30のベンダーには関連しない、またはベンダーによって管理されない代替経路を通じて配布することもできる。しかしながら、サードパーティアプリケーション40とともに配布される関連付けられるテンプレートは、アプリケーションリポジトリ22に強く関連して結合されていることがあり、なぜなら関連付けられるテンプレートは、ウェブサイト構築システム30によって管理されるコンポーネント、ベーステンプレート、および他の要素を使用して構築されるためである。

0168

さらには、このような個別に配布される関連付けられるテンプレートの基礎をなす、ウェブサイト構築システム30の要素を、修正または削除しなければならないことがある(これにより場合によっては関連付けられるテンプレートが「壊れる」)。この問題を解決するため、システム100は、これらの関連付けられるテンプレートを、アプリケーションリポジトリ22の内側の(場合によってはサードパーティアプリケーション40のベンダーごとの)個別の領域に実装することができる。ウェブサイト構築システム30は、これらのテンプレートを、ウェブサイト構築システム30の他のテンプレートと同様に管理することができる。

0169

さらに、サードパーティアプリケーション40のベンダーに、作成される各テンプレートの一意のID(開発ID)を提供することができ、サードパーティアプリケーション40のベンダーは、サードパーティアプリケーション40の開発およびテストプロセス時にこのIDを使用することができることを理解されたい。サードパーティアプリケーション40が公開/配布される時点で、サードパーティアプリケーション40のベンダーには、代わりの一意のID(公開ID)を適用および受信することが要求されることがあり、ベンダーは、公開されるサードパーティアプリケーション40においてそのIDを参照することができる。公開IDが提供されると、テンプレートの個別のロックされたコピーが作成される。このコピーは、サードパーティアプリケーション40によって参照され、サードパーティアプリケーション40のインスタンスを作成するときに使用されるコピーである。このようにすることで、サードパーティアプリケーション40のベンダーは、(デザイナーによって含められている)「生の」サードパーティアプリケーション40に関連付けられるテンプレートを誤って修正することができなくなり、参照整合性が維持される。さらには、システム100は、このようなロックされたテンプレートと、基礎をなすコンポーネントおよびベーステンプレートとの間の関係を、相互参照させることができる。この相互参照を使用することで、例えば、このようなロックされたテンプレートに含まれている、ウェブサイト構築システム30のコンポーネントやベーステンプレートが修正されようとする(そしてこのような修正によってテンプレートまたはサードパーティアプリケーション40が何らかの形で壊れうる)場合に、ウェブサイト構築システム30のスタッフに警告することができる。

0170

したがって、システム100は、サードパーティアプリケーション40と、含有ウェブページ203の中のコンポーネントと、ウェブサイト構築システム30との間の双方向通信チャネルを提供することができる。含有ウェブページ203のコンポーネントは、サードパーティアプリケーションに関連付けられる(1つまたは複数の)テンプレートをベースとする、またはウェブサイト構築システム30の別のテンプレートをベースとする、またはテンプレートには無関係とすることができる。

0171

上述したように、通信ハブ205は、通信を促進することができ、含有ウェブページとサードパーティアプリケーション40との間のバックチャネルを提供することができる。出願人は、含有ウェブページとサードパーティアプリケーション40との間で双方向に送られるデータは、これらをいったん集めて処理し、統合した後に有用であることをさらに認識した。

0172

例えば、ウェブサイトのオーナーは、自身のサイトあたりの利用者数メンバーシップを管理する必要があり、これらは関連するウェブサイト構築システム30の登録利用者をベースとする値とは異なる。ウェブサイトの利用者は、登録する、または登録しない(匿名)ことができ、ウェブサイトは、異なるレベルの利用者に異なるレベルの機能を提供することができる。さらには、利用者は(たとえ匿名利用者であっても)、インスタントメッセンジャーソフトウェアを起動してサイトのオーナーに連絡するときや、サイトでのアクティビティの一部としてソーシャルネットワークに接続するときに、個人情報連絡先情報(例えばコンタクトフォームにおけるデータ)をしばしば提供する。これらの情報は、作成されたサイトに直接的に入力される、または、サイト内に埋め込まれているサードパーティアプリケーションとのインタラクションの一部として利用可能になることを理解されたい。

0173

さらに、これらの情報は、組織化されておらず、互いに関連しておらず、場合によっては矛盾を含み、多くの場合には保存されないことを理解されたい。例えば、ある1人の利用者が、自分のプライベートな電子メールアドレスを、(サイトによって直接管理されている)コンタクトフォームに入力し、同じセッションにおいて、仕事用の電子メールアドレスを、(サードパーティアプリケーション40によって管理されている)別のサブスクリプションフォームに入力することがある。

0174

さらには、これらの「流動的な」情報には、その情報の使用に関する異なる許可が含まれることがある。例えば、サブスクリプションフォームに自分の電子メールアドレスを入力した利用者は、自分が加入した電子メールベースのサブスクリプションおよび場合によっては関連する電子メールニュースレターを受信することを予期する。これに対して、登録IDとして電子メールアドレスを開示した利用者は、自分のアカウントの取扱いやセキュリティ警告などに関する電子メールを除いて、自分の登録アドレス宛の電子メールを受け取ることを望まないことがある。

0175

次に図15を参照し、この図は、ウェブサイト構築システム30と1つまたは複数の埋め込まれたサードパーティアプリケーション40との間で交換されるさまざまなメッセージからのデータを調整および収集するシステム200を示している。システム200は、クライアント220にインストールされているクライアントハブ210と、サーバ260にインストールされているサーバハブ230、コンタクトコーディネータ240、アクティビティコーディネータ250、コンタクトデータベース245、およびアクティビティストリームデータベース255とを備えている。ハブ210およびハブ230は、ハブ205に関連して上述したように、ウェブサイト構築システム30と、サーバ270にインストールされている複数のサードパーティアプリケーションとの間の通信と、複数の異なるサードパーティアプリケーション40間の通信とを促進できることを理解されたい。コンタクトデータベース245およびアクティビティストリームデータベース255は、後からさらに詳しく説明するように、コンタクト情報およびアクティビティ情報と、メッセージストリームから抽出される情報とを保持することができる。

0176

次に図16Aおよび図16Bを参照し、図16Aは、クライアントハブ210の要素を示しており、図16Bは、サーバハブ230の要素と、コンタクトコーディネータ240の要素と、アクティビティコーディネータ250の要素とを示している。クライアントハブ210は、ルータ211と、変換器/適合器212と、プライバシーポリシーエンフォーサ213とを備えている。サーバハブ230は、ルータ/追跡器231と、変換器/適合器232と、プライバシーポリシーエンフォーサ233と、プライベートデータプロキシ234と、検証器/署名器235とを備えている。コンタクトコーディネータ240は、データ抽出器241と、コンタクトハンドラ242と、データマージャ243と、データ/許可ハンドラ244とを備えている。アクティビティコーディネータ250は、ストリーム作成器251と、ストリームマージャ252と、ログ作成器253とを備えている。これらの要素の機能については、後からさらに詳しく説明する。

0177

次に図16Cおよび図16Dを参照し、図16Cは、ストリームマージャ252の要素を示しており、図16Dは、データマージャ243の要素を示している。ストリームマージャ252は、アクティビティ−ストリームマージャ261と、ストリーム−ストリームマージャ262とを備えている。ストリーム−ストリームマージャ262は、水平ストリームマージャ263と、垂直ストリームマージャ264をさらに備えている。データマージャ243は、コンタクト識別器272と、結合器273と、矛盾解消器274と、リスト値作成器275と、垂直コンタクトマージャ276と、水平コンタクトマージャ277とを備えている。水平コンタクトマージャ277は、仮想水平マージャ278をさらに備えている。垂直コンタクトマージャ276は、仮想垂直マージャ279をさらに備えている。これらの要素の機能については、後からさらに詳しく説明する。

0178

システム200は、システム200と複数のサードパーティアプリケーションとの間のメッセージパッシングを可能にする一方で、さまざまな機能、すなわち、アクティビティメッセージをストリームによって組織化する、アクティビティメッセージの履歴を格納する、マルチレベルでのアクティビティメッセージのメッセージパッシング、アクティビティメッセージ用にサイドチャネル(side channel)を使用する、アクティビティメッセージを変換およびコンテンツを適合化する、アクティビティメッセージを検証およびアクティビティメッセージに署名する、リスナークエリ(listener query)を使用してアクティビティメッセージを動的にルーティングする、などの機能を提供することを理解されたい。これらの機能については後から詳しく説明する。

0179

さらに、システム200は、利用者に関連する情報を抽出してそれらをマージする(複数のソースからの情報およびシステム200の中にすでに存在する情報を結合する)ことができる。マージは、異なる種類の、場合によっては互いに矛盾する情報を調整するマージ規則を通じて行うことができる。結合された情報は、コンタクトデータベース245に格納することができる。この情報には、後からさらに詳しく説明するように、集められた情報の許可される用途(allowed use)を制御する使用許可フィールドをさらに含めることができる。

0180

本発明の代替実施形態においては、クライアントハブ210およびサーバハブ230のいずれかを単独で使用して、サーバ270にインストールされている複数のサードパーティアプリケーション40と通信することができる。クライアントハブ210のみが使用される状況では、コンタクトコーディネータ240と、アクティビティコーディネータ250と、データベース245,255とを、関連するクライアントにローカルにインストールできることを理解されたい。

0181

さらには、システム200は、さらなるコンポーネントとして、サードパーティアプリケーション40が、利用者自身によって設定される使用制限を実施しながら、利用者に連絡するアクティビティ(例えばニュースレターの大量送信)を管理することを可能にするコンポーネントを備えることができることを理解されたい。このようなコンポーネントは、利用者のプライベートデータをサードパーティアプリケーション40から隔離することもできる(したがってサードパーティアプリケーション40は、利用者のプライベートデータに実際にアクセスすることなくそれぞれの動作を実行することができる)。このような機能は、例えば、後からさらに詳しく説明するようにプライベートデータプロキシ234を使用して実施することができる。

0182

さらに、コンタクトデータベース245は、各サイトに固有とすることができることを理解されたい。しかしながら、ウェブサイト構築システム30では、(同じサイトオーナーによって所有される)ウェブサイトの集合を含むメタサイト/メタプロジェクトレベルを定義することができ、コンタクトが単一サイトレベルではなくメタサイトレベルで格納、処理、およびマージされることを指定することができる。サイトのそれ以外の要素(含まれているサードパーティアプリケーション40など)も、サイトレベルではなくメタサイトレベルで定義することができる。メタサイトをサポートする以外は、一般にシステム200は、異なるサイトの間または異なるサイトオーナーの間でコンタクトを共有することはなく(ただし後から説明する状況を除く)、コンタクト情報を統合することもない(したがって、あるエンドユーザによって1つのサイトに提供されたデータは別のサイトに漏れない)。

0183

上述したように、システム200は、ウェブサイト構築システム30と1つまたは複数のサードパーティアプリケーション40との間の複数のインタラクションをサポートすることができる。このようなインタラクションは、買物をする、アイテムをショッピングカートに追加する、連絡先情報を入力するなど、事前に定義されるアクティビティとすることができる。あるサードパーティアプリケーション40が、自身がサポートするアクティビティを指定することができ、他のサードパーティアプリケーション40が、特定のアクティビティを「リスン」して、受け取ったアクティビティおよびそれに関連付けられる情報に基づいて動作することができる。特定のサードパーティアプリケーション40においてリスンされるアクティビティのリストは、明示的に1つまたは複数のアクティビティに設定する、または後からさらに詳しく説明するように、アクティビティリスニングクエリによって決定することができることを理解されたい。

0184

各アクティビティは、メッセージと考えることができ、各メッセージはアクティビティデータ構造体を含むことができることを理解されたい。アクティビティデータ構造体は、事前に定義されるデータ型であるが、互いの間の継承を通じて定義する、あるいは(フィールドを追加することによってアクティビティデータ構造体を拡張するオプションを有する)サードパーティアプリケーション40を通じて定義することもできる。アクティビティデータ構造体は、システムに固有とする、あるいは、標準化されているデータ構造に基づく、または標準化されているデータ構造を含むことができる。アクティビティデータ構造体は、何らかの方法(XML、JSONデータ、またはバイナリオブジェクト符号化方式を使用するなど)で符号化することもできる。

0185

さらに、アクティビティデータ構造体は、サードパーティアプリケーション40によって提供される「説明」フィールドを含むことができる。これは、サードパーティアプリケーション40によって定義される、アクティビティの説明である(ウェブサイト構築システム30に認識されている説明よりも詳細にすることができる)。例えば、VOIP通信のサードパーティアプリケーション40は、「Call to John Smith at 999-555-1234 - 01:15(ジョンスミス(999−555−1234)に電話(01:15))」というアクティビティ説明テキストを提供することができる。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ