特許第5805621号(P5805621)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特許5805621モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開
<>
  • 特許5805621-モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開 図000002
  • 特許5805621-モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開 図000003
  • 特許5805621-モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開 図000004
  • 特許5805621-モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開 図000005
  • 特許5805621-モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開 図000006
  • 特許5805621-モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5805621
(24)【登録日】2015年9月11日
(45)【発行日】2015年11月4日
(54)【発明の名称】モバイルアプリケーションのデバイス依存オンデマンドコンパイルおよび展開
(51)【国際特許分類】
   H04M 3/00 20060101AFI20151015BHJP
   H04M 3/42 20060101ALI20151015BHJP
【FI】
   H04M3/00 E
   H04M3/42 C
【請求項の数】15
【全頁数】17
(21)【出願番号】特願2012-502132(P2012-502132)
(86)(22)【出願日】2010年3月19日
(65)【公表番号】特表2012-521728(P2012-521728A)
(43)【公表日】2012年9月13日
(86)【国際出願番号】US2010028032
(87)【国際公開番号】WO2010111148
(87)【国際公開日】20100930
【審査請求日】2013年3月12日
(31)【優先権主張番号】12/410,987
(32)【優先日】2009年3月25日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ディディエ コウセマーカー
(72)【発明者】
【氏名】ダニー ラング
(72)【発明者】
【氏名】ジョー フッティ
(72)【発明者】
【氏名】アシュレイ ネイサン フェニエロ
(72)【発明者】
【氏名】グラハム アーサー ウェラー
(72)【発明者】
【氏名】エイドリアン フェロン
(72)【発明者】
【氏名】ニコラス メイ
【審査官】 安井 雅史
(56)【参考文献】
【文献】 特開2006−178912(JP,A)
【文献】 米国特許第06496979(US,B1)
【文献】 特表2007−526676(JP,A)
【文献】 特開2003−173261(JP,A)
【文献】 後藤 大地 Daichi GOTO,Formula One e.Spreadsheet Engine & Designer徹底研究,WEB+DB PRESS Vol.32 初版,日本,(株)技術評論社,2006年 5月25日,第32巻,第220−229頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/06
9/44− 9/445
9/48− 9/50
9/54−11/00
11/36
H04M 3/00
3/16− 3/20
3/38− 3/58
7/00− 7/16
11/00−11/10
(57)【特許請求の範囲】
【請求項1】
サーバにおいて実行される方法であって、
デバイスからリクエストパッケージを受信するステップであって、前記リクエストパッケージは、前記デバイスの固有構成のコンポーネント要素を含み、前記コンポーネント要素は、
前記デバイス上へのインストールのために選択されたアプリケーションの識別子と、
前記デバイス上のスクリプトエンジンのバージョンであって、前記選択されたアプリケーションを含む複数の異なるアプリケーションを実行するように構成されるスクリプトエンジンのバージョンを識別するスクリプトエンジンバージョン識別子と、
前記デバイスのデバイス識別子と前記デバイスのデバイスタイプ識別子とのうちの少なくとも一方と
を含む、ステップと、
前記リクエストパッケージを前記リクエストパッケージの前記コンポーネント要素に分解するステップと、
前記リクエストパッケージの前記コンポーネント要素に基づいて、前記選択されたアプリケーションのカスタムバージョンを生成するステップであって、前記選択されたアプリケーションの前記カスタムバージョンは、前記リクエストパッケージの前記コンポーネント要素内に含まれる前記スクリプトエンジンバージョン識別子によって識別される、前記デバイス上の前記スクリプトエンジンの前記バージョンによって実行可能である、ステップと、
前記選択されたアプリケーションの前記カスタムバージョンを前記サーバから前記デバイスに送信するステップと
を備える、方法。
【請求項2】
前記デバイスのベース構成と互換性がある複数の利用可能なアプリケーションのリストを、前記サーバから前記デバイスに送信するステップをさらに備える、請求項1に記載の方法。
【請求項3】
前記デバイスの前記固有構成のコンポーネント要素に従ってカスタムコンパイル構成を生成するステップと、
前記カスタムコンパイル構成を使用して前記選択されたアプリケーションをコンパイルすることによって、前記選択されたアプリケーションの前記カスタムバージョンを生成するステップと
をさらに備える、請求項2に記載の方法。
【請求項4】
前記カスタムコンパイル構成を生成するステップは、前記デバイスの前記固有構成に対応する固有のコンパイルオプションを有するカスタムメイクファイルを生成することを備え、
前記選択されたアプリケーションの前記カスタムバージョンを生成するステップは、前記カスタムメイクファイルを使用して前記選択されたアプリケーションをコンパイルすることを備える、請求項3に記載の方法。
【請求項5】
前記選択されたアプリケーションの前記カスタムバージョンの配信を確認することに続いて、前記選択されたアプリケーションの前記カスタムバージョンの全てのコピーを前記サーバから消去するステップをさらに備える、請求項1に記載の方法。
【請求項6】
前記リクエストパッケージのコンポーネント要素は、
前記デバイスの外部光センサと、
前記デバイスの動作センサ能力と、
前記デバイスのカメラタイプと、
前記デバイスの音出力能力と、
前記デバイスの周辺機器構成と、
前記デバイスの総利用可能不揮発性メモリと、
前記デバイスの総揮発性メモリと
のうちの1つ又は複数を識別する、請求項1に記載の方法。
【請求項7】
処理ユニットと、
前記処理ユニットに結合され、双方向通信をサポートするように構成されるトランシーバと、
前記処理ユニットに結合され、前記処理ユニット上で実行するように構成される命令を格納するメモリであって、前記命令は、オペレーティングシステム、ダウンロードシステム及びスクリプトエンジンを実装するように構成される、メモリと、
前記処理ユニットに結合され、前記オペレーティングシステムによってサポートされるディスプレイと
を備えるデバイスであって、
前記スクリプトエンジンは、選択されたアプリケーションのカスタムバージョンを含む複数の異なるアプリケーションを実行するように構成され、
前記ダウンロードシステムは、
前記トランシーバを介して、当該デバイスに適した認定アプリケーションのリストを受信し、
前記リストを前記ディスプレイ上に表示させ、
前記選択されたアプリケーションに関連する、ユーザからの入力を受信し、
当該デバイスの現在の構成に対応する固有構成情報であって、当該デバイスの前記現在の構成に関連するスクリプトエンジンのバージョンの識別子を含む固有構成情報を収集し、
前記選択されたアプリケーションの生成を求めるリクエストであって、当該デバイスの現在の構成に関連するスクリプトエンジンのバージョンの前記識別子を含む前記固有構成情報を備えたリクエストを、サーバに送信し、
前記選択されたアプリケーションのカスタムバージョンであって、当該デバイスの前記現在の構成に関連し、前記固有構成情報内の前記識別子により識別される前記スクリプトエンジンの前記バージョンによって実行可能な前記選択されたアプリケーションの前記カスタムバージョンを前記サーバから受信する、
ように構成される、デバイス。
【請求項8】
プロセッサと、
コンピュータ実行可能命令を格納するメモリと
を備えるサーバであって、
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記プロセッサに、
デバイスから、
選択されたアプリケーションの識別子と、
前記デバイス上のスクリプトエンジンのバージョンを識別するスクリプトエンジンバージョン識別子であって、前記選択されたアプリケーションを含む複数の異なるアプリケーションを実行するように構成されるスクリプトエンジンのバージョンを識別するスクリプトエンジンバージョン識別子と、
前記デバイスのデバイス識別子及び前記デバイスのデバイスタイプ識別子の少なくとも一方と
を備えるコンポーネント要素のセットを含む、リクエストパッケージを受信することと、
前記リクエストパッケージを前記コンポーネント要素に分解することと、
前記セット内の個々のコンポーネント要素を評価して、前記選択されたアプリケーションに利用可能なオプションを識別することと、
前記個々のコンポーネント要素にしたがって前記利用可能なオプションについての1つ又は複数のオプションの設定を選択することと、
前記1つ又は複数のオプションの設定を使用して前記選択されたアプリケーションのカスタムバージョンを生成することであって、前記選択されたアプリケーションのカスタムバージョンは、前記リクエストパッケージの前記コンポーネント要素内に含まれる前記スクリプトエンジンバージョン識別子によって識別される、前記デバイス上の前記スクリプトエンジンの前記バージョンによって実行可能なバージョンであり、前記デバイス上の前記スクリプトエンジンの前記バージョンに基づいて選択される少なくとも1つの個別のオプションの設定を使用して、前記選択されたアプリケーションのカスタムバージョンを生成することと、
前記選択されたアプリケーションのカスタムバージョンを当該サーバから前記デバイスに送信することと
を実行させる、サーバ。
【請求項9】
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記プロセッサに、
前記デバイスの標準構成を判定することと、
前記デバイスの標準構成によってサポートされるアプリケーションのリストを作り出すことと、
前記アプリケーションのリストを前記デバイスに送信することと
をさらに実行させ、前記選択されたアプリケーションは前記リストから選択される、請求項8に記載のサーバ。
【請求項10】
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記プロセッサに、
前記デバイスのスクリーンサイズ及び色深度、
前記デバイスの動作センサ能力、
前記デバイスのカメラタイプ、
前記デバイスの音出力能力、
前記デバイスのワイヤレス周辺機器サポート能力、
前記デバイスの再生サポート、又は
前記デバイスのメモリ構成
に対応する1つ又は複数の他の個別のオプションの設定を使用して前記選択されたアプリケーションの前記カスタムバージョンを生成することをさらに実行させる、請求項8に記載のサーバ。
【請求項11】
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記プロセッサに、
ネットワークタイプを評価して前記1つ又は複数のオプションの設定を選択すること
をさらに実行させる、請求項8に記載のサーバ。
【請求項12】
前記1つ又は複数のオプションの設定は、コンパイラオプション又はカスタムインクルードファイルを備える、請求項8に記載のサーバ。
【請求項13】
前記1つ又は複数のオプションの設定は、前記選択されたアプリケーションの前記カスタムバージョンの1つ又は複数のアドオン特徴を含むか、前記選択されたアプリケーションの前記カスタムバージョンから前記1つ又は複数のアドオン特徴を除外する、請求項8に記載のサーバ。
【請求項14】
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記プロセッサに、
一般的なデバイス構成のための前記選択されたアプリケーションの別のバージョンをプリコンパイルすることと、
前記選択されたアプリケーションの前記プリコンパイルされた別のバージョンを前記一般的なデバイス構成を有する別のデバイスに送信することと
をさらに実行させる、請求項8に記載のサーバ。
【請求項15】
前記選択されたアプリケーションのカスタムバージョンは、アプレット又は実行可能スクリプトである、請求項8に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【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
図2
図3
図4
図5
図6