説明

モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開

モバイルデバイス上で異なるタイプおよびバージョンの実行環境を適応させるために、スマートフォンや他のモバイルデバイスなどのプログラム可能デバイスからの、アプリケーションについてのリクエストは、デバイスの特性についての状況データを含む。ディスプレイ、メモリ、記憶装置、および/またはスクリプトエンジンについての情報は、リクエストとともにフォワードされることができる。履行サーバでは、適切にバージョン管理され構成されたアプリケーションがカスタム構築され、またはアプリケーションの予め構築されたインベントリから選択され得るように、情報が評価される。こうすることにより、ユーザは、アップグレードを先延ばしにしながらも、特定のモバイルデバイスに対して最適化された、実行可能なものの適切なバージョンを受け取ることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム可能デバイスからのリクエストに応答してアプリケーションを生成する方法、およびアプリケーションのダウンロードをサポートするプログラム可能デバイスに関する。
【背景技術】
【0002】
電子デバイス、特にハンドヘルドまたは他のモバイルデバイスは、ますます日常生活の一部となっており、しばしば、以前は可搬型またはデスクトップコンピュータのものであった多くの機能に取って代わりつつある。この新規機能性の大部分は、モバイルデバイスが、一部の事例ではアプレットと呼ばれるアプリケーションプログラムをダウンロードし実行することが可能であることに由来する。こうしたアプリケーションプログラムは通常、小型仮想マシンまたはスクリプトエンジン上で実行される。ほぼ無限の種類のメモリ、ディスプレイ、カメラ、キーボード/タッチスクリーン、並びに特にプロセッサおよびその関連スクリプトエンジンを有するモバイルデバイスの急増により、これだけ広範囲の実行環境に渡ってアプリケーションの互換性を維持することが困難になっている。
【発明の概要】
【0003】
このようなモバイル型のプログラム可能デバイス用に構築されたアプリケーションは、特定の環境に対してより特化することができ、このようなアプリケーションの実行をサポートするスクリプトエンジンのバージョンにさえも敏感になり得るので、ユーザは、より新しいバージョンが入手可能なときでも、前のバージョンのスクリプトエンジンを残すことを選ぶ場合がある。同様に、カメラやワイヤレスインターフェイスなど、周辺機器のバージョンまたはタイプは、特定のアプリケーションリリースまたはスクリプトエンジンバージョンへのバージョン依存を有する場合がある。
【0004】
知的フロントエンドを有するコンパイラは、ある特定のモバイルデバイスプラットフォームについての情報を受け取り、入手可能なスクリプトエンジンのタイプおよびバージョン向けにアプリケーションを最適化するだけでなく、利用可能なメモリおよび周辺機器を考慮して特徴もカスタマイズする、その特定の環境向けにアプリケーションプログラムのバージョンをコンパイルすることができる。アプリケーションについてのモバイルデバイスからのリクエストは、カメラのタイプ/解像度、メモリのサイズおよび速度、スクリプトエンジンのタイプおよびバージョン、表示解像度などのアクセサリを含む、実行環境の詳細を含み得る。フロントエンドは、プラットフォームをリクエストする最適な実行可能なプロセスにコンパイルプロセスを最適化するように、コンパイラ指令またはカスタムインクルードファイルを設定することができる。いくつかの実施形態は、最も一般的な目標環境向けにアプリケーションのバリエーションをプリコンパイルすることができる。
【図面の簡単な説明】
【0005】
【図1】コンピュータのブロック図である。
【図2】モバイルアプリケーションのオンデマンドでのコンパイルおよび展開をサポートするシステムのブロック図である。
【図3】モバイルアプリケーションのオンデマンドでのコンパイルおよび展開をサポートする別のシステムのブロック図である。
【図4】代表的なプログラム可能デバイスのブロック図である。
【図5】カスタマイズされたアプリケーションを伝える例示的なパケット構造を示す図である。
【図6】プログラム可能デバイス向けの、カスタマイズされたアプリケーションを作成する方法を示すフローチャートである。
【発明を実施するための形態】
【0006】
本明細書では、異なる多数の実施形態の詳細な説明を記述するが、この説明の法的範囲は、本開示の最後に記載される請求項の文言によって定義されることを理解されたい。この詳細な説明は、例示としてのみ企図されるべきであり、可能な全ての実施形態を記載することは、不可能ではないにしても現実的でないので、可能な全ての実施形態を記載しているわけではない。多数の代替的実施形態は、現在の技術または本特許の出願日以降に開発される技術を用いて実装され得るであろうが、やはり請求項の範囲内である。
【0007】
「本明細書で使用する「 」という用語は、本明細書によって...を意味するものと定義される」という文または同様の文を使って、本特許において用語が明白に定義されない限り、その用語の意味を、明白に、または含意により、その平易または通常の意味を越えて限定する意図はなく、このような用語は、本特許のいかなるセクションにおいても行われるいかなる記述に基づく範囲(請求項の言葉以外)にも限定されるものと解釈されるべきでないことも理解されたい。本特許において、本特許の最後にある請求項に列挙されるどの用語も、1つの意味と合致するように言及される範囲において、これは、読者を混乱させないように、分かりやすくするためにのみ行われるのであって、このような請求項の用語を、含意またはそれ以外のやり方で、その1つの意味に限定することは意図していない。最後に、請求項の構成要件が、いかなる構造も列挙せずに「手段」という文言および機能を列挙することによって定義されない限り、いかなる請求項要素の範囲も、米国特許法第112条第6段落の適用に基づいて解釈されることは意図していない。
【0008】
本発明の機能性の大部分および本発明の原理の多くは、ソフトウェアプログラムまたは命令および特定用途ICなどのIC(集積回路)を使って、またはその中に最もよく実装される。当業者は、例えば、都合のつく時間、現在の技術、および経済学的考察によって動機づけられる、可能性として多大な作業および多くの設計選択肢にもかかわらず、本明細書で開示する概念および原理によって手引きされると、このようなソフトウェア命令およびプログラム並びにICを最低限の実験で生成することが容易に可能であることが期待される。従って、簡潔にし、本発明による原理および概念を不明瞭にするいかなる危険性も最小限にするために、このようなソフトウェアおよびICのこれ以上の考察は、あるとしても、好ましい実施形態の原理および概念に関する本質的要素に限定される。
【0009】
図1を参照すると、権利請求される方法および機器を実装する例示的なシステムが、汎用コンピューティングデバイスを、コンピュータ110の形で含む。以下で詳述するプログラム可能デバイスは通常、ハンドヘルドまたは可搬型コンピューティング/通信デバイスでもよく、ここで示すようにコンピュータでもよい。コンピュータ110は、プログラム可能デバイスからのリクエストを履行する際に使用するための、後で説明する典型的なサーバも表し得る。破線で示すコンポーネントは、技術的にはコンピュータ110の一部ではないが、図1の例示的な実施形態を示すのに使われる。コンピュータ110のコンポーネントは、プロセッサ120、システムメモリ130、ノースブリッジチップ(Northbridge chip)としても知られるメモリ/グラフィックスインターフェイス121、およびサウスブリッジチップ(Southbridge chip)としても知られるI/Oインターフェイス122を含み得るが、それらに限定されない。システムメモリ130およびグラフィックスプロセッサ190は、メモリ/グラフィックスインターフェイス121に結合され得る。モニタ191または他のグラフィック出力デバイスは、グラフィックスプロセッサ190に結合され得る。
【0010】
プロセッサ120、メモリ/グラフィックスインターフェイス121およびI/Oインターフェイス122の間の高速システムバス123、メモリ/グラフィックスインターフェイス121とシステムメモリ130との間のフロントサイドバス124、並びにメモリ/グラフィックスインターフェイス121とグラフィックスプロセッサ190との間のAGP(高度グラフィックス処理)バス125を含む一連のシステムバスが、様々なシステムコンポーネントを結合することができる。システムバス123は、限定ではなく例として、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バスおよびEISA(拡張ISA)バスを含むアーキテクチャなどを含む、いくつかのタイプのバス構造のいずれでもよい。システムアーキテクチャが発展するのに従って、他のバスアーキテクチャおよびチップセットが使われ得るが、しばしば、概してこのパターンに従い得る。例えば、インテルおよびAMDなどの企業は、それぞれ、IHA(インテルハブアーキテクチャ)およびHypertransport(登録商標)アーキテクチャをサポートする。
【0011】
コンピュータ110は通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスされ得る入手可能などの媒体でもよく、揮発性および不揮発性媒体、取外し可能および固定型媒体両方を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の格納のためのどの方法または技術でも実装される揮発性および不揮発性、取外し可能および固定型媒体両方を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、DVD(デジタル多用途ディスク)若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気格納デバイス、または所望の情報を格納するのに使うことができ、コンピュータ110によってアクセスすることができる他のどの媒体も含むが、それに限定されない。
【0012】
システムメモリ130は、コンピュータ記憶媒体を、ROM(読出し専用メモリ)131およびRAM(ランダムアクセスメモリ)132など、揮発性および/または不揮発性メモリの形で含む。システムROM131は、識別および製造情報などの永続システムデータ143を含み得る。いくつかの実施形態では、BIOS(基本入出力システム)も、システムROM131に格納され得る。RAM132は通常、直ちにアクセス可能であり、かつ/または現時点でプロセッサ120によって操作されているデータおよび/またはプログラムモジュールを含む。限定ではなく例として、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
【0013】
I/Oインターフェイス122は、システムバス123を、様々な内部および外部デバイスをコンピュータ110に結合する他のいくつかのバス126、127、および128と結合することができる。SPI(シリアル周辺機器インターフェイス)バス126は、起動中などに、コンピュータ110内の要素の間で情報を転送するのを助ける基本ルーチンを含むBIOS(基本入出力システム)メモリ133に接続し得る。
【0014】
スーパー入出力チップ160が、例として、フロッピー(登録商標)ディスク152、キーボード/マウス162、およびプリンタ196など、いくつかの「レガシーな」周辺機器に接続するのに使われ得る。スーパーI/Oチップ160は、いくつかの実施形態では、LPC(low pin count)バスなどのバス127でI/Oインターフェイス122に接続され得る。スーパーI/Oチップ160の様々な実施形態は、産業市場において広く入手可能である。
【0015】
一実施形態では、バス128は、PCI(周辺コンポーネント相互接続)バス、またはその変形でよく、より高速の周辺機器をI/Oインターフェイス122に接続するのに使われ得る。PCIバスは、Mezzanineバスとして知られている場合もある。PCIバスの変形は、PCI−E(周辺機器相互接続高速化)およびPCI−X(周辺機器拡張相互接続)バスを含み、PCI−Eは、シリアルインターフェイスを有し、PCI−Xは、後方互換性があるパラレルインターフェイスである。他の実施形態では、バス128は、SATA(シリアルATAバス)またはPATA(パラレルATA)の形のATA(advanced technology attachment)バスでよい。
【0016】
コンピュータ110は、他の取外し可能/固定型、揮発性/不揮発性コンピュータ記憶媒体も含み得る。例示の目的でのみ、図1は、固定型の不揮発性磁気媒体からの読出しまたは書込みを行うハードディスクドライブ140を示す。ハードディスクドライブ140は、従来のハードディスクドライブでよい。
【0017】
USB(ユニバーサルシリアルバス)メモリ153、ファイアーワイヤ(IEEE1394)、またはCD/DVDドライブ156などの取外し可能媒体は、直接、またはインターフェイス150を介してPCIバス128に接続され得る。図2を参照して後で説明するものと同様の記憶媒体154は、インターフェイス150を介して結合され得る。例示的な動作環境において使うことができる他の取外し可能/固定型、揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、DVD(デジタル多用途ディスク)、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどを含むが、それらに限定されない。
【0018】
上述し、図1に示したドライブおよびその関連コンピュータ記憶媒体は、コンピュータ110用のコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの格納を可能にする。図1において、例えば、ハードディスクドライブ140が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するものとして示されている。こうしたコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じでも、異なってもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、少なくとも、異なるコピーであることを示すために、ここでは異なる番号が与えられている。ユーザは、マウス/キーボード162または入力デバイスの他の組合せなどの入力デバイスを介してコンピュータ110にコマンドおよび情報を入れることができる。他の入力デバイス(図示せず)は、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含み得る。こうしたおよび他の入力デバイスはしばしば、SPI126、LPC127、またはPCI128など、I/Oインターフェイスバスの1つを介してプロセッサ120に接続されるが、他のバスを使ってもよい。いくつかの実施形態では、他のデバイスは、スーパーI/Oチップ160により、パラレルポート、赤外線インターフェイス、ゲームポートなど(図示せず)に結合され得る。
【0019】
コンピュータ110は、NIC(ネットワークインターフェイスコントローラ)170により、リモートコンピュータ180など、1つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク接続環境において動作し得る。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の一般的なネットワークノードでよく、通常、コンピュータ110に関連して上述した要素の多くまたは全てを含む。図1に示す、NIC170とリモートコンピュータ180との間の論理接続は、LAN(local area network)、WAN(wide area network)、またはその両方を含んでよいが、他のネットワークを含んでもよい。このようなネットワーク接続環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見られる。リモートコンピュータ180は、コンピュータ110との対話型セッションをサポートするウェブサーバにもなり得る。
【0020】
いくつかの実施形態では、ネットワークインターフェイスは、ブロードバンド接続が利用不可能であり、または使われていないとき、モデム(図示せず)を使うことができる。図示するネットワーク接続は、例示であり、コンピュータ間の通信リンクを確立する他の手段も使われ得ることが理解されよう。
【0021】
図2は、モバイルアプリケーションの、デバイス依存のオンデマンドでのコンパイルおよび展開をサポートするシステム200の一実施形態を示す。システム200は、それぞれ第1のプログラム可能デバイスおよび第2のプログラム可能デバイス202、204を含み得る。プログラム可能デバイスはそれぞれ、いくつかの一般的なベース構成項目(base configuration item)、例えば、カラーディスプレイ、テキスト入力能力、1ギガバイト(Gバイト)の不揮発性記憶メモリなどを公開することができる。各デバイスは、例えば、より大きい表示エリア、より深い色深度、動作センサ、異なるピクセルレーティングまたは動画能力をもつカメラなど、他とは全く異なる特性も有し得る。各デバイス202、204は、インターネットまたは企業イントラネット若しくはLANや、他の公共または私設ネットワークなどのネットワークインフラストラクチャ206と通信することができる。通信媒体はワイヤレスでよいが、有線通信も珍しくはない。サーバ208が、ネットワークインフラストラクチャ206に接続され得る。サーバ208は、以下で詳述するように、プログラム可能デバイス202、204からのサービスアプリケーションリクエストに対する履行センタ(fulfillment center)として作用し得る。
【0022】
図3は、モバイルアプリケーションの、デバイス依存のオンデマンドでのコンパイルおよび展開をサポートするシステム250の別の実施形態を示す。システム250は、それぞれ第1のプログラム可能デバイスおよび第2のプログラム可能デバイス252、254を含み得る。上記の通り、プログラム可能デバイスはそれぞれ、いくつかの一般的なベース構成項目および独自の要素を公開することができる。プログラム可能デバイス252、254は、ネットワークインフラストラクチャ256により、サーバ258および格納デバイス260と通信することができる。ネットワークインフラストラクチャ256は、インターネット、企業イントラネット若しくはLAN、または他の公衆若しくは私設ネットワークでよい。サーバ258は、ネットワークインフラストラクチャ256に接続することができ、プログラム可能デバイス252、254からのアプリケーションリクエストに応えることができる。格納デバイス260は、プログラム可能デバイスの1つまたは複数の一般構成用の、プリコンパイルされたカスタマイズ済みアプリケーションを格納し得る。例えば、一部のセルラー電話オペレータは、デバイスのある特定のモデルおよび構成を大量に購入し、大規模な加入者集団に販売し、または配信することができる。必要とするものが標準構成によって満たされるユーザのために、その構成用の、プリコンパイルされたアプリケーションのセットが、格納デバイス260の所で格納され、オンデマンドで配信され得る。
【0023】
図4は、例示的なプログラム可能デバイス300を示す。プログラム可能デバイス300は、セルラー電話、スマートフォン、携帯情報端末、ブルートゥース(商標)アクセサリ、または他の可搬型デバイスでよい。プログラム可能デバイス300は、ラップトップなどのコンピュータでもよいが、標準的デスクトップまたはタワーコンピュータでもよい。プログラム可能デバイス300は、図1のコンピュータ110と同様でもよく、より限定された能力のプラットフォームを有し得るが、同時に、内蔵型カメラ、およびディスプレイ/キーパッドまたはタッチスクリーンなど、デバイスにとってより不可欠な「周辺機器」を有し得る。
【0024】
プログラム可能デバイス300は、処理ユニット302を含み得る。処理ユニット302は、ARM(商標)ファミリプロセッサなど、揮発性および不揮発性メモリ(図示せず)を有する単一チッププロセッサでよいが、他の公知のプロセッサを使ってもよい。プログラム可能デバイス300は、図2のサーバ208など、ホストデバイスとの通信用のトランシーバ304を含み得る。トランシーバ304は、アンテナ306を介したワイヤレス通信をサポートすることができるが、いくつかの実施形態では、トランシーバは、有線通信をサポートし得る。ワイヤレス構成では、トランシーバ304は、Wi−Fiなどの短距離通信をサポートすることもでき、セルラー電話またはPCSインフラストラクチャを介したワイドエリア通信をサポートすることもできる。
【0025】
キーパッド308およびディスプレイ310によって、ユーザインターフェイスがサポートされ得る。いくつかの実施形態では、キーパッド機能は、ディスプレイ310のタッチスクリーンバージョンに組み込まれ得る。メモリ312は、揮発性および不揮発性メモリ両方を含み得る。メモリ312は、電話番号など、ローカルに生成された情報並びにウェブページなど、ダウンロードされた情報などのデータ314を格納することができる。メモリ312は、Java(登録商標)仮想マシンや同様の実行環境などのスクリプト実行エンジン316を実装する実行可能命令を格納することもできる。実行可能スクリプトまたはアプリケーション/アプレット318は、スクリプト実行エンジン316によって解釈され、かつ/または実行され得る。ダウンロードマネージャを含むオペレーティングシステム320は、プログラム可能デバイス300内の基本機能並びにユーザインターフェイスおよび通信プリミティブをサポートするのに使われ得る。プログラム可能デバイス300の機能は、ネイティブまたはダウンロードされたプログラム322によってサポートすることができ、例えば、このような機能は、電話番号のダイアリングまたは電源管理に関連し得る。
【0026】
1つまたは複数の内蔵型ハードウェアまたは仮想周辺機器が、プログラム可能デバイス300に含まれ得る。このような周辺機器は、ブルートゥースワイヤレス能力324、暗号エンジン326、Wi−Fiトランシーバ328(802.11x)、カメラ330、メディアプレーヤ332、GPS(全地球測位衛星)受信機334などを含み得る。こうした周辺機器のいくつかは、カメラなどのハードウェアを含んでよく、周辺機器はそれぞれ、プログラム可能デバイス300へのそのインターフェイスをサポートする関連アプリケーション並びにそのユーザインターフェイス用のサポートを有し得る。いくつかのケースでは、ダウンロードされたアプリケーションは、既存のデバイスに新規能力を追加することができる。例えば、メディアプレーヤ332は、新規アプリケーションにより、元々設置されているディスプレイ310およびオーディオ回路323を使って、新規ビデオ形式などの新規メディアタイプをサポートするようにアップグレードされ得る。オーディオ回路323は、1つまたは複数のスピーカおよび1つまたは複数のマイクロホンを含み得る。
【0027】
動作中、ダウンロードシステム320は、プログラム可能デバイス300上での実行に適した認定アプリケーションのリストを受け取り得る。このリストは、プログラム可能デバイス300にプリロードすることができるが、リストは、トランシーバ304により、時間経過に伴ってアップデートされることが期待される。ユーザが、自分のプログラム可能デバイス300用の新規アプリケーションの取得またはアップデートに関心を示しているとき、認定アプリケーションのリストが提示され得る。ユーザが選択を行った後、プログラム可能デバイス300についての固有情報が、ダウンロードシステム/オペレーティングシステム320によって収集され得る。固有情報は、プログラム可能デバイス300の構成および現在の状態に関する情報、例えば、プロセッサのタイプおよび速度、スクリプトエンジンのタイプおよびバージョン、スクリーンサイズおよびカラーパレット/色深度、入力/タッチスクリーン情報、動作センサなどでよい。選択および固有情報は、収集され、履行センタに送られ得る。選択されたアプリケーションを伴う応答は、受け取られると、おそらく、プログラム可能デバイス300に関する、送られる固有情報と一致するようにカスタマイズされる。これを検証するために、ダウンロードパッケージ中の情報を調べて、アプリケーションに関連づけられた特性が、プログラム可能デバイス300の能力と合致するかどうか判定することができる。合致する場合、アプリケーションがインストールされ、ユーザにとって利用可能にされ得る。ダウンロードされた他のアプリケーションのように、完全性および権限(integrity and authorization)チェック両方を、アプリケーションのインストールまたは実行前に行うことができる。
【0028】
図5は、カスタマイズされたアプリケーションを伝える例示的なパケット構造を示す。プログラム可能デバイス300によるアプリケーションの検証(verification)をサポートするために、パケット構造中の情報は、アプリケーションがカスタマイズされたオプションを示し得る。
【0029】
ダウンロードパッケージ500は、一般ヘッダー502、カスタマイズヘッダー504、および選択されたアプリケーション506のカスタムバージョンを含み得る。一般ヘッダーは、汎用アプリケーション識別情報、例えば「bowling 2.0」を含んでよく、チェックサムまたは他の完全性チェック、並びにソースの信頼性を検証する際に使用するためのデジタル署名も含んでよい。カスタマイズヘッダー504も、それ自体のプラットフォーム能力に対するカスタムアプリケーション506の正確性をプログラム可能デバイス300に検証させるために含まれ得る。
【0030】
カスタマイズヘッダー504は、スクリプトエンジンバージョン508、スクリーンサイズ/色深度510、動作センササポート512、および/またはワイヤレス周辺機器サポート514などのフィールドを含み得るが、それに限定されなくてよい。
【0031】
スクリプトエンジンバージョン508は、利用可能なスクリプト作成サポートのタイプ(例えば、Java(登録商標)、Flash(登録商標)、Silverlight(登録商標)など)だけでなく、エンジンの改訂版またはバージョン番号も含み得る。いくつかのケースでは、一定のアプリケーションは、ある一定のレベルのスクリプトエンジンバージョンにおいて稼働するだけである。
【0032】
スクリーンサイズおよび色深度510は、アプリケーションのカスタマイズを、スクリーンに合わせ、ピクチャまたはビデオ情報をその最大定義で提示させる。動作センササポート512により、アプリケーション506は、ベクトルおよび加速度情報を、アプリケーション506への入力として利用することができる。ワイヤレス周辺機器サポート514は、アプリケーションの操作の視聴覚側面を、このような周辺機器を利用し、または少なくともこのような周辺機器をサポートするようにアプリケーションをカスタマイズすることによって、リッチコンテキストでユーザに対して提示させる。
【0033】
チェックされ報告され得る他の構成要素は、メディアプレゼンテーション、概して、再生サポート情報516に関連したハードウェアおよびファームウェアである。再生サポートの要素は、メディアコーダ/デコーダ(コーデック)、サポートされるファイル形式、およびトランスポートストリームフォーマット(例えば、MPEG2、MPEG4など)を含み得る。
【0034】
図6は、プログラム可能デバイス用の、カスタマイズされたアプリケーションを作成する方法600のフローチャートである。この方法は、ハンドヘルド可搬型デバイスに特に適用可能であり得るが、それに限定されなくてよい。図6に示すように、いくつかのステップは、垂直破線の右側に示すように、履行センタサーバ208で実施され、いくつかのステップは、同左側に示すように、プログラム可能デバイス202で実施される。
【0035】
ブロック602で、プログラム可能デバイス202の標準構成のベース構成が判定され得る。つまり、標準スクリーンサイズをピクセルおよび色深度で判定することと同様に、プログラム可能デバイス上で稼動するオペレーティングシステムのタイプおよびバージョンにも判定を行うことができる。入力デバイスのタイプも、出荷されたときのデバイスの最も一般的な構成についての情報から収集され得る。スクリプトエンジンの現在サポートされているバージョンは、サポートサイトから判定され得るが、このサイトは、履行センタサーバ208でよい。標準構成および現在のバージョンは、少なくとも標準構成デバイスによってサポートされるアプリケーションのリストを作り出すのに使われ得る。さらに、リストに追加される各アプリケーションは、後でアプリケーションをカスタマイズする際にデータが所望される構成項目のカタログも含み得る。ブロック604で、履行センタサーバ208は、アプリケーションのリストをプログラム可能デバイス202に送ることができる。
【0036】
ブロック606で、プログラム可能デバイス202は、プログラム可能デバイスのベース構成と互換性がある利用可能アプリケーションのリストを有するユーザインターフェイスを提示して、所望される場合、アプリケーションの1つをユーザに選択させることができる。
【0037】
ブロック608で、ユーザ入力を使って、プログラム可能デバイスにおけるインストールに利用可能なアプリケーションのリストからのアプリケーションの選択の入力を受け取ることができる。
【0038】
ブロック610で、選択の受取りに応答して、プログラム可能デバイスに対応する固有構成が収集され得る。一実施形態では、全ての入手可能情報が収集され得るが、別の実施形態では、そのアプリケーションに関連するデータのみが収集され得る。例えば、プログラム可能デバイス202の所で受け取られるアプリケーションのリストは、そのアプリケーションに関連した構成データを記述する追加データのカタログを含み得る。
【0039】
プレゼンス、バージョン番号、サイズ/速度などをチェックされ得る構成のいくつかの要素は、外部光センサ、動作センサ能力、カメラタイプ、音出力能力、周辺機器構成、総利用可能不揮発性メモリ、および総揮発性メモリを含み得る。チェックされ報告され得る他の構成要素は、メディアプレゼンテーション、概して、再生サポートに関連したハードウェアおよびファームウェアである。再生サポートの要素は、メディアコーダ/デコーダ(コーデック)、サポートされるファイル形式、およびトランスポートストリームフォーマット(例えば、MPEG2、MPEG4など)を含み得る。
【0040】
構成データがアセンブルされると、ブロック612で、プログラム可能デバイスの所でリクエストパッケージを組み立てることができる。リクエストパッケージは、少なくともデバイス識別子、デバイスタイプ識別子、選択されたアプリケーションの識別子、メモリ構成、およびスクリプトエンジンバージョン識別子(存在する場合)を含む固有構成のコンポーネント要素を含み得る。いくつかの実施形態では、この情報のサブセット、例えば、プログラム可能デバイス識別子およびスクリプトエンジンバージョン番号は、標準HTTP URL(ユニバーサル・リソース・ロケータ)に入れて送ることができる。例えば、いくつかの実施形態では、デバイス識別子またはデバイスタイプ識別子は、メモリ構成を判定するのに十分であり得るので、最低限必要な情報だけが、リクエストパッケージに含まれればよい。
【0041】
ブロック614で、リクエストパッケージは、プログラム可能デバイスから履行センタサーバ208に送られ得る。
【0042】
ブロック616で、リクエストパッケージは、履行センタサーバ208の所で受け取られ得る。リクエストパッケージまたはその一部分は、任意選択で、履行プロセスを完了するために、履行センタからバックエンドコンパイラに送ってもよい。一実施形態では、カスタムアプリケーションの準備は、履行プロセスで準備することができる。別の実施形態では、リクエストは、プログラム可能デバイスタイプが履行センタサーバ208によって知られているかどうか、つまり、プログラム可能デバイスが既知のプログラム可能デバイスのデータベースにあるかどうかを見る資格を与えられる。データベースにない場合、リクエストは拒絶してよく、その構成についての付加情報がリクエストされ得る。
【0043】
やはりブロック616で、履行センタサーバ208は、リクエストが届いた際に経由したネットワーク接続を評価することができる。ネットワークの帯域幅は、プログラム可能デバイス用のカスタムアプリケーションを開発するときの要因として使われ得る。ネットワーク、例えば、第2世代(2G)またはGPRS(汎用パケット無線サービス)ワイヤレスネットワークが帯域幅を特に限定されるとき、サーバは、最終的なカスタムアプリケーションのサイズを削減するためのコンパイルオプションを含み得る。このようなオプションは、ネットワーク能力の範囲に渡ってよく、従ってEDGE(Enhanced Data rate for GSM Evolution)は、拡張ヘルプファイルなど、より多くのオプションを含んでよく、HSDPAやWiFiなどの高速ネットワークは、フルカラーグラフィックスなどを含み得る。
【0044】
ブロック618で、プログラム可能デバイス202の固有構成を有するリクエストパッケージは、リクエストパッケージのコンポーネント要素に分解され得る。
【0045】
ブロック620で、カスタムコンパイル構成を、プログラム可能デバイスの固有構成の要素により構成することができる。例えば、リクエストされるアプリケーションにアドオン特徴を含め、若しくは除外し、またはデフォルトプリセットを設定するための異なるコンパイラオプションが、設定され、またはクリアされ得る。一実施形態では、このプロセスは、プログラム可能デバイスの固有構成に対応する固有コンパイルオプションでのメイクファイルの作成を含み得る。
【0046】
ブロック622で、アプリケーションのカスタムバージョンが、カスタムメイクファイルを使って、またはブロック620で作られたプリセットコンパイラオプションを使ってアプリケーションをコンパイルすることによって作成され得る。アプリケーションおよびカスタムメイクファイルは両方とも、固有構成の要素を検索索引として使って保存され得る。こうすることにより、全く同じように構成されたデバイスからのリクエストが素早く検索され送られ得るが、多数の構成を含む多くの理由により、データが保存されない実施形態もあり得る。
【0047】
ブロック624で、カスタムアプリケーションが、プログラム可能デバイスに送られ得る。プログラム可能デバイスへのカスタムアプリケーションの配信が確認されると、バックエンドコンパイラまたは履行センタにあるカスタムアプリケーションの全てのコピーを消去してよい。ただし、上述したように、いくつかの実施形態では、コピーは、カタログ登録され保存されてもよい。
【0048】
同様のやり方で、所与のリクエストの受取りに先立って、一般的な期待されるコンポーネント要素は、リクエストパッケージの予め選択されたコンポーネント要素でよく、予期されるコンポーネント要素により、カスタムアプリケーションバージョンを作成するのに使うことができ、このバージョンは次いで、予期されるコンポーネント要素を含む、今後のカスタムアプリケーションリクエスト向けに格納され得る。例えば、スクリプトエンジンの新規バージョンがリリースされると、今後のリクエストは、スクリプトエンジンのそのバージョンをリクエスト/要求することが予期され得る。従って、新規バージョンスクリプトエンジンをサポートするために一般的なデバイス構成をプリコンパイルすることは、新規リクエストが入って来たときにかなりの時間の節約になり得る。
【0049】
例えば、リクエストが届くと、リクエストパッケージのコンポーネント要素を、格納されている予期されるコンポーネント要素と突き合わせればよく、こうしたコンポーネント要素と合致する、プリコンパイルされたカスタムアプリケーションが、リクエストしているプログラム可能デバイスに送られ得る。
【0050】
ブロック626で、カスタムアプリケーションを受け取った後、カスタマイズヘッダー504を調べて、カスタムアプリケーションを作成する際に使われるコンポーネント要素に対応する、選択された情報が、両方とも、履行センタ208に送られたリクエストのものと一致し、依然として有効であることを検証することができる。例えば、受け取られたパッケージが、リクエストの構成データと合致したとしても、新規スクリプトエンジンの受取りなど、構成を著しく変える変化がその後に起きている場合がある。
【0051】
カスタマイズヘッダー504が現在の構成と十分に合致しない場合、ブロック626からの「no」分岐をとって、ブロック628に進み得る。つまり、空きメモリなど、いくつかの要素は、合致が成功するために、正確に一致する必要がない場合がある。この例では、十分な空きメモリがある限り、現在の構成と応答の構成との間の一致は、完全である必要はない。
【0052】
ブロック628で、アプリケーションは、インストールされないか、または延期されてもよく、任意選択で、ユーザは、不一致、生成され送られる新規リクエスト、またはその両方を知らされ得る。延期された場合、ユーザは例えば、必要メモリを解放するなど、アプリケーションがインストールされ得るように、状況を訂正することが認められ得る。
【0053】
カスタマイズヘッダー504が現在の構成と十分に合致する場合、ブロック626からブロック630への「yes」分岐をとることによって、アプリケーションをインストールすることができる。ブロック630で、アプリケーションは、要求される場合は検証され、インストールされ、ユーザにとって実行のために利用可能にされ得る。
【0054】
上記では、本発明の異なる多数の実施形態の詳細な説明を記載したが、本発明の範囲は、特許請求の範囲の文言によって定義されることを理解されたい。詳細な説明は、例示としてのみ企図されるべきであり、可能な全ての実施形態を記載することは、不可能ではないにしても現実的でないので、本発明の可能な全ての実施形態を記載しているわけではない。多数の代替的実施形態を、現在の技術または本特許の出願日以降に開発された技術を用いて実装することもでき、こうした実施形態は依然として、本発明を定義する請求項の範囲内である。
【0055】
従って、多くの修正および変形を、本明細書に記載し示した技法および構造において、本発明の要旨および範囲から逸脱することなく行うことができる。従って、本明細書に記載した方法および機器は例示に過ぎず、本発明の範囲を限定するものではないことを理解されたい。

【特許請求の範囲】
【請求項1】
プログラム可能デバイス(300)からのリクエストに応答してアプリケーションを生成する方法(600)であって、
前記プログラム可能デバイス(300)のベース構成を判定するステップ(602)と、
前記プログラム可能デバイスのベース構成と互換性がある利用可能アプリケーションのリストを有するユーザインターフェイス(310)を提示するステップ(606)と、
前記プログラム可能デバイスにインストールするための利用可能アプリケーションの前記リストからの、選択されたアプリケーションに関するユーザ入力を受け取るステップ(608)と、
前記プログラム可能デバイス(300)に対応する固有構成を収集するステップ(610)と、
前記プログラム可能デバイスの所でリクエストパッケージを組み立てるステップ(612)であって、前記リクエストパッケージは、少なくとも前記選択されたアプリケーションの識別子、スクリプトエンジンバージョン識別子、並びにデバイス識別子およびデバイスタイプ識別子の少なくとも一方を含む前記固有構成のコンポーネント要素を含む、ステップと、
前記リクエストパッケージを、前記プログラム可能デバイスから履行センタに送るステップ(614)と、
前記リクエストパッケージを前記履行センタで受け取るステップ(616)と、
前記プログラム可能デバイスの前記固有構成を有する前記リクエストパッケージを、前記リクエストパッケージの前記コンポーネント要素に分解するステップ(618)と、
前記リクエストパッケージの前記コンポーネント要素に対応する前記選択されたアプリケーションのカスタムバージョンを生成するステップ(622)と、
前記選択されたアプリケーションのカスタムバージョンを前記プログラム可能デバイスに送るステップ(624)と
を含むことを特徴とする方法。
【請求項2】
前記プログラム可能デバイスのベース構成と互換性がある利用可能アプリケーションの前記リストを、前記プログラム可能デバイスに送るステップ(604)をさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記リクエストパッケージの少なくとも一部分を、前記履行センタからバックエンドコンパイラに送るステップと、
前記プログラム可能デバイスの前記固有構成の要素により、カスタムコンパイル構成を生成するステップ(620)と、
前記カスタムコンパイル構成を使って、前記選択されたアプリケーションをコンパイルして、前記プログラム可能デバイスをターゲットとした前記選択されたアプリケーションの前記カスタムバージョンを生じるステップと
をさらに含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記カスタムコンパイル構成を生成するステップは、前記プログラム可能デバイスの前記固有構成に対応する固有コンパイルオプションをもつメイクファイルを生成するステップを含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記選択されたアプリケーションの前記カスタムバージョンを前記プログラム可能デバイスに配信することを確認するステップと、
前記選択されたアプリケーションの前記カスタムバージョンの配信を確認するステップに続いて、前記選択されたアプリケーションの前記カスタムバージョンの全てのコピーを、前記バックエンドコンパイラおよび前記履行センタから消去するステップと
をさらに含むことを特徴とする請求項3に記載の方法。
【請求項6】
前記選択されたアプリケーションの前記カスタムバージョンを生成するステップは、
前記リクエストパッケージのコンポーネント要素を予め選択するステップと、
前記予め選択されたコンポーネント要素に従って、前記選択されたアプリケーションの前記カスタムバージョンを生成するステップと、
前記選択されたアプリケーションの前記カスタムバージョンおよび予め選択されたコンポーネント要素を格納するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記選択されたアプリケーションの前記カスタムバージョンを前記プログラム可能デバイスに送るステップは、
前記リクエストパッケージのコンポーネント要素を、格納されている予期されるコンポーネント要素と突き合わせるステップと、
前記リクエストパッケージの前記コンポーネント要素と一致する、予め選択されたコンポーネント要素と対応する前記選択されたアプリケーションの前記カスタムバージョンを、前記プログラム可能デバイスに送るステップと
を含むことを特徴とする請求項6に記載の方法。
【請求項8】
前記プログラム可能デバイスの前記ベース構成を判定するステップは、
前記プログラム可能デバイス上で稼動するオペレーティングシステムのタイプおよびバージョンを判定するステップと、
スクリーンサイズをピクセルおよび色深度で判定するステップと、
入力デバイスタイプを判定するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記プログラム可能デバイスに対応する前記固有構成を収集するステップは、
外部光センサを判定するステップと、
動作センサ能力を判定するステップと、
カメラタイプを判定するステップと、
音出力能力を判定するステップと、
周辺機器構成を判定するステップと、
総利用可能不揮発性メモリを判定するステップと、
総揮発性メモリを判定するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項10】
前記選択されたアプリケーションの前記カスタムバージョンのカスタマイズヘッダーを調べるステップであって、前記カスタマイズヘッダーは、前記選択されたアプリケーションの前記カスタムバージョンを生成する際に使われる前記コンポーネント要素に対応する、選択された情報を含む、ステップと、
前記選択されたアプリケーションの前記カスタムバージョンが、前記プログラム可能デバイスに対応する前記固有構成と合致すると判定するステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項11】
前記選択されたアプリケーションの前記カスタムバージョンが、前記プログラム可能デバイスに対応する前記固有構成と合致しないとき、インストールを延期するステップをさらに含むことを特徴とする請求項11に記載の方法。
【請求項12】
前記選択されたアプリケーションの前記カスタムバージョンが前記固有構成と合致するとき、前記選択されたアプリケーションの前記カスタムバージョンをインストールするステップをさらに含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記プログラム可能デバイスに対応する前記固有構成を収集するステップは、
所望の固有構成データのカタログを、利用可能アプリケーションの前記リストから抽出するステップと、
前記カタログにより、前記所望の固有構成データを収集するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項14】
前記プログラム可能デバイスが、既知のプログラム可能デバイスのデータベースにないとき、リクエストパッケージを拒絶するステップと、
前記プログラム可能デバイスから追加構成情報をリクエストするステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項15】
アプリケーションのダウンロードをサポートするプログラム可能デバイスであって、
処理ユニット(302)と、
前記処理ユニットに結合された、双方向通信をサポートするトランシーバ(304)と、
前記処理ユニット上で実行するための命令を格納する、前記処理ユニットに結合されたメモリ(312)であって、前記命令は、オペレーティングシステム(320)、ダウンロードシステム(320)、およびスクリプトエンジン(316)を実行する、メモリと、
前記処理ユニットに結合され、前記オペレーティングシステムによってサポートされるユーザインターフェイス(308)(310)であって、前記ダウンロードシステムは、前記トランシーバを介して、前記プログラム可能デバイスに適した認定アプリケーションのリストを受け取り、前記リストを前記ユーザインターフェイス上に表示させ、選択されたアプリケーションに関連した、ユーザからの入力を受け取り、前記プログラム可能デバイスについての固有構成情報を収集し、前記固有構成情報を有する、前記選択されたアプリケーションについてのリクエストを送り、前記固有構成情報に適した前記選択されたアプリケーションのカスタマイズされたバージョンを受け取る、ユーザインターフェイスと
を備えることを特徴とするプログラム可能デバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2012−521728(P2012−521728A)
【公表日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2012−502132(P2012−502132)
【出願日】平成22年3月19日(2010.3.19)
【国際出願番号】PCT/US2010/028032
【国際公開番号】WO2010/111148
【国際公開日】平成22年9月30日(2010.9.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.GSM
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】