JP5819953B2 - 多数の体験モジュールを含むアプリケーション - Google Patents

多数の体験モジュールを含むアプリケーション Download PDF

Info

Publication number
JP5819953B2
JP5819953B2 JP2013516607A JP2013516607A JP5819953B2 JP 5819953 B2 JP5819953 B2 JP 5819953B2 JP 2013516607 A JP2013516607 A JP 2013516607A JP 2013516607 A JP2013516607 A JP 2013516607A JP 5819953 B2 JP5819953 B2 JP 5819953B2
Authority
JP
Japan
Prior art keywords
experience
application
modules
update
devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013516607A
Other languages
English (en)
Other versions
JP2013529811A (ja
Inventor
エバンス,クリストファー・エイ
ジェンセン,スコット
メングレ,アドベイ・ヴイ
ピアース,ジェフリー・ティー
エルスブリー,ジョン
カーン,ルイス・エム
ネフ,チャド・シー
オスマノヴィック,ネルミン
ミンワラ,ノシャーワン
ラジャクマール,ラジャドゥライ・アイザック
サザー,デール・エイ
シュレーダー,マニュエル・エイ
テメレアンカ,オヴィディウ・ジー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013529811A publication Critical patent/JP2013529811A/ja
Application granted granted Critical
Publication of JP5819953B2 publication Critical patent/JP5819953B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Description

[0001] デスクトップ・コンピューター、ワイヤレス・フォン、ゲーム・コンソール等というような、種々の異なるタイプの計算デバイス(computing device)が極普通に入手できるようになっている。アプリケーション開発者は、多くの場合、これら異なるタイプのデバイスの多くにおいて彼らのアプリケーションを実行させて、より多くのユーザーがこれらのアプリケーションを実行できることを望む。しかしながら、このためには、多くの場合、アプリケーション開発者は彼らの成果(effort)の大部分を複製し、これら異なるタイプのデバイス毎に彼らのアプリケーションの異なるバージョンを維持しなければならない。これは、アプリケーション開発者が彼らのアプリケーションの異なるバージョンを多数書いて維持することにかかるコストおよび時間が増大するので、問題となる可能性がある。同時に、アプリケーション開発者は、一部のデバイスにおけるアプリケーションの体験を、他のデバイスに対する制約のために制限する「最小公分母の解決策」(least common denominator solution)を回避することを望む。
[0002] この摘要は、詳細な説明の章において以下で更に説明する概念から選択したものを簡略化された形式で紹介するために、設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
[0003] 1つ以上の態様によれば、多数の体験モジュールを含むアプリケーションをデバイス上にインストールする。これら多数の体験モジュールは、各々、アプリケーションがデバイス上で実行しているとき、1組の機構(feature)を実装する。多数の体験モジュールの各々は、個々のタイプのデバイスに専用のコードを含む第1コンポーネントと、多数のタイプのデバイスにわたって共通であるコードを含む第2コンポーネントとを含む。アプリケーションを実行することの要求に応答して、デバイス上でアプリケーションを実行する。
[0004] 1つ以上の態様によれば、アプリケーションの異なる体験モジュール毎に異なる更新パッケージのカタログを維持する。アプリケーションは、多数の体験モジュールを含む、アプリケーションがデバイス上で実行しているとき、各体験モジュールは1組の機構を実装する。多数のモジュールの各々は、個々のタイプのデバイスに専用のプレゼンテーション・ロジック(presentation logic)およびリソースを含む第1コンポーネントと、多数のタイプのデバイスにわたって共通であるビジネス・ロジック(business logic)を含む第2コンポーネントとを含む。デバイス上のアプリケーションに適用される更新パッケージがあるか否かについて判断が行われる。デバイス上のアプリケーションに適用される更新パッケージがある場合、この更新パッケージをデバイスに送る。
[0005] 同様の特徴を指すために、図面全体において同じ番号を使用する。
図1は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実装することができるシステム例を示す。 図2は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実行するデバイス例を示す。 図3は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションをサポートするプラットフォーム例を示す。 図4は、1つ以上の実施形態にしたがってアプリケーションを更新する例を示す。 図5は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションをインストールし、これらの更新パッケージを入手するプロセス例を示すフローチャートである。 図6は、1つ以上の実施形態にしたがって、デバイスに更新をデプロイする(deploy)プロセス例を示すフローチャートである。 図7は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実行するように構成することができる計算デバイス例を示す。
[0013] 本明細書では、多数の体験モジュールを含むアプリケーションについて論ずる。多数の体験モジュールを含むアプリケーションを多数の異なるタイプのデバイスに配信し、これらのデバイスにおいて、アプリケーションをインストールし実行する。アプリケーションにおける各体験モジュールは、そのモジュールと関連付けられた体験に合わせて1つ以上で1組とした機構(feature)を実装する。各体験モジュールは、関連付けられた体験に対するビジネス・ロジック(例えば、命令およびデーター)を含む包括ビジネス・ロジック・コンポーネントを含む。この包括ビジネス・ロジック・コンポーネントは、全てのデバイスに共通であり、デバイスのタイプには関係なく、種々のデバイスにインストールするために供給される。また、各体験モジュールは、デバイス・タイプに特定のプレゼンテーション・コンポーネントも含む。このプレゼンテーション・コンポーネントは、関連付けられた体験に対するプレゼンテーション・ロジック(例えば、命令およびデーター)、およびリソース(画像、ユーザー体験レイアウト・マークアップ(layout markup)等のような、体験をユーザーに表示するためのリソース)を含む。異なるタイプのデバイスには異なるタイプのプレゼンテーション・コンポーネントを供給することによって、個々のタイプのデバイス、およびその個々のタイプのデバイスの能力に合わせて、関連付けられた体験のプレゼンテーションを個別に作成することが可能になる。
[0014] また、アプリケーションがインストールされている種々のデバイスに、アプリケーション更新を配信することもできる。アプリケーション配信は、体験モジュール毎であり、したがってアプリケーション全体ではなく、アプリケーションの体験モジュールを更新する。体験モジュールのビジネス・ロジックに対する変更は、デバイスのタイプには関係なく、アプリケーションが実行している全てのデバイスに供給することができる。しかしながら、体験モジュールのプレゼンテーション・コンポーネントに対する変更は、アプリケーションが実行しており、変更されるプレゼンテーション・コンポーネントに対応するタイプのデバイスのみに供給することができる。
[0015] 図1は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実装することができるシステム例100を示す。システム100は、パーソナル・コンピューター(PC)、テレビジョン・デバイス、および/または移動体デバイスというような、種々のデバイス上においてアプリケーションを実行するときに、共通のユーザー体験のための環境を可能にする。サービスおよびアプリケーションは、アプリケーションを利用している間、ビデオ・ゲームをプレーしている間、ビデオを見ている間等において、あるデバイスから次のデバイスに移り変わるときに、共通のユーザー体験に対する3つの環境全てにおいて実質的に同様である。
[0016] デバイス102は、多数の体験モジュールで構成されているアプリケーションのインストールおよび実行をサポートするアプリケーション・シェル104を含む。種々の実施態様において、デバイス102は、コンピューター106、移動体デバイス108、またはテレビジョンに基づくデバイス110というような、種々のタイプの計算デバイスとすることができる。これら異なるタイプのデバイスは、一般に異なる構造および能力を有すると考えられ、したがって、デバイス102は異なるデバイス・タイプの1つ以上に応じて構成することができる。例えば、デバイス102は、パーソナル・コンピューター、デスクトップ・コンピューター、多画面コンピューター、ラップトップ・コンピューター、ノートブック等というような、コンピュー・タイプのデバイス106として実現することもできる。
[0017] また、デバイス102は、移動体電話機、携帯用音楽プレーヤー、携帯用ゲーミング・デバイス、タブレット・コンピューター、多画面コンピューター等というような、移動体タイプのデバイス108として実現することもできる。また、デバイス102は、日常的な視聴環境において通常もっと大きな画面を有するまたは接続されているデバイスのような、テレビジョン・タイプのデバイス110として実現することもできる。例えば、テレビジョン・タイプのデバイス110は、テレビジョン、セットトップ・ボックス、ゲーミング・コンソール等を含むことができる。
[0018] 加えて、デバイス102は、家電製品(例えば、冷蔵庫、電子レンジ等)、自動車用PC、衣服等というような種々の他のタイプのデバイスとして実現することもできる。本明細書において記載する技法は、種々のタイプのデバイス102によってサポートすることができ、ここに記載する具体的な例に限定されるのではない。
[0019] システム例100では、1つ以上の異なるタイプの多数のデバイス102が、いずれの所与の時点においてもクラウド112と通信することができる。クラウド112は、1つ以上のサーバー・コンピューター、および/またはネットワークおよび/または他のデーター通信リンクを通じてデバイス102に接続されている他のタイプのデバイスの集合体である。このようなネットワークは、例えば、インターネット、ローカル・エリア・ネットワーク(LAN)、セルラーまたは他の電話ネットワーク、イントラネット、WiFiネットワーク、他の公衆ネットワークおよび/または企業固有のネットワーク、その組み合わせ等とすることができる。このような他のデーター通信リンクは、ユニバーサル・シリアル・バス(USB)リンク、ワイヤレスUSBリンク、無線周波(RF)リンク、他の公衆通信リンクおよび/または企業固有の通信リンク、その組み合わせ等というような、有線リンクおよび/またはワイヤレス・リンクとすることができる。
[0020] 異なるタイプのデバイス102は、各々、異なる物理的要件および能力を有する可能性がある。本明細書において論ずる多数の体験モジュールを含むアプリケーションは、デバイス120への体験の配信を可能にする。これらの体験は、個々のタイプのデバイスに合わせて特別に用意されるのであると共に、全てのタイプのデバイスに共通である。1つ以上の実施形態では、デバイスのタイプが定義され、包括的なタイプのデバイスに合わせて体験が個別に用意される。デバイスのタイプは、物理的特徴(例えば、表示画面サイズ、プロセッサー・パワー、サポートされているデーター入力メカニズム等)、使用形態、および/またはデバイスの他の共通な特性によって定義することができる。
[0021] クラウド112は、1つ以上の体験サービス116およびデプロイ・サービス(deployment service)118のためのプラットフォーム114を表す。プラットフォーム114は、クラウド112のハードウェア(例えば、サーバー)およびソフトウェア・リソースの基礎的な機能を抽象化する。サービス116および118は、デバイス102によって利用することができるがデバイス102から離れているアプリケーションおよび/またはデーターを含むことができる。サービス116および118は、ネットワークおよび/または先に論じたような他のデーター通信リンク上における1つ以上のサービスとして提供することができる。プラットフォーム114は、デバイス102を他の計算デバイス)例えば、他のデバイス102)に接続するために、リソースおよび機能を抽象化することができる。また、プラットフォーム114は、プラットフォーム114を通じて実施されるサービス116に対して出された(encounter)要求に合わせて、対応する程度の規模(scale)を提供するために、リソースの規模調整(scaling)を抽象化するように機能することもできる。
[0022] 体験サービス116は、アプリケーション、および/またはアプリケーションに種々の機能を設けるデーターを含む。設けられる個々の機能は、アプリケーションのタイプに基づいて様々であり、買い物または電子店舗機能、歌または画像(または他のデーター)記憶および/または引き出し機能、検索機能等を含むことができる。デプロイ・サービス118は、多数の体験モジュールを含むアプリケーションのデバイス102へのデプロイを管理する。ときの経過と共に種々の変更をアプリケーションに対して行うことができ、デプロイ・サービス118はこれらの変更のデバイス102に対するデプロイも管理する。以下で更に詳しく論ずるように、これらの変更が適用されるデバイス102に、当該変更をデプロイする。
[0023] 各アプリケーションは、多数の体験モジュールで構成されており、各体験モジュールは、その体験モジュールと関連付けられた体験またはそれによって提供される体験に対して、1組の1つ以上の機構を実現する。異なる機構とは、アプリケーションの異なる機能を指し、アプリケーションのユーザーによってあるいは他のコンポーネントまたはモジュールによって呼び出すことができる。1つのアプリケーションにおける異なる体験モジュールは、アプリケーションの開発者によって定義され、機構または機能の論理的集合体(grouping)をアプリケーションのユーザーに供給するように定義されるのが一般的である。個々の体験モジュール、および各体験モジュールにおける1組の機構または機能は、アプリケーションの開発者が決定する。
[0024] 一例として、ある特定の移動体デバイスが携帯用音楽プレーヤーおよび携帯用ゲーミング・デバイスの双方として動作することができると仮定する。移動体デバイス上におけるアプリケーションは、音楽再生体験と関連付けられた第1体験モジュールを含むことができ、トランスポート制御(例えば、停止、再生、巻き戻し、シャッフルなどの機構)、プレーリスト選択、および作成機構等というような、音楽再生体験に関する種々の機構を実装する。また、アプリケーションは、ゲーミング体験と関連付けられた第2体験モジュールも含むことができ、ゲーム選択機構、オンライン・ゲーミングのための体験サービス116との通信等というような、ゲーミング体験に関する種々の機構を実装する。また、アプリケーションは、市場体験と関連付けられた第3体験モジュールも含むことができ、ユーザーが購入のために歌またはゲームを選択することを可能にする検索およびブラウズ機構、歌またはゲームの購入のためにクレジット・カードまたは他の情報を提供するための体験サービス116との通信等というような、ユーザーが新たな歌またはゲームを購入することができるオンライン市場に関する種々の機構を実装する。
[0025] 各体験モジュールは、2つのコンポーネント、即ち、包括ビジネス・ロジック・コンポーネントおよびデバイス・タイプ特定のプレゼンテーション・コンポーネントに分離されている。包括ビジネス・ロジック・コンポーネントは、関連付けられた体験に対するビジネス・ロジック(例えば、コード、即ち、命令およびデーター)を含み、全てのタイプのデバイスにわたって共通である。異なるタイプのデバイス毎に異なる必要がない命令およびデーターは、包括ビジネス・ロジック・コンポーネントに含まれる。包括ビジネス・ロジック・コンポーネントに含まれる個々の命令およびデーターは、個々のアプリケーションに基づいて様々に変化する。例えば、包括ビジネス・ロジック・コンポーネントは、プレーリスト上にある歌をシャッフルするための命令およびデーター、文書内で単語または句を検索するための命令およびデーター、表計算機能を実装するための命令およびデーター等を含むことができる。
[0026] デバイス・タイプ特定のプレゼンテーション・コンポーネントは、関連付けられた体験に対するプレゼンテーション・ロジック(例えば、コード、即ち、命令およびデーター)およびリソース(例えば、画像、ユーザー体験レイアウト・マークアップ等というような体験をユーザーに表示するまたそれ以外で提示するためのリソース)を含む。異なるタイプのデバイスには異なるプレゼンテーション・コンポーネントを提供することができ、アプリケーションの開発者が、個々のタイプのデバイスおよびその個々のタイプのデバイスの能力に合わせて、関連付けられた体験の提示を特別に用意することを可能にする。異なるタイプのデバイス毎に異なるプレゼンテーション・コンポーネントを提供することができるが、同じプレゼンテーション・コンポーネントを異なるタイプのデバイスに提供するという状況が起こる可能性もある。
[0027] 1つ以上の実施形態では、プレゼンテーション・ロジックおよびリソースが、個々のタイプのデバイスに合わせて、このタイプのデバイスの物理的特徴(例えば、表示画面サイズ、プロセッサー・パワー、入力および/出力コンポーネント等)に基づいて、関連付けられた体験の提示を特別に用意する。例えば、データー入力のために大型画面および大型キーボードを通例有するコンピューター・タイプのデバイス106に合わせて、第1プレゼンテーション・ロジックおよびリソースを特別に用意することができる。この第1プレゼンテーション・ロジックおよびリソースは、データーを表示する大きなウィンドウおよび/またはフレーム、キーボードまたはマウスによる種々の異なるユーザー入力等をサポートするユーザー・インターフェース(UI)を含むことができる。第2プレゼンテーション・ロジックおよびリソースは、データー入力のために小型画面を通例有し、任意に小さなキーボードを有する移動体タイプのデバイス108に合わせて特別に用意することができる。この第2プレゼンテーション・ロジックおよびリソースは、データーを表示する小さいウィンドウおよび/またはフレーム、マイクロフォン(例えば、音声コマンド)またはタッチスクリーンによる種々の異なるユーザー入力等をサポートするUIを含むことができる。第3プレゼンテーション・ロジックおよびリソースは、通例非常に大型の画面を有するがデーター入力のためのキーボードを有していないテレビジョン・タイプのデバイス110に合わせて特別に用意することができる。この第3プレゼンテーション・ロジックおよびリソースは、データーを表示する大きなウィンドウおよび/またはフレーム、ハンドヘルド・リモコンまたはハンドヘルド・ゲーム・コントローラによる種々の異なるユーザー入力等をサポートするUIを含むことができる。
[0028] 尚、本明細書において論ずるアプリケーションは、単にデバイス102にダウンロードしウェブ・ブラウザーにおいて実行するウェブ・アプリケーションだけではないことは注記してしかるべきである。逆に、本明細書において論ずるアプリケーションは、種々の環境においてクラウド112からデバイス102にデプロイおよびインストールされる。また、アプリケーションに対する種々の更新も、クラウド112からデバイス102にデプロイおよびインストールすることができる。更に、本明細書において論ずるアプリケーションは、デバイス102がクラウド112に接続されていないときに実行することができる(しかし、オンライン市場にアクセスするというような一部の機能は、デバイス102がクラウド112に接続されていないときには、デバイス102には利用可能ではあり得ない)。加えて、本明細書において論ずるアプリケーションにおける異なる体験の提示は、そのアプリケーションが実行するデバイスの個々のタイプに合わせて特別に用意される。
[0029] 図2は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実行するデバイス例200を示す。デバイス200は、種々の異なるタイプの計算デバイスとすることができ、例えば、図1のデバイス102である。
[0030] デバイス200は、アプリケーション・シェル202およびオペレーティング・システム204を含む。オペレーティング・システム204は、ワシントン州RedmondのMicrosoft Corp.(マイクロソフト社)から入手可能なオペレーティング・システムのWindows(登録商標)オペレーティング・システム・ファミリーのいずれか、カリフォルニア州CupertinoのApple Corporation(アップル社)から入手可能なオペレーティング・システムのMac OS(登録商標)オペレーティング・システム・ソフトウェア・ファミリーのいずれか、Linux(登録商標)系オペレーティング・システム、Google Chrome系オペレーティング・システム、電話系オペレーティング・システム、携帯用ゲーミング・デバイス系オペレーティング・システム、セットトップ・ボックス系オペレーティング・システム等というような、種々の従来からのオペレーティング・システムのいずれでも可能である。多数の体験モジュールを含むアプリケーションをサポートするために、オペレーティング・システム204によってアプリケーション・シェル202を実行する。あるいは、アプリケーション・シェル202をオペレーティング・システム204の一部として含めることもでき、またはオペレーティング・システム204をアプリケーション・シェル202の一部として含めることもできる。また、1つ以上の追加のアプリケーションまたはシェル(図示せず)をオペレーティング・システム204によって実行することもできる。
[0031] アプリケーション・シェル202は、本明細書において論ずる多数の体験モジュールを含むアプリケーションをサポートする。図示した例では、アプリケーション218は、シェル202に含まれるものとして、またはシェル202において実行するものとして示されている。1つのアプリケーション218がシェル202において実行することが示されているが、多数のアプリケーションをシェル202において同時に実行できることは認められてしかるべきである。加えて、1つのアプリケーション・シェル202を示すが、多数のアプリケーション・シェル202(各々0個以上のアプリケーションを実行する)をデバイス200上において同時に実行できることも認められてしかるべきである。
[0032] アプリケーション218は、多数の(n個)体験モジュール220(1)、...、220(n)を含み、各体験モジュールは異なる体験と関連付けられている。1つ以上の実施形態では、多数の体験モジュール220の集合体がアプリケーション218となり、体験モジュール220以外には、他の追加のコンポーネントやモジュールはアプリケーション218には含まれない。つまり、このような実施形態では、体験モジュール220は、シェル202において実行する個別モジュールとすることができ、これらがまとまってアプリケーションとなる。
[0033] シェル202は、デバイス/サービス通信フレームワーク212、体験ストレージ214、およびコア・コンポーネント・インターフェース216を含む。尚、デバイス/サービス通信フレームワーク212およびコア・コンポーネント・インターフェース216の機能は、1つのコンポーネントまたはモジュールとして、または別個のコンポーネントまたはモジュールとして実装できることは認められてしかるべきである。また、デバイス/サービス通信フレームワーク212およびコア・コンポーネント・インターフェース216の内一方または双方の機能は、多数のコンポーネントまたはモジュールとして実装できることも認められてしかるべきである。
[0034] デバイス/サービス通信フレームワーク212は、デバイス200とクラウド(例えば、図1のクラウド112)との間における通信を管理する。アプリケーション218のコンポーネントは、デバイス/サービス通信フレームワーク212に要求を送ることによって、および/またはデバイス/サービス通信フレームワーク212から応答または他の情報を受信することによって、クラウドと通信することができる。デバイス/サービス通信フレームワークは、種々のしかるべき設定およびプロトコルで構成され、またそうでなければこれらにアクセスすることができ、デバイス200がクラウドと通信することを可能にする。つまり、アプリケーション218は、クラウドとの通信を管理する負担が軽減されている。代わりに、アプリケーション218のコンポーネントは、デバイス/サービス通信フレームワーク212によって露出される標準的なインターフェース(例えば、アプリケーション・プログラミング・インターフェース(API))を呼び出すことができる。異なるタイプのデバイス上における異なるデバイス/サービス通信フレームワーク212は、異なるやり方で動作してクラウドと通信することができるが、それでもなお同じインターフェースをアプリケーションに提供することができる。アプリケーションの開発者は、これらのアプリケーションが実行するデバイスがクラウドとどのように通信するかについて具体的な知識を必要とせずに、アプリケーションを書くことができる。
[0035] 体験ストレージ214は、アプリケーション218に対するコンポーネントのストレージを管理する。アプリケーションは、クラウド(例えば、図1のクラウド112)からデバイス200にデプロイされる。各アプリケーションは、多数のユーザー体験モジュールを含み、各ユーザー体験モジュールは、先に論じたような、多数のコンポーネントを含む。アプリケーションをデプロイすると、これらの種々のコンポーネントがデバイス/サービス通信フレームワーク212によって受け取られ、体験ストレージ214に供給される。体験ストレージ214は、受け取ったコンポーネントを不揮発性メモリー(例えば、磁気ディスク、光ディスク、フラッシュ・メモリー等)に格納する。
[0036] デバイス200にアプリケーション218を最初にインストールするとき、デバイス200のコンポーネント(例えば、以下で論ずるコア・コンポーネント・インターフェース216)がインストールを実行する。アプリケーション218のインストールには、個々のファイルを記憶デバイスの特定の位置に書き込む、情報を登録ストレージ(例えば、オペレーティング・システムのレジストリー)に追加する等というような、種々のインストール動作(action)が含まれる。ファイルは、体験ストレージ214および/またはデバイス200の他の記憶デバイスに書き込むことができる。インストールの後、シェル202においてアプリケーション218を実行することができる。また、アプリケーション218の新たなバージョンが入手可能になったとき、アプリケーション218を後から更新することもできる。これについては、以下で更に詳しく論ずる。
[0037] アプリケーション218は、デバイス200のユーザーから受けた要求に応答して実行することができ、あるいは他のコンポーネント、モジュール、またはデバイスからの要求に応答して実行することができる。アプリケーション218を実行する要求に応答して、シェル202は、体験ストレージ214および/またはデバイス200の他の記憶デバイスから、アプリケーション218のためにインストールされたファイルを入手して、入手したコンポーネントを実行する。例えば、体験ストレージ214によって維持されているファイルまたは他の情報において、入手および実行すべき特定のコンポーネントを識別することができる。
[0038] 1つ以上の実施形態では、コンポーネント218の多数のバージョンが体験ストレージ214に含まれる。例えば、コンポーネントの更新バージョンは、更新パッケージの形態で、デバイス/サービス通信フレームワーク212によって受信することができる。これについては、以下で更に詳しく論ずる。更新パッケージをインストールすると、デバイス200上にコンポーネントの新たなバージョンが得られる。以前にデプロイされていたコンポーネントおよびいずれの更新パッケージも体験ストレージ214内に維持されるので、コンポーネントの更新バージョンおよび以前のバージョンは双方共体験ストレージ214に維持される。コンポーネントの以前のバージョンを維持することによって、例えば、アプリケーション218の以前のバージョンにロール・バック(roll back)する、即ち、戻ること、アプリケーション218に対する変更の記録を付けること等が可能になる。体験ストレージ214は、任意に、特定の時間量が経過した後、コンポーネントに対する特定数の更新パッケージがその後体験ストレージ214に格納された後等というような、種々の規準に基づいて、以前のバージョンのコンポーネントを削除することができる。
[0039] アプリケーション218に含まれている異なる体験モジュールの指示、およびこれらの体験モジュールのバージョン番号も、体験ストレージ214に維持される。これらのバージョン番号は、デバイス200上にインストールされている体験モジュールの現在のバージョンを特定し、これらの体験モジュールにおいて新たなバージョンのコンポーネントがデバイス200上にインストールされると更新される。体験ストレージ214には、アプリケーションのマスター・バージョン番号も維持することができる。マスター・バージョン番号は、デバイス上にインストールされているアプリケーション218の現在のバージョンを特定し、アプリケーション218の体験モジュールにおけるコンポーネントの新たなバージョンがデバイス200上にインストールされる毎に更新される。
[0040] コア・コンポーネント・インターフェース216は、オペレーティング・システム204および他のデバイス200との通信を管理し、シェル202内における種々の通信に関する種々のデーターを維持し、種々の通信をサポートする。1つ以上の実施形態では、コア・コンポーネント・インターフェース216は、デバイス/サービス通信フレームワーク212がクラウドに送った要求の結果を格納するデーター・キャッシュを維持する。このデーター・キャッシュは、一時的に維持することができ(例えば、アプリケーション218またはシェル202が実行している間)、あるいは不揮発性メモリーにもっと長い期間存続させることもできる。
[0041] 加えて、1つ以上の実施形態では、コア・コンポーネント・インターフェース216は、デバイス特定コマンドを抽象化するプレゼンテーション・フレームワークを含む。異なるタイプのデバイス、そして同じタイプの異なるデバイスであっても(デバイスの異なるモデル、異なる製造業者からのデバイス等というような)、異なるやり方で特定のプレゼンテーション機能を実装することができる。インターフェース216のプレゼンテーション・フレームワークは、特定のプレゼンテーション機能を実装するやり方を抽象化し、標準的なインターフェース(例えば、API)をアプリケーション218のコンポーネントに提供する。このため、アプリケーションのコンポーネントは、コア・コンポーネント・インターフェース216によって露出される標準的なインターフェースを呼び出すことができ、アプリケーションの開発者は、特定のプレゼンテーション・コマンドまたは情報が、アプリケーションが実行しているデバイスの特定のハードウェアにどのようにして伝達されるかについて具体的な知識を必要とせずに、アプリケーションを書くことが可能になる。1つ以上の実施形態では、プレゼンテーション・フレームワークは、ワシントン州RedmondのMicrosoft Corp.から入手可能なSilverlight(登録商標)プラットフォームとすることができる。
[0042] アプリケーション218は、多数(n)の体験モジュール220(1)、...、220(n)を含み、各々が異なる体験と関連付けられている。これらの異なる体験は、先に論じたような、異なる1組の機構を含む。加えて、各体験モジュール220は、デバイス・タイプ専用プレゼンテーション・コンポーネント222および包括ビジネス・ロジック・コンポーネント224の双方を含む。包括ビジネス・ロジック・コンポーネント224は、関連付けられた体験に対するビジネス・ロジック(例えば、命令およびデーター)を含み、先に論じたような全てのタイプのデバイスにわたって共通である。デバイス・タイプ専用プレゼンテーション・コンポーネント222は、関連付けられた体験に対するプレゼンテーション・ロジック(例えば、命令およびデーター)およびリソース(例えば、画像、ユーザー体験レイアウト・マークアップ等というような、体験をユーザーに表示するまたそれ以外で提示するためのリソース)を含み、これらは、デバイス200のタイプに専用であることができ、またはデバイス200のタイプに合わせて特別に用意することができる。
[0043] 1つ以上の実施形態では、アプリケーション・シェル202は、体験モジュール220が互いに分離されるように、コンポーネント222および224の実行を(例えば、コア・コンポーネント・インターフェース216を通じて)管理する。この分離によって、1つの体験モジュール220におけるコンポーネントが他の体験モジュール220のコンポーネント(または、コンポーネントが使用する汎用メモリー空間)に直接アクセスすることを防止する。また、この分離は、サンドボクシング(sandboxing)と呼ぶこともでき、シェル202によって種々の異なる従来のやり方で実現することができる。
[0044] 体験モジュール220は互いに直接アクセスすることが禁止されているが、1つ以上の実施形態では、コア・コンポーネント・インターフェース216が体験間相互作用モジュール(cross-experience interaction module)226を含み、1つの分離された体験の中では不可能な、もっと豊富な機能を可能にするように、体験間相互作用をサポートする。体験間相互作用モジュール226はインターフェースを設け、これを通じて、1つの体験モジュール220が他の体験モジュール220にメッセージを送ることができる。このようなメッセージは、例えば、動作の要求、0個以上のパラメーター、およびメッセージを送るべき先である体験の指示を含む。パラメーターは、通例、データーへのポインターまたはデーターの他の識別子(特定の歌の題名へのポインター、特定のムービー・データーへのポインター等)を含むが、代わりに実際のデーター(例えば、歌の題名、ムービー・データー等)を含むこともできる。例えば、1つの体験モジュール220が、コンテンツ・ライブラリー体験モジュールであって、ユーザーが彼または彼女のライブラリー(例えば、歌あるいは他のオーディオおよび/またはビデオ・コンテンツのライブラリー)から特定のコンテンツを維持および選択することを可能にするコンテンツ・ライブラリー体験を提供するのであってもよく、一方他の体験モジュールが、コンテンツ再生体験モジュールであって、特定のコンテンツの再生を可能にするコンテンツ再生体験を提供するのであってもよい。コンテンツ・ライブラリー体験モジュールは、再生のためにユーザーが選択する特定のコンテンツのメディア項目識別子であるパラメーターを有する「歌演奏」(play song)メッセージをコンテンツ再生体験モジュールに送ることができる。
[0045] 加えて、1つ以上の実施形態では、体験モジュール220は、体験間相互作用モジュール226に、体験モジュール220が実行することができる動作のタイプを示すように登録することもできる。この登録は、例えば、体験モジュール220が実行することができる、潜在的に要求される可能性がある動作のリストを含む。他の体験モジュール220は、体験間相互作用モジュール226に問い合わせて、どの要求された動作をどの体験モジュール220によって実行できるか特定することができ、こうして、個々の要求された動作を実行させるためには、どの体験モジュール220に個々のメッセージを送ればよいか知ることができる。あるいは、いずれの所与の要求された動作についても、1つの体験モジュール220のみがその動作を実行できることを、体験間相互作用モジュール226に登録するのでもよい。したがって、他の体験モジュール220がその動作を実行させたい場合、その特定の動作を要求するメッセージを(しかるべきパラメーターと共に)体験間相互作用モジュール226に送ることができる。体験間相互作用モジュール226は、要求された動作を実行することが登録されているのはどの体験モジュール220か把握しており、メッセージをその体験モジュール220に供給する。
[0046] 1つ以上の実施形態では、体験間相互作用モジュール226は、要求元の体験モジュール220に応答メッセージを返送することもサポートする(特定の動作を要求するメッセージを発信した元である体験モジュール220)。この応答メッセージは、例えば、要求されたデーター、動作が実行されたことの確認等を含むことができる。応答メッセージを送る応答側の体験モジュール220は、この応答メッセージを送るべき要求元の体験モジュール220を特定することができる(例えば、要求元の体験モジュール220の指示が、体験間相互作用モジュール226によって当該体験モジュールに供給された場合)。あるいは、体験間相互作用モジュール226が、送られたメッセージの記録を維持し、応答側の体験モジュールがどの体験モジュール220が要求元の体験モジュール220であるか知ることなく、応答メッセージを要求元の体験モジュール220に転送することもできる。
[0047] 体験モジュール220が受信したメッセージを理解できないという状況が発生することもあり得る。例えば、受信側の体験モジュール220が実行しない(またはしようとしない)動作を要求することがあり、受信側の体験モジュールが、その動作をサポートしない古いバージョンであること等もあり得る。このような状況では、受信側体験モジュール220は単にそのメッセージを無視することができる。あるいは、受信側体験モジュール220は、応答メッセージ、または要求された動作が実行されなかったことの指示を返送することができる。
[0048] 1つ以上の実施形態では、体験モジュール220は、互いにメッセージを送り合う際に、ユニフォーム・リソース・ロケーター(URL)に基づくプロトコルを採用する。メッセージを送ろうとする先の体験モジュール220、要求された動作、およびパラメーターを、URLに埋め込む。このURLの記録は、メッセージを送る体験モジュール220が保持することができ、メッセージの履歴を維持することができ、実行取り消し(undo)コマンドおよび/または再実行コマンドを含むメッセージを体験モジュール220に送ることができる等である。
[0049] 加えて、1つ以上の実施形態では、コア・コンポーネント・インターフェース216は、デバイス間通信をサポートし、デバイス200が1つ以上の他のデバイスと通信することが可能になる。例えば、デバイス間通信によって、図1の異なるデバイス102同士が互いに通信することが可能になる。デバイス間通信は、先に論じたクラウド(例えば、図1のクラウド112)との通信と同じように、種々の異なるネットワークまたは通信リンクを跨いで実行することができる。
[0050] コア・コンポーネント・インターフェース216は、異なるやり方でデバイス間通信をサポートすることができる。1つ以上の実施形態では、コア・コンポーネント・インターフェース216は、相互作用モジュールを含む。相互作用モジュールは、デバイス/サービス通信フレームワーク212がクラウド(例えば、図1のクラウド112)と通信するのと同様のやり方で、他のデバイスとの通信をサポートする。コア・コンポーネント・インターフェース216は、先に論じたフレームワーク212によって露出されるインターフェースと同様の標準インターフェースを露出し、アプリケーション218のコンポーネントがこの標準インターフェースを呼び出すことができる。あるいは、1つのインターフェースを露出することができ(例えば、フレームワーク212によって)、アプリケーション218のコンポーネントからの、他のデバイスにアクセスする要求は、クラウドに導かれるのではなく、フレームワーク212によってコア・コンポーネント・インターフェース216に導かれる。
[0051] つまり、他のデバイスに通信を送ることを望むアプリケーション218のコンポーネントが、フレームワーク212を通じてクラウドに通信を送るのと同様のやり方で通信を送り、その他のデバイスから、フレームワーク212を通じてクラウドから通信を受信するのと同様のやり方で応答を受信することができ、他のデバイスと通信するために用いられる種々の設定および/またはプロトコルに関与する必要はない。代わりに、コア・コンポーネント・インターフェース216には、他のデバイスと通信するために用いられるこのような設定および/またはプロトコルが組み込まれており(configure)、またそうでなければこれらにアクセスすることができる。また、コア・コンポーネント・インターフェース216は、デバイス200が通信することができる他のデバイス200を特定するように構成されている。他のデバイスは、従来のBluetooth(登録商標)デバイス発見技法を用いる、照合サービス(例えば、図1の体験サービス116によって設けられる)を用いる等というような、種々の異なるやり方で特定することができる。
[0052] 本明細書では、アプリケーション218に対する更新に関する種々の論述が含まれるが、デバイス200の他のコンポーネントまたはモジュールも更新できることは認められてしかるべきである。例えば、シェル202を更新することができる。デバイス200のこのような他のコンポーネントまたはモジュールに対する更新は、本明細書において論ずるアプリケーション218を更新する技法と同様の技法を用いる、または他の技法を用いるというような、種々のやり方で供給し、デバイス200上で行うことができる。
[0053] 図3は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションをサポートするプラットフォーム例300を示す。プラットフォーム300は、例えば、図1のプラットフォーム114とすることができる。プラットフォーム300は、種々の異なるタイプのサービス、または種々のソフトウェアを実行する他の計算デバイスの内1つ以上を用いて実装することができる。
[0054] プラットフォーム300は、アプリケーション・インターフェース302、1つ以上の体験特定サービス304、およびデプロイ・サービス306を含む。アプリケーション・インターフェース302は、プラットフォーム300によって露出されるインターフェース(例えば、API)であり、デバイス(例えば、図1のデバイス102または図2のデバイス200)上で実行するアプリケーションがプラットフォーム300と通信すること可能にする。1つ以上の実施形態において、図2のデバイス200のデバイス/サービス通信フレームワーク212は、アプリケーション・インターフェース302を呼び出すことによって、プラットフォーム300と通信する。デバイスは、アクセス体験特定サービス304および/またはデプロイ・サービス306に、アプリケーション・インターフェース302を通じてアクセスする。
[0055] 体験特定サービス304は、例えば、図1の体験サービス116である。体験特定サービス116はアプリケーションおよび/またはこのアプリケーションに種々の機能を設けるデーターを含む。設けられる個々の機能は、サービス304が機能を設けるアプリケーションのタイプに基づいて様々である。例えば、体験特定サービス304によって設けられる個々の機能は、買い物または電子店舗機能、歌または画像(または他のデーター)記憶および/または引き出し機能、検索機能、オンライン・ゲーミングのための友人または仲間との対決(matching)、ソーシャル・ネットワーク交流機能等を含むことができる。
[0056] デプロイ・サービス306は、アプリケーションのデバイス(例えば、図1のデバイス102または図2のデバイス200)へのデプロイを管理する。アプリケーションのデバイスへのデプロイには、アプリケーションの初期デプロイ(例えば、アプリケーションを最初にデバイスにインストールするとき)が含まれる。また、アプリケーションのデバイスへのデプロイには、デバイスにインストールされているアプリケーションに変更をデプロイすることも含まれる。あるいは、デバイスに最初にインストールするアプリケーションは、光ディスク(例えば、DVDまたはCDROM)から、他のデバイスから等というように、他のやり方で入手することもできる。しかしながら、デバイス上における初期インストールのために、デプロイ・サービス306以外からアプリケーションを入手する場合であっても、デプロイ・サービス306はその後このアプリケーションに対する変更のデプロイを管理する。
[0057] アプリケーションの開発者は、種々の理由から、種々の時点においてアプリケーションを変更することを望む可能性がある。例えば、開発者は、新たな機能をアプリケーションに追加する、アプリケーションにおいて発見された問題を解決する、特定のタイプのデバイス上においてアプリケーションによって情報を提示するやり方を変更する(例えば、ユーザー・フィードバックによって)等を望むこともあり得る。これらの変更は、アプリケーションに対する非常に重要な変更から、アプリケーションに対する非常に些細な変更までの範囲を取り得る。
[0058] 開発者がアプリケーションを変更するとき、開発者はそのアプリケーションの1つ以上の体験モジュールの1つ以上のコンポーネントを変更し、その結果新たなバージョンの体験モジュールが得られる。開発者は、通例、アプリケーション全体を変更する必要はない。代わりに、所望の変更による影響を受ける体験モジュールのみを変更すればよい。例えば、10個の体験モジュールを含むアプリケーションの内1つの体験モジュールだけに影響を及ぼす変更を行うことを望む場合、その1つの体験モジュールの新たなバージョンだけを生成し、デバイスにデプロイすればよい。
[0059] 1つ以上の実施形態では、体験モジュールにおけるコンポーネントへの変更をデプロイするには、変更する体験モジュールに対する更新パッケージを、アプリケーションをインストールしその変更を適用するデバイスに送る。更新パッケージは、体験モジュールに対する1つ以上の交換コンポーネントを含ませる、コンポーネントに対する1つ以上の変更の指示(例えば、新たなバージョンのコンポーネントと以前のバージョンのコンポーネントとの間の相違のリスト)を含ませること等によって、異なるやり方で変更を特定することができる。また、更新パッケージは、アプリケーションに追加する新たな体験モジュールの新たなコンポーネントも含むことができる。
[0060] 開発者がアプリケーションを変更するために新たな更新パッケージを作成するとき、開発者は新たな更新パッケージをプラットフォーム300に供給する。デプロイ(deployment)306は、更新パッケージが格納されている更新レポジトリー312を含む。また、更新パッケージの以前のバージョンも更新レポジトリー312に維持し、その結果、体験モジュールの多数の異なるバージョンの更新パッケージを、更新レポジトリー312に含めることができる。
[0061] デバイス更新コンポーネント314は、更新レポジトリー312を管理し、そして適した更新パッケージを適したデバイスに供給する。デバイス更新コンポーネント314は、更新パッケージの以前の全てのバージョンを維持することができ、あるいは種々の規準に基づいて更新パッケージの以前のバージョンを削除することができる。例えば、デバイス更新コンポーネント314は、特定の時間量が経過した後、同じコンポーネントに対して特定数の更新パッケージがその後更新レポジトリー312に格納された後等に、以前の更新パッケージを削除することができる。
[0062] また、デバイス更新コンポーネント314は、種々の更新パッケージを記述する情報をバージョン・カタログ316に維持する。バージョン・カタログ316は、更新レポジトリー312に格納されている更新パッケージに関する種々の情報を特定する、表またはリストのような、種々の異なるデーター構造とすることができる。バージョン・カタログ316は、デバイス更新コンポーネント314が、デバイスから受信したバージョン番号の指示に基づいて、更新レポジトリー312に格納されている更新パッケージ(ある場合)の内どれをそのデバイスにデプロイすべきか決定することを可能にする。1つ以上の実施形態では、バージョン・カタログ316は、アプリケーション毎に異なる表を含み、あるいは多数のアプリケーションに同じ表を用いることもでき、表におけるどの情報がどのアプリケーションに対応するかという指示を含むことができる。
[0063] 尚、体験モジュールに対する変更の中には、アプリケーションがインストールされている全てのタイプのデバイスに適用できない場合もあることは、注記してしかるべきである。例えば、デバイス特定プレゼンテーション・コンポーネントに対する変更は、ある特定のタイプのデバイスには行ってもよいが、他のタイプのデバイスには行わないのでもよい。したがって、体験モジュールに対する変更は、その特定の一タイプには適用するが、他のタイプのデバイスには適用しない。
[0064] 1つ以上の実施形態では、バージョン・カタログ316は、デバイス上にインストールされている(またはインストールすることができる)アプリケーション毎に表またはリストを含み、このような各表は1つ以上のレコードを含む。各レコードは、更新レポジトリー312に格納されている個々の更新パッケージに対応する。バージョン・カタログ316内におけるレコードに対応する個々の更新パッケージは、異なるやり方で識別することができる。1つ以上の実施形態では、各レコードは、少なくとも、体験モジュール識別子、マスター・バージョン番号、およびデバイス・タイプを含む。また、更新レポジトリー312は、体験モジュール識別子、マスター・バージョン番号、およびデバイス・タイプがキーに設定されて(keyed)おり、バージョン・カタログ316および更新レポジトリー312におけるレコード間の対応を維持する。
[0065] 表1は、1つ以上の実施形態にしたがって、バージョン・カタログ316のレコードに含まれている情報の一例を示す。尚、表1は一例であり、代わりに、異なる情報をバージョン・カタログ316のレコードに含めることもでき、および/または表1に含まれている情報の一部がバージョン・カタログ316のレコードに含まれていなくてもよいことは注記してしかるべきである。
Figure 0005819953
[0066] アプリケーションのマスター・バージョン番号は、そのアプリケーションの新たなバージョンが出る毎に増大する。これは、アプリケーションに対する新たな更新パッケージが更新レポジトリー312に追加される毎にと言うこともできる。デバイス更新コンポーネント314が、デバイス上にインストールされているアプリケーションの現バージョンの指示を受信すると、デバイス更新コンポーネント314は、受信したバージョンを、バージョン・カタログ316におけるアプリケーションの最新マスター・バージョン番号と比較する。2つのバージョン番号が同じである場合、デバイスにデプロイする新たな更新パッケージはないことになる。しかしながら、2つのバージョン番号が同じでない場合、新たなバージョンのアプリケーションが存在するので、デバイス更新コンポーネント314は、デバイスにデプロイすべき1つ以上の更新パッケージがあるか否か判断する。
[0067] 体験識別子は、アプリケーションに含まれている多数の体験モジュールの内どれを、更新パッケージが変更するかを示す。通例、1つの異なる更新パッケージは、1つの体験モジュールに対する変更を含むが、代わりに、1つの更新パッケージが多数の体験モジュールに対する変更を含むこともできる。
[0068] 体験バージョン番号は、体験モジュールに対する変更がある毎に増大する。したがって、体験モジュールの体験バージョン番号は、その体験モジュールに新たな更新パッケージができる毎に増大する。つまり、マスター・バージョン番号は、アプリケーションに含まれている体験モジュールのいずれかに変更がある毎に増大するが、体験バージョン番号は、体験識別子によって識別された体験モジュールに変更があるときにのみ増大する。新たな体験モジュールが更新パッケージによって追加された場合、体験バージョン番号は特定の値(例えば、1の値)を有することができる。
[0069] 即座更新欄(field)は、対応する更新パッケージのインストールを即座に行うべきか、または遅らせることができるかを示す。アプリケーションの開発者は、対応する更新パッケージのインストールを直ちに行うべきか、または遅らせることができるか指示し、この指示が、その特定の更新パッケージに対応するレコードの即座更新欄として追加される。
[0070] 先に論じたように、全ての更新パッケージが全てのデバイスに適用されるとは限らない。したがって、バージョン・カタログ316におけるアプリケーションのマスター・バージョン番号が、特定のデバイスにインストールされているアプリケーションの現バージョンと異なっていても、そのアプリケーションのもっと新しいバージョンが、その特定のデバイスには適用されないこともあり得る。デバイス更新コンポーネント314は、デバイス・タイプ・マスク、ユーザー識別子、およびロカール識別子の内1つ以上に基づいて、更新パッケージが特定のデバイスに適用されるか否か判断する。ユーザー識別子およびロカール識別子は、任意に、特定のデバイスのユーザーがオプトインに設定している(またはオプトアウトに設定していない)場合にのみ、更新パッケージがこのデバイスに適用され、彼または彼女のユーザー識別子および/またはロカール識別子がこのように用いられるのを許可するか否か判断するために用いることができる。
[0071] デバイス・タイプ・マスクは、更新パッケージが適用されるデバイスの1つ以上のタイプを示す。アプリケーションの開発者は、特定の更新パッケージが適用されるデバイスのタイプを示し、この指示が、その特定の更新パッケージに対応するレコードのデバイス・タイプ・マスクとして追加される。
[0072] 同様に、ユーザー識別子は、更新パッケージが適用される1人以上のユーザーを示す。アプリケーションの開発者は、例えば、アプリケーションの異なる2つのバージョンを試験することを望むこともある。開発者は、2つの異なるバージョンで2つの更新パッケージを作成し、どのユーザーがどのバージョンを受け取るかを示し、この指示が、対応するレコードのユーザー識別子欄に追加される。ユーザーは、例えば、そのユーザーに付随するユーザー名(例えば、ユーザーがログイン情報をプラットフォーム300に提供してある場合)、デバイスの識別子または物理的特徴等によって識別することができる。あるいは、何人かのユーザーが、特定のアプリケーションの検査人(tester)になるためにサインアップすることもできる。デバイス更新コンポーネント314は、特定のデバイスのユーザーが検査人になるためにサインアップしたか否かの指示を受け取る(例えば、デバイス自体から、プラットフォーム300の他のコンポーネントまたはモジュールから等)。次いで、ユーザー識別子は、デバイスのユーザーの識別子に基づいて、対応する更新パッケージがそのデバイスに適用されるか否か示すことができる。
[0073] ロカール識別子は、更新パッケージが適用されるデバイスの1つ以上の位置を示す。アプリケーションの開発者が、他の地理的位置または境界に基づいて、あるいは他の位置に基づく境界に基づいて、例えば、異なる国毎、異なる州毎に異なるバージョンのアプリケーションを有することを望むこともあり得る。開発者は、異なるバージョンで異なる更新パッケージを作成し、どのデバイス位置(device location)がどのバージョンを受けるべきかを示し、この指示を対応するレコードのロカール識別子欄(locale identifier field)に追加する。デバイス更新コンポーネント314は、特定のデバイスの位置の指示を受け取る(例えば、デバイス自体から、プラットフォーム300の他のコンポーネントまたはモジュールから等)。次いで、ロカール識別子は、デバイスの位置に基づいて、対応する更新パッケージがそのデバイスに適用されるか否か示すことができる。
[0074] デバイス更新コンポーネント314は、種々の異なるイベントに応答して、および/または種々の異なる時点において、アプリケーションがインストールされているデバイスに、1つ以上の更新パッケージを送ることができる。1つ以上の実施形態では、デバイスのコア・コンポーネント・インターフェース(例えば、図2のコア・コンポーネント・インターフェース216)は、規則的な間隔または不規則な間隔で(例えば、毎日)、アプリケーションが実行し始めたとき、アプリケーションの実行が終了したとき、デバイスにインストールされているアプリケーションが要求をプラットフォーム300に提出したとき等に、デプロイ・サービス306にアクセスするために、更新チェック要求を送るように構成されている。
[0075] デバイスによって送られる更新チェック要求は、デバイスのタイプの指示、およびそのデバイスにインストールされている現アプリケーションのマスター・バージョン番号を含む。デバイス更新コンポーネント314は、バージョン・カタログ316をチェックして、アプリケーションの体験モジュールのいずれかに対して、デバイスに適用される更新パッケージがあるか否か判断する。アプリケーションの体験モジュールのいずれかに対して、デバイスに適用される更新パッケージがある場合、これらの更新パッケージをデバイスにデプロイする。そうでない場合、デバイスには更新パッケージをデプロイしない。
[0076] あるいは、デバイスは他のやり方でアプリケーションに対する更新をチェックすることもできる。例えば、デバイス上にインストールされている現アプリケーションのマスター・バージョン番号を送る代わりに、更新チェック要求は、特定の体験モジュールの識別子、およびデバイス上にインストールされている現アプリケーションの体験モジュールの体験バージョン番号を含むことができる。つまり、デバイスは、体験モジュール毎に、体験モジュールに対する更新をチェックすることができる。
[0077] 他の実施形態では、デバイスに更新チェック要求をプラットフォーム300に送らせる代わりに、プラットフォーム300が更新パッケージをデバイスにプッシュすることができる。例えば、デバイス更新コンポーネント314は、種々のデバイス上にインストールされているアプリケーションのマスター・バージョン番号(および/または体験バージョン番号)のレコードを維持することができる。デバイスに適用されるがまだそのデバイスにデプロイされていない更新パッケージが入手可能になったとき、デバイス更新コンポーネント314はその更新パッケージをこのデバイスにデプロイする。
[0078] また、デプロイ・サービス306は、更新パッケージの廃止もサポートする。1つ以上の実施形態では、更新パッケージを廃止するためには、開発者が交換更新パッケージを供給する(例えば、廃止される更新パッケージの前に用いられた直前の更新パッケージとすることができる)。また、開発者は、交換更新パッケージのインストールを即座に行うべきことを示す。こうして、しかるべきデバイスに交換更新パッケージをデプロイして、直前の更新パッケージを効果的に廃止する。
[0079] 先に論じたように、開発者がアプリケーションを変更するとき、開発者は、更新レポジトリー312に格納する変更の更新パッケージ、およびバージョン・カタログ316に含ませるための更新パッケージを記述した情報を提供する。開発者は、更新パッケージおよびこの更新パッケージを記述する情報を異なるやり方で提供することができる。例えば、更新パッケージおよびこの更新パッケージを記述する情報を、プラットフォーム300の管理者に電子通信(例えば、電子メール)によって、光ディスクまたは他の携帯用記憶媒体等によって提供することができる。次いで、プラットフォーム300の管理者は、更新パッケージを更新レポジトリー312に追加し、更新パッケージを記述する情報をバージョン・カタログ316に追加することができる。
[0080] あるいは、更新パッケージおよびこの更新パッケージを記述する情報を、デバイス更新コンポーネント314から自動的に入手することもできる。例えば、開発者は、サーバーまたは他の計算デバイス上に、更新パッケージおよびこの更新パッケージを記述する情報を維持することができる(デプロイ・サービス306が更新パッケージおよびこの更新パッケージを記述する情報を維持するのと同様のやり方で)。デバイス更新コンポーネント314は、開発者が維持している計算デバイスに更新要求を送り、この計算デバイスから、更新パッケージおよびこの更新パッケージを記述する情報を入手することができる。このように、デバイスが更新パッケージおよびこの更新パッケージを記述する情報をデプロイ・サービス306から入手するのと同様のやり方で、デプロイ・サービス306は、自動的に、更新パッケージおよびこの更新パッケージを記述する情報を、開発者が維持している計算デバイスから入手することができる。
[0081] 図4は、1つ以上の実施形態にしたがってアプリケーションを更新する一例を示す。図4の例では、図3のデプロイ・サービス306および図2のデバイス200が示されている。デバイス200上にインストールされているアプリケーション402は、マスター・バージョン番号が58であり、3つの体験モジュールを有する。アプリケーション402における第1体験モジュールは、体験識別子がAであり、体験バージョン番号が3である。アプリケーション402における第2体験モジュールは、体験識別子がBであり、体験バージョン番号が7である。アプリケーション402における第3体験モジュールは、体験識別子がCであり、体験バージョン番号が5である。
[0082] バージョン・カタログ316は、データー例を含む表として示されている。このバージョン・カタログの表には、多数のレコード(各々は表における横方向の行になっている)が示されている。バージョン・カタログ316の表において、第1列はマスター・バージョン番号410を示し、第2列は体験識別子412を示し、第3列は体験バージョン番号414を示し、第4列はデバイス・タイプ・マスク416を示し、最後の列は即座更新値418を示す。また、バージョン・カタログ316には、マスター・バージョン番号57の前の更新パッケージに対応する行というような、追加の行(図示せず)を含めることもできる。デバイス・タイプ・マスク416について、「C」、「M」、および「T」の値が、コンピューター・タイプのデバイス(例えば、図1のコンピューター・デバイス106)、移動体タイプのデバイス(例えば、図1の移動体デバイス108)、およびテレビジョンに基づくタイプのデバイス(例えば、図1のテレビジョンに基づくデバイス110)をそれぞれ表すために用いられている。即座更新値418について、対応する更新パッケージのインストールを即座に行うべきことを示すために、「T」の値が用いられており、対応する更新パッケージのインストールを遅らせることができることを示すために、「F」の値が用いられている。
[0083] バージョン・カタログ316から分かるように、第1行は、マスター・バージョン番号が57の更新パッケージに対応し、体験識別子Aを有する体験モジュールについてであり、体験バージョン番号が3であり、コンピューター・タイプのデバイスおよびテレビジョンに基づくタイプのデバイスについでであり、対応する更新パッケージのインストールを即座に行うべきとなっている。
[0084] デバイス200は、更新チェック要求420をデプロイ・サービス306に送り、デバイス200のタイプ(テレビジョンに基づくタイプのデバイス)、およびデバイス200の現マスター・バージョン番号(58である)を特定する。デバイス更新コンポーネント314は、更新チェック要求をバージョン・カタログと突き合わせて評価し、マスター・バージョン番号59、61、および62に対応する更新パッケージをデバイス200にデプロイすべきであると判断する。デバイス200の現バージョン番号以下のバージョン番号を有する更新パッケージは、既にデバイス200にデプロイされている。したがって、マスター・バージョン番号57および58に対応する更新パッケージを再度デバイス200にデプロイする必要はない。
[0085] マスター・バージョン番号59に対応する更新パッケージは、未だデバイス200にインストールされていない新しい体験モジュールに対するものであり、したがって、デバイス200にデプロイしなければならない。マスター・バージョン番号61および62に対応する更新パッケージは、双方共、デバイス200上に既にインストールされている体験モジュールの新しいバージョンに対するものであり、したがって、デバイス200にデプロイしなければならない。マスター・バージョン番号60に対応する更新パッケージは、デバイス200上にインストールされていない新しい体験モジュールに対するものであるが、テレビジョンに基づくタイプのデバイスには適用されない(移動体タイプのデバイスに適用される)。したがって、マスター・バージョン番号60に対応する更新パッケージをデバイス200にはデプロイしない。
[0086] このように、デバイス更新コンポーネント314は、マスター・バージョン番号59、61、および62に対応する更新パッケージをデバイス200にデプロイすべきであるという指示422をデバイス200に戻す。また、バージョン・カタログ316からの種々の情報も、指示422に含めることができる。1つ以上の実施形態では、デバイス更新コンポーネント314は、デバイス200にデプロイすべき更新パッケージ毎に、マスター・バージョン番号の指示、更新パッケージが変更する体験モジュール、体験モジュールの新たなバージョンに対する体験バージョン番号、体験モジュールの新たなバージョンに対する体験バージョン番号、および対応する更新パッケージのインストールを即座に行うべきか、または遅らせることができるかの指示を戻す。
[0087] 図2に戻って、デバイス/サービス通信フレームワーク212は、デプロイ・サービス(例えば、図3のデプロイ・サービス306)から更新チェック要求に対する応答を受け取る。この応答は、アプリケーション218のためにデバイス200上にインストールすべき特定の1つ以上の更新パッケージがある場合、そのいずれの指示も含む。また、1つ以上の更新パッケージ自体も、デプロイ・サービスから受け取る応答に含めることができ、あるいはデバイス/サービス通信フレームワーク212が、後に、特定の1つ以上の更新パッケージに対して要求をデプロイ・サービスに提出し、このような要求に応答して、特定の1つ以上の更新パッケージを、後続の要求に応答して、受け取ることができる。
[0088] 1つ以上の実施形態では、デバイス200上にインストールすべき1つ以上の更新パッケージをデバイス/サービス通信フレームワーク212が受け取ったとき、フレームワーク212はこれらの更新パッケージを体験ストレージ214に格納し、コア・コンポーネント・インターフェース216に、受け取った1つ以上の更新パッケージについて通知する。すると、コア・コンポーネント・インターフェース216は、更新パッケージをデバイス200上にインストールし、その結果、デバイス200上にアプリケーションの更新バージョンがインストールされる。このインストールは、特定のファイルを記憶デバイス上の特定の位置に書き込む、情報を登録ストア(例えば、オペレーティング・システムのレジストリー)に追加する、データーベース方式を更新する等というような、種々の異なる動作を含むことができる。体験ストレージ214および/またはデバイス200の他の記憶デバイスに、ファイルを書き込むことができる。状況によっては、アプリケーション218に対する更新パッケージをインストールした後、デバイス200をブートし直さないと、アプリケーション218を実行できない場合がある。他の状況では、アプリケーション218に対する更新パッケージをインストールした後、デバイス200をブートし直すことなく、アプリケーション218を実行することができる。
[0089] 更新パッケージの指示が、対応する更新パッケージのインストールを即座に行うべきであることを示す場合、コア・コンポーネント・インターフェース216は、できるだけ早く更新パッケージをインストールする。このできるだけ早いインストールは、アプリケーション218を再度実行する前に更新パッケージをインストールし、既に実行中である場合にはアプリケーション218を停止して更新パッケージをインストールすること等を含むことができる。
[0090] しかしながら、更新パッケージの指示が、対応する更新パッケージのインストールを遅らせることができることを示す場合、コア・コンポーネント・インターフェース216は、更新パッケージをいずれかの後の時点にインストールする。コア・コンポーネント・インターフェース216は、インストールを遅らせることができる更新パッケージをいつインストールするか、アプリケーション218を再度実行する前、アプリケーション218の実行が終了した後、デバイス200を次に切る前またはリセットする前、アプリケーション218が実行しておらずデバイス200がアイドル状態にあるとき(例えば、デバイス200上におけるプロセッサーおよび/または他のリソースの使用が閾値量よりも少ないとき)等というように、異なるやり方で決定することができる。
[0091] 図5は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションをインストールし、その更新パッケージを入手するプロセス例500を示すフローチャートである。プロセス500は、図2のデバイス102、または図2のデバイス200のようなデバイスによって実行し、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせで実現することができる。プロセス500は、1組の動作(act)として示されているが、これら種々の動作の処理(operation)を実行するために示される順序には限定されない。プロセス500は、多数の体験モジュールを含むアプリケーションを実装するプロセス例であり、多数の体験モジュールを含むアプリケーションを実装することについての、異なる図を参照した追加の論述も、本明細書に含まれる。
[0092] プロセス500では、多数の体験モジュールを含むアプリケーションをインストールする(動作502)。このアプリケーションは、プロセス500を実装するデバイス上にインストールされ、先に論じたように、多数の体験モジュールを含む。
[0093] このアプリケーションを実行する要求に応答して、このアプリケーションの現バージョンを実行する(動作504)。このアプリケーションの現バージョンは、プロセス500を実装するデバイス上にインストールされているアプリケーションの最新バージョンである。
[0094] 加えて、体験モジュールの内1つに対する更新パッケージが入手可能か否かについてチェックを行う(動作506)。このような更新パッケージがあるとすれば、プロセス500を実装するデバイスに適用される更新パッケージである。このチェックは、デプロイ・サービスに更新チェック要求を送ることによって行われる。
[0095] アプリケーションの体験モジュールに対する更新パッケージが入手可能でない場合、プロセス500は動作504に戻って、現バージョンのアプリケーションを実行する。しかしながら、体験モジュールの内1つに対する更新パッケージが入手可能である場合、この更新パッケージを入手する(動作508)。
[0096] 入手した更新パッケージをインストールして、現バージョンのアプリケーションを更新する(動作510)。更新パッケージは、アプリケーションが実行し終えた後にインストールすることができ(例えば、更新パッケージのインストールを遅らせることができる場合)、あるいは更新パッケージをインストールすることができるように、アプリケーションは実行を終了することができ(例えば、更新パッケージを即座にインストールすべきとき)、そしてアプリケーションを再度実行する。次いで、プロセス500は動作504に戻り、現バージョンのアプリケーションを実行し続ける。
[0097] 尚、図5における動作の順序に拘わらず、動作506における更新パッケージの入手可能性をチェックする前に、アプリケーションを実行することができ、あるいはアプリケーションを実行する前に、更新パッケージの入手可能性をチェックすることもできることは注記してしかるべきである。
[0098] 図6は、1つ以上の実施形態にしたがって、更新をデバイスにデプロイするプロセス例600を示すフローチャートである。プロセス600は、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせで実現することができる。図6の左側に示すプロセス600の動作は、図1のデバイス102、または図2のデバイス200のようなデバイスによって実行する。図6の右側に示すプロセス600の動作は、図1のデプロイ・サービス118、または図3のデプロイ・サービス306のようなデプロイ・サービスによって実行する。プロセス600は、1組の動作(act)として示されているが、これら種々の動作の処理(operation)を実行するために示される順序には限定されない。プロセス600は、更新をデバイスにデプロイするプロセス例であり、更新をデバイスにデプロイすることについての、異なる図を参照した追加の論述も本明細書に含まれる。
[0099] プロセス600では、更新パッケージのレポジトリーおよび更新パッケージ記述のカタログを、デプロイ・サービスにおいて維持する(動作602)。更新パッケージは、先に論じたように、個々のアプリケーションの体験モジュールに対する変更を含む。
[00100] デバイスは、更新チェック要求をデプロイ・サービスに送る(動作604)。先に論じたように、更新チェック要求は、種々の時点においておよび/または種々のイベントに応答して送ることができる。
[00101] デプロイ・サービスは、更新チェック要求を受け取り(動作606)、デバイスに適用するあらゆる更新パッケージを特定する(動作608)。更新パッケージをデバイスに適用するか否かは、デバイス上における現在の体験モジュールのバージョン、デバイスのタイプ、デバイスのユーザー等というような、先に論じたような種々の異なる規準に応じて判断することができる。
[00102] デバイスに適用するあらゆる更新パッケージの指示をデバイスに戻す(動作610)。この指示は、デバイスに適用する0個以上の更新パッケージを特定する。
[00103] デバイスは、あらゆる更新パッケージの指示をデプロイ・サービスから受け取り(動作612)、この指示をチェックして、1つ以上の更新パッケージをデバイスに適用するか否か判断する(動作614)。
[00104] デバイスに適用する更新パッケージがない場合、現在の更新についてのチェックは終了する(動作616)。しかしながら、デプロイ・サービスは、更新パッケージのレポジトリーおよび更新パッケージ記述のカタログを維持し続け(動作602)、今後デプロイ・サービスに送られる更新チェック要求のために、プロセス600を繰り返すことができる。
[00105] しかしながら、1つ以上の更新パッケージをデバイスに適用する場合、更新パッケージ要求をデプロイ・サービスに送る(動作618)。この更新パッケージ要求は、デバイスに適用する1つ以上の更新パッケージをデプロイ・サービスから入手するための要求である。
[00106] デプロイ・サービスは、更新パッケージ要求を受け取り(動作620)、要求された1つ以上の更新パッケージをデバイスに送ることによって応答する(動作622)。1つ以上の更新パッケージは、異なるやり方で(更新パッケージに付随するマスター・バージョン番号を用いることによってというように)特定することができる。デバイスは、要求した1つ以上の更新パッケージを受け取り(動作624)、受け取った1つ以上の更新パッケージをデバイス上にインストールする(動作626)。1つ以上の更新パケットの各々のインストールは、先に論じたように、即座に行うこと、または遅らせることができる。次いで、更新についての現在のチェックは終了する(動作616)。しかしながら、デプロイ・サービスは、更新パッケージのレポジトリーおよび更新パッケージ記述のカタログ維持し続け(動作602)、今後デプロイ・サービスに送られる更新チェック要求のために、プロセス600を繰り返すことができる。
[00107] あるいは、1つ以上の更新パッケージをデバイスに適用する場合、動作610において、これらの更新パッケージをデバイスに戻すことができる。このような状況では、動作616〜620を実行する必要はない。
[00108] 図7は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実行するように構成することができる計算デバイス例700を示す。計算デバイス700は、例えば、図1のデバイス102、図2のデバイス200とすることができ、図1のプラットフォーム114または図3のプラットフォーム300の少なくとも一部を実装することができる。
[00109] 計算デバイス700は、1つ以上のプロセッサーまたは演算装置702、1つ以上のメモリーおよび/または記憶コンポーネント706を含むことができる1つ以上のコンピューター読み取り可能媒体、1つ以上の入力/出力(I/O)デバイス708、ならびに種々のコンポーネントおよびデバイスが互いに通信することを可能にするバス710を含む。コンピューター読み取り可能媒体704および/または1つ以上のI/Oデバイス708は、計算デバイス700の一部として含ませることができ、あるいは計算デバイス700に結合されてもよい。バス710は、数種類のバス構造の内1つ以上を表し、メモリー・バスまたはメモリー・コントローラー、周辺バス、加速グラフィクス・ポート、プロセッサーまたはローカル・バス、および種々の異なるバス構造を用いるその他を含む。バス710は、有線バスおよび/またはワイヤレス・バスを含むことができる。
[00110] メモリー/記憶コンポーネント706は、1つ以上のコンピューター記憶媒体を表す。コンポーネント706は、揮発性媒体(ランダム・アクセス・メモリー(RAM)のような媒体)、および/または不揮発性媒体(リード・オンリー・メモリー−(ROM)、フラッシュ・メモリー、光ディスク、磁気ディスク等のような媒体)を含むことができる。コンポーネント706は、固定媒体(例えば、RAM、ROM、固定ハード・ドライブ等)、およびリムーバブル媒体(例えば、フラッシュ・メモリー・ドライブ、リムーバブル・ハード・ドライブ、光ディスク等)を含むことができる。
[00111] 本明細書において論じた技法は、1つ以上の演算装置702によって命令を実行することによって、ソフトウェアで実現することができる。尚、演算装置702、演算装置702の種々のキャッシュ・メモリー、デバイス700(図示せず)の他のキャッシュ・メモリー、他のコンピューター読み取り可能媒体等というような、計算デバイス700の異なるコンポーネントに、異なる命令を格納できることは認められてしかるべきである。加えて、計算デバイス700において命令を格納する場所は、ときの経過と共に変化する可能性があることも認められてしかるべきである。
[00112] 1つ以上の入力/出力デバイス708は、ユーザーがコマンドおよび情報を計算デバイス700に入力することを可能にし、更に情報をユーザーおよび/または他のコンポーネントまたはデバイスに提示するのを可能にする。入力デバイスの例には、キーボード、カーソル制御デバイス(例えば、マウス)、マイクロフォン、スキャナー等が含まれる。出力デバイスの例には、ディスプレイ・デバイス(例えば、モニターまたはプロジェクター)、スピーカー、プリンター、ネットワーク・カード等が含まれる。
[00113] 本明細書では、種々の技法をソフトウェアまたはプログラム・モジュールという一般的なコンテキストで説明することができる。一般に、ソフトウェアは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、これらは特定のタスクを実行するか、または特定の抽象データー型を実装する。これらのモジュールおよび技法の実施態様は、コンピューター読み取り可能媒体上に格納することができ、またはコンピューター読み取り可能媒体の何らかの形態を通じて伝達することができる。コンピューター読み取り可能媒体は、計算デバイスによってアクセスすることができ入手可能な1つまたは複数のいずれの媒体でも可能である。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、「コンピューター記憶媒体」および「通信媒体」を含むことができる。
[00114] 「コンピューター記憶媒体」は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターというような情報の格納のための方法または技術であればそのいずれでも実現できる。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリーまたはその他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)またはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができ、コンピューターによってアクセスすることができる他のあらゆる媒体を含むが、これらに限定されるのではない。
[00115] 「通信媒体」は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを、搬送波というような変調データー信号、または他の伝達メカニズムに具体化する。また、通信媒体は、あらゆる情報配信媒体も含む。「変調データー信号」という用語は、その特性の1つ以上が、内部に情報をエンコードするようなやり方で設定または変化させられている信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、RF、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体とを含む。以上の内いずれの組み合わせも、コンピューター読み取り可能媒体の範囲に含まれる。
[00116] 一般に、本明細書において記載した機能または技法は、そのいずれもが、ソフトウェア、ファームウェア、ハードウェア(例えば、固定論理回路)、手作業の処理、またはこれらの実施態様の組み合わせを用いて実現することができる。「モジュール」および「コンポーネント」という用語は、本明細書において用いる場合、一般にソフトウェア、ファームウェア、ハードウェア、またはその組み合わせを表す。ソフトウェア実施態様の場合、モジュールまたはコンポーネントは、プロセッサー(例えば、1つまたは複数のCPU)において実行されると、指定されたタスクを実行するプログラム・コードを表す。プログラム・コードは、1つ以上のコンピューター読み取り可能メモリー・デバイスに格納することができる。これらの更に詳しい説明は、図7を参照すれば見つけることができる。本明細書に記載した、多数の体験モジュールを含むアプリケーションの特徴は、プラットフォームに依存しないということであり、種々のプロセッサーを有する種々の商用計算プラットフォームにおいて、本技術を実現できることを意味する。
[00117] 以上、構造的特徴および/または方法論的動作に特定的な文言で主題について説明したが、添付した特許請求の範囲において定義されている主題は、以上に記載した特定的な特徴または動作には必ずしも限定されないことは言うまでもない。逆に、以上に記載した特定的な特徴および動作は、特許請求の範囲を実現する形態例として開示したのである。

Claims (14)

  1. デバイスにおける方法であって、
    前記デバイス上に、多数の体験モジュールを含むアプリケーションをインストールするステップであって、前記アプリケーションが実行しているとき前記体験モジュールの各々が、1組の機構を実装し、前記多数の体験モジュールの各々が、前記デバイスの特定のタイプ(particular type)に専用の(specific)コードを含む第1コンポーネントと、デバイスの多数のタイプにわたって共通であるコードを含む第2コンポーネントとを含む、ステップと、
    前記アプリケーションを実行する要求に応答して、前記デバイス上で、前記アプリケーションを実行するステップと、
    を備えている、方法であって、更に、
    前記多数の体験モジュールの各々が前記多数の体験モジュールの他のものに直接アクセスすることを防止するために、前記多数の体験モジュールを互いに分離するステップを備えている、方法。
  2. デバイスにおける方法であって、
    前記デバイス上に、多数の体験モジュールを含むアプリケーションをインストールするステップであって、前記アプリケーションが実行しているとき前記体験モジュールの各々が、1組の機構を実装し、前記多数の体験モジュールの各々が、前記デバイスの特定のタイプ(particular type)に専用の(specific)コードを含む第1コンポーネントと、デバイスの多数のタイプにわたって共通であるコードを含む第2コンポーネントとを含む、ステップと、
    前記アプリケーションを実行する要求に応答して、前記デバイス上で、前記アプリケーションを実行するステップと、
    を備えている、方法であって、更に、
    前記多数の体験モジュールの内第1体験モジュールから、要求された動作を含むメッセージを受け取るステップと、
    前記メッセージを前記多数の体験モジュールの内第2体験モジュールに送るステップと、
    前記多数の体験モジュールの内第2体験モジュールから、前記要求された動作を含む前記メッセージに対する応答を含む応答メッセージを受け取るステップと、
    前記応答メッセージを前記多数の体験モジュールの内前記第1体験モジュールに送るステップと、
    を備えている、方法。
  3. 請求項2に記載の方法であって、更に、
    前記多数の体験モジュールの各々から、前記体験モジュールが実行することができる1つ以上の動作の指示を受け取るステップと、
    前記多数の体験モジュールの1つ以上から、前記多数の体験モジュールの内特定の動作を実行できるものを特定する要求を受けるステップと、
    前記多数の体験モジュールの内前記1つ以上に、前記多数の体験モジュールの内前記特定の動作を実行することができる体験モジュールの指示を返すステップと、
    を含む、方法。
  4. デバイスにおける方法であって、
    前記デバイス上に、多数の体験モジュールを含むアプリケーションをインストールするステップであって、前記アプリケーションが実行しているとき前記体験モジュールの各々が、1組の機構を実装し、前記多数の体験モジュールの各々が、前記デバイスの特定のタイプ(particular type)に専用の(specific)コードを含む第1コンポーネントと、デバイスの多数のタイプにわたって共通であるコードを含む第2コンポーネントとを含む、ステップと、
    前記アプリケーションを実行する要求に応答して、前記デバイス上で、前記アプリケーションを実行するステップと、
    を備えている、方法であって、更に、
    前記多数の体験モジュールの内第1体験モジュールから要求を受けるステップと、
    前記アプリケーションがインストールされている追加のデバイスに前記要求を送るステップと、
    前記追加のデバイスから、前記要求に対する応答を受け取るステップと、
    前記応答を、前記多数の体験モジュールの内前記第1体験モジュールに送るステップと、
    を備えている、方法。
  5. 請求項1〜4のいずれか一項に記載の方法において、前記アプリケーションが、前記デバイス上にあるアプリケーション・シェルにおいて実行され、前記第1コンポーネントが、前記特定のタイプのデバイスを含む1つ以上のタイプのデバイスに専用のプレゼンテーション・ロジックおよびリソースを含み、多数のタイプのデバイスにわたって共通である前記コードが、前記特定のタイプのデバイスおよび他のタイプのデバイスにわたって共通であるビジネス・ロジックを備えている、方法。
  6. 請求項5に記載の方法において、前記多数のタイプのデバイスが、コンピューター・タイプのデバイスと、移動体タイプのデバイスと、テレビジョンに基づくタイプのデバイスとを含み、前記デバイスの特定のタイプが、前記多数のデバイスのタイプの内の1つである、方法。
  7. 請求項1〜6のいずれか一項に記載の方法であって、更に、
    更新の有無をチェックする要求をデプロイ・サービスに送るステップと、
    前記デプロイ・サービスから、前記多数の体験モジュールの内1つ以上に対する1つ以上の更新パッケージの指示を受け取るステップと、
    前記デプロイ・サービスから、前記多数の体験モジュールの前記1つ以上に対する前記1つ以上の更新パッケージを受け取るステップと、
    前記デバイス上に、前記1つ以上の更新パッケージをインストールするステップと、
    を備えている、方法。
  8. 請求項7に記載の方法であって、更に、
    前記1つ以上の更新パッケージの前記指示に基づいて、前記1つ以上の更新パッケージを即座にインストールすべきか否か判断するステップと、
    前記1つ以上の更新パッケージを即座にインストールすべきであると判断した場合、前記アプリケーションを次に実行する前に、前記1つ以上の更新パッケージをインストールするステップと、
    を備えている、方法。
  9. 計算デバイスであって、
    プロセッサーと、
    多数の命令が格納されている1つ以上のコンピューター読み取り可能媒体と、
    を備えており、前記命令を前記プロセッサーによって実行すると、前記プロセッサーに、
    アプリケーションの異なる体験モジュール毎に異なる更新パッケージのカタログを維持させ、前記アプリケーションが多数の体験モジュールを含み、前記アプリケーションがデバイス上で実行しているときに、各体験モジュールが1組の機構を実装し、前記多数の体験モジュールの各々が、前記デバイスの特定のタイプに専用のプレゼンテーション・ロジックおよびリソースを含む第1コンポーネントと、多数のデバイスのタイプにわたって共通であるビジネス・ロジックを含む第2コンポーネントとを含み、
    前記デバイス上において前記アプリケーションに適用する更新パッケージがあるか否か判断させ、
    前記デバイス上において前記アプリケーションに適用する更新パッケージがある場合、前記デバイスに前記更新パッケージを送らせる、計算デバイスにおいて、更に、
    前記多数の体験モジュールの各々が前記多数の体験モジュールの他のものに直接アクセスすることを防止するために、前記多数の体験モジュールを互いに分離されている、
    計算デバイス。
  10. 請求項9に記載の計算デバイスにおいて、前記多数のタイプのデバイスが、コンピューター・タイプのデバイスと、移動体タイプのデバイスと、テレビジョンに基づくタイプのデバイスとを含み、前記デバイスの特定のタイプが、前記多数のデバイスのタイプの内の1つである、計算デバイス。
  11. 請求項9又は10記載の計算デバイスにおいて、前記多数の体験モジュールの1つに対する前記更新パッケージが、前記多数の体験モジュールの内前記1つにおけるコンポーネントに対する変更を特定する、計算デバイス。
  12. 請求項9〜11のいずれか一項に記載の計算デバイスにおいて、前記多数の命令が、更に、前記プロセッサーに、前記アプリケーションに対する多数の異なる更新パッケージを維持させ、前記特定のタイプのデバイスに少なくとも部分的に基づいて、前記デバイス上において前記アプリケーションに適用する更新パッケージがあるか否か判断させる、計算デバイス。
  13. 請求項9〜12のいずれか一項に記載の計算デバイスにおいて、前記多数の命令が、更に、前記プロセッサーに、
    前記更新パッケージの指示を前記デバイスに送らせ、
    前記デバイスから前記更新パッケージの要求を受けさせ、
    前記更新パッケージの要求に応答して、前記更新パッケージを前記デバイスに返させる、
    計算デバイス。
  14. 請求項9〜13のいずれか一項に記載の計算デバイスにおいて、前記多数の命令が、更に、前記プロセッサーに、前記更新パッケージの指示を前記デバイスに送らせ、前記更新パッケージの指示が、
    前記アプリケーションのマスター・バージョン番号と、
    前記多数の体験モジュールの内、前記更新パッケージによって変更される体験モジュールを示す体験モジュール識別子と、
    前記多数の体験モジュールの内前記変更された体験モジュールの体験モジュール・バージョン番号と、
    前記更新パッケージを前記デバイスによって即座にインストールすべきか、または遅らせることができるかの指示と、
    を含む、計算デバイス。
JP2013516607A 2010-06-23 2011-06-14 多数の体験モジュールを含むアプリケーション Active JP5819953B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/822,036 US9672022B2 (en) 2010-06-23 2010-06-23 Applications including multiple experience modules
US12/822,036 2010-06-23
PCT/US2011/040310 WO2011163010A2 (en) 2010-06-23 2011-06-14 Applications including multiple experience modules

Publications (2)

Publication Number Publication Date
JP2013529811A JP2013529811A (ja) 2013-07-22
JP5819953B2 true JP5819953B2 (ja) 2015-11-24

Family

ID=45353842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013516607A Active JP5819953B2 (ja) 2010-06-23 2011-06-14 多数の体験モジュールを含むアプリケーション

Country Status (6)

Country Link
US (1) US9672022B2 (ja)
EP (1) EP2585915A4 (ja)
JP (1) JP5819953B2 (ja)
CN (1) CN102971705B (ja)
CA (1) CA2800917C (ja)
WO (1) WO2011163010A2 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL210169A0 (en) 2010-12-22 2011-03-31 Yehuda Binder System and method for routing-based internet security
US9413815B2 (en) * 2011-01-05 2016-08-09 Appcitylife, Inc. Methods and apparatuses for imparting functionality to a mobile computing device
JP2012247840A (ja) * 2011-05-25 2012-12-13 Sony Corp 近隣人物特定装置、近隣人物特定方法、近隣人物特定プログラム及び近隣人物特定システム
US20130042231A1 (en) * 2011-08-10 2013-02-14 Ford Global Technologies, Llc Methods and Apparatus for Software Updating
US8984162B1 (en) 2011-11-02 2015-03-17 Amazon Technologies, Inc. Optimizing performance for routing operations
US8726264B1 (en) 2011-11-02 2014-05-13 Amazon Technologies, Inc. Architecture for incremental deployment
US9229740B1 (en) * 2011-11-02 2016-01-05 Amazon Technologies, Inc. Cache-assisted upload proxy
US9158520B2 (en) * 2011-12-07 2015-10-13 Yahoo! Inc. Development of platform independent applications
US20130151595A1 (en) * 2011-12-07 2013-06-13 Bruno Fernandez-Ruiz Deployment and hosting of platform independent applications
US9946526B2 (en) 2011-12-07 2018-04-17 Excalibur Ip, Llc Development and hosting for platform independent applications
US9197720B2 (en) 2011-12-07 2015-11-24 Yahoo! Inc. Deployment and hosting of platform independent applications
US9268546B2 (en) 2011-12-07 2016-02-23 Yahoo! Inc. Deployment and hosting of platform independent applications
US8713562B2 (en) * 2012-01-06 2014-04-29 International Business Machines Corporation Intelligent and automated code deployment
JP5868208B2 (ja) * 2012-02-16 2016-02-24 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
US10129324B2 (en) 2012-07-03 2018-11-13 Google Llc Contextual, two way remote control
WO2014031494A2 (en) 2012-08-18 2014-02-27 Luminal, Inc. System and method for providing a secure computational environment
CN109977086B (zh) * 2013-11-29 2023-09-01 华为终端有限公司 终端间应用共享的方法和终端
JP5991333B2 (ja) * 2014-02-18 2016-09-14 コニカミノルタ株式会社 情報処理装置、該装置における設定値の更新方法及び設定値の更新プログラム
JP6340815B2 (ja) * 2014-02-19 2018-06-13 カシオ計算機株式会社 プログラム
EP3116218B1 (en) * 2014-04-18 2020-02-12 Huawei Device Co., Ltd. Software upgrade method, device and equipment
WO2015191036A1 (en) * 2014-06-09 2015-12-17 Hewlett-Packard Development Company, L.P. Context-based experience
US9847018B2 (en) * 2014-06-20 2017-12-19 Ray Enterprises, LLC System and method for applying over the air updates to a universal remote control device
US10521417B2 (en) * 2014-06-24 2019-12-31 Google Llc Processing mutations for a remote database
US10015236B2 (en) * 2015-01-30 2018-07-03 Ricoh Company, Ltd. Cloud application activation and update service
US9785426B2 (en) * 2015-02-19 2017-10-10 Vmware, Inc. Methods and apparatus to manage application updates in a cloud environment
US20160269261A1 (en) * 2015-03-10 2016-09-15 ECI Solutions, Inc System and method for matching electronic devices found by multiple tools
US10248403B2 (en) * 2015-03-13 2019-04-02 Kony, Inc. Providing updates for natively rendered mobile applications
US9619305B2 (en) * 2015-06-02 2017-04-11 International Business Machines Corporation Locale aware platform
US10341194B2 (en) 2015-10-05 2019-07-02 Fugue, Inc. System and method for building, optimizing, and enforcing infrastructure on a cloud based computing environment
CN108351774A (zh) * 2015-11-02 2018-07-31 株式会社理光 信息处理装置、通信系统和信息处理方法
US10572213B2 (en) * 2016-04-04 2020-02-25 Microsoft Technology Licensing, Llc Universal application pinning
US10560520B2 (en) * 2016-05-20 2020-02-11 Sap Se Compatibility framework for cloud and on-premise application integration
JP6885152B2 (ja) * 2016-07-14 2021-06-09 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム
CN106874188B (zh) * 2016-12-30 2020-05-12 北京五八信息技术有限公司 软件接口测试方法及装置
CN107357560A (zh) 2017-04-28 2017-11-17 阿里巴巴集团控股有限公司 交互处理方法及装置
US10635463B2 (en) * 2017-05-23 2020-04-28 International Business Machines Corporation Adapting the tone of the user interface of a cloud-hosted application based on user behavior patterns
CN107450923B (zh) * 2017-07-28 2021-07-02 郑州云海信息技术有限公司 一种定制基线分离的程序实现方法及装置
US10360017B1 (en) * 2018-01-02 2019-07-23 Microsoft Technology Licensing, Llc Updating program packages at distribution endpoint
CN108829406B (zh) * 2018-06-13 2022-10-14 珠海豹趣科技有限公司 安装包打包方法、装置、电子设备及存储介质
CN109240728A (zh) * 2018-11-20 2019-01-18 北京千丁互联科技有限公司 一种软件升级方法及装置
CN111722856B (zh) * 2019-03-19 2024-04-09 上海汽车集团股份有限公司 车载微控制器中固件的升级方法和装置
CN112306532A (zh) * 2020-11-20 2021-02-02 广州欢网科技有限责任公司 基于大屏app功能更新的版本展示方法、装置和系统
US11599355B2 (en) * 2021-06-21 2023-03-07 Microsoft Technology Licensing, Llc Application module version management

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951639A (en) * 1996-02-14 1999-09-14 Powertv, Inc. Multicast downloading of software and data modules and their compatibility requirements
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6754829B1 (en) * 1999-12-14 2004-06-22 Intel Corporation Certificate-based authentication system for heterogeneous environments
US7188183B1 (en) 2000-08-04 2007-03-06 Oracle International Corporation Maintaining state information in mobile applications
JP2003140902A (ja) 2001-10-29 2003-05-16 Sony Corp ホスト装置、クライアント装置、ホームネットワークシステム、クライアント装置のソフトウェア更新方法
US20040002943A1 (en) * 2002-06-28 2004-01-01 Merrill John Wickens Lamb Systems and methods for application delivery and configuration management of mobile devices
US7984435B2 (en) 2002-11-13 2011-07-19 Hewlett-Packard Development Company, L.P. Update system employing reference software to reduce number of update packages
US20070067373A1 (en) * 2003-11-03 2007-03-22 Steven Higgins Methods and apparatuses to provide mobile applications
US7257583B2 (en) 2004-01-09 2007-08-14 Microsoft Corporation System and method for updating an on-device application catalog in a mobile device receiving a push message from a catalog server indicating availability of an application for download
US7434217B2 (en) * 2004-04-06 2008-10-07 Scenera Technologies, Llc Method and system for distributing a software application to a specified recipient
JP4232767B2 (ja) 2005-03-14 2009-03-04 セイコーエプソン株式会社 ソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法
JP4659497B2 (ja) 2005-03-29 2011-03-30 シスメックス株式会社 測定装置の測定に関する設定方法、分析システム、データ処理装置、及びアプリケーションプログラム
JP2007034750A (ja) 2005-07-27 2007-02-08 Toshiba Corp デジタル放送受信装置
US20070077921A1 (en) * 2005-09-30 2007-04-05 Yahoo! Inc. Pushing podcasts to mobile devices
JP2007172255A (ja) 2005-12-21 2007-07-05 Canon Inc コンポーネント間通信装置
JP2007226740A (ja) 2006-02-27 2007-09-06 Kyocera Corp 通信システム、ソフトウェア更新方法、通信装置、管理サーバ装置、およびプログラム
US8463245B2 (en) * 2006-03-30 2013-06-11 Shoreline Innovations, Llc Systems and methods for communicating music indicia
JP2007280303A (ja) * 2006-04-11 2007-10-25 Brother Ind Ltd 情報通信システム、コンテンツカタログ情報配信方法、及びノード装置等
US7971145B2 (en) 2006-05-22 2011-06-28 Sap Ag Systems and methods for adapting service interface behaviors
US20080016176A1 (en) * 2006-07-13 2008-01-17 Ofir Leitner System for development of games for mobile devices and distribution thereof
US8607223B2 (en) 2006-07-28 2013-12-10 International Business Machines Corporation Creating multiplatform customized install packages for software installation
KR100782857B1 (ko) 2006-10-13 2007-12-06 삼성전자주식회사 복수의 모델들이 공유하는 공유모듈을 이용하여 소프트웨어를 갱신하기 위한 방법, 디지털 방송 수신기 및 그 방법을 기록한 컴퓨터로 읽을 수 있는 기록매체
US20080127174A1 (en) 2006-10-25 2008-05-29 Igt Systems and methods for transmitting and installing software on a gaming machine in a gaming network
US20080133569A1 (en) * 2006-12-01 2008-06-05 Amp'd Mobile, Inc. System and method for content handling and bundling for mobile handset device
JP5293595B2 (ja) * 2007-03-20 2013-09-18 富士通株式会社 コンピュータプログラム、更新システム、及びプログラム実行装置
US20080301660A1 (en) 2007-05-30 2008-12-04 Google Inc. Maintaining Multiple Versions of a Software Application on a Device
US8131875B1 (en) * 2007-11-26 2012-03-06 Adobe Systems Incorporated Device profile assignment based on device capabilities
JP2009193444A (ja) 2008-02-15 2009-08-27 Fuji Xerox Co Ltd ソフトウェア更新システムおよび管理装置および端末
US8307016B2 (en) 2008-02-25 2012-11-06 Microsoft Corporation Accessing different application data via a common data structure
US8904368B2 (en) * 2008-03-31 2014-12-02 International Business Machines Corporation Instantiating a composite application for different target platforms
US8275880B2 (en) 2008-05-06 2012-09-25 Microsoft Corporation Media content programming, delivery, and consumption
CA2665939C (en) 2008-10-08 2014-10-21 Research In Motion Limited Mobile wireless communications device and system providing dynamic management of carrier applications and related methods
US8725745B2 (en) 2009-04-13 2014-05-13 Microsoft Corporation Provision of applications to mobile devices
US20100268735A1 (en) 2009-04-17 2010-10-21 Microsoft Corporation Online content service with catalog-based interaction
JP4832558B2 (ja) 2009-08-24 2011-12-07 ソニー株式会社 受信装置および方法、記録媒体、並びにプログラム
US20110047540A1 (en) * 2009-08-24 2011-02-24 Embarcadero Technologies Inc. System and Methodology for Automating Delivery, Licensing, and Availability of Software Products

Also Published As

Publication number Publication date
WO2011163010A3 (en) 2012-04-05
CN102971705B (zh) 2016-11-16
CA2800917C (en) 2019-03-26
WO2011163010A2 (en) 2011-12-29
EP2585915A2 (en) 2013-05-01
US9672022B2 (en) 2017-06-06
CN102971705A (zh) 2013-03-13
US20110321028A1 (en) 2011-12-29
JP2013529811A (ja) 2013-07-22
CA2800917A1 (en) 2011-12-29
EP2585915A4 (en) 2013-11-20

Similar Documents

Publication Publication Date Title
JP5819953B2 (ja) 多数の体験モジュールを含むアプリケーション
US11601385B2 (en) Conversion of text relating to media content and media extension apps
KR101807897B1 (ko) 크로스―플랫폼 어플리케이션 프레임워크
US11586708B2 (en) Software maintenance, distribution and loading
US20100318968A1 (en) Catalog-based software component management
EP3005080B1 (en) Synchronizing device association data among computing devices
US9037757B2 (en) Device action service
JP2015501973A (ja) コンテンツの近似性および関連性
US20150324188A1 (en) Aggregation of Update Sets
US10452222B2 (en) Coordination of system readiness tasks
KR20180125387A (ko) 소프트웨어 플랫폼을 제공하는 서버 및 그 동작방법
KR101780023B1 (ko) 구매 정보에 기초한 어플리케이션/콘텐트 송수신 방법 및 장치
US10289691B2 (en) Dynamic replication of networked files
US10642839B2 (en) Associating hardware to store applications
KR102252053B1 (ko) 듀얼 스크린에서의 컨텐츠 중복을 배제하는 방법, 시스템, 및 컴퓨터 프로그램
US10791538B1 (en) Cloud-based data synchronization
KR20240109069A (ko) 접속 관리 방법 및 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140605

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150522

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150609

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150803

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150902

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151001

R150 Certificate of patent or registration of utility model

Ref document number: 5819953

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250