【文献】
北村 研二,クラウドサービスを使いこなせ! Google API大辞典,月刊アスキードットテクノロジーズ,日本,株式会社アスキー・メディアワークス,2011年 4月23日,第16巻 第6号,pp.24-31
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0019】
本発明は、プロセス、装置、システム、組成、コンピュータ読み取り可能な記憶媒体上に実現されるコンピュータプログラム製品、および/または、プロセッサに接続される記憶装置上に保存される、および/または、プロセッサに接続される記憶装置により提供される命令を実行するように構成されるプロセッサ等のプロセッサを含む、様々な態様で実施可能である。本明細書において、これらの態様または本発明を実施する他のあらゆる形態を、手法とも称する。一般に、本明細書で開示する処理の各工程の順序は、本発明の要旨の範囲内で変更可能である。他に明記しない限り、あるタスクを実行するように構成されるものとして記載されるプロセッサまたは記憶装置等の構成要素は、任意の時点でそのタスクを実行するように一時的に構成される一般的な構成要素として実現されるものでもよいし、そのタスクを実行するように製造された専用の構成要素として実現されるものでもよい。本明細書において用いられる「プロセッサ」という用語は、コンピュータプログラム命令等のデータを処理するように構成される1つ以上のデバイス、回路および/または処理コアを示す。
【0020】
本発明の1つまたは複数の実施形態の詳細を、本発明の原理を例示する添付の図面と共に、以下に記載する。本発明を実施形態に関連して説明するが、本発明はいかなる実施形態にも限定されるものではない。本発明の範囲は請求項によってのみ限定されるものであり、本発明には、多数の変形例、変更例およびそれらの等価物が包含される。以下、本発明が十分に理解されるように、数多くの具体的な詳細を説明するが、これらの詳細は例示に過ぎず、これらの具体的な詳細の一部または全部を省略した形態でも請求項に従って本発明を実施可能である。理解を容易にするために、本発明に関連する技術分野で周知の技術項目に関しては、本発明を不要に不明確にすることがないように、詳細に説明しない。
【0021】
本出願は、ワイヤレスアプリケーションの実行に関する。ワイヤレスアプリケーションは、ソフトウェア開発キットの統合クラスライブラリの最新バージョンを動的に取得して、取得した最新バージョンをロードして実行する。クラスライブラリを動的にロードすることによって、現在のところSDKと統合されているワイヤレスアプリケーションは、新しい機能を獲得する。
【0022】
図11は、ワイヤレスアプリケーションにロードされるSDK動的実装レイヤを示す説明図である。ワイヤレスクライアント1110は、
図9のワイヤレスクライアント910に対応し、ワイヤレスアプリケーション1130を備える。ワイヤレスアプリケーション1130は、SDK永続(permanent)インターフェイスレイヤ1140を備える。ワイヤレスアプリケーション1130の実行の際に、ワイヤレスアプリケーション1130は、サーバ1120からSDK動的実装レイヤ1180を呼び出す。
【0023】
図1は、ワイヤレスアプリケーション発行処理の一つの実施形態を示すフローチャートである。処理100は、
図8のサーバ820により実行可能であり、以下の工程を備える。
【0024】
110で、サーバは、SDKの永続インターフェイスレイヤをワイヤレスアプリケーションに統合する。ある実施形態において、ワイヤレスアプリケーションのコンパイルの際にスタティックリンクにより統合を行う。
【0025】
このSDKは、永続インターフェイスレイヤと動的実装レイヤとを備える。永続インターフェイスレイヤは、インタフェースプロトコルを備える。インタフェースプロトコルは、SDK定義アプリケーションプログラミングインタフェースを参照する。たとえば、SDKは、GetTextAds(Point Position, String content, Font fontSize, Color textColor)のようなテキスト広告を取得するのに用いられるインタフェースを定義する。ある実施形態において、永続インターフェイスレイヤは、インタフェースプロトコルを介してワイヤレスアプリケーションに呼び出される。動的実装レイヤは、ワイヤレスアプリケーションによって呼び出されるインタフェース実装を備え、このインタフェース実装はインタフェースプロトコルに対応する。永続インターフェイスレイヤにおけるインタフェースプロトコルにより、ワイヤレスクライアントのワイヤレスアプリケーションは、動的実装レイヤにおいてインタフェース実装を呼び出す。
【0026】
インタフェースプロトコルは、インタフェース用のプロトコルである。ある実施形態において、インタフェースプロトコルは、インタフェースクラスの名称、パブリックメソッドの名称、承認されたメソッド呼び出しパラメータの型および配列、ならびに、戻り値の型を定義する。ある実施形態において、インタフェースは、クラスを用いて実装される。インタフェース実装は、インタフェースプロトコルに定義されるインタフェースの特定の実装である。ある実施形態において、インタフェースプロトコルは、そのインタフェースプロトコルに準拠するメソッドの名称、パラメータの型および配列、戻り値の型等を備える。
【0027】
120で、サーバは、統合されたワイヤレスアプリケーションを発行し、SDKの動的実装レイヤをインストールする。
【0028】
ある実施形態において、発行およびインストールの作業は、クライアント端末のオペレーティングシステム(OS)によって決まる。たとえば、アンドロイドアプリの場合、アンドロイドアプリは、SDKの動的実装レイヤをアプリケーションパッケージファイル(APK)にパッケージ化する。
【0029】
発行されたワイヤレスアプリケーションをダウンロードして、ワイヤレスクライアントで使用することができる。ある実施形態において、ワイヤレスアプリケーションの使用中に、または、ワイヤレスアプリケーションを次に更新する際に、永続インターフェイスレイヤにおいてインタフェースプロトコルにより定義されるインタフェースおよびサーバの動的実装レイヤ上にインソールされたインタフェース実装を用いて、ワイヤレスアプリケーションを呼び出す。
【0030】
この例では、SDKは、永続インターフェイスレイヤと動的実装レイヤとに分割される。ある実施形態において、永続インターフェイスレイヤは、ワイヤレスアプリケーションにより呼び出し可能なインタフェースアプリケーションを備える。ある実施形態において、更新により、永続インターフェイスレイヤは変化しない。一つの態様として、動的実装レイヤは、インタフェースプロトコルに対応するインタフェース実装を備える。すなわち、動的実装レイヤは、インタフェース実装を介して、ワイヤレスアプリケーションにより呼び出されるものである。ある実施形態において、更新により、動的実装レイヤは変化する。SDKを2つのレイヤに分割することにより、比較的安定な永続インターフェイスレイヤにワイヤレスアプリケーションを統合して発行する。一方、動的実装レイヤは、ワイヤレスクライアントにより用いられるワイヤレスアプリケーションの永続インターフェイスレイヤによって呼び出され、動的実装レイヤのインタフェース実装用のクラスライブラリが、動的にロードされる。言い換えると、動的実装レイヤが動的にロードされる際に、コンパイルされたクラスがメモリにロードされる。SDKの更新では主にインタフェース実装が更新されるため、SDKが更新される場合に、サーバ上に存在する動的実装レイヤのみが更新される。ワイヤレスクライアントのワイヤレスアプリケーション部は、修正する必要がない。したがって、ワイヤレスアプリケーションの統合SDKが更新される際に、ワイヤレスアプリケーション自体(すなわち、SDK以外の部分)を同時に更新する必要はない。このようにSDKを2レイヤに分割することにより、ワイヤレスクライアントのワイヤレスアプリケーションをSDKと共に更新しなければならなくなるような状況は大幅に削減される。さらに、SDKを2レイヤに分割することにより、ワイヤレスアプリケーションユーザに対して透過的になり、ユーザの経験を高めるとともに、ワイヤレスアプリケーション開発者にかかる開発の負担を軽減し、アプリケーションの発行コストならびに開発およびメンテナンスコストを抑制する。
【0031】
図2は、ワイヤレスアプリケーション発行処理の別の実施形態を示すフローチャートである。処理200は、
図8のサーバ820により実行可能であり、以下の工程を備える。
【0032】
210で、サーバは、SDKを分割して、永続インターフェイスレイヤにインタフェースプロトコルをカプセル化するとともに、動的実装レイヤにインタフェース実装をカプセル化する。
【0033】
ある実施形態において、SDKは、アプリケーション開発の際に分割される。
【0034】
従来、プロバイダは、インタフェースプロトコルとインタフェース実装の両方を含むソフトウェアパッケージ全体として、あるいは、単一のソフトウェアプログラムに含まれるものとして、SDKをリリース(公開)している。そして、ワイヤレスアプリケーション開発者は、SDK全体をワイヤレスアプリケーションに統合して発行する。
【0035】
一方、本実施形態では、インタフェースプロトコルは、パッケージに形成される。すなわち、インタフェースプロトコルは、永続インターフェイスレイヤとしてカプセル化される。SDKの永続インターフェイスレイヤは、統合SDKを備える(ワイヤレスアプリケーション等の)外部プログラムのインタフェース呼び出しプロトコルにより処理される。ある実施形態において、パッケージは、コンパイルされたデータであり、外部アプリケーションにより直接呼び出すことができる。統合SDKは、2つの独立したレイヤとして、動的実装レイヤと永続インターフェイスレイヤとを備える。インタフェース呼び出しプロトコルは、メソッドの名称、戻り値の型、承認されたパラメータ、入力−出力プロトコル等のインタフェース定義を備える。インタフェース実装は、独立したパッケージに形成される。すなわち、インタフェース実装は、動的実装レイヤとしてカプセル化される。インタフェース実装は、動的実装レイヤを実現するコンパイルされたコードである。SDK動的実装レイヤは、SDK永続インターフェイスレイヤにより定義されるインタフェースの特定の実装である。SDK動的実装レイヤは、統合SDKを備える外部プログラムによって認識されない。言い換えると、外部プログラムは永続インターフェイスレイヤを呼び出し、動的実装レイヤはSDKにより内部で呼び出される。ある実施形態において、SDK統合外部プログラムのインタフェースプロトコルの前提条件を満たす限り、SDK統合外部プログラムに影響を与えることなく、実装モードとメソッドとを変更する。次に、インタフェースプロトコルから形成されるパッケージを、コンパイルされ発行されている(すなわち、公表されている)ワイヤレスアプリケーションに統合する。発行されたワイヤレスアプリケーションは、ワイヤレスクライアントにより、インストールされ、使用される。また、インタフェース実装から形成されるパッケージは、サーバ上にインストールされる。ワイヤレスクライアントがワイヤレスアプリケーションをインストールまたは使用後に、ワイヤレスアプリケーションに統合されたSDKは、新しいバージョンのインタフェース実装データパッケージをサーバから自律的に取得する。このようにして、SDK統合プログラムは、SDK統合プログラム自体をアップグレードすることなく、新しいSDKアップグレードパッケージを取得することができる。この統合SDKは、永続インターフェイスレイヤを備えるが、動的実装レイヤは備えない。
【0036】
前提条件の例として、永続インターフェイスレイヤがテキスト型の広告を取得するインタフェースのみを提供すると仮定すると、外部プログラムがテキスト型の広告を希望する場合には、新しい広告のプロバイダを含む動的実装レイヤ内の変化は、外部プログラムに影響を与えない。一方、永続インターフェイスレイヤが画像型の広告を新たにサポートし、外部プログラムが画像型の広告を希望する場合には、永続インターフェイスレイヤが前提条件を満たさなくなるため、アップグレードを行う必要がある。
【0037】
ある実施形態において、SDKは、統合の際に、ワイヤレスアプリケーション開発担当者により分割される。ある実施形態において、第三者が、分割されたSDKを提供する。統合を行う際に、ワイヤレスアプリケーション開発担当者は、分割されたSDKの永続インターフェイスレイヤのみをアプリケーションに直接統合する。
【0038】
220で、サーバは、SDK永続インターフェイスレイヤをワイヤレスアプリケーションに統合して、統合されたワイヤレスアプリケーションを発行する。ある実施形態において、統合されたワイヤレスアプリケーションは、ダウンロードされ、ワイヤレスクライアントにより使用される。同時に、SDK動的実装レイヤは、サーバ上にインストールされる。
【0039】
230で、サーバは、ワイヤレスアプリケーションを用いてワイヤレスクライアントから送信された取得要求を受信したか否かを判定する。ワイヤレスアプリケーションを用いてワイヤレスクライアントから送信された取得要求を受信した場合には、制御は工程240に進む。一方、ワイヤレスアプリケーションを用いてワイヤレスクライアントから送信された取得要求を受信していない場合には、制御は工程250に進む。
【0040】
取得要求は、動的実装レイヤのインタフェース実装をサーバから取得するように要求する。
【0041】
サーバが取得要求を受信した場合、要求を受信したということは、発行されたワイヤレスアプリケーションが動的実装レイヤのデータに統合されていないことを意味する。この時点で、動的実装インタフェースのロードと更新とを行うために、動的実装レイヤのデータは、サーバから取得される。サーバが要求取得を受信していない場合、要求を受信していないということは、発行されたワイヤレスアプリケーションが元のバージョンの動的実装レイヤに統合されていることを意味する。一般に、元のバージョンは、発行段階でアプリケーションにパッケージ化された元のバージョンを指し、元のバージョンは、通常、その時点で発行された最も新しいバージョンである。ある実施形態において、ワイヤレスクライアントは、ダウンロードされたワイヤレスアプリケーションから、元の動的実装レイヤのインタフェース実装を自動的にロードする。必要な時点でまたは所定の時点で、取得要求がサーバに送信されて、インタフェース実装が更新され、その結果、動的実装レイヤが更新される。
【0042】
ワイヤレスアプリケーションを用いてワイヤレスクライアントから送信された取得要求を受信した場合、サーバは、240で、サーバからワイヤレスクライアントに、動的実装レイヤのインタフェース実装を送信する。動的実装レイヤのインタフェース実装により、ワイヤレスクライアントにおいて、ワイヤレスアプリケーションは、永続インターフェイスレイヤのインタフェースプロトコルによって定義されたインタフェースを用いて、サーバから取得されたインタフェース実装を呼び出し、インタフェース実装用のクラスライブラリを動的にロードする。
【0043】
ある実施形態において、クラスライブラリはアプリケーション開発段階で導入され、コンパイルおよびパッケージ化後に、クラスライブラリはワイヤレスアプリケーションと共に発行される。このようなアプローチをクラスライブラリのスタティックローディングと呼ぶ。これに対して、発行されたワイヤレスクライアントのアプリケーションの実行中にクラスライブラリを取得し、動的にロードして、対応するロジックを実行する場合、このアプローチをクラスライブラリのダイナミックローディングと呼ぶ。
【0044】
工程240で、インタフェース実装用のクラスライブラリを動的にロードする。すなわち、ワイヤレスアプリケーションの実行中に、インタフェース実装用のクラスライブラリを取得し、取得されたクラスライブラリを動的にロードし、対応するロジックを実行する。
【0045】
250で、サーバは、ワイヤレスクライアントから送信されたクエリ(問い合わせ)要求を受信したか否かを判定する。ワイヤレスクライアントから送信されたクエリ要求を受信した場合には、制御は工程260に進む。一方、ワイヤレスクライアントから送信されたクエリ要求を受信していない場合には、制御は工程250を繰り返す。
【0046】
クエリ要求は、ワイヤレスアプリケーションの永続インターフェイスレイヤと動的実装レイヤのバージョン情報を備え、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンをサーバが有しているか否かを問い合わせるために用いられる。
【0047】
260で、サーバは、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンが存在することを確認し、ワイヤレスクライアントに更新バージョンを送信する。ワイヤレスクライアントは、更新バージョンを用いて、ワイヤレスクライアントのワイヤレスアプリケーションの永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせを更新する。
【0048】
従来、ワイヤレスアプリケーションの統合SDKを更新する際に、ワイヤレスアプリケーション自体(言い換えると、SDK以外の部分)も同時に更新する必要があるという問題があった。しかし、上述の処理200では、永続インターフェイスレイヤは動的実装レイヤと比べてアップグレードされる回数が少なく、ワイヤレスアプリケーションを更新することなく動的実装レイヤ自体が更新されるため、更新SDKとともにワイヤレスクライアントのワイヤレスアプリケーションをアップグレードする必要があるという状況が削減される。また、上述の処理200は、ワイヤレスアプリケーションユーザに透過的であり、ワイヤレスアプリケーションユーザの経験を高めるとともに、ワイヤレスアプリケーション開発者にかかる開発の負担を軽減し、アプリケーションの発行コストならびに開発およびメンテナンスコストを抑制する。
【0049】
図3は、ワイヤレスアプリケーション発行処理のさらに別の実施形態を示すフローチャートである。処理300は、
図8のサーバ820により実行可能であり、以下の工程を備える。
【0050】
310で、サーバは、SDKを分割して、永続インターフェイスレイヤにインタフェースプロトコルをカプセル化するとともに、動的実装レイヤにインタフェース実装をカプセル化する。
【0051】
ある実施形態において、SDKは、リフレクション機構に基づいて分割される。Java(登録商標)におけるリフレクション機構は、コンパイルの際にクラスの名称を知らないままランタイム(実行時間)の間に調査可能なクラスを参照する。たとえば、リフレクション機構(リフレクション法とも称する)は、Java(登録商標)のリフレクトパッケージを利用する。リフレクションは、.NETの機構である。ある実施形態において、リフレクションにより、ワイヤレスアプリケーションは、(クラス、構造体、デリゲート、インタフェースおよびENUMを含む).NETにおける各型の要素を取得する。リフレクション機構は、メソッド、属性、イヴェント、コンストラクタ等を含む。ある実施形態において、リフレクション機構は、各要素の名称、修飾子およびパラメータ等を取得する。リフレクションが存在する場合には、各型に関する十分な知識を持つことが可能である。ワイヤレスクライアントのワイヤレスアプリケーションがコンストラクタに関する情報を所得すると、ワイヤレスアプリケーションのコンパイルの際にオブジェクトの型が分からなくても、リフレクション機構は、このオブジェクトを直接生成することができる。
【0052】
ある実施形態において、リフレクション機構は、SDKを分割することによって、分割されたSDKの実装を容易にし、ワイヤレスアプリケーション発行スキームの実装コストを削減する。
【0053】
320で、サーバは、SDKの永続インターフェイスレイヤをワイヤレスアプリケーションに統合し、統合されたワイヤレスアプリケーションを発行し、SDKの動的実装レイヤをサーバ上にインストールする。
【0054】
たとえば、SDKの永続インターフェイスレイヤは、コンパイルの際に、スタティックリンクを用いてワイヤレスアプリケーションに静的にパッケージ化される。
【0055】
ある実施形態において、ワイヤレスアプリケーションは、元のバージョンのSDK動的実装レイヤと、当初は統合されていない。言い換えると、SDK動的実装レイヤコードの元のバージョンは、コンパイルの際に、ワイヤレスアプリケーションにリンクされていない。
【0056】
330で、ワイヤレスクライアントは、統合されたワイヤレスアプリケーションをダウンロードして、ワイヤレスアプリケーションをインストールし、ワイヤレスアプリケーションまたはその組み合わせを使用する。
【0057】
340で、ワイヤレスクライアントは、統合されたワイヤレスアプリケーションが元のバージョンのSDK動的実装レイヤを備えるか否かを判定する。統合されたワイヤレスアプリケーションが元のバージョンのSDK動的実装レイヤを備える場合には、制御は工程350に進む。統合されたワイヤレスアプリケーションが元のバージョンのSDK動的実装レイヤを備えていない場合には、制御は工程360に進む。
【0058】
たとえば、ある状況において、ワイヤレスアプリケーションは、元のバージョンのSDK動的実装レイヤと統合されていない。この場合には、ワイヤレスクライアントは、元のバージョンのSDK動的実装レイヤをサーバからダウンロードして取得し、その後、ワイヤレスアプリケーションを動的にロードして、呼び出す。別の状況において、SDKは、元のバージョンのSDK動的実装レイヤを備える。この場合には、ワイヤレスクライアントは、ワイヤレスアプリケーションの実行中に、元のバージョンのSDK動的実装レイヤを直接ロードして呼び出し、その後、新しいバージョンのSDK動的実装レイヤが存在するか否かを問い合わせる要求をサーバに送信する。新しいバージョンのSDK動的実装レイヤが存在する場合には、ワイヤレスクライアントは、新しいバージョンのSDK動的実装レイヤをダウンロードした後、新しいバージョンのSDK動的実装レイヤを呼び出してロードする。ある実施形態において、既存のバージョンのSDK動的実装レイヤがダウンロードされたバージョンのSDK動的実装レイヤに置き換わる。別の状況では、ワイヤレスアプリケーションの実行中に、ワイヤレスクライアントは、新しいバージョンのSDK動的実装レイヤが存在するか否かを問い合わせる要求をサーバに送信する。新しいバージョンのSDK動的実装レイヤが存在する場合には、ワイヤレスクライアントは、新しいバージョンのSDK動的実装レイヤをダウンロードした後、新しいバージョンのSDK動的実装レイヤを呼び出してロードする。新しいバージョンが存在しない場合には、ワイヤレスクライアントは、プロトコルに基づいて(たとえば、パスおよびファイル名称に基づいて)、SDK動的実装レイヤのバージョン(すなわち、元のバージョンの動的実装レイヤ)を見つける。たとえば、元のバージョンの動的実装レイヤは、特定のディレクトリに保存されているが、アップグレードに成功すると、新しいバージョンの動的実装レイヤが、特定のディレクトリ内の元のバージョンの動的実装レイヤに置き換わる。
【0059】
350で、ワイヤレスクライアントのワイヤレスアプリケーションは、ワイヤレスクライアント上の統合SDKの永続インターフェイスレイヤにおけるインタフェースプロトコルにより定義されるインタフェースを用いて、元のバージョンの動的実装レイヤにおけるインタフェース実装を呼び出し、インタフェース実装用のクラスライブラリを動的にロードする。次に、制御は工程380に進む。
【0060】
ある実施形態において、インタフェース実装用のクラスライブラリが動的にロードされる。すなわち、ワイヤレスアプリケーションの実行中に、ワイヤレスクライアントは、インタフェース実装用のクラスライブラリを取得し、その後、ワイヤレスクライアントは、クラスライブラリを動的にロードして、対応するロジックを実行する。
【0061】
統合されたワイヤレスアプリケーションが元のバージョンのSDK動的実装レイヤを備えていない場合には、360で、ワイヤレスクライアントのワイヤレスアプリケーションは、SDK動的実装レイヤのインタフェース実装をサーバから取得する。
【0062】
ある実施形態において、ワイヤレスアプリケーションは、元のバージョンのSDK動的実装レイヤと、当初は統合されていない。したがって、340で、ワイヤレスアプリケーションが元のバージョンのSDK動的実装レイヤを備えていないことをワイヤレスクライアントが確認すると、制御は工程360に進む。
【0063】
370で、ワイヤレスクライアントのワイヤレスアプリケーションは、SDK永続インターフェイスレイヤにおけるインタフェースプロトコルにより定義されるインタフェースを用いて、サーバから取得したインタフェース実装を呼び出し、インタフェース実装用のクラスライブラリを動的にロードする。
【0064】
380で、ワイヤレスクライアントのワイヤレスアプリケーションは、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの任意の組み合わせの更新バージョンをサーバが有しているか否かを判定する。永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの任意の組み合わせの更新バージョンをサーバが有している場合には、制御は工程390に進む。永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの任意の組み合わせの更新バージョンをサーバが有していない場合には、制御は工程380を繰り返す。
【0065】
SDKの初期化の際に、ワイヤレスクライアントは、現在のバージョンのローカルSDK関連データパッケージを取得する。ある実施形態において、現在のバージョンは1つの番号であり、サーバは、現在サーバ上に存在する現在のバージョンの最新SDK関連データパッケージをクライアントに返送する。サーバ上のバージョンがクライアントのSDKの現在のバージョンよりも新しい場合には、すなわち、サーバがより新しいバージョンを実行中の場合には、ワイヤレスクライアントは、サーバから得たより新しいSDKに更新する。
【0066】
390で、ワイヤレスクライアントのワイヤレスアプリケーションは、SDK永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせのより新しいバージョンをサーバからダウンロードして、ワイヤレスクライアントにおけるSDK永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせを更新する。
【0067】
ワイヤレスアプリケーションの発行およびSDKのアップグレードに関して、従来のワイヤレスアプリケーションの発行およびSDKのアップグレードと比較して、さらに説明する。(
【0068】
たとえば、広告SDKがインタフェースAdObject.displayAd()を提供すると仮定する。アプリケーションは、このインタフェースを呼び出して、広告コンテントを取得する。SDKの永続インターフェイスレイヤは、このインタフェースAdObject.displayAd()を呼び出す{リフレクション機構を用いて、動的実装レイヤのAdObjectImp.displayAd()を呼び出す}。元の実装は実装AdObjectImp.displayAd(print "ad1")を提供し、この時に、AdObject.displayAdを呼び出したアプリケーションはad1をプリントする。この際に、動的実装レイヤが新しいバージョンAdObjectImp.displayAd(print "ad1")に更新されている場合には、アプリケーションがAdObject.displayAd()を呼び出すと、AdObject.displayAd()を呼び出したアプリケーションはad2をプリントする。したがって、AdObject.displayAd()は、永続インターフェイスレイヤに属し、アプリケーションにリンクされる。すべてのバージョンのAdObjectImp.displayAdは、動的実装レイヤに属し、アプリケーションにはリンクされない。ただし、永続インターフェイスレイヤが実行されると、AdObjectImp.displayAdは動的にロードされて呼び出される。
【0069】
図4は、従来のワイヤレスアプリケーション発行およびSDKアップグレード処理を示す説明図である。従来、ワイヤレスアプリケーション領域では、アプリケーションへの静的パッケージ化によりSDK統合が行われている。従来のSDK統合には、ワイヤレスアプリケーションをアップグレードするべき頻度が高いことやアップグレードのコストが高くつくという問題があった。これは、SDKをアップグレードするたびに、SDKに統合されているすべてのアプリケーションを統合し、コンパイルし、パッケージ化して再び配信する必要があり、クライアントのエンドユーザは処理のダウンロードと更新とを行う必要があるためである。先に行われる処理がすべて実行された後で初めて、最終的なSDKの更新を行うことができる。
図4において、アプリケーションにおけるSDKは、アプリケーションへのコンパイルの際に、その全体が静的にリンクされ、その後で、アプリケーションが発行される。言い換えると、SDK全体がアプリケーションに統合された後で、SDKを統合したアプリケーションが発行される。ワイヤレスクライアントがアプリケーションをインストールして用いた後でアプリケーションにおけるSDKをアップグレードする必要があれば、アプリケーション自体およびそれに統合されているSDKを含むアプリケーション全体をサーバからダウンロードしなければならない。さらに、新しいバージョンのSDKが発行されるたびに、たとえワイヤレスアプリケーション自体は全く修正されていない場合でも、ワイヤレスアプリケーション開発者は、コードを修正して再発行しなければならない。また、ユーザ側のワイヤレスアプリケーション自体も更新しなければならない。ワイヤレスアプリケーション開発者にとって、このような作業によって、アプリケーション発行コストのみならず、余分な開発およびメンテナンスコストがかかる。また、この作業により、ユーザ側のワイヤレスアプリケーションに関するユーザの経験を損なう結果となる。
【0070】
図5は、ワイヤレスアプリケーション発行およびSDKアップグレード処理の一つの実施形態を示す説明図である。SDK永続インターフェイスレイヤと動的実装レイヤが分割されている様子を
図5に示す。アプリケーションは、SDK永続インターフェイスレイヤにのみ統合されている。言い換えると、SDK永続インターフェイスレイヤは、コンパイルの際にアプリケーションに静的にリンクされた後に発行される。一方、SDK動的実装レイヤは、アプリケーションが実行されている間に、アプリケーションに動的にロードされる。SDKをアップグレードする必要がある場合、SDK動的実装レイヤのみが修正される。アプリケーション自体は変更する必要がない。したがって、ワイヤレスアプリケーションは、ワイヤレスアプリケーション自体を変更する必要がなく、ユーザは経験を高めることができる。さらに、ワイヤレスアプリケーション開発者は、アプリケーションのさらなる開発およびメンテナンスを行う必要がないため、アプリケーションの発行コストおよびアプリケーションの開発およびメンテナンスコストを削減することができる。
【0071】
ある実施形態において、動的クラスライブラリロード機構は、(ほとんど変化しない)SDKの永続インターフェイスレイヤを(定期的な更新が必要な)SDKの動的実装レイヤから分離する。永続インターフェイスレイヤのみをワイヤレスクライアントのアプリケーションにリンクさせてパッケージ化する一方で、動的実装レイヤはランタイムの間に動的クラスライブラリのロードと呼び出しとを用いてバンドルされる。この結果、ワイヤレスクライアントのワイヤレスアプリケーションをSDKと共にアップグレードしなければならない状況は削減される。基本となる抽象インターフェイスレイヤ(すなわち、SDKの永続インターフェイスレイヤ)が変化しない限り、ワイヤレスアプリケーションは、ユーザに対して透過的に、実行中に自動的にアップグレード可能である。
【0072】
図6は、ワイヤレスアプリケーション実行処理の一つの実施形態を示すフローチャートである。処理600は、
図8のクライアント810により実行可能であり、以下の工程を備える。
【0073】
610で、クライアントは、統合SDKの永続インターフェイスレイヤに統合されたワイヤレスアプリケーションのデータパッケージを取得する。
【0074】
SDKは、永続インターフェイスレイヤと動的実装レイヤとを備える。永続インターフェイスレイヤは、ワイヤレスアプリケーションにより呼び出し可能なインタフェースプロトコルを備える。本出願に開示される処理は、ワイヤレスアプリケーションに限定されるものではなく、他のアプリケーションにも適用可能である。永続インターフェイスレイヤは、ワイヤレスアプリケーションに統合される。動的実装レイヤは、インタフェース実装を備える。インタフェース実装は、永続インターフェイスレイヤのインタフェースプロトコルに対応し、インタフェースプロトコルにより呼び出し可能である。動的実装レイヤは、サーバ上にインストールされる。SDKの分割は、永続インターフェイスレイヤとしてのSDKにインタフェースプロトコルをカプセル化すること、および、動的実装レイヤとしてのSDKにインタフェース実装をカプセル化することを含む。ある実施形態において、SDKはリフレクション機構を用いて分割される。
【0075】
ある実施形態において、ワイヤレスクライアントは、まず、SDKの永続インターフェイスレイヤに統合されたワイヤレスアプリケーションのデータパッケージを取得する。
【0076】
620で、クライアントは、データパッケージを用いて、ワイヤレスアプリケーションを実行する。
【0077】
ある実施形態において、ワイヤレスクライアントは、状況に応じて、データパッケージを用いてワイヤレスアプリケーションを実行する。
【0078】
たとえば、ワイヤレスアプリケーションが元のバージョンの動的実装レイヤに統合されている場合には、ワイヤレスアプリケーションは、永続インターフェイスレイヤにおけるインタフェースプロトコルにより定義されるインタフェースを用いて、元のバージョンの動的実装レイヤにおけるインタフェース実装を呼び出す。さらに、ワイヤレスアプリケーションは、インタフェース実装用のクラスライブラリを動的にロードする。ワイヤレスアプリケーションが元のバージョンの動的実装レイヤに統合されていない場合には、ワイヤレスアプリケーションは、取得要求をサーバに送信する。取得要求は、動的実装レイヤのインタフェース実装をサーバから取得することを要求する。サーバがクライアントに動的実装レイヤのインタフェース実装を送信した後、ワイヤレスアプリケーションは、サーバから送信された動的実装レイヤのインタフェース実装を受信する。さらに、ワイヤレスアプリケーションは、永続インターフェイスレイヤにおけるインタフェースプロトコルにより定義されるインタフェースを用いて、サーバから取得したインタフェース実装を呼び出し、インタフェース実装用のクラスライブラリを動的にロードする。
【0079】
ある実施形態において、ワイヤレスアプリケーションのデータパッケージを用いてワイヤレスアプリケーションを実行した後に、すなわち、インタフェース実装用のクラスライブラリを動的にロードした後に、ワイヤレスアプリケーションは、クエリ要求をサーバに送信する。クエリ要求は、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンがサーバ上に存在するか否かを問い合わせる。サーバ上に更新バージョンが存在する場合には、ワイヤレスクライアントは、サーバから返送された永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンを受信して、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンに更新する。
【0080】
ある実施形態において、SDKに統合されたワイヤレスアプリケーションを有するワイヤレスクライアントは、ワイヤレスアプリケーション自体(言い換えると、SDK以外の部分)を更新する必要はない。代わりに、ワイヤレスクライアントは、ワイヤレスアプリケーションに統合されたSDKのみを更新する。このような更新処理により、ワイヤレスクライアントのワイヤレスアプリケーションをSDKとともにアップグレードしなければならない状況を削減でき、ワイヤレスアプリケーションユーザのユーザ経験を高めることができる。
【0081】
ワイヤレスアプリケーション実行処理は、上述の処理の少なくとも一つで、ワイヤレスアプリケーション発行処理に対応することに留意されたい。したがって、説明を簡潔にするために、上述の処理の少なくとも一つに関する詳細は省略する。
【0082】
図7は、ワイヤレスアプリケーション発行装置の一つの実施形態を示す構造ブロック図である。装置700は、
図8のサーバ820に実装可能である。装置700は、統合モジュール710と、発行モジュール720と、更新モジュール750と、を備える。
【0083】
統合モジュール710は、SDKの永続インターフェイスレイヤをワイヤレスアプリケーションに統合する。SDKは、永続インターフェイスレイヤと動的実装レイヤとを備える。永続インターフェイスレイヤは、ワイヤレスアプリケーションにより呼び出されるインタフェースプロトコルを備え、一方、動的実装レイヤは、インタフェース実装を備える。動的実装レイヤのインタフェース実装は、永続インターフェイスレイヤのインタフェースプロトコルに対応する。永続インターフェイスレイヤのインタフェースプロトコルにより、ワイヤレスクライアントにおけるワイヤレスアプリケーションは、動的実装レイヤのインタフェース実装を呼び出す。
【0084】
発行モジュール720は、統合されたワイヤレスアプリケーションを発行し、SDKの動的実装レイヤをサーバ上にインストールする。ワイヤレスアプリケーションの発行後、ワイヤレスクライアントは、永続インターフェイスレイヤにおけるインタフェースプロトコルにより定義されるインタフェースを用いて、発行されたワイヤレスアプリケーションをダウンロードおよび使用して、動的実装レイヤのインタフェース実装を呼び出すことができる。
【0085】
ある実施形態において、ワイヤレスアプリケーション発行装置700は、さらに、分割モジュール730を備える。統合モジュール710がSDKの永続インターフェイスレイヤをワイヤレスアプリケーションに統合し、永続インターフェイスレイヤとしてのSDKにインタフェースプロトコルをカプセル化するとともに動的実装レイヤとしてのSDKにインタフェース実装をカプセル化する前に、分割モジュール730はSDKを分割する。ある実施形態において、SDKは、リフレクション機構により分割される。
【0086】
ある実施形態において、ワイヤレスアプリケーション発行装置700は、さらに、送信モジュール740を備える。発行モジュール720が統合されたワイヤレスアプリケーションを発行し、SDKの動的実装レイヤをサーバ上にインストールした後、送信モジュール740は、ワイヤレスアプリケーションを用いてワイヤレスクライアントから送信された取得要求を取得する。取得要求は、動的実装レイヤのインタフェース実装をサーバから取得することを要求するために用いられる。取得要求は、動的実装レイヤのインタフェース実装をサーバからワイヤレスクライアントに送信する基準として用いられる。永続インターフェイスレイヤのインタフェースプロトコルにより、ワイヤレスクライアントにおけるワイヤレスアプリケーションは、サーバから取得したインタフェース実装を呼び出して、インタフェース実装用のクラスライブラリを動的にロードする。ある実施形態において、ワイヤレスクライアントにおけるワイヤレスアプリケーションは、永続インターフェイスレイヤのインタフェースプロトコルにより定義されたインタフェースを用いて、呼び出される。
【0087】
ある実施形態において、統合モジュール710は、SDKの永続インターフェイスレイヤをワイヤレスアプリケーションに統合するのとは異なる時に、元のバージョンの動的実装レイヤをワイヤレスアプリケーションに統合する。ある実施形態において、統合モジュール710は、SDKの永続インターフェイスレイヤのワイヤレスアプリケーションへの統合よりも前に、元のバージョンの動的実装レイヤをワイヤレスアプリケーションに統合する。ある実施形態において、統合モジュール710は、SDKの永続インターフェイスレイヤのワイヤレスアプリケーションへの統合より後に、元のバージョンの動的実装レイヤをワイヤレスアプリケーションに統合する。発行モジュール720は、元のバージョンのSDK永続インターフェイスレイヤと元のバージョンの動的実装レイヤとを統合した統合ワイヤレスアプリケーションを発行して、ワイヤレスアプリケーションをダウンロード可能にする。発行モジュール720により、ワイヤレスクライアントのワイヤレスアプリケーションは、永続インターフェイスレイヤにおけるインタフェースプロトコルにより定義されるインタフェースを用いて、元のバージョンの動的実装レイヤにおけるインタフェース実装を呼び出し、インタフェース実装用のクラスライブラリを動的にロードし、SDKの動的実装レイヤをサーバ上にインストールすることができる。発行モジュール720は、統合されたワイヤレスアプリケーションをワイヤレスクライアントがダウンロードおよび使用できるようにする。
【0088】
ある実施形態において、送信モジュール740によりサーバが動的実装レイヤのインタフェース実装をワイヤレスクライアントに送信した後に、発行モジュール720は、ワイヤレスクライアントにより送信されたクエリ要求を受信する。クエリ要求を用いて、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンをサーバが有しているか否かを問い合わせ、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンをサーバが有していることを確認して、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンをサーバからワイヤレスクライアントに送信する。ワイヤレスクライアントは、更新バージョンを用いて、ワイヤレスクライアントのワイヤレスアプリケーションの永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせを更新する。
【0089】
発行モジュール720が元のバージョンのSDK永続インターフェイスレイヤおよび動的実装レイヤに統合されたワイヤレスアプリケーションを発行し、ワイヤレスアプリケーションをワイヤレスクライアントがダウンロードおよび使用できるようにした後で、更新モジュール750は、ワイヤレスクライアントから送信されたクエリ要求を受信し、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンをサーバが有していることを確認して、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンをサーバからワイヤレスクライアントに送信する。これにより、ワイヤレスクライアントは、ワイヤレスクライアントのワイヤレスアプリケーションの永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせを更新する。
【0090】
ある実施形態において、ワイヤレスアプリケーション発行装置700は、サーバ上にインストールされる。
【0091】
ワイヤレスアプリケーション発行装置700を用いて、上述した対応するワイヤレスアプリケーション発行処理の少なくとも1つを実行する。さらに、ワイヤレスアプリケーション発行装置700は、上述した対応する処理と同様の効果を有している。説明を簡潔にするために、上述した処理の詳細は省略する。
【0092】
図8は、ワイヤレスアプリケーション発行システムの一つの実施形態を示す構造ブロック図である。システム800は、ワイヤレスクライアント810とSDKアップグレードサーバ820とを備える。ワイヤレスクライアント810は、ネットワーク830を介して、SDKアップグレードサーバ820に接続される。
【0093】
SDKアップグレードサーバ820は、ワイヤレスアプリケーション発行装置を備える。たとえば、サーバ820は、
図7のワイヤレスアプリケーション発行装置700を備える。
【0094】
図9は、ワイヤレスアプリケーション発行システムを用いてSDKをアップグレードする様子を示す説明図である。システム900は、ワイヤレスクライアント910とSDKアップグレードサーバ920とを備える。ワイヤレスクライアント910は、
図8のワイヤレスクライアント810に対応する。SDKアップグレードサーバ920は、
図8のSDKアップグレードサーバ820に対応する。
【0095】
ある実施形態において、SDKアップグレードサーバ920がワイヤレスクライアント910上にロードされたワイヤレスアプリケーション930にSDK永続インターフェイスレイヤ940を統合する場合、SDK永続インターフェイスレイヤ940は、動的インタフェースロードモジュール950と、自動検出/アップグレードモジュール960と、ダウンロード管理モジュール970と、を備える。動的インタフェースロードモジュール950は、ワイヤレスアプリケーションの実行中に、動的実装レイヤ用のクラスライブラリを動的にロードして、SDKまたはワイヤレスアプリケーションにより提供される機能を完了させる。自動検出/アップグレードモジュール960は、SDK初期化の際に、永続インターフェイスレイヤの現在のバージョンとSDKアップグレードサーバ920上に存在する動的実装レイヤの最新バージョンとを比較して、ランタイム更新作業を行うべきか否かを判定する。ランタイム更新作業を行う必要がある場合には、ダウンロード管理モジュール970は、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの最新バージョンのデータパッケージをSDKアップグレードサーバ
920からダウンロードして、アップグレードを実行する。
【0096】
ワイヤレスクライアント910は、SDKアップグレードサーバ920から統合されたワイヤレスアプリケーションをダウンロードし、統合されたワイヤレスアプリケーション930をインストールして用いる。ある実施形態において、ワイヤレスクライアント910は、ワイヤレスアプリケーションのインストール中または実行中に、ワイヤレスアプリケーションのSDK永続インターフェイスレイヤ940における動的インタフェースロードモジュール950を用いて、SDK動的実装レイヤ980のインタフェース実装をSDKアップグレードサーバ920から取得し、インタフェース実装用のクラスライブラリの動的なロードおよび呼び出しを行う。次に、ワイヤレスクライアント910は、自動検出/アップグレードモジュール960を用いて、ワイヤレスクライアント910が対応する更新バージョンを有するか否かを問い合わせるクエリをSDKアップグレードサーバ920に対して定期的にまたは随時行うことができる。ワイヤレスクライアント910が対応する更新バージョンを有する場合には、次に、ワイヤレスクライアント910は、ダウンロード管理モジュール970を用いてSDKアップグレードサーバ920から対応する更新バージョンをダウンロードして、ワイヤレスクライアント910のSDK永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせを更新する。
【0097】
ある実施形態において、SDK動的実装レイヤ980は、SDKアップグレードサーバ920上にインストールされて、インタフェース実装を更新する。さらに、SDKアップグレードサーバ920は、SDK永続インターフェイスレイヤ940を更新する。図面を簡略化するために、SDK動的実装レイヤ980が単独で図示されていることに留意されたい。ある実施形態において、SDK動的実装レイヤ980のアップグレードに別のサーバが用いられる。ある実施形態において、SDK永続インターフェイスレイヤ940の更新に関与するサーバ上に、SDK動的実装レイヤ980のアップグレードもインストールされる。言い換えると、1つのサーバで複数の機能部が更新される。
【0098】
統合されたSDK永続インターフェイスレイヤ940を備えるワイヤレスアプリケーション930は、ワイヤレスクライアント910上にインストールされる。ウェブアプリケーション930の実行時に、ウェブアプリケーション930は、動的インタフェースロードモジュール950を用いて、動的実装レイヤ980用のクラスライブラリを動的にロードして、広告をロードする等のSDKまたはアプリケーションにより提供される機能を完了させる。ワイヤレスアプリケーション930は、自動検出/アップグレードモジュール960を用いて、SDKアップグレードサーバ920に定期的または随時問い合わせを行って、SDKアップグレードサーバ920で、SDK動的実装レイヤ980、永続インターフェイスレイヤ940、またはこれらの組み合わせが更新されているか否かを判定する。SDKの初期化の際に、自動検出/アップグレードモジュール960は、SDK動的実装レイヤ980、永続インターフェイスレイヤ940、またはこれらの組み合わせの現在のバージョンをSDKアップグレードサーバ920上に存在する最新バージョンと比較して、更新作業を行うべきか否かを判定する。ある実施形態において、SDKの初期化の際に、自動検出/アップグレードモジュール960は、ローカルSDK動的実装レイヤのデータパッケージの現在のバージョン番号を取得する。通常、ローカルSDK動的実装レイヤのデータパッケージの現在のバージョン番号は1つの番号である。サーバは、サーバ上に現在存在するSDK動的実装レイヤのデータパッケージの最新バージョンをクライアントに返送する。サーバのバージョン番号がクライアントSDKの現在のバージョン番号と一致しない場合には、新しいバージョンが存在し、更新を行うことができることを意味する。さらに、SDK永続インターフェイスレイヤ940は比較的安定であるが、アップグレード可能である。したがって、永続インターフェイスレイヤのバージョンは、SDKアップグレードサーバ920から対応する動的クラスライブラリのバージョンをダウンロードするか否かを判定する基準として用いられる。SDKアップグレードサーバ920は、ワイヤレスクライアント910からの最新のバージョンを問い合わせる要求に応じて、最新のバージョン番号と対応するバージョン用のパッケージのダウンロードアドレスとを返送する。その後、ダウンロード管理モジュール970は、(永続インターフェイスレイヤのデータパッケージおよび動的実装レイヤのデータパッケージを含む)最も最近更新された動的クラスライブラリ実装パッケージをSDKアップグレードサーバ920からダウンロードして、更新を実行する。
【0099】
上述したシステム900は、自己広告SDKおよび第三者広告SDKを用いて、比較的永続的なインタフェース実装広告を指向するロジックを含むSDKのみを発行し、この結果、ワイヤレスアプリケーション開発者は、ワイヤレスアプリケーションに統合された広告SDKをサーバ上で構成することができる。ワイヤレスアプリケーションが実行される際に、ワイヤレスクライアントは、SDK統合クラスライブラリの最新バージョンをサーバから取得し、SDK統合クラスライブラリの最新バージョンをロードおよび実行する。したがって、広告SDKをワイヤレスアプリケーションに統合した後に頻繁に更新する必要がなくなる。
【0100】
システム900は、ワイヤレス広告SDKアップグレードにのみ有用なのではなく、ワイヤレスクライアント広告を最適化する目的で複数の広告SDKを統合する連合型のSDKを更新およびアップグレードするのにも適している。ワイヤレスアプリケーション自体がSDKを用いる場合には、ワイヤレスアプリケーションを用いて、ワイヤレスアプリケーション自体を更新し、機能をアップグレードする。
【0101】
システム900は、以下の利点を有する。
【0102】
(1)ワイヤレスアプリケーションは、更新されなくても、広告を取得および掲載する新しい能力を獲得する。
【0103】
(2)ワイヤレスアプリケーションは、ワイヤレスアプリケーションを更新しなくても、新しい広告SDKと統合でき、以前に統合されたSDKのバージョンを更新することができる。
【0104】
(3)サーバ上の構成を用いて、広告に対するクライアント統合ワイヤレス広告SDKの比を増減させることができる。
【0105】
(4)ワイヤレスアプリケーション自体は、この解決策を採用して、クラスライブラリのランタイムダウンロードおよびアプリケーション機能の更新を行う。したがって、ダウンロード、インストール、および、ユーザがワイヤレスアプリケーションを更新する場合の他の作業を削減することができる。
【0106】
図10は、ワイヤレスアプリケーション実行装置の一つの実施形態を示す構造ブロック図である。装置1000は、取得モジュール1010と実行モジュール1020とを備える。ワイヤレスアプリケーション実行装置1000は、
図8のワイヤレスクライアント810にインストールされるものでもよい。
【0107】
取得モジュール1010は、SDK永続インターフェイスレイヤに統合されたワイヤレスアプリケーションのデータパッケージを取得する。実行モジュール1020は、ワイヤレスアプリケーションのデータパッケージを用いて、ワイヤレスアプリケーションを実行する。SDKは、永続インターフェイスレイヤおよび動的実装レイヤを備える。永続インターフェイスレイヤは、ワイヤレスアプリケーションに統合され、ワイヤレスアプリケーションにより呼び出されるインタフェースプロトコルを備える。動的実装レイヤは、サーバ上にインストールされ、インタフェースプロトコルに対応するインタフェース実装を備える。
【0108】
ある実施形態において、実行モジュール1020は、取得要求をサーバに送信する。取得要求は、動的実装レイヤのインタフェース実装をサーバから取得することを要求する。ワイヤレスアプリケーションは、サーバから返送された動的実装レイヤのインタフェース実装を受信する。ワイヤレスアプリケーションは、また、永続インターフェイスレイヤにおけるインタフェースプロトコルにより定義されるインタフェースを用いて、サーバから取得したインタフェース実装を呼び出す。さらに、ワイヤレスアプリケーションは、インタフェース実装用のクラスライブラリを動的にロードする。
【0109】
ある実施形態において、ワイヤレスアプリケーションは、元のバージョンの動的実装レイヤに統合される。この場合には、実行モジュール1020は、永続インターフェイスレイヤにおけるインタフェースプロトコルにより定義されるインタフェースを用いて、元のバージョンの動的実装レイヤにおけるインタエース実装を呼び出し、インタフェース実装用のクラスライブラリを動的にロードする。
【0110】
ある実施形態において、ワイヤレスアプリケーション実行装置1000は、さらに、更新モジュール1030を備える。実行モジュール1020がインタエース実装用のクラスライブラリを動的にロードした後に、更新モジュール1030は、サーバにクエリ要求を送信する。クエリ要求は、永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンをサーバが有するか否かを問い合わせ、サーバから返送された永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせの更新バージョンを受信し、更新バージョンを用いて、ワイヤレスアプリケーションの永続インターフェイスレイヤ、動的実装レイヤ、またはこれらの組み合わせを更新する。
【0111】
ワイヤレスアプリケーション装置は、上述したワイヤレスアプリケーション実行処理の少なくとも1つを実施し、ワイヤレスアプリケーション実行処理と同様の効果を有する。
【0112】
本出願は、SDKを抽象化して、比較的永続的なインタフェースへの指向を含むSDKのみを発行する。これにより、ワイヤレスアプリケーション開発者は、頻繁に更新されるサーバ上にSDKを構成して更新することができる。したがって、ワイヤレスアプリケーションの実行中に、ワイヤレスアプリケーションは、SDK統合クラスライブラリの最新バージョンをサーバから動的に取得するための基準としてこの構成を用いて、最新バージョンをロードして実行する。クラスライブラリを動的にロードすることにより、SDKと現在統合されているワイヤレスアプリケーションは、新しい機能を取得する。本出願は、アンドロイドプラットフォーム上でワイヤレスアプリケーションを実行させるように開発されたJAVA(登録商標)をはじめとする様々な種類のオペレーティングプラットフォーム用にワイヤレスアプリケーションを発行およびアップグレードするのに適している。たとえば、統合ゲームエンジンパッケージを用いてゲームを開発したり、プログラム配信をコンパイルしたりという例を挙げることができ、また、アクセスカウントおよびユーザトラッキングの統合パッケージによる統計を用いることもできる。ただし、本出願は上述した例に限定されるものではない。本出願のワイヤレスアプリケーション発行およびアップグレードの解決策は、他の種類の状況、たとえば、C言語を用いて開発されたワイヤレスアプリケーションにも適用可能である。
【0113】
上述したユニットは、1つ以上の汎用プロセッサ上で実行されるソフトウェア要素として、所定の機能を実行するように設計されたプログラム可能なロジックデバイスおよび/または特定用途向け集積回路(ASIC)等のハードウェアとして、または、その組み合わせとして、実現可能である。ある実施形態において、ユニットは、(光ディスク、フラッシュメモリ型記憶装置、可動式ハードディスク等の)不揮発性記憶媒体に保存可能であって、(パーソナルコンピュータ、サーバ、ネットワーク装置等の)コンピュータ装置に本発明の実施形態に記載した方法を実現させる多数の命令を含む、ソフトウェア製品の形態で実施されるものでもよい。ユニットは、単一の装置上で実現されるものでもよいし、あるいは、複数の装置に分散されるものでもよい。ユニットの機能を統合するようにしてもよいし、複数のサブユニットにさらに分割するようにしてもよい。
【0114】
本出願で開示される実施例に照らして記載した方法またはアルゴリズムの工程は、ハードウェアを用いて実現することも、プロセッサが実行するソフトウェアモジュールを用いて実行することも、また、これらを組み合わせて実行することも可能である。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、メモリ、リードオンリーメモリ(ROM)、電気的にプログラム可能なROM、電気的に消去可能なプログラマブルROM、レジスタ、ハードディスクドライブ、リムーバブルディスク、CD−ROM、または、当該技術分野で周知の任意の他の形態の記憶媒体にインストールされるものでもよい。
【0115】
以上、理解を助ける目的で実施形態を詳細に説明したが、本発明は上述した詳細に限定されるものではなく、本発明は多くの別の形態で実施可能である。上述した実施形態は例示に過ぎず、限定するものではない。
本発明は、たとえば、以下のような態様で実現することもできる。
適用例1
ワイヤレスアプリケーションを発行する方法であって、
ソフトウェア開発キット(SDK)の永続インターフェイスレイヤをワイヤレスアプリケーションに統合する工程であって、前記SDKは前記永続インターフェイスレイヤと動的実装レイヤとを備え、前記永続インターフェイスレイヤは前記ワイヤレスアプリケーションによって呼び出されるインタフェースプロトコルを備え、前記動的実装レイヤは前記インタフェースプロトコルに対応するインタフェース実装を備える、工程と、
統合されたワイヤレスアプリケーションを発行する工程と、
前記SDKの前記動的実装レイヤをサーバにインストールする工程と、を備える方法。
適用例2
適用例1の方法であって、さらに、
前記ワイヤレスアプリケーションに前記SDKの永続インターフェイスレイヤを統合する前に、前記SDKを分割して、前記永続インターフェイスレイヤとして前記インタフェースプロトコルをカプセル化するとともに、前記動的実装レイヤとしてインタフェース実装をカプセル化する工程を備える、方法。
適用例3
適用例2の方法であって、
前記SDKの分割は、リフレクション機構を用いて実行される、方法。
適用例4
適用例1の方法であって、さらに、
前記統合されたワイヤレスアプリケーションを発行し、前記SDKの動的実装レイヤをサーバ上にインストールした後に、
前記ワイヤレスアプリケーションを用いてワイヤレスクライアントにより送信された取得要求を受信する工程であって、前記取得要求を用いて、前記動的実装レイヤの前記インタフェース実装をサーバから取得することを要求する工程と、
前記取得要求に応じて、前記動的実装レイヤの前記インタフェース実装を前記ワイヤレスクライアントに送信する工程であって、前記ワイヤレスクライアントの前記ワイヤレスアプリケーションは、前記永続インターフェイスレイヤにおける前記インタフェースプロトコルにより定義されるインタフェースを用いて、前記サーバから取得した前記インタフェース実装を呼び出す工程と、
前記インタフェース実装用のクラスライブラリを動的にロードする工程と、を備える方法。
適用例5
適用例4の方法であって、さらに、
前記動的実装レイヤのインタフェース実装を前記ワイヤレスクライアントに送信した後に、
前記ワイヤレスクライアントから送信されるクエリ要求を受信する工程であって、前記クエリ要求は、前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせの更新バージョンを前記サーバが有するか否かを問い合わせるものである工程と、
前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせの更新バージョンを前記サーバが有する場合に、前記更新バージョンを前記サーバから前記ワイヤレスクライアントに送信する工程であって、前記ワイヤレスクライアントは、前記更新バージョンを用いて、前記ワイヤレスクライアントの前記ワイヤレスアプリケーションの前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせを更新する工程と、を備える方法。
適用例6
適用例1の方法であって、さらに、
前記SDKの前記永続インターフェイスレイヤを前記ワイヤレスアプリケーションに統合するのとは異なる時に、元のバージョンの前記動的実装レイヤを前記ワイヤレスアプリケーションに統合する工程を備え、
前記統合されたワイヤレスアプリケーションを発行する工程は、
前記SDKの元のバージョンの前記永続インターフェイスレイヤと前記動的実装レイヤとに統合されたワイヤレスアプリケーションを発行し、前記ワイヤレスクライアントによる前記ワイヤレスアプリケーションのダウンロードを可能にする工程であって、前記ワイヤレスクライアントの前記ワイヤレスアプリケーションは、前記永続インターフェイスレイヤにおける前記インタフェースプロトコルにより定義されるインタフェースを用いて、前記元のバージョンの動的実装レイヤにおける前記インタフェース実装を呼び出す工程と、
前記インタフェース実装用のクラスライブラリを動的にロードする工程と、を備える方法。
適用例7
適用例6の方法であって、さらに、
前記SDKの元のバージョンの前記永続インターフェイスレイヤと前記動的実装レイヤとに統合されたワイヤレスアプリケーションを発行し、前記ワイヤレスクライアントによる前記ワイヤレスアプリケーションのダウンロードを可能にした後に、
前記ワイヤレスクライアントから送信されるクエリ要求を受信する工程であって、前記クエリ要求は、前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせの更新バージョンを前記サーバが有するか否かを問い合わせるものである工程と、
前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせの更新バージョンを前記サーバが有する場合に、前記更新バージョンを前記サーバから前記ワイヤレスクライアントに送信する工程であって、前記ワイヤレスクライアントは、前記更新バージョンを用いて、前記永続インターフェイスレイヤ、前記ワイヤレスアプリケーションの前記動的実装レイヤ、またはこれらの組み合わせを更新する工程と、を備える方法。
適用例8
ワイヤレスアプリケーションを実行する方法であって、
ソフトウェア開発キット(SDK)の永続インターフェイスレイヤに統合されたワイヤレスアプリケーションのデータパッケージを取得する工程と、
前記データパッケージを用いて、前記ワイヤレスアプリケーションを実行する工程であって、前記SDKは前記永続インターフェイスレイヤと動的実装レイヤとを備え、前記永続インターフェイスレイヤは、前記ワイヤレスアプリケーションに統合され、前記ワイヤレスアプリケーションにより呼び出されるインタフェースプロトコルを備え、前記動的実装レイヤは、サーバ上にインストールされ、前記ワイヤレスアプリケーションにより実装されるインタフェース実装を備える工程と、を備える方法。
適用例9
適用例8の方法であって、
前記データパッケージを用いて前記ワイヤレスアプリケーションを実行する前記工程は、
前記サーバに取得要求を送信する工程であって、前記取得要求は、前記動的実装レイヤの前記インタフェース実装を前記サーバから取得することを要求するものである工程と、
前記サーバから返送された前記動的実装レイヤの前記インタフェース実装を受信する工程と、
前記永続インターフェイスレイヤにおける前記インタフェースプロトコルにより定義されるインタフェースを用いて、前記サーバから取得した前記インタフェース実装を呼び出す工程と、
前記インタフェース実装用のクラスライブラリを動的にロードする工程と、を備える方法。
適用例10
適用例9の方法であって、
前記インタフェース実装用のクラスライブラリを動的にロードする前記工程は、
前記サーバにクエリ要求を送信する工程であって、前記クエリ要求は、前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせの更新バージョンを前記サーバが有するか否かを問い合わせるものである工程と、
前記サーバから返送された前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせの更新バージョンを受信する工程と、
前記更新バージョンを用いて、前記ワイヤレスアプリケーションの前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせを更新する工程と、を備える方法。
適用例11
適用例8の方法であって、
前記ワイヤレスアプリケーションは、元のバージョンの前記動的実装レイヤに統合され、
前記データパッケージを用いて前記ワイヤレスアプリケーションを実行する前記工程は、
前記永続インターフェイスレイヤにおける前記インタフェースプロトコルにより定義されるインタフェースを用いて、前記元のバージョンの動的実装レイヤにおける前記インタフェース実装を呼び出す工程と、
前記インタフェース実装用のクラスライブラリを動的にロードする工程と、を備える方法。
適用例12
適用例11の方法であって、
前記インタフェース実装用のクラスライブラリを動的にロードする前記工程は、
前記サーバにクエリ要求を送信する工程であって、前記クエリ要求は、前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせの更新バージョンを前記サーバが有するか否かを問い合わせるものである工程と、
前記サーバから返送された前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせの更新バージョンを受信する工程と、
前記更新バージョンを用いて、前記永続インターフェイスレイヤ、前記動的実装レイヤ、またはこれらの組み合わせを更新する工程と、を備える方法。
適用例13
ワイヤレスアプリケーション発行装置であって、
少なくとも1つのプロセッサであって、
ソフトウェア開発キット(SDK)の永続インターフェイスレイヤをワイヤレスアプリケーションに統合することであって、前記SDKは前記永続インターフェイスレイヤと動的実装レイヤとを備え、前記永続インターフェイスレイヤは前記ワイヤレスアプリケーションによって呼び出されるインタフェースプロトコルを備え、前記動的実装レイヤは前記インタフェースプロトコルに対応するインタフェース実装を備える、ことと、
統合されたワイヤレスアプリケーションを発行することと、
前記SDKの前記動的実装レイヤをサーバにインストールすることと、を行うように構成される少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに接続され、前記少なくとも1つのプロセッサに命令を与えるように構成されるメモリと、
を備えるワイヤレスアプリケーション発行装置。
適用例14
ワイヤレスアプリケーション実行装置であって、
少なくとも1つのプロセッサであって、
ソフトウェア開発キット(SDK)の永続インターフェイスレイヤに統合されたワイヤレスアプリケーションのデータパッケージを取得することと、
前記データパッケージを用いて、前記ワイヤレスアプリケーションを実行することであって、前記SDKは前記永続インターフェイスレイヤと動的実装レイヤとを備え、前記永続インターフェイスレイヤは、前記ワイヤレスアプリケーションに統合され、前記ワイヤレスアプリケーションにより呼び出されるインタフェースプロトコルを備え、前記動的実装レイヤは、サーバ上にインストールされ、前記ワイヤレスアプリケーションにより実装されるインタフェース実装を備えることと、を行うように構成される少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに接続され、前記少なくとも1つのプロセッサに命令を与えるように構成されるメモリと、
を備えるワイヤレスアプリケーション実行装置。
適用例15
フロートアウトメッセージを制御するコンピュータプログラムプロダクトであって、一時的でないコンピュータ読み取り可能な記憶媒体に体現化され、
ソフトウェア開発キット(SDK)の永続インターフェイスレイヤをワイヤレスアプリケーションに統合することであって、前記SDKは前記永続インターフェイスレイヤと動的実装レイヤとを備え、前記永続インターフェイスレイヤは前記ワイヤレスアプリケーションによって呼び出されるインタフェースプロトコルを備え、前記動的実装レイヤは前記インタフェースプロトコルに対応するインタフェース実装を備える、ことと、
統合されたワイヤレスアプリケーションを発行することと、
前記SDKの前記動的実装レイヤをサーバにインストールすることと、を行うコンピュータ命令を備える、コンピュータプログラムプロダクト。