説明

安全で構成可能なアプリケーションのための言語フレームワーク及び基盤

【課題】構成可能なプログラムのための言語フレームワークを使用する優れた方法及び装置を得る。
【解決手段】上記言語フレームワークを使用する方法及び装置が本明細書に開示される。一実施形態に係る方法は、少なくとも1つのソフトウェアコンポーネントが組み込まれてたアクティブコンテンツにアクセスするステップであり、各ソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、複数のコンポーネントが、1つ又は複数の外部サービス、1つ又は複数のユーザインターフェースコントロール、1つ又は複数の入力、および、1つ又は複数の出力を表す、当該ステップと、ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む当該ステップと、を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータソフトウェア及びその作成の分野に関し、より具体的には、本発明は、証明可能な安全なやり方で構成することができ、またウェブサービス、デバイス又は他のアプリケーション及びコンポーネントからなり得る、ソフトウェアコンポーネントの環境と対話する能力を提供するソフトウェアコンポーネントに関する。
【0002】
(優先権)
本特許出願は、2007年10月31日に出願された対応する仮特許出願第60/984,266号、「Language Framework and Infrastructure for Safe and Composable Applications」の優先権を主張するものであり、参照により同特許を組み込む。
【背景技術】
【0003】
エンドユーザによる現代の計算タスクは、計算結果及びユーザの嗜好を共有することによってしばしば互いに相互接続される既製のアプリケーション及びウェブサービスを頻繁に使用することを要する。これらのタスクを遂行するために、ユーザは、これらのアプリケーションを手作業でそれぞれカスタマイズし、何らかのバージョンのカット&ペースト操作によって計算結果の共有を可能にしなければならない。この問題は、こうした頻繁なユーザ操作を行うのに多くの費用がかかる携帯電話などのスモールフォームファクタのデバイスでは、ますます深刻になる。
【0004】
使い易さの課題の大部分は、ウェブサービスに対してフロントエンドとして働くアプリケーション又はウェブサイト間、及びその中でナビゲートする際の難しさから生じている。例えば、ユーザが携帯電話によって映画に行く計画を立てたいと望むシナリオについて考慮されたい。そうするために、ユーザは、どんな映画が上映中か調べ、一部の映画についての映画批評を読み、映画及び上映時間を選び、チケットを購入し、ユーザのカレンダーに映画のエントリを加え、友人に詳細をメールする。それらの6つのアクションはそれぞれ、ウェブサイトでクリック又は入力を複数回行うことを要することがある。ユーザは、辛抱できなくなり、その実行を完全にやめてしまうであろう。この使い易さの課題は、計画、消費、コミュニケーションに関する決定など日常生活における決定に向けてアプリケーション及びサービスを統合することが難しいとユーザが感じるので、こうしたアプリケーション及びサービス自体の実行可能性に影響を及ぼす。
【0005】
最近の2つのカテゴリのアプリケーションが、ユーザ体験の向上のために使用することができる品質を実証している。マッシュアップは、複数のウェブアプリケーションを単一のユーザインターフェース(UI:user interface)へと組み合わせて、構成要素となるアプリケーションからのコンテンツを相関させる。例えばpackagemapper.comは、ユーザのパッケージが辿る経路をGoogle(登録商標)マップ上に重ね合わせる。これによって、Google(登録商標)マップは、住所を緯度/経度座標に変換するヤフー(登録商標)サービスと共に、FedEx(登録商標)及びUPS(登録商標)からのパッケージ追跡サービスと組み合わされる。
【0006】
ウィジェット又はガジェットは、より大きいウェブページに組み込み、又は携帯電話にダウンロードすることができる小さいミニアプリケーションである。これらのアプリケーションは通常、外部のウェブサイト(例えばBBC(登録商標)ニュース、ウィキペディア、フェイスブックなど)のサブセットへの単純なインターフェースを提供する。これらのアプリケーションは、ユーザによって、設定又はパラメータのページを介してカスタマイズ可能である。さらに、ほとんどのウィジェットフレームワークプロバイダは、ウィジェットの作成、共有及び適応(adapt)を容易にするためのウェブサイトを提供している。
【0007】
残念ながら、マッシュアップとウィジェットの両方に、これらの手法を用いて展開されるアプリケーションのタイプを制限するセキュリティ問題がある。マッシュアップ及びウィジェットは、有用となるには、ユーザがコンテンツを求めて利用する基礎アプリケーションに対するユーザのアクセス権を有さなければならない。しかし、ユーザは、マッシュアップ/ウィジェットがそれらの権利を用いて何を行うかに対しては制御できない。例えば、マッシュアップ/ウィジェットは、ユーザのコンテンツの削除、ユーザの私的データを第三者のサイトに渡すこと(しかしこれは、セイムオリジン(same−origin)セキュリティポリシーを使用して防止できる)など、基礎サイトへの他の動作を実施し、或いはマッシュアップの場合には、ユーザの私的データをマッシュアップサイトのうちの1つから別のサイトに渡すことがある。
【0008】
最後に、特にモバイルユーザ用の既存のソフトウェア開発プラットフォームは、これらの基本的な問題のいずれにも対処しない。モバイルユーザをターゲットにすることを望む開発者は現在、アプリケーションプラットフォームに対する2つの主要なオプション、様々なバージョンのJava及びBREWなどのネイティブプラットフォーム、又はウェブブラウザを有する。ネイティブプラットフォームは、デバイスのハードウェアへのアクセスを提供するが、不十分な外部接続性サポート及び低レベルAPIを有する。ブラウザは、高水準のプログラミングモデル及び容易な接続性を提供するが、デバイスのハードウェアへのアクセスを有さない。より深刻には、ブラウザベースのアプリケーションはしばしば、クロスサイトスクリプティング(XSS:cross−site scripting)、クロスサイトリクエストフォージェリ(CSRF:cross−site request forgery)及びセッション固定攻撃など、セキュリティ脆弱性を有する。
【発明の概要】
【0009】
構成可能なプログラムのための言語フレームワークを使用する方法及び装置が、本明細書に開示される。一実施形態では、この方法は、少なくとも1つのソフトウェアコンポーネントが組み込まれているアクティブコンテンツ、にアクセスするステップであって、それぞれのソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、1つ又は複数の外部サービス、1つ又は複数のユーザインターフェースコントロール、1つ又は複数の入力、および、1つ又は複数の出力を表す、当該ステップと、前記ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む、当該ステップと、を含む。
【0010】
本発明は、以下に述べられた詳細な説明、及び本発明の様々な実施形態の添付の図面からより完全に理解されるが、しかし、それは、本発明を特定の実施形態に限定するものと解釈すべきでなく、説明及び理解のためのものにすぎない。
【図面の簡単な説明】
【0011】
【図1】モバイルコンポーネントを実施するためのプロセスの一実施形態のフローチャートである。
【図2A】映画モバイルコンポーネントの一実施形態を示す図である。
【図2B】映画モバイルコンポーネントの一実施形態の要素間の接続を示す図である。
【図3】モバイルコンポーネントのための情報フローグラフを示す図である。
【図4】タグ格子要素間の関係を示す図である。
【図5】コンパイルプロセスの一実施形態のフローチャートである。
【図6】映画モバイルコンポーネントを示す図である。
【図7】否定された権利の一例を示す図である。
【図8】コンピュータシステムの一実施形態のブロック図である。
【発明を実施するための形態】
【0012】
本明細書ではモバイルコンポーネント(「モーネント」とも称される)と呼ばれるソフトウェアアプリケーションコンポーネントの新しいクラスについて述べられる。一実施形態では、モバイルコンポーネントは、外部サービスへのユーザインターフェースを提供する。モバイルコンポーネントは、設定、エンドユーザによって調整可能な永続パラメータによってカスタマイズすることができる。一実施形態では、複数ウェブサイト/サービスからのデータを相関させることができる。モバイルコンポーネントは、共有設定及びサービスによってデータが交換される単純なエンドユーザ構成を提供する。したがって、モバイルコンポーネントは、カスタムプログラミングなしに、複数ウェブサイト/サービスからのデータを相関させる。
【0013】
モバイルコンポーネントは、セキュリティモデル上に構築され、このセキュリティモデルは、情報フローについて推論し、外部サービス及びモバイルコンポーネントの環境(他のモバイルコンポーネント及びローカルハードウェア)へのアクセスを制御する。一実施形態では、このモデルによって実施されるポリシーは、ユーザ主導によるものであり、タグ付け機構によって管理される。本明細書では、タグは、信頼のレベル、及びそれぞれのタグ付けされたもの(tagee)とユーザが何を共有したいかに基づいて、ユーザが人々及びサービスを分類するカテゴリ化を表すラベルである。
【0014】
一実施形態では、2つ以上のモバイルコンポーネントが、ユーザの仲介を必要としないマッチング規則を使用して組み合わされる。構成操作の結果は、構成要素を直接組み合わせることによって組み立てられたモバイルコンポーネントと同じ操作振舞い及び能力を有する有効なモバイルコンポーネントとなることが保証される。さらに、モバイルコンポーネントの集合がセキュリティポリシーに個々に従う場合、これらのモバイルコンポーネントの構成もまた、そのセキュリティポリシーに従う。
【0015】
以下の説明では、本発明についてより完全に説明するために、多くの詳細が示されている。しかし、本発明は、これらの具体的な詳細なしに実施できることが当業者には明らかになろう。他の例では、本発明を不明瞭にしないために、よく知られている構造及びデバイスが、詳細にではなく、ブロック図の形で示されている。
【0016】
下記の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する操作のアルゴリズム及び記号表現に関して提示されている。これらのアルゴリズムの記述及び表現は、データ処理技術分野の当業者によって、その仕事の内容を他の当業者に最も有効に伝えるための手段である。本明細書ではアルゴリズムは一般に、所望の結果をもたらす自己一貫性のあるステップシーケンスであると考えられる。諸ステップは、物理量の物理的な操作を必要とするステップである。
【0017】
必ずしも必要でないが、通常これらの量は、格納され、転送され、組み合わされ、比較され、他のやり方で操作することができる、電気的又は磁気的信号の形を取る。主として一般的に使用するために、これらの信号をビット、値、要素、記号、文字、用語、数字などと呼ぶことが時々好都合であることが分かっている。
【0018】
しかし、これらの及び類似の用語はすべて、適切な物理量と関連付けられるものであり、これらの量に適用された便宜的なラベルにすぎないことに留意されたい。他に特に述べられていない限り、以下の議論から明らかであるように、説明全体を通して、「処理する」、「コンピュータ処理する」、「計算する」、「判定する」、「表示する」などの用語を使用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理(電子)量として表されたデータを操作し、コンピュータシステムメモリ又はレジスタ、或いは他のこうした情報記憶、伝送又は表示装置内の物理量として同様に表された他のデータに変換するコンピュータシステム又は類似の電子コンピューティングデバイスのアクション及びプロセスを指すことが理解されよう。
【0019】
本発明は、本発明の操作を実施するための装置にも関する。この装置は、必要な目的のために特別に構築されてもよく、或いはこの装置は、コンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化され、又は再構成された汎用コンピュータを備えてもよい。こうしたコンピュータプログラムに、それだけに限らないが、フレキシブルディスク、光ディスク、CD−ROM及び磁気光ディスクを含めて任意のタイプのディスク、読取り専用メモリ(ROM:read−only memory)、ランダムアクセスメモリ(RAM:random access memory)、EPROM、EEPROM、磁気又は光カードなどのコンピュータ読取り可能記憶媒体、或いは電子命令を格納するのに適した任意のタイプの媒体など、コンピュータ読取り可能記憶媒体内に格納されてもよく、それぞれの媒体がコンピュータシステムバスに結合される。
【0020】
本明細書に提示されたアルゴリズム及びディスプレイは本質的に、特定のコンピュータ又は他の装置に関連しない。様々な汎用システムは、本発明の教示に従ってプログラムと共に使用することができ、或いは、必要な方法ステップを実施するためのより専門の装置を構築することが好都合であると分かり得る。様々なこれらのシステムに必要な構造は、以下の説明から明らかになる。さらに、本発明は、いずれかの特定のプログラミング言語に関して述べるものではない。本明細書に述べられた本発明の教示を実施するために様々なプログラミング言語を使用してもよいことが理解されよう。
【0021】
マシン読取り可能媒体は、マシン(例えばコンピュータ)によって読取り可能な形で情報を格納又は送信するための任意の機構を含む。例えば、マシン読取り可能媒体には、読取り専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリデバイスなどが含まれる。
【0022】
概観
モバイルコンポーネントは、外部サービスへのユーザインターフェースを含むソフトウェアコンポーネントである。一実施形態では、モバイルコンポーネントは、設定、エンドユーザによって調整可能な永続パラメータによってカスタマイズされる。モバイルコンポーネントは、共有設定及びサービスによってデータが交換される単純なエンドユーザ構成を提供する。
【0023】
一実施形態では、モバイルコンポーネントは、外部サービス及びモバイルコンポーネントの環境(例えば他のモバイルコンポーネント及びローカルハードウェア)へのアクセスを制御する情報フローセキュリティモデル上に構築される。一実施形態では、セキュリティモデルによって実施されるセキュリティポリシーは、ユーザ主導によるものであり、タグ付け機構によって管理される。
【0024】
2つ以上のモバイルコンポーネントを、ユーザ介入を必要としないマッチング規則を使用して組み合わせることができる。一実施形態では、この構成操作は、2つの主要特性、すなわち構成閉包及び健全な構成を有する。構成閉包は、他のモバイルコンポーネントから構成されたモバイルコンポーネントが、構成要素を直接組み合わせることによって組み立てられたモバイルコンポーネントと同じ操作振舞い及び能力を有することを必要とする。健全な構成に関しては、モバイルコンポーネントの集合がセキュリティポリシーに関して個々に健全である場合、これらのモバイルコンポーネントの構成もまた健全である。
【0025】
モバイルコンポーネントフレームワークの一実施形態について述べられる。モバイルコンポーネントフレームワークは、コンパイラと、コンポーザと、ランタイム基盤と、サーバ側モバイルコンポーネント共有アプリケーションとを含む。コンパイラは、モバイルコンポーネントのサービス、設定及びUIコンポーネントの高水準記述を受け付ける。高水準記述から、コンパイラは、アドビフラッシュ(Adobe Flash)(登録商標)アプリケーションを生成する。コンポーザは、2つ以上のモバイルコンポーネントのソース記述を受け付け、組み合わされたモバイルコンポーネントを作成し、次いで、この組み合わされたモバイルコンポーネントは、さらにコンパイル又は構成されてもよい。
【0026】
構成されたモバイルコンポーネントは、その後、実行されてもよい。図1は、モバイルコンポーネントを実施するためのプロセスの一実施形態のフローチャートである。このプロセスは、ハードウェア(回路、専用論理など)、ソフトウェア(汎用コンピュータシステム又は専用マシン上で実行されるものなど)、又はその両方の組合せを含んでもよい処理論理によって実施される。
【0027】
図1を参照すると、このプロセスは、ソフトウェアコンポーネントを有するアクティブコンテンツにアクセスする処理論理によって開始する(処理ブロック101)。本明細書では、アクティブコンテンツは、それだけに限らないが、テキスト(例えばIM、電子メールなど)、HTML(例えばウェブページ、HTML電子メールなど)、文書(例えばスプレッドシート、プレゼンテーションなど)、Flash(登録商標)などを含めて、モバイルコンポーネントが組み込まれ得るいずれかのデータ型であってもよい。一実施形態では、ソフトウェアコンポーネントは、アクティビティのシーケンスのワークフローを共に実施する諸コンポーネントを有し、諸ソフトウェアコンポーネントが、1つ又は複数の外部サービス、1つ又は複数のユーザインターフェースコントロール、並びに1つ又は複数の入力及び出力を表す。一実施形態では、ソフトウェアコンポーネントは、名前及びデータ型によって、1つ又は複数の他のソフトウェアコンポーネントに暗黙的にリンクされる。一実施形態では、ソフトウェアコンポーネントは、共有される設定及びサービスによって、1つ又は複数の他のソフトウェアコンポーネントと通信する。
【0028】
一実施形態では、ソフトウェアコンポーネントのコンポーネントは、サービスのカスタマイズ可能ラッパーと、他のソフトウェアコンポーネントにデータを通信するためのカテゴリ化された設定と、カスタマイズ可能なユーザ対話のためのユーザインターフェース層とを備え、コンポーネント間の通信が、宣言的に指定される。一実施形態では、設定及びサービスは、セキュリティマネージャの制御の下、外部位置との対話を容易にする。一実施形態では、セキュリティマネージャは、ユーザ定義のラベル付けに従ってデータ送信装置及び受信装置を特徴付けるセキュリティポリシーを使用して入力と出力の間の情報フローを評価することによってソフトウェアコンポーネントをアクティブ化するかどうか決定する。
【0029】
一実施形態では、複数のコンポーネント内のコンポーネントは、宣言的に相互接続される。一実施形態では、コンポーネントは、複数の外部ソースからのデータを組み合わせる。これらの外部ソースは、Microsoft(登録商標) Outlook(登録商標)のようなアプリケーション、ブラウザ、例えばGPS位置サービスのようなサービス、他のデバイスセンサなどを含んでもよい。一実施形態では、サービスは、コンテンツを提供する呼出し可能のエンティティである。一実施形態では、呼出し可能のエンティティは、ウェブサイトを備える。
【0030】
一実施形態では、コンポーネント間の通信は、設定を介して行われる。一実施形態では、設定はキー値の対を含み、それぞれの設定は入力、出力、或いはソフトウェアコンポーネントについての内部データ、又はコンポーネントの内部のデータである。一実施形態では、入力は、直接ユーザから、他のソフトウェアコンポーネントから、又は環境からデータを取得し、さらに各出力又は内部設定が、ソフトウェアコンポーネント内からのサービス又はユーザインターフェースコントロールから値を取得する。
【0031】
一実施形態では、ユーザインターフェースコントロールは、リモートサービスと通信する。
【0032】
一実施形態では、ソフトウェアコンポーネントの作成は、すべてのソフトウェアコンポーネントサービス及び設定を受け取るステップと、ソフトウェアコンポーネントがその操作に必要とする1つ又は複数の権利のリストを構築するステップであって、権利が入力設定読出しの権利、及びサービス呼出しの権利をうちの少なくとも1つを含む、ステップと、権利のリスト、ソフトウェアコンポーネントの情報フローグラフ及び環境に基づいて1つ又は複数の権利のそれぞれを付与するかどうか評価するステップとを含む。一実施形態では、各権利を付与するかどうか評価するステップは、情報フロー解析に基づく。一実施形態では、それぞれの権利を付与すべきかどうかを評価するステップは、直接情報フローグラフを構築することによって入力と出力の間のリンクを示すグラフをコンパイル時に構築するステップと、直接情報フローグラフを推移情報フローグラフに変換するステップと、推移情報フローグラフをソフトウェアコンポーネント内に格納するステップとを含む。別の実施形態では、入力と出力の間のリンクを示すグラフは、実行時に構築される。一実施形態では、情報フローグラフは個々のコンポーネントによって外面化され、すなわち、個々のコンポーネントの内部が特定の環境にないことがある場合でも外部的には見える。この情報フローグラフは、信頼できるコンポーネントについては手動で構築してもよいし、コンポーネントの静的又は動的解析によって計算してもよい。次いで、フレームワークは、個々の情報フローグラフの推移閉包の計算により、推移情報フローグラフを計算する。情報フローグラフを外面化することによって、個々のコンポーネントは、それぞれ異なるセキュリティポリシーを有するそれぞれ異なる環境で再使用することができる。
【0033】
ソフトウェアコンポーネントが作成された後、処理論理はその次に、ソフトウェアコンポーネントを受け取る(処理ブロック102)。処理論理は、モバイルデバイス、又は遠隔に置かれた他のデバイス又はクライアント、或いはソフトウェアコンポーネントを実行できる他の任意のデバイスの一部であってもよい。
【0034】
処理論理は、受け取られた後、ソフトウェアコンポーネントを実行する(処理ブロック103)。これは、情報フロー注釈ベースのセキュリティモデルを使用してコンポーネント間の通信を仲介するステップを含む。一実施形態では、注釈ベースセキュリティモデルは、タグベースのセキュリティモデルである。一実施形態では、セキュリティモデルは、セキュリティマネージャがコンポーネント間の通信を仲介するように、セキュリティマネージャで実施される。こうした場合、一実施形態では、このプロセスは、外部位置との対話を制御し、情報フローを制御するユーザ定義のセキュリティポリシーを実施するセキュリティマネージャをも含む。一実施形態では、ユーザ定義のセキュリティポリシーの実施は、ソフトウェアコンポーネントがアクティブ化されるとき、セキュリティマネージャによって実施される。一実施形態では、セキュリティポリシーは、その保護必要性によってデータを特徴付ける入力及び出力にタグを割り当てる。一実施形態では、ユーザは、サービス及び設定に手動でタグを付けることによってセキュリティポリシーを指定する。
【0035】
モバイルコンポーネントの要素
一実施形態では、モバイルコンポーネントの要素は、設定と、サービスと、ユーザインターフェース(UI)コンポーネントとを含む。
【0036】
設定
設定は、モバイルコンポーネント内及びモバイルコンポーネント間の通信を容易にするために使用される。一実施形態では、設定は、キー/値の対を使用して実施される。一実施形態では、それぞれの設定は、入力、出力、又はモバイルコンポーネント内部のものである。入力設定は、直接ユーザ入力、他のモバイルコンポーネント、又は環境から値を取得することができる。環境は、ローカルデバイス(例えば位置情報、個人情報など)、又は囲んでいるアプリケーションコンテキスト(例えばブックマーク、電子メール受信者など)からの入手可能な情報を表す設定の集合である。
【0037】
出力及び内部設定は、モバイルコンポーネント内のサービス又はUIコンポーネントから値を得る。一実施形態では、出力設定の値は、他のモバイルコンポーネントから使用できるようになる。
【0038】
サービス
サービスは、モバイルコンポーネントのためにコンテンツを提供する呼出し可能エンティティを表す。これは、外部ウェブサイト、ウェブサービス、又はサービスインターフェース内にラップされたデバイス特徴(ハードウェア又はアプリケーション)を含んでもよい。ウェブサイトのように、サービスは、そのURLによって識別される。このURLは、2つの部分、すなわちセキュリティポリシーによって評価される位置、その後に続くクエリに分割され、このクエリは、特定の要求に固有のデータを含む。サービス呼出しの結果は、XML、HTML又はJSONなどの構造化コンテンツである。
【0039】
UIコンポーネント
モバイルコンポーネント開発者に提供されるユーザインターフェースコンポーネントは、外部のコンテンツへの単純なフロントエンドを迅速に実装することを可能にするように設計される。一実施形態では、サポートされるコンポーネントは、ラベル、ボタン、テキスト入力ボックス及びデータグリッド(サービスからのレコード状のコンテンツを表示する)を含む。モバイルデバイスのフォームファクタが小さいので、一実施形態では、タブ付きナビゲーションを使用して、コンテンツをセグメント化する。タブは厳密にはユーザインターフェースのアーティファクトであり、タブは、それぞれ異なるタブに表示されたUIコンポーネントの相関性を制限するものではない。しかし、一実施形態では、それぞれのUIコンポーネントは、単一のタブに属する。
【0040】
これらの要素は、一例によってさらに理解され得る。
【0041】
以下の例では、映画シナリオについて述べられる。ユーザは、映画鑑賞外出の設定を求めて複数のウェブサイトを使用することを望む。この例では、Google(登録商標)の映画ウェブサイト(google.com/movies)、インターネット映画データベース(imdb.com)及びMovieTickets.comが使用される。映画チケットサイトは、ユーザのクレジットカードを求める。ユーザは、モバイルコンポーネントを信頼するために、サイトに悪意がなく、モバイルコンポーネントがユーザのクレジットカード番号を他のウェブサイトに渡さないこと確信しなければならない。さらに、ユーザは、モバイルコンポーネントがユーザのアドレスブック内の皆にスパム送信しないことを確信しなければならない。
【0042】
モバイルコンポーネントは、使い易さの問題にも対処すべきである。コンテストを使用して、ユーザ対話を有効に活用することができる。例えば、劇場のリストを表示するとき、モバイルコンポーネントは、適切な結果を表示するために、ユーザの位置についての知識を使用することができる。ユーザは、あるウェブサイトで劇場及び映画を選択すると、その後の各サイトでは劇場及び映画を再選択不要とすべきである。
【0043】
図2Aは、映画モバイルコンポーネントの実施形態を示している。2Aを参照すると、それぞれの正方形は、ステップ、サブアプリケーション、又は関与する映画鑑賞外出の設定を表し、ウェブサイト又はサービスとの対話に対応する。表示場所が限られているので、一度に1つのステップだけが示されている。一実施形態では、サブアプリケーション間のナビゲーションは、各サブアプリケーションが表示の最上部にタブを有しており、そのサブアプリケーションのタブを選択するとサブアプリケーションが表示されるタブメタファを使用して遂行される。
【0044】
図2Aの実線矢印は、サブアプリケーションと外部サービスの間のリンクを表している。破線矢印は、サブアプリケーション間のコンテキストの推移を表している。サブアプリケーション201からの選択された映画館は、映画選択サブアプリケーション202、チケット購入サブアプリケーション204、及びカレンダー/電子メールサブアプリケーション205に渡される。選択された映画及びショータイムは、映画レビューサブアプリケーション203、チケット購入サブアプリケーション204、及びカレンダー/電子メールサブアプリケーション205に渡される。
【0045】
上述された映画の例では、現在位置(例えば郵便番号又は緯度/経度)、選択された映画館/映画/上映時間、及びユーザのクレジットカード情報についての設定が使用される。また、それぞれの外部のウェブサイトは、ユーザの電子メールアプリケーション、別個のタブが与えられた映画モバイルコンポーネント用の各ウェブサイトと共に、サービスとして表される。
【0046】
モバイルコンポーネント要素の接続
一実施形態では、モバイルコンポーネントの要素は、宣言的なスタイルで相互接続される。設定は、データグリッド内の選択された記録から、又はサービス呼出しの結果からの値を抽出することによって値を取得することができる。一実施形態では、サービス呼出しの結果から値を抽出することは、XPathのような表記法を使用して実施される。同様に、UIコンポーネントは、設定、サービス及び他のUIコンポーネントからそれらの値を得ることができる。例えば、ユーザの郵便番号が入力設定である場合、ラベルは、以下のようにこの設定の値を含み得る。
Current movies for zipcode ${ZipCode}
この${ZipCode}文字列は、ZIPCODE設定の値で置き換えられる。
【0047】
一実施形態では、サービスの位置及びクエリは、類似のテンプレート表記法を使用して、設定又はUIコンポーネントからの値でパラメータ化される。例えば、特定の郵便番号についてのリストを得るためにGoogle(登録商標)映画を呼び出すサービスは、google.com/movieの位置、及び、?near=${ZipCode}のクエリを使用することがある。要求を行う場合、サービスはまず、${ZipCode}文字列をZIPCODE設定の値で置き換え、次いで、URLを得るために位置とクエリを連結する。したがって、94304の郵便番号が与えられると、サービスは、google.com/movies?near=94304に要求を送る。図2Bは、Google(登録商標)と対話する映画モバイルコンポーネントの一実施形態のサブセットについてのための要素の相互接続を示している。図2Bを参照すると、要素間のデータのフローを示すために矢印が使用されている。ZIPCODE設定211は、Google(登録商標)劇場サービス241、及び劇場タブ251上のラベルによって使用される。次いで、Google(登録商標)劇場サービス241からの結果が、データグリッド231によって、同じタブ、すなわち劇場タブ251上に表示される。一実施形態では、それぞれのレコードは、特定の劇場の名前及びアドレスを表示する。選択された劇場の名前は、劇場出力設定212に格納される。劇場出力設定212は、第2のクエリを構築するためにGoogle(登録商標)映画サービス242によって使用され、この第2のクエリは、指定された劇場で上映されている映画を取り出す。さらに、劇場出力設定が、映画タブ252上のラベルに含まれる。Google(登録商標)映画サービス242によって返される結果は、第2のデータグリッド232を使用して表示される。選択された映画の名前は、映画出力設定221を介して出力される。
【0048】
選択された映画の詳細は、チケット購入タブ253から入力される購入量と共に、映画チケットサービス243に渡される。購入のためのクレジットカード番号は、入力設定213から映画チケットサービス243に渡される。一実施形態では、映画チケットサービス243は、ユーザが「購入」ボタン261を押下するまで実際には呼び出されない。
【0049】
変更への応答
ユーザが郵便番号入力設定211又は選択された劇場を変更することがあるならば、変更は、モバイルコンポーネントにも反映される。本明細書に述べられたモバイルコンポーネントフレームワークは、どんな設定、サービス結果またレコード選択も変化することがあると想定している。これに対処するために、モバイルコンポーネントコンパイラは、モバイルコンポーネント要素間の依存性を追跡し、変更が生じる場合は、依存した要素をリフレッシュするためにイベントドリブンコードを自動的に生成する。例えば、ユーザが異なる劇場を選択する場合、劇場設定212が変更され、選択された映画は無効になる。一部の状況(購入を行うなど)では、ユーザからの明示的な入力なしにはサービス要求が開始されないモバイルコンポーネントが構築される。この状況に対処するために、UI内のボタンコントロールが、サービスに接続されてもよい。ボタンがサービスに接続される場合、呼出しは、ボタンが押下され、サービスが有効な入力を有するまで開始されない。
【0050】
セキュリティモデル
一実施形態では、モバイルコンポーネントは、設定及びサービスによって外部(潜在的に安全でない)世界と対話する。一実施形態では、ハイレベルのモデルでは、モバイルコンポーネントは、UIによって、又はCPUの過度な消費によって、サービスを否定することはできない。したがって、主要なセキュリティ問題は、外部世界とのこれらの対話である。問題に対処するために、それぞれのモバイルコンポーネントは、論理サンドボックス内で実行され、そのすべての外部対話が制御される。これは、本明細書ではセキュリティマネージャと呼ばれるモバイルコンポーネント基盤コンポーネントによって実施される。一実施形態では、セキュリティマネージャは、モバイルコンポーネントコンパイラによってモバイルコンポーネント定義に含まれる共有コードである。別の実施形態では、セキュリティマネージャは、モバイルデバイス上で(例えばライブラリ、又はオペレーティングシステムの一部として)出荷されるソフトウェアである。
【0051】
権利
外部対話を実施する能力は、権利と表される。あるモデルでは、以下の2つのタイプの権利が追跡される。入力設定を読み出す権利、及びサービスの位置を呼び出す(したがってその結果を読み出す)権利。モバイルコンポーネントが開始するとき、セキュリティマネージャは、すべてのモバイルコンポーネントのサービス及び設定をレビューし、モバイルコンポーネントがその操作に必要とする権利のリストを構築する。要求された権利のリスト、モバイルコンポーネントの情報フローグラフ及びモバイルコンポーネントの現在の環境はすべて、権利が付与され得るかどうか評価するために使用される。この決定を行う際、セキュリティマネージャは、各サービスについてタグを返すポリシーコンポーネントに問い合せる。一実施形態では、セキュリティポリシーは、入力として設定及びサービスURLのリストを取り、それをタグのリストに写像する。一実施形態では、ポリシーマネージャは、各設定及びURLについて事前に構成されたタグを格納するデータベースである。クエリの結果は、オールオアナッシングの決定である。一実施形態では、1組の権利が一緒に付与され得ない場合、モバイルコンポーネントはディセーブルされ、どの権利が付与され得ないか説明する適切なエラーメッセージがユーザに提示される。
【0052】
サービス位置は設定を含んでもよく、この設定は、モバイルコンポーネントが開始された後、変更されることがある。したがって、モバイルコンポーネントが必要とする1組の権利も変化することがある。これに対処するために、セキュリティマネージャは、サービス位置でどの設定が使用されるか追跡する。一実施形態では、これらの設定のうちの1つが変化する場合は、要求された1組の新しい権利が構築され評価され、そうではなく、新しいセットが付与され得ない場合は、モバイルコンポーネントはディセーブルされ、設定変更によってセキュリティ問題が生じたことを知らせるフィードバックが提供される。
【0053】
情報フロー
一実施形態では、セキュリティマネージャは、情報フロー解析に基づいて1組の権利を付与するかどうか決定する。この解析は、各入力の可能な宛先を見て、それらの宛先がセキュリティポリシーによって許容されるかどうか判定する。
【0054】
情報フロー解析をイネーブルするために、モバイルコンポーネントの入力と出力の間の(推移的)リンクを示すグラフG=(V,E)が、コンパイル時に構築される。モバイルコンポーネントの入力は、モバイルコンポーネントの入力設定及びサービス呼出しからの応答を含む。モバイルコンポーネントの出力は、モバイルコンポーネントの出力設定及びサービスパラメータである。一実施形態では、グラフは、以下のように構築される。まず、各設定及びUIコンポーネントについて頂点を有する直接情報フローグラフが構築される。各サービスについて、2つの頂点、すなわちアウトバウンド要求について1つ、及び応答について1つが作成される。入力頂点はIでラベル付けされ、出力頂点は0でラベル付けされる。エッジは、以下のように作成される。
1.サービスがその位置又はクエリ内のテンプレートパラメータとして設定を使用する場合、エッジは、設定からサービスの要求頂点まで追加される。
2.設定がその値をサービス呼出しの応答から取る場合、エッジは、サービスの応答頂点から設定まで追加される。
3.UIコンポーネントがその値をサービス呼出しの応答から取る場合、エッジは、サービスの応答頂点からUIコンポーネントの頂点まで追加される。
4.UIコンポーネントがその値を設定から取る場合、エッジは、設定からUIコンポーネントまで追加される。
5.設定がその値をUIコンポーネントから取る場合、エッジは、UIコンポーネントから設定まで追加される。
【0055】
次いで、直接情報フローグラフは、一連の操作を使用して推移情報フローグラフに変換される。まず、すべてのエッジの推移閉包が取られ、次いで、エッジA→B、及びB→Cである場合、エッジA→Cが追加される。次いで、I又はOでラベル付けされていないどんな頂点も、こうした頂点で開始又は終了するあらゆるエッジと共に削除される。最後に、Oとラベル付けされた頂点間のエッジも削除される。結果として生じる推移情報フローグラフは、モバイルコンポーネントに格納され、モバイルコンポーネントが実行時に使用できるようになる。
【0056】
図3は、図2Bに示されたモバイルコンポーネント接続のための情報フローグラフを示している。図3を参照すると、2つのGoogle(登録商標)サービスは、それぞれ2つのノード、すなわち要求について1つ、及び応答について1つを有する。Google(登録商標)劇場サービス241応答で開始する2つのエッジは間接的であり、すなわち、2つのエッジは、劇場データグリッドコンポーネント231を通過し、この劇場データグリッドコンポーネント231は、グラフから削除される。劇場出力設定212からの(冗長)リンク及びGoogle(登録商標)映画要求も削除される。
【0057】
映画チケットサービス243は、データを返さず、ステータス応答だけを返すので、入力ノードだけを有する。クレジットカード設定213は、クレジットカード設定213を映画チケットサービス243に接続する1つのアウトバンドエッジだけを有する。したがって、クレジットカード番号は、他のウェブサイトのいずれにも渡されない。
【0058】
タグ
ユーザのクレジットカード番号が他のウェブサイトに渡されない情報フロー解析について示した。しかし、映画チケットサイト自体を信頼できることがどのようにして分かるだろうか。また、ユーザは、ユーザの郵便番号をウェブ上のランダムないずれかのサイトに配布することに快く思わないかもしれない。他のウェブサイトを信頼できることがどのようにして分かるだろうか。これらは、セキュリティポリシー決定である。一実施形態では、これらの決定を評価するために、入力及び出力が、タグ集合でラベル付けされる。タグは、サービス及び人々のカテゴリを表し、暗黙的には、ユーザのデータのカテゴリを表す。タグ集合Tが与えられると、タグ集合が表す基礎カテゴリを意味するために、
【数1】


が書かれる。出力O…Oへと流れる入力Iが与えられると、セキュリティマネージャは、以下を保証する。
【数2】


換言すると、入力から流れるすべての出力は、入力タグ集合内に表されたカテゴリを有さなければならない。これを保証することができる場合、モバイルコンポーネントは、そのタグラベル付けに関して健全であると見なされる。これを保証することができない場合、セキュリティマネージャは、モバイルコンポーネントに権利を付与しない。
【0059】
入力及び出力の実際のラベル付けは、セキュリティポリシーによって行われる。これは、セキュリティマネージャとは別個のコンポーネントであり、以下により詳細に論じられる。
【0060】
タグ格子
一実施形態では、個々のタグは、入力又は出力についてすべての可能なカテゴリを列挙するのではなく、カテゴリの集合を表す。これを行うために、本明細書ではθと呼ばれるタグの格子(すなわち半順序)が定義される。タグtopは、すべての可能なカテゴリの集合を表し、タグbottomは、空集合を表す。ユーザ又はセキュリティポリシーによって定義され得る他のタグは、半順序においてこれらの2つのタグの間に含まれる。例えば、セキュリティポリシーは、機密の財務情報用のタグfinancialを使用することができる。2項述語⊆は、θがθに等しい場合又は格子によって確立された半順序内でθがθの前に現れる場合、θ⊆θについて真(true)を返す。この格子は、θ、θ、θをθからの格子の任意の要素として、以下の恒等式に従う。
θ⊆top = 真(true)
bottom⊆θ = 真(true)
θ⊆θ = 真(true)
【0061】
図3は、タグ格子の要素の間の関係の一例を示している。図3を参照すると、グラフ内の頂点が、(セキュリティポリシーによって)タグでラベル付けされている。Google(登録商標)劇場サービス241及びgoogle映画サービス242の入力は、publicとラベル付けされており、モバイルコンポーネント作成者(ユーザ)が、非特定的(non−identifying)個人情報(例えば郵便番号)で入力を信頼することを意味している。これらのサービスからの応答に制約は課されず、したがって、これらのサービスは、topでラベル付けされる。映画チケットサービス243は、クレジットカード情報で信頼され、したがって、financialとラベル付けされる。すべての設定は、クレジットカード213を除いてpublicとラベル付けされる。
【0062】
このモバイルコンポーネントに権利を付与するかどうか評価するために、セキュリティマネージャは、各エッジにおけるソースのタグとターゲットのタグとを比較する。各エッジについて、ターゲットのタグ⊆ソースのタグである場合、モバイルコンポーネントは健全である。この場合、以下の比較が得られる。
public⊆public 劇場サービス要求
public⊆top 劇場サービス応答
public⊆top 映画サービス要求
public⊆top 映画設定
financial⊆top チケットサービス要求
financial⊆financial チケットサービス要求
これらの比較はすべて真であり、したがって、モバイルコンポーネントは、このラベル付けに関して健全である。
【0063】
連絡先タグ付け
一実施形態では、タグは、外部のウェブサイトとの対話を容易にすることに加えて、ユーザの友人及び同僚との対話を容易にする。これを行うために、ユーザ連絡先が、タグ格子に組み込まれる。それぞれの連絡先は、格子の要素になる。さらに、ユーザは、各連絡先を追加のタグでラベル付けして、特定のカテゴリ内のその連絡先のメンバーシップを示すことができる。例えば、ある連絡先は、friendsやcoworkersなどのタグを有し得る。連絡先がこれらのカテゴリジ化タグのうちの1つでラベル付けされる場合、連絡先の関連する格子要素は、タグ格子順序においてカテゴリの前に現れる。例えば、サリー(sally)及びスティーブ(steve)がfriendsでタグ付けされる場合、sally⊆friendsであり、steve⊆friendsである。図4は、スティーブがfriendsでタグ付けされ、メアリー(mary)がcoworkersでタグ付けされ、サリーがfriends及びcoworkersでタグ付けされる場合の格子要素間の関係を示している。
【0064】
タグ集合の格子
セキュリティポリシーは、入力及び出力をタグの集合でラベル付けすることができる。これは、人々の集合(例えばメアリー、サリー、スティーブ)に言及するとき、特に有用である。この情報フロー解析においてこれに対処するために、タグ格子は、タグ集合に拡張される。この格子の各要素θsetは、最大要素
【数3】


={top}及び最小要素⊥={bottom}を有するタグの集合である。単一のタグ格子比較演算子≡に関して要素順序演算子⊆setが、以下のように定義される。
【数4】


換言すると、タグ集合Tがタグ集合T以下になるには、Tの各要素が、T内の要素によって支配され、又はそれに等しくなければならない。
【0065】
一実施形態では、タグ集合格子の要素は冗長情報を含んでいてもよい。例えば、t⊆tであるようにタグt及びtが与えられると、タグ集合格子要素{t}及び{t,t}は、⊆setに関して同値である。タグ集合の冗長な表現を回避するために、関数のノルム、θset→θsetを定義し、この関数ノルムによって、任意の集合格子要素の非冗長表現が返される。
【数5】


タグ集合格子が与えられると、モバイルコンポーネントが健全であるための要件について記述することができる。セキュリティポリシーの出力は本明細書ではタグ環境と呼ばれ、このタグ環境は、モバイルコンポーネントの入力及び出力を、タグ集合格子からの要素でラベル付けする。定義1(健全性)入力集合I、出力集合O及び情報フローグラフG=(V,E)が与えられると、Mは、タグ環境Eに関して健全であり、
【数6】


の時且つその時に限り、I∪O→Θsetである。換言すると、グラフ内の各エッジでは、出力タグ集合は、入力タグ集合以下でなければならない。
【0066】
セキュリティポリシー
モバイルコンポーネントのためのタグ環境の作成は、セキュリティポリシーによって行われる。一実施形態では、それぞれ異なるポリシーの使用を可能にするために、これは、故意にセキュリティマネージャから離した状態に保たれる。セキュリティポリシーを実施するためのいくつかの可能な機構を使用してもよい。一実施形態では、セキュリティポリシーは、ユーザに手動でタグをサービス及び設定に付けさせることによって実施される。これによって、ユーザに、そのモバイルコンポーネントの操作に対する最大の制御権が与えられる。別の実施形態では、セキュリティポリシーは、1つ又は複数の評判の高い外部サービスにホワイトリスト及び/又はブラックリストに基づいてサービスについてのタグを返させることによって実施される。さらに別の実施形態では、セキュリティポリシーは、第三者、信頼できる機関によって暗号署名されたそれ自体のタグをサービスに返させることによって実施される。別の実施形態では、セキュリティポリシーは、上記手法の組合せに基づいて、タグを決定するために使用され得る規則べースのポリシー言語によって実施される。これらすべては、単独で使用してもよいし、互いに組み合わせて使用してもよいことに留意されたい。
【0067】
一実施形態では、第1と第2の手法の組合せが使用され、ユーザは、設定のためのそれ自体のタグを定義し、サービスは、評判のサービスによってラベル付けされる。環境によって定義された設定は、システムによって決定された不変のタグを有する。環境設定は、その設定のモバイルコンポーネントのラベルが、⊆set関係単位に互換性がある場合にだけ、モバイルコンポーネントが使用できるようになる。
【0068】
タグ多相性
サービスへのタグ付けを、そのサービスによって行われる特定のクエリに基づいて行いたいと望むことがある。例えば、特定の連絡先についてメッセージを送信/受信するとき、関連のサービスを連絡先のタグでラベル付けさせることが有用である。一実施形態では、これは、サービスの位置の一部として連絡先(例えばURLは、mail.org/myemail/steveのようなものであってもよい)を含めることによって遂行される。次いで、セキュリティポリシーは、要求から名前を抽出し、名前をサービスのタグとして返すことができる。これは、文献『A.Myers他、「A Decentralized Model for Information Flow Control」、SOSP’97、129〜142頁、ACM Press、1997年』において紹介されたラベル多相性にちなんで、タグ多相性と呼ばれている。
【0069】
モバイルコンポーネント構成
一実施形態では、より小さい複数のモバイルコンポーネントが構築され、より大きいモバイルコンポーネントを作成するために組み合わされる。これは、構成操作によって行われる。例えば、図2Aの映画モバイルコンポーネントの各タブは、別個のモバイルコンポーネントとして実施され得る。モバイルコンポーネントは、十分に小さく一般的である場合、新しいコンテキストで再使用することができる。例えば、上述された映画モバイルコンポーネント内のコンポーネントを再使用するいくつかの可能性がある。第1に、ユーザが映画を選択するのに別のウェブサイトを使用することを望む場合、そのサイトから映画を選択するためのモバイルコンポーネントが構築され、次いで、既存の映画レビュー及びチケット購入モバイルコンポーネントと共に使用される。第2に、カレンダーモバイルコンポーネントは、日付、時間及び位置を提供する他の任意のモバイルコンポーネントと共に使用され得る。第3に、映画館への道順を提供するために、地図及び道順モバイルコンポーネントが、映画モバイルコンポーネントと共に構成され得る。
【0070】
暗黙リンク
一実施形態では、構成は、暗黙のリンクを使用して遂行される。これによって、ユーザは、単純なUlアクションが必要とされるモバイルデバイス上でモバイルコンポーネントを構成することを含めて、それ自体のモバイルコンポーネントを構成することができる。
【0071】
一実施形態では、ソースモバイルコンポーネントの構成要素は、名前及びデータ型によって暗黙にリンクされる。例えば、あるモバイルコンポーネントが文字列(string)タイプの劇場出力設定を提供し、別のモバイルコンポーネントが文字列(string)タイプの劇場入力設定を提供する場合、これらの設定は、合成モバイルコンポーネントにマージされる。したがって、共有される設定及びサービスは、モバイルコンポーネント間の通信機構になる。一実施形態では、2つのモバイルコンポーネントが互いに互換性のない設定又はサービスを有する(例えば名前は同じであるが、データ型はそれぞれ異なる)場合、適切なコンポーネントは別個にされ、競合を避けるためにリネームされる。一実施形態では、ソースモバイルコンポーネントの個々のUIコンポーネントは、直接にはリンクされない。モバイルコンポーネントユーザインターフェースがタブ付きナビゲーションによって編成されるので、ユーザインターフェースは、単に個々のタブ集合の和集合を取ることにより組み合わせることができる。
【0072】
静的対動的構成
1組のモバイルコンポーネントは、コンパイル時に静的に構成することも、実行時に動的に構成することもできる。一実施形態では、静的構成は動的なリンク機構又はコードの実行時ロードを必要としないので、静的構成が使用される。しかし、モバイルコンポーネントの動的構成も同様に使用することができる。
【0073】
構成規則
他のモバイルコンポーネントからモバイルコンポーネントを構成するために使用される複数の規則がある。
【0074】
マージ設定
一実施形態では、モバイルコンポーネントを構成するために、すべてのソースモバイルコンポーネントからの設定がまず、単一の出力集合にマージされる。下記のアルゴリズム1は、すべてのソースモバイルコンポーネントからの設定を第1の出力集合にマージするためのプロセスの一実施形態を示している。一実施形態では、静的構成を使用する場合、モバイルコンポーネントコンパイラは、設定をマージするためのプロセスを実施する。別の実施形態では、動的構成を使用する場合、設定をマージするためのプロセスは、実行時に、モバイルデバイス上で実行されるソフトウェアによって実施される。アルゴリズム1を参照すると、アルゴリズムは、その入力として、ソースモバイルコンポーネントの集合Mを取り、ただし、それぞれのモバイルコンポーネントM∈Mは、設定の集合、M.Settingsを有し、Settings、合成モバイルコンポーネント内の設定名からその定義への写像、並びにNameMapset、元のソースモバイルコンポーネント内の設定名(元のソースモバイルコンポーネントのモバイルコンポーネント名が先頭に付けられた)からターゲットモバイルコンポーネント内の対応する名前への写像を返す。
【0075】
それぞれの設定は、ターゲットモーメントに直接追加し、リネームし、又は別の設定とマージすべきかどうか確かめるために検査される。この名前を有する設定が以前に見られていない場合、設定は、(多分、後にマージするために)出力集合に直接追加される。設定が内部的であり(内部設定が秘密に保たれ)、又は出力集合内の同じ名前の既存の設定と互換性がない場合、新しい設定は、新しい名前で追加され、元の名前の先頭にソースモバイルコンポーネントの名前を付けることによって作成される。最後に、同じ名前を有する出力集合内に互換性のある(両方が出力とは限らないが、同じデータ型の)モバイルコンポーネントがある場合、2つがマージされる。ソースモバイルコンポーネントの入力(input)設定が別のモバイルコンポーネントの出力(output)設定によって提供され得る場合、その2つは、出力設定にマージされる。
【数7】

【0076】
マージサービス
一実施形態では、サービスは、類似のやり方でマージされる。下記のアルゴリズム2は、サービスをマージするためのプロセスを示している。アルゴリズム2を参照すると、各ソースモバイルコンポーネントの各サービスは、検査され、同じ名前を有する他のいずれかのサービスと比較される。2つのサービスは、名前、位置及びクエリが一致する場合、組み合わされ、ただし、組み合わされるとは、2つのサービス定義が同値であり、合成モバイルコンポーネントにおいて1つだけが使用されることを意味する。こうした場合、元の(構成されなかった)モバイルコンポーネント内の他のサービスへのどんな参照も、合成モバイルコンポーネント内で使用されるサービス定義にリネームされる。さらに、それらは両方とも、ユーザインターフェース内のトリガボタンに接続されてはならない。同じ名前の2つのサービス間の競合は、サービスのうちの1つをリネームすることによって解決される。このプロセスの結果は、Services、ターゲットサービス名からターゲットサービス定義への写像、及びNameMapsvc、(接頭語付き)ソースサービス名からターゲットサービス名前への写像である。ターゲットサービス定義は、合成モバイルコンポーネント内で使用される定義である。
【数8】

【0077】
UIコンポーネントのマージ
一実施形態では、UIコンポーネントは、各コンポーネントの名前の先頭にそのソースモバイルコンポーネントの名を付けることによってマージされる。次いで、リネームされたこれらのコンポーネントは、競合のない単一のセットへ組み合わせることができる。
【0078】
要素参照の解決
上記アルゴリズムを使用してソースモバイルコンポーネントの設定、サービス及びUIコンポーネントが組み合わされた後、それらの間のどんな参照も解決される。一実施形態では、これは、(アルゴリズム1を使用して作成された)NameMapset及び(アルゴリズム2を使用して作成された)NameMapsvcを使用して行われる。これらの2つのデータ構造は、そのソースモバイルコンポーネントが先頭に付けられた設定/サービス名から、構成されたモバイルコンポーネント内の関連する設定/サービス用に使用される名前への写像である。
【0079】
参照された設定又はサービスがNameMap_set又はNameMap_svcによって、そのソースモバイルコンポーネントが先頭に付けられた名前に写像される場合、この名前は、参照要素内で使用される。これは、設定又はサービスが他のいずれかのソースモバイルコンポーネントの設定又はサービスとは共有されないことを示す。参照された設定又はサービスがその元の名前(接頭語なし)に写像される場合、この元の名前は、参照内に保たれる。UIコンポーネントへのすべての参照は、接頭語付きの名前を参照するように変更される(例えば、モバイルコンポーネントm1内にUIコンポーネント「MovieLabel」への参照がある場合、これは、構成モバイルコンポーネント内では、「m1.MovieLabel」になる)。
【0080】
構成の特性
一実施形態では、モバイルコンポーネントは、より小さいモバイルコンポーネントを構成することによって構築される場合、基礎となる設定、サービス及びUIコンポーネントから直接構築されたモノリシックのモバイルコンポーネントと同じように動作する。この特性は、本明細書では構成閉包と呼ばれる。これは、2つのより単純な特性を実証することによって真であると示される。第1に、モバイルコンポーネントは、分割し、次いで、元のモバイルコンポーネントに同値なモバイルコンポーネントを生じさせるように構成することができる。第2に、小さい例外を除いて、モバイルコンポーネントは、同値なモバイルコンポーネントがもたらされる任意の順序で構成することができる。
【0081】
モバイルコンポーネント同値性
第1に、モバイルコンポーネントの同値性は、グラフ同型性に基づいて定義される。2つのモバイルコンポーネントM及びMは、Mの要素とMの要素の間で、リンクされた要素のそれぞれの対(e,e)∈βについて、以下になるように全単射βを構築できる場合、同型である。
1.eとeは同じ要素タイプ(設定、サービス又はUIコンポーネント)のものであり、同じ内部特性(例えばデータ型、方向)を有する。
2.eからMの別の要素e’への各リンクについて、(e’,e’)∈βになるようにeからMのe’への対応するリンクがある。
【0082】
モバイルコンポーネント分割及び構成
一実施形態では、少なくとも2つのUIタブを含むモバイルコンポーネントMは、以下のように、独立した2つのモバイルコンポーネントM及びMに任意に分割することができる。
Mが1組のタブTを有するならば、これらのタブのサブセットTをモバイルコンポーネントMに、残りのタブT\TをMに置く。それぞれのUIコンポーネントは、その関連するタブと同じモバイルコンポーネントに置かれる。
【0083】
サービスの応答は、UIコンポーネントによって消費される場合、そのコンポーネントと同じモバイルコンポーネントに置かれる。応答が複数のUIコンポーネントによって消費される場合、サービスは、両方のモバイルコンポーネントに追加される。残りのサービスは、モバイルコンポーネント間で任意に分割される。
【0084】
入力設定は、入力設定の値を消費するすべてのモバイルコンポーネント内に置かれる。出力及び内部設定は、出力及び内部設定の値を生成するサービス又はUIコンポーネントを含むモバイルコンポーネントに置かれる。出力又は内部の設定の値があるモバイルコンポーネント内で生成されるが、他方のモバイルコンポーネント内で使用される場合、設定は、値が使用されたモバイルコンポーネントへの入力として追加される。ソース設定が内部的であった場合、それは、出力になるように促される。
【0085】
必要な入力が提供される限り、モバイルコンポーネントM及びMはそれぞれ独立して機能することができる。モバイルコンポーネントM及びMが単一のモバイルコンポーネントM’内に構成される場合、M’及びMは同型である。
【0086】
構成順序付け
一実施形態では、モバイルコンポーネントの順序付きリスト、M=[M,M,…M]が与えられると、2n−1内これらのモバイルコンポーネントは、元の順序を依然として保ちながら、それぞれ異なるやり方で構成することができる。例えば、[M,M,M]は、M+M+M、(M+M)+M又はM+(M+M)のように単一のモバイルコンポーネントに構成することができる。それらの構成はそれぞれ、他のすべての構成に対して同型である。任意順序内のモバイルコンポーネントの構成もまた、入力として第3のモバイルコンポーネントによって使用される同じ出力名及びデータ型を有する設定を2つのモバイルコンポーネントが有さない場合は同型である。その場合、他のモバイルコンポーネントによってどの出力が使用されるかの選択は、モバイルコンポーネントが構成される順序に依存する。競合する出力のうちの1つが、この競合を回避するために構成前にリネームされる場合、順序独立が回復される。
【0087】
健全な構成
本明細書に述べられた構成アルゴリズムの別の特性は健全な構成であり、すなわち、モバイルコンポーネントM、M…Mの集合がタグ環境Eに関して個々に健全である場合、これらのモバイルコンポーネントの構成M’も健全である。
【0088】
これは、M’について推移情報フローグラフGm’を見ることによって真であると示され得る。写像Mは、M’の各頂点Vからソースモバイルコンポーネント内の1組の頂点vへの写像が、各ソースモバイルコンポーネントからのv内にせいぜい1つの頂点があり、v∪{V}内のすべての頂点が同じタグ集合でレベル付けされるように定義される。さらに、各エッジ(V→V)∈Gm’は、Vi1∈M[V]及びVi2∈M[V]であるようにソースモバイルコンポーネントMのグラフ内に対応するエッジ(Vi1,Vi2)∈Gを有する。したがって、tagset(V)=tagset(Vi1)及びtagset(V)=tagset(Vi2)である。それぞれのソースモバイルコンポーネントが健全であるので、tagset(Vi2) ⊆set tagset(Vi1)であることが分かる。したがって、Gm’内の各エッジについて、tagset(V) ⊆set tagset(V)は真(true)であり、構成されたモバイルコンポーネントは、Eに関して健全である。
【0089】
モバイルコンポーネントフレームワークの一実施形態は、ターゲットプラットフォームとしてアドビフラッシュプレーヤーを使用してプロトタイプが作られている。図5は、モバイルコンポーネントがどのようにコンパイルされるか示すコンパイルプロセスの一実施形態のフローチャートである。このプロセスは、ハードウェア(回路、専用論理など)、ソフトウェア(汎用コンピュータシステム又は専用マシン上で実行されるものなど)、又は両方の組合せを備えてもよい処理論理によって実施される。図5を参照すると、モバイルコンポーネント501が、以下の2つのファイル、すなわちモバイルコンポーネント501によって使用される設定及びサービスについて記述するメタデータファイル502、並びにモバイルコンポーネントのUIコンポーネントについて記述するUI記述ファイル503内に指定されている。一実施形態では、UI記述ファイル503は、AdobeのフレックスXML言語(埋込みコードなし)のサブセットを使用する。これによって、UIをAdobeの視覚デザイナーを使用して構築することが可能になる。さらに、画像ファイル504が、モバイルコンポーネント内に含まれてもよい。上述されたように、設定、サービス及びUIコンポーネントは、互いに参照してもよい。
【0090】
モバイルコンポーネントコンパイラ510は、フラッシュソース520を生成するために、モバイルコンポーネントソース501をコンパイルする。完了すると、モバイルコンポーネントは、アドビフレックス(Adobe Flex)(登録商標)アプリケーション521に変換される。それぞれの設定及びサービスは、このアプリケーション内のオブジェクトになり、下流のデータ変更に基づいてオブジェクトをリフレッシュ/無効化するために、イベントドリブンのコードが追加される。セキュリティマネージャを含むクライアント側基盤522は、ActionScript(フラッシュプレーヤー用のAdobeバージョンのJavaScript)内で実装され、モバイルコンポーネントにコピーされる。ユーザがモバイルコンポーネントの入力設定の値を変更することを可能にするために、設定と呼ばれる追加のタブが、各モバイルコンポーネントに追加される。
【0091】
次に、AdobeのFlexコンパイラ530が、コンパイルされたフラッシュファイル531を作成するために実行される。このコンパイルされたファイルは、任意のフラッシュプレーヤーによって、典型的にはブラウザプラグインとして実行することができる。一実施形態では、別個のプログラムがモバイルコンポーネント構成を実装することに留意されたい。そのプログラムは、その入力として、任意の数のモバイルコンポーネントソース定義を得る。これらの定義は、上述された手法を使用して単一の出力定義へと組み合わされる。次いで、上述されたように、結果として生じるモバイルコンポーネントはコンパイルすることができる。
【0092】
映画モバイルコンポーネント
本明細書に述べられたフレームワークの一実施形態では、Google(登録商標)映画及びインターネット映画データベースからのライブデータの読出しを含めて、映画モバイルコンポーネントのサブセットが生成されている。これは、図6に示されている。図6を参照すると、チケットは、シミュレートされた電子商取引ウェブサービスを呼び出すことによって購入される。これらのウェブサイトから関連するコンテンツを抽出する一実施形態では、別個のプロキシサーバが、XSLT及びJavaを使用して適切なコンテンツを抽出し、次いでモバイルコンポーネントにXML文書を返す。
【0093】
一実施形態では、プロキシサービスのホスト名は、モバイルコンポーネントの入力設定である。この設定は、プロキシを使用する各サービスの位置の一部である。したがって、プロキシが変更されるとき、セキュリティポリシーは、モバイルコンポーネントがそのプロキシを使用できるかどうか確かめるために自動的に再評価される。セキュリティチェックが失敗する場合、モバイルコンポーネントは、設定タブを除いて、ディセーブルされる。図7は、ユーザがプロキシをuntrusted.comと設定しようと試みたいずれかの例を示しており、このuntrusted.comはセキュリティポリシーによって否定されている。こうした場合、セキュリティマネージャによって権利が付与され得ないことを示すウィンドウが表示される。
【0094】
モバイルコンポーネント共有アプリケーション
一実施形態では、モバイルコンポーネントは、ウェブベースのアプリケーションを使用して共有し、構成し、編成することができる。使用可能なモバイルコンポーネントのリストは、アプリケーションのデータベース内に維持され、ユーザに対してアイコンの選択として表示される。ユーザは、モバイルコンポーネントを実行し、構成し、又は編成することを選択することができる。モバイルコンポーネントを実行すると、関連するフラッシュファイルがユーザのブラウザにダウンロードされることになる。ユーザは、モバイルコンポーネントの設定のための値及びタグ(これらは各ユーザにとってローカルである)を編集することができる。最後に、ユーザは、構成のために2つ以上のモバイルコンポーネントを選択することができる。これによって、新しいモバイルコンポーネントを生成するサーバ上でコンポーザ及びコンパイラが実行されることになる。次いで、この新しいモバイルコンポーネントは、共有アプリケーション上で使用可能になる。
【0095】
コンピュータシステムの例
図8は、本明細書に述べられた操作のうちの1つ又は複数を実施することができる例示的なコンピュータシステムのブロック図である。図8を参照すると、コンピュータシステム800は、例示的なクライアント又はサーバコンピュータシステムを備えてもよい。コンピュータシステム800は、情報を通信するための通信機構又はバス811と、バス811に結合された、情報を処理するためのプロセッサ812とを備える。プロセッサ812は、マイクロプロセッサを含むが、例えばペンティアム(Pentium)(登録商標)、パワーPC(PowerPC)(登録商標)、アルファ(Alpha)(登録商標)などのマイクロプロセッサだけに限定されない。
【0096】
システム800はさらに、ランダムアクセスメモリ(RAM)、或いはバス811に結合された、プロセッサ812によって実行される情報及び命令を格納するための他の動的記憶装置804(主記憶と呼ばれる)を備える。主記憶装置804は、プロセッサ812による命令の実行の間、一時変数又は他の中間情報を格納するために使用することもできる。
【0097】
コンピュータシステム800は、読取り専用メモリ(ROM:read only memory)、及び/又はバス811に結合された、プロセッサ812のための静的情報及び命令を格納するための他の静的記憶装置806、磁気ディスクや光ディスク、及びその対応するディスクドライブなどのデータ記憶装置807を備える。情報及び命令を格納するためのデータ記憶装置807は、バス811に結合される。
【0098】
コンピュータシステム800はさらに、バス811に結合された、情報をコンピュータユーザに表示するための陰極線管(CRT:cathode ray tube)や液晶ディスプレイ(LCD:liquid crystal display)などの表示装置821に結合されてもよい。プロセッサ812に情報及びコマンド選択を伝えるために、英数字及び他のキーを含む英数字入力デバイス822もまた、バス811に結合することができる。追加のユーザ入力デバイスは、バス811に結合された、プロセッサ812に方向情報及びコマンド選択を伝え、またディスプレイ821上のカーソルの動きを制御するためのマウス、トラックボール、トラックパッド、スタイラス又はカーソル方向キーなど、カーソルコントロール823である。
【0099】
バス811に結合され得る別の装置は、ハードコピー装置824であり、このハードコピー装置824は、紙、フィルム又は類似のタイプの媒体などの媒体上で情報をマーキングするために使用されてもよい。バス811に結合され得る別の装置は、電話又は携帯パーム型装置への通信のための有線/無線通信機能を持つ装置である。
【0100】
システム800のコンポーネント及び関連ハードウェアのいずれか又はすべてを本発明において使用できることに留意されたい。しかし、コンピュータシステムの他の構成は、デバイスの一部又はすべてを含んでもよいことが理解されよう。上記説明を読んだ後、本発明の多くの変更及び修正が当業者には間違いなく明らかになろうが、例示するために示され述べられたいずれかの特定の実施形態は、限定的と見なすべきものでは決してないことを理解されたい。したがって、様々な実施形態の詳細への言及は、本発明にとって不可欠と見なされる特徴だけをそれ自体に列挙する特許請求の範囲を制限するものではない。

【特許請求の範囲】
【請求項1】
少なくとも1つのソフトウェアコンポーネントが組み込まれているアクティブコンテンツ、にアクセスするステップであって、それぞれのソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、1つ又は複数の外部サービス、1つ又は複数のユーザインターフェースコントロール、1つ又は複数の入力、および、1つ又は複数の出力を表す、当該ステップと、
前記ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む、当該ステップと、
を含む方法。
【請求項2】
命令を格納するための1つ又は複数のコンピュータ読取り可能記憶媒体を有する製品であって、
前記命令は、システムによって実行されるとき、
少なくとも1つのソフトウェアコンポーネントが組み込まれているアクティブコンテンツ、にアクセスするステップであって、それぞれのソフトウェアコンポーネントが、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、1つ又は複数の外部サービス、1つ又は複数のユーザインターフェースコントロール、1つ又は複数の入力、および、1つ又は複数の出力を表す、当該ステップと、
前記ソフトウェアコンポーネントを実行するステップであって、情報フローベースのセキュリティモデルを用いてコンポーネント間の通信を仲介する処理を含む、当該ステップと、
を含む方法を、前記システムに実施させる、
当該製品。
【請求項3】
複数のソフトウェアコンポーネントにアクセスするステップであって、それぞれのソフトウェアコンポーネントは、アクティビティのシーケンスのワークフローを一緒に実施する複数のコンポーネントを有し、前記複数のコンポーネントが、1つ又は複数の外部サービス、1つ又は複数のユーザインターフェースコントロール、1つ又は複数の入力、および、1つ又は複数の出力を表し、それぞれのソフトウェアコンポーネントは健全である、当該ステップと、
健全であると保証された単一のソフトウェアコンポーネントを作成するために前記複数のソフトウェアコンポーネント上で構成操作を実施するステップと、
を含む方法。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2011−504256(P2011−504256A)
【公表日】平成23年2月3日(2011.2.3)
【国際特許分類】
【出願番号】特願2010−531319(P2010−531319)
【出願日】平成20年10月27日(2008.10.27)
【国際出願番号】PCT/US2008/081365
【国際公開番号】WO2009/058740
【国際公開日】平成21年5月7日(2009.5.7)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.JavaScript
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】