JP2018190341A - システム及び配信方法 - Google Patents
システム及び配信方法 Download PDFInfo
- Publication number
- JP2018190341A JP2018190341A JP2017094880A JP2017094880A JP2018190341A JP 2018190341 A JP2018190341 A JP 2018190341A JP 2017094880 A JP2017094880 A JP 2017094880A JP 2017094880 A JP2017094880 A JP 2017094880A JP 2018190341 A JP2018190341 A JP 2018190341A
- Authority
- JP
- Japan
- Prior art keywords
- version
- update
- application
- firmware
- information
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- Facsimiles In General (AREA)
Abstract
【課題】デバイスのソフトウェアを更新する際のサーバの負荷を低減できる配信システムを提供する。【解決手段】配信システムは、ソフトウェア配信とは非同期に、予めファームウェアとアプリケーションのバージョン依存関係を考慮して、各デバイスに配信する予定のファームウェアとアプリケーションの適切なバージョンの組合せを求めておく。自動更新時に、デバイスから現在のファームウェアバージョンを受信し、予め求めておいたファームウェアとアプリケーションの適切なバージョンの組合せにより配信する。【選択図】図5
Description
本発明は、デバイス等のクライアントにインストールされるソフトウェアを管理して配信するシステム及び配信方法に関する
複合機等のデバイスにおいては、デバイス本来の組み込み機能を実現するためのファームウェアと、利用者毎に後からインストールして使用するアプリケーションという二種類のソフトウェアが利用可能である。通常、アプリケーションは、利用者によって選択され、インストール、起動される。アプリケーションには、利用するために追加の利用料金(ライセンス)が必要な場合もある。
ところで、ファームウェアおよびアプリケーション(まとめてソフトウェアと呼ぶ。)は、不具合の修正や機能拡張のためにバージョンアップが実施される場合がある。そして、バージョンアップでは、ファームウェアだけでなく、アプリケーションであっても、デバイスの製造元あるいは販売者によってバージョンアップ版のインストールが行われる場合もある。さらに、ソフトウェアのインストールあるいはバージョンアップ版ソフトウェアへの更新において、デバイスをネットワーク経由で配信サーバに接続し、デバイスに対して遠隔地からのソフトウェア配信も行われている。
一般的にPCや携帯端末などでは、クライアントから自動で定期的に配信サーバに問い合わせてソフトウェアのバージョンアップを行う仕組みが提供されている。これらのクライアントにおいて、配信サーバへの問い合わせおよびバージョンアップのタイミングは、クライアント側の設定をする利用者が常時存在することから、比較的自由なタイミングを選ぶことが出来る。
複合機等のデバイスにおいても、同様の自動バージョンアップを行う仕組みの要求が存在する。しかしながら、オフィス等の中で不特定多数のユーザが利用する一方、そのデバイスの管理者は遠隔地にいることが多い。したがって、これらのデバイスの特徴として、自動バージョンアップが可能なタイミングはどのデバイスにおいても高々一種類である。すなわち、そのデバイスを利用するオフィス業務が休みとなるタイミングである。これは、週の特定曜日のその地域における深夜、多くの業態では、週末の深夜に限られる。このため、各デバイスのファームウェアおよびデバイス上で動作しているアプリケーションの自動バージョンアップは、この限られたタイミングでまとめて実施する必要がある。
ところで、デバイスで動作するアプリケーションのバージョンは、そのプラットフォームの一部を構成するファームウェアのバージョンに依存する場合がある。例えば、ファームウェアのバージョンアップ前に更新が必要なアプリケーションのバージョンや、あるバージョンのアプリケーションの動作に必要なファームウェアのバージョンが限定されている場合などである。例えば、特許文献1のように、インストール情報を送信して複数のアップデートデータを取得するとともにアップデートの順序を示す順序情報を取得する管理装置が提案されている。ここでの配信サーバは、複数ソフトウェア間のバージョンに依らず整合性がある場合にはアップデート順序を指定しない順序情報を生成し、バージョンに依り整合性が無い場合にはアップデート順序を指定する順序情報を生成する。
デバイスの利用者は、全てのアプリケーションを常に最新に維持することを望むとは限らない。利用者個々の事情で、特定のバージョンを使い続けたい場合がある。また、デバイスやアプリケーションの販売者側の観点でも、セキュリティ対策、緊急障害対応等、サービスマンの判断で配信するものに限定してアプリケーションのバージョンアップを行う場合がある。
このため、配信するアプリケーションとバージョンの判断、すなわち更新対象のアプリケーションの特定とそのバージョンの特定とをデバイス毎に行う必要がある。この判断には、ファームウェアのバージョンアップ判定、アプリケーション毎のバージョンアップ判定、ファームウェアのバージョンに依存するアプリケーションのバージョンアップ判定、の三つが必要である。
しかしながら、上述の通り、限られた一つのタイミングで、この三つの判定を同時に実施すると、配信処理時のサーバ負荷が大きくなる。
本発明は上記従来例に鑑みて成されたもので、デバイスのソフトウェアを更新する際のサーバの負荷を低減することができるソフトウェアシステム及び方法を提供することを目的とする。
上記目的を達成するために本発明は以下の構成を有する。
複数のデバイスと配信システムとを含むシステムであって、
前記配信システムは、
デバイスにインストールされているファームウェア及びアプリケーションのバージョン情報と、前記ファームウェア及びアプリケーションの更新予定のバージョン情報とを、デバイスIDごとに管理する管理手段と、
前記デバイスからの該デバイスのデバイスIDと該デバイスにインストールされているアプリケーションのバージョン情報を含む更新通知の受信に応じて、前記管理手段により管理される前記デバイスにインストールされているアプリケーションのバージョン情報を更新し、さらに、前記管理手段により管理された前記ファームウェア及びアプリケーションの更新予定のバージョン情報の更新を行う更新手段と、
前記デバイスから、該デバイスのデバイスIDと該デバイスにインストールされているファームウェアのバージョン情報とを含む、ファームウェアの更新の確認要求を受信する受信手段と、
前記受信手段により受信した前記確認要求に含まれる情報が示す前記ファームウェアのバージョン情報に基づいて該ファームウェアの更新予定のバージョン情報を特定し、さらに、前記管理手段で前記確認要求に含まれるデバイスIDに対応する前記アプリケーションについての更新予定が既に管理されていた際には、当該更新予定に基づいて、前記デバイスにインストールされているアプリケーションについての更新予定のバージョン情報の特定を行う特定手段と、
特定された前記ファームウェアの更新予定のバージョン情報と前記アプリケーションの更新予定のバージョン情報とを前記確認要求への応答として、前記デバイスに送信する応答手段と、を有し、
前記デバイスでは、前記応答に従い前記ファームウェア及びアプリケーションが更新され、当該アプリケーションの更新に応じてデバイスIDと更新後のアプリケーションのバージョン情報を含む更新通知が前記配信システムに送信されることを特徴とするシステム。
前記配信システムは、
デバイスにインストールされているファームウェア及びアプリケーションのバージョン情報と、前記ファームウェア及びアプリケーションの更新予定のバージョン情報とを、デバイスIDごとに管理する管理手段と、
前記デバイスからの該デバイスのデバイスIDと該デバイスにインストールされているアプリケーションのバージョン情報を含む更新通知の受信に応じて、前記管理手段により管理される前記デバイスにインストールされているアプリケーションのバージョン情報を更新し、さらに、前記管理手段により管理された前記ファームウェア及びアプリケーションの更新予定のバージョン情報の更新を行う更新手段と、
前記デバイスから、該デバイスのデバイスIDと該デバイスにインストールされているファームウェアのバージョン情報とを含む、ファームウェアの更新の確認要求を受信する受信手段と、
前記受信手段により受信した前記確認要求に含まれる情報が示す前記ファームウェアのバージョン情報に基づいて該ファームウェアの更新予定のバージョン情報を特定し、さらに、前記管理手段で前記確認要求に含まれるデバイスIDに対応する前記アプリケーションについての更新予定が既に管理されていた際には、当該更新予定に基づいて、前記デバイスにインストールされているアプリケーションについての更新予定のバージョン情報の特定を行う特定手段と、
特定された前記ファームウェアの更新予定のバージョン情報と前記アプリケーションの更新予定のバージョン情報とを前記確認要求への応答として、前記デバイスに送信する応答手段と、を有し、
前記デバイスでは、前記応答に従い前記ファームウェア及びアプリケーションが更新され、当該アプリケーションの更新に応じてデバイスIDと更新後のアプリケーションのバージョン情報を含む更新通知が前記配信システムに送信されることを特徴とするシステム。
本発明によれば、デバイスのソフトウェアを更新する際のサーバの負荷を低減することができる。
●システム構成
図1は、本実施例のシステム構成図を示すブロック図である。配信システム10は、Webサーバ12、DBサーバ13及びアプリケーションサーバ11から成る。そして、インターネット100に接続されたWebサーバ12を介して、各顧客企業114、119、129のデバイス115〜116、120、121、124〜127、131と通信を行う。これにより、アプリケーションプログラム(以後「アプリ」と略記)及びファームウェア(以後「FW」と略記)の配信制御を行う。なおアプリケーションプログラムとファームウェアとを併せてソフトウェアと呼ぶこともある。アプリ及びFWの実ファイルはコンテンツサーバ20にあり、デバイスへアプリをインストールする場合には、配信システム10がコンテンツサーバ20上の実ファイルの位置情報を取得し、コンテンツサーバからソフトウェアを配信先の例えばデバイスやパーソナルコンピュータ等にダウンロードする。各顧客サイトにおいては、パーソナルコンピュータ117,122,123およびLAN118,128を介して、あるいはLAN130を介して、ソフトウェアのファイルがデバイスに配信されて、ソフトウェアが更新される。これにより、多くのデバイスのソフトウェア配信の負荷を分散し効率良くソフトウェアの配信を行うことが出来る。アプリ及びFWそれぞれの更新も同様である。コンテンツサーバ20は、コンテンツ管理サーバ21およびファイル・ストレージ22、23から成る。コンテンツ管理サーバ21は、外部からのリクエストに従って、ファイル・コンテンツすなわちアプリ及びFWを保存、あるいは提供する。
図1は、本実施例のシステム構成図を示すブロック図である。配信システム10は、Webサーバ12、DBサーバ13及びアプリケーションサーバ11から成る。そして、インターネット100に接続されたWebサーバ12を介して、各顧客企業114、119、129のデバイス115〜116、120、121、124〜127、131と通信を行う。これにより、アプリケーションプログラム(以後「アプリ」と略記)及びファームウェア(以後「FW」と略記)の配信制御を行う。なおアプリケーションプログラムとファームウェアとを併せてソフトウェアと呼ぶこともある。アプリ及びFWの実ファイルはコンテンツサーバ20にあり、デバイスへアプリをインストールする場合には、配信システム10がコンテンツサーバ20上の実ファイルの位置情報を取得し、コンテンツサーバからソフトウェアを配信先の例えばデバイスやパーソナルコンピュータ等にダウンロードする。各顧客サイトにおいては、パーソナルコンピュータ117,122,123およびLAN118,128を介して、あるいはLAN130を介して、ソフトウェアのファイルがデバイスに配信されて、ソフトウェアが更新される。これにより、多くのデバイスのソフトウェア配信の負荷を分散し効率良くソフトウェアの配信を行うことが出来る。アプリ及びFWそれぞれの更新も同様である。コンテンツサーバ20は、コンテンツ管理サーバ21およびファイル・ストレージ22、23から成る。コンテンツ管理サーバ21は、外部からのリクエストに従って、ファイル・コンテンツすなわちアプリ及びFWを保存、あるいは提供する。
デバイスには、マルチ・ファンクション・プリンタ(MFP)や、シングル・ファンクション・プリンタ(SFP)等の種類があり、デバイスのモデル毎に一つあるいは複数の機能が搭載されている。それらの機能を実現するためのFWがインストールされることにより、デバイスの各機能が利用可能となる。また、デバイスのモデル毎、あるいは、デバイスのモデルに共通で実行可能なアプリをインストールして実行することが可能である。デバイスの利用者は、そのデバイスで利用可能な複数のアプリの中から、所望のものを選び、購入するなどして入手することにより、インストールを行う。また、デバイスのアプリの不具合が修正された場合や機能の改善あるいは追加された場合には、アプリを更新することで、それらを利用することが出来る。アプリは、デバイスが配信システム10と通信することにより、コンテンツをダウンロードしてインストールあるいは更新することが出来る。なおネットワークに接続されたデバイスを、ネットワークデバイス或いはネットワーク機器と呼ぶことがある。 販売会社システム30は、デバイスを各顧客企業114、119、129へ販売し、維持、管理するデバイスの製造会社あるいはデバイスの販売会社がアプリ及びFWの登録・管理のための操作をする。販売会社システム30は、1台以上のPC31、32あるいはサーバ33、34から成る。販売会社システム30から配信システム10およびコンテンツサーバ20へアクセスすることにより、アプリ及びFWの登録と配信設定を行う。また、デバイスには、ファームウェアおよびアプリの自動更新を行うための仕組みが有り、定期的に配信システム10へ更新情報を確認する日時を設定できるようになっている。
●サーバの構成
図2は、本実施例のハードウェア構成を示すブロック図である。本実施例におけるアプリケーションサーバ11は、ネットワークインタフェース204を介して、Webサーバ12やDBサーバ13と互いに接続されている。アプリケーションサーバ11は、バス205を介して接続されたCPU201、RAM202、ROM203、ネットワークインタフェース204、HDD206などから成る。配信システム10はHDD206あるいはROM203、RAM202に記録されたデータ及びプログラムを読み出してCPU201で実行することにより実現される。また、その機能は、複数のサーバの機能の連携によって実現される場合もある。ネットワークインタフェース204は、配信システム10内のサーバ間の機能連携に使われると共に、インターネット100を介して、外部システムと通信するためにも使用される。なお、図2はアプリケーションサーバ11に対応して図示しているが、他のサーバやデバイスも同様のハードウェア構成を持っているものとする。
図2は、本実施例のハードウェア構成を示すブロック図である。本実施例におけるアプリケーションサーバ11は、ネットワークインタフェース204を介して、Webサーバ12やDBサーバ13と互いに接続されている。アプリケーションサーバ11は、バス205を介して接続されたCPU201、RAM202、ROM203、ネットワークインタフェース204、HDD206などから成る。配信システム10はHDD206あるいはROM203、RAM202に記録されたデータ及びプログラムを読み出してCPU201で実行することにより実現される。また、その機能は、複数のサーバの機能の連携によって実現される場合もある。ネットワークインタフェース204は、配信システム10内のサーバ間の機能連携に使われると共に、インターネット100を介して、外部システムと通信するためにも使用される。なお、図2はアプリケーションサーバ11に対応して図示しているが、他のサーバやデバイスも同様のハードウェア構成を持っているものとする。
●配信システムの機能構成
図3は、本実施例における配信システム10およびデバイスの機能構成を示すブロック図である。Webブラウザ302は、配信システム10に接続する販売会社システムのクライアントシステムであるWebブラウザを示す。したがってWebブラウザ302は配信システム10には含まれない。なお以下の説明では、配信システム10を配信サーバと呼び、デバイスを含めたソフトウェア配信システムと区別することがある。
図3は、本実施例における配信システム10およびデバイスの機能構成を示すブロック図である。Webブラウザ302は、配信システム10に接続する販売会社システムのクライアントシステムであるWebブラウザを示す。したがってWebブラウザ302は配信システム10には含まれない。なお以下の説明では、配信システム10を配信サーバと呼び、デバイスを含めたソフトウェア配信システムと区別することがある。
Webインターフェース部310は、デバイスに対するアプリ及びFWの配信機能を提供する。Webインターフェース部310は、各デバイスから各種リクエストを受信し、処理結果を返却する。例えば、アプリ配送情報のリクエストを受信すると、対象とするアプリの格納されている場所を検索し、アプリを取得するためのURLとして返却する。リクエスト処理の詳細については、後述する。
ユーザインターフェース部311は、配信システムにアクセスして、アプリ及びFWの登録や配信設定、定期アップデート設定を行う。
リクエスト受信部312は、デバイスからのリクエストを受信する。
レスポンス返信部313は、デバイスへレスポンスを返す。
配信設定制御部314は、FWおよびアプリの配信設定を制御する。
バッチ処理部315は、管理情報の非同期更新を行う。
317は、デバイスへの配信に伴う制御を行う配信制御部である。
スケジューラ318は、バッチ処理を定時起動する。
ユーザインターフェース部311は、配信システムにアクセスして、アプリ及びFWの登録や配信設定、定期アップデート設定を行う。
リクエスト受信部312は、デバイスからのリクエストを受信する。
レスポンス返信部313は、デバイスへレスポンスを返す。
配信設定制御部314は、FWおよびアプリの配信設定を制御する。
バッチ処理部315は、管理情報の非同期更新を行う。
317は、デバイスへの配信に伴う制御を行う配信制御部である。
スケジューラ318は、バッチ処理を定時起動する。
DBアクセス部320は、各種処理に応じて、データ管理部330で管理されているテーブルのデータを更新あるいは検索する。データ管理部330で管理されているテーブルには以下のものが含まれる。各テーブルについては追って説明する。
アプリ情報管理テーブル331
登録アプリ管理テーブル332
アプリバージョン管理テーブル333
登録ファームウェア管理テーブル334
ファームウェアバージョン管理テーブル335
バージョン制限管理テーブル336
デバイス管理テーブル337
更新予定バージョン管理テーブル338。
アプリ情報管理テーブル331
登録アプリ管理テーブル332
アプリバージョン管理テーブル333
登録ファームウェア管理テーブル334
ファームウェアバージョン管理テーブル335
バージョン制限管理テーブル336
デバイス管理テーブル337
更新予定バージョン管理テーブル338。
一方、デバイス400は以下の構成を有する。なおここでいう構成は、ソフトウェアの新規或いは更新インストールを行うための構成であり、複写等、デバイスとしての機能を果たすための構成については省略した。メイン処理部340は、デバイス400の本来の機能を実行する。メイン処理部340は、例えば、プリンターであれば画像形成処理を行う等の主機能を果たす。デバイス400は、この主機能の他に、デバイスのFWおよびアプリの配信制御を行うための機能も備えている。それが、機能ブロック341から348である。ここでいう配信制御は、たとえば指定された時期に更新をチェックし、ダウンロードされるソフトウェアを受信し、更新するといった手順を含んでよい。
Webインターフェース部341は、配信システム10からアプリ及びFWの配信を受け、配信システム10のWebインターフェース310と例えばHTTPを用いて接続されている。
配信処理部342は、例えば、販売会社システム30により別途指定された時期(曜日や時刻等)であることをチェックする。また例えば、指定時期に至るとWebインターフェース部341を介して配信サーバ10にファームウェアの更新の有無を照会することなどを行うことができる。
アプリインストール部343は、ダウンロードされたインストールすべきアプリケーションをインストールする。
アプリ更新部344は、ダウンロードされた更新すべきアプリケーションを更新する。
FW更新部345は、ダウンロードされた更新すべきファームウェアを更新する。
FW格納部347は、配信されたFWを格納する。
アプリ格納部348は、配信されたアプリを格納する。
Webインターフェース部341は、配信システム10からアプリ及びFWの配信を受け、配信システム10のWebインターフェース310と例えばHTTPを用いて接続されている。
配信処理部342は、例えば、販売会社システム30により別途指定された時期(曜日や時刻等)であることをチェックする。また例えば、指定時期に至るとWebインターフェース部341を介して配信サーバ10にファームウェアの更新の有無を照会することなどを行うことができる。
アプリインストール部343は、ダウンロードされたインストールすべきアプリケーションをインストールする。
アプリ更新部344は、ダウンロードされた更新すべきアプリケーションを更新する。
FW更新部345は、ダウンロードされた更新すべきファームウェアを更新する。
FW格納部347は、配信されたFWを格納する。
アプリ格納部348は、配信されたアプリを格納する。
●手動更新処理のシーケンス例
図4は、デバイスにおいて、デバイスの利用者によるアプリのインストール、あるいは、サービスマンによるファームウェアのインストール、のデバイス操作を実施する時の流れの例を示すシーケンス図である。
図4は、デバイスにおいて、デバイスの利用者によるアプリのインストール、あるいは、サービスマンによるファームウェアのインストール、のデバイス操作を実施する時の流れの例を示すシーケンス図である。
利用者401は、新しいアプリをデバイス400へインストールするために、デバイス400のユーザインターフェースを操作し、アプリのインストール指示410を出す。
指示410に対応して、デバイス400は、インストールするアプリを特定する情報であるアプリ配送情報要求411を配信システム10へ送り、対応するアプリを特定するアプリ情報を要求する。これに対して、配信システム10は、デバイス400からのリクエストをWebインターフェース部310で処理する。配信システム10は、アプリ配送情報要求411指定された情報(アプリ)に従って、インストールするアプリの例えば識別情報を含むアプリ情報412をデバイス400に応答する。デバイス400はさらに、そのアプリのバージョンを指定するアプリバージョン指定413を配信システム10に送信する。配信システム10は、指定されたアプリの指定されたバージョンをダウンロードするためのURL応答414を応答する。以後、配信システム10が処理する、デバイス400からのリクエストは、Webインターフェース部310で処理されるものとして説明を続ける。なお、アプリ配送情報要求411、アプリバージョン指定413は、一つのメッセージにまとめることができるならば、一つのメッセージにしてもよい。
指示410に対応して、デバイス400は、インストールするアプリを特定する情報であるアプリ配送情報要求411を配信システム10へ送り、対応するアプリを特定するアプリ情報を要求する。これに対して、配信システム10は、デバイス400からのリクエストをWebインターフェース部310で処理する。配信システム10は、アプリ配送情報要求411指定された情報(アプリ)に従って、インストールするアプリの例えば識別情報を含むアプリ情報412をデバイス400に応答する。デバイス400はさらに、そのアプリのバージョンを指定するアプリバージョン指定413を配信システム10に送信する。配信システム10は、指定されたアプリの指定されたバージョンをダウンロードするためのURL応答414を応答する。以後、配信システム10が処理する、デバイス400からのリクエストは、Webインターフェース部310で処理されるものとして説明を続ける。なお、アプリ配送情報要求411、アプリバージョン指定413は、一つのメッセージにまとめることができるならば、一つのメッセージにしてもよい。
デバイス400は、応答されたURLでコンテンツサーバ20にアクセスし、インストールするアプリのファイルを要求するアプリ要求415を送信する。アプリ要求415は例えば取得したURLに対するHTTP要求である。その応答416で取得したアプリのファイルを使用して、デバイス400はアプリのインストール処理417を行う。インストール処理417が終了し、インストールしたアプリが起動すると、デバイス400は、配信システム10へ、アプリのインストール完了を通知するアプリ更新通知418を送信する。この時、新しくインストールされたアプリケーションを含め、その時点でデバイス400にインストールされているアプリケーションとバージョンの一覧情報を、配信システム10へ通知する。すなわちアプリ更新通知418には、インストールされているアプリケーションとバージョンの一覧情報が含まれている。
デバイス400からアプリ更新通知418を受けると、配信システム10は、それを記録し、デバイス400に現在インストールされているアプリの情報を更新するアプリ状態記録419を実行する。デバイスのアプリ状態を示す情報は上書きによって更新してもよいし、履歴を残しつつ更新してもよい。配信システム10は、アプリの状態を記録すると、デバイス400へ応答420を返す。
また、別のタイミングにおいて(すなわちソフトウェアのインストール或いは更新とは非同期に)、サービスマン404は、デバイス400にファームウェアをインストールするための例えばPC31をデバイス400に接続する。ファームウェアは、デバイス400に接続したPC31のハードディスクあるいは別のメディアに記録されている。接続したPC31からのファームウェアのインストール操作430に従って、PC31からデバイス400へインストールされるファームウェアがアップロードされる。デバイス400は、アップロードされたファームウェアのバージョンで、ファームウェアの更新処理431を実施し、デバイス400自身を再起動するデバイス再起動処理432を実行する。再起動後、インストールしたバージョンのファームウェアによってデバイス400は起動し、ファームウェアの更新完了表示433を行ってサービスマン404によるファームウェアのインストールは完了する。
以上のようにして、ユーザ401やサービスマン404による操作をトリガとして、アプリケーションのインストール(更新を含む)やファームウェアの更新が実行できる。
●自動更新処理のシーケンス例
図5は、デバイス400と配信システム10との間で実施されるファームウェアおよびアプリケーションの自動更新処理のやり取りの例を示すシーケンス図である。デバイス400には、定期的に、ファームウェアおよびアプリケーションの更新の有無を確認する日時が設定されている。この日時、例えば毎週日曜日の深夜1時、になると、デバイス400は、配信システム10に対して、適用可能FW情報要求(確認要求とも呼ぶ)441を送信してファームウェアおよびアプリケーションの更新可能なバージョンの有無を問い合わせる。この時、デバイス400からの問い合わせには、デバイス400に組み込まれたファームウェアの現在のファームウェアバージョンを示す情報が含まれる。なお、デバイス400からの問い合わせである適用可能FW情報要求441には、デバイス400にインストールされたアプリケーションのバージョン情報などは含む必要が無い。この適用可能FW情報に対して、配信システム10は、デバイス400で更新すべきファームウェアおよびアプリケーションの情報(FW/アプリ情報)442を応答する。
図5は、デバイス400と配信システム10との間で実施されるファームウェアおよびアプリケーションの自動更新処理のやり取りの例を示すシーケンス図である。デバイス400には、定期的に、ファームウェアおよびアプリケーションの更新の有無を確認する日時が設定されている。この日時、例えば毎週日曜日の深夜1時、になると、デバイス400は、配信システム10に対して、適用可能FW情報要求(確認要求とも呼ぶ)441を送信してファームウェアおよびアプリケーションの更新可能なバージョンの有無を問い合わせる。この時、デバイス400からの問い合わせには、デバイス400に組み込まれたファームウェアの現在のファームウェアバージョンを示す情報が含まれる。なお、デバイス400からの問い合わせである適用可能FW情報要求441には、デバイス400にインストールされたアプリケーションのバージョン情報などは含む必要が無い。この適用可能FW情報に対して、配信システム10は、デバイス400で更新すべきファームウェアおよびアプリケーションの情報(FW/アプリ情報)442を応答する。
デバイス400へ応答するFW/アプリ情報442は、たとえば、コンテンツタイプ、ID、バージョンの組合せを含む(表9参照)。コンテンツタイプは、FWの更新前に更新するアプリか、FWの更新後に更新するアプリか、ファームウェアか、いずれかを示す。IDは、アプリIDまたはデバイスモデルを示す。バージョンは各コンテンツのバージョンを示す。これにより、デバイス400に対して、更新すべきアプリケーション及び/又はファームウェアを示す。
ここでファームウェアに関してはデバイス400から受信したファームウェアバージョン(ファームウェアの識別情報を含む)に基づいて、配信システム10は更新の有無を判定できる。アプリに関しては、配信システム10が各デバイスにインストールされているアプリに関する情報(バージョンも含む)を有する場合には、その情報に基づいて更新の有無を判定できる。例えば現在インストールされているアプリケーションのバージョンよりも新しいバージョンがそのアプリに関して用意されていれば、アプリ情報として例えばアプリの識別情報とバージョンとを応答すればよい。インストールの順序に関しては、別途定義されたインストール順の制約を示す情報を参照すればよい。デバイス400は、FW/アプリ情報442で受信したファームウェアおよびアプリに関する情報に従って、シーケンス443以降で、ファームウェアおよびアプリケーションの更新を行う。
まず、ソフトウェア配信システム全体において、ファームウェアの更新前に、更新するアプリケーションがある場合には、シーケンス443を実行する。シーケンス443においては、デバイス400は、受信したFW/アプリ情報442から取得したアプリケーションとバージョンの情報をアプリバージョン指定444として配信システム10へ送り、その応答としてダウンロードURL445を受信する。デバイス400はアプリバージョン指定444を送信する際に、自身にインストールされているアプリについて、現在のバージョンより新しいバージョンがFW/アプリ情報442に含まれていれば、そのアプリについてアプリバージョン指定444を送信する。
デバイス400は、応答されたURLでコンテンツサーバ20にアクセスし、インストールするアプリのファイルを要求する446。その応答447で取得したアプリのファイルを使用して、デバイス400はアプリの新バージョンへの更新をアプリ更新処理448により行う。アプリの更新が終了し、更新したアプリが起動すると、デバイス400は、配信システム10へ、アプリの更新完了をアプリ更新完了通知449により通知する。この時、更新されたアプリケーションを含め、その時点でデバイス400にインストールされているアプリケーションとバージョンの一覧情報を、配信システム10へ通知する。
デバイス400からアプリ更新通知449を受けると、配信システム10は、アプリ状態記録450を行って、デバイス400に現在インストールされているアプリの情報を更新する450。配信システム10は、アプリの状態を記録すると、デバイス400へ応答を451返す。
シーケンス443は、ファームウェアの更新前に更新するアプリケーションが複数ある場合には、アプリケーションの数だけ繰り返される。なお一回の手続きで複数のアプリケーションを更新してもよい。
次に、更新するファームウェアのバージョンがある場合には、シーケンス452を実行する。シーケンス452において、デバイス400は、FW/アプリ情報442からファームウェアのバージョンを指定する情報を配信システム10へ送り453、ダウンロードURL454を受信する。ファームウェアのバージョンを指定する情報の決定の仕方も、アプリケーションと同様でよい。
デバイス400は、応答されたURL454でコンテンツサーバ20にアクセスし、インストールするファームウェアのファイルを要求するFW要求455を送信する。その応答456で取得したファームウェアのファイル456を使用して、デバイス400はファームウェアの更新処理457を行う。バージョン更新が終了し、デバイス400を再起動するためのデバイス再起動処理458を行うと、デバイス400は、配信システム10へ、ファームウェの更新通知459を通知する。この時、ファームウェ更新通知459により、更新されたファームウェアのバージョン情報を、配信システム10へ通知する。
デバイス400からファームウェアの更新通知459を受けると、配信システム10は、それを記録するFW状態記録460を実行し、デバイスのファームウェアの現在バージョンの情報を更新する460。配信システム10は、ファームウェアのバージョン情報を記録すると、デバイス400へ応答461を返す。
最後に、ファームウェアの更新後に更新するアプリケーションのバージョンがある場合には、シーケンス462を実行する。シーケンス462における、処理463から処理470は、シーケンス443のそれと同様である。また、ファームウェアの更新後に更新するアプリケーションが複数ある場合には、アプリケーションの数だけ繰り返す。
●配信システム10により管理される情報
次に、本発明における配信システム10の管理する情報、および、デバイスとやり取りする情報について説明する。表1にアプリ情報管理テーブル331に格納されているアプリ情報の例を示す。
次に、本発明における配信システム10の管理する情報、および、デバイスとやり取りする情報について説明する。表1にアプリ情報管理テーブル331に格納されているアプリ情報の例を示す。
アプリ情報は、アプリID、アプリ名の組合せの一覧から成る。アプリ名は、アプリIDで特定されるアプリケーションの名称を示す。アプリ名は利用者に表示されるものであり、管理上は、アプリケーションはアプリIDで一意に識別される。
さらに、表2に登録アプリ管理テーブル332に格納されているアプリの登録情報の例を示す。
アプリの登録情報は、ファイルID、アプリID、バージョン、URLの組合せの一覧から成る。アプリIDが示すアプリケーションのあるバージョンは、それぞれ異なるファイルIDで一意に識別される。また、ファイルIDに対応するアプリケーションのファイルが、コンテンツサーバ20において、ファイルIDに対応するURLに示す場所に格納されている。アプリの登録情報は、販売会社システム30から担当者がアプリを登録する際に入力され、更新されることで維持されている。
アプリケーションの更新においては、バージョン更新の際にアプリケーションが動作するための設定値が変わった場合など、バージョン更新用の仕組みを更新後バージョンのアプリケーションに実装する必要がある場合がある。したがって、更新前後のバージョン間にバージョン更新可能な組み合わせが存在する。例えば、現在がバージョン1、最新バージョンがバージョン3だとする。この時、バージョン1から最新バージョン(バージョン3)へ更新する前に、一旦バージョン2へ更新してから、改めてバージョン3へ更新する必要がある場合がある。このような更新可能なバージョンの組合せをアプリバージョンの管理情報で管理している。表3にアプリバージョン管理テーブル333に格納されている更新可能なアプリバージョンの管理情報の例を示す。
更新可能なアプリバージョンの管理情報は、アプリID、更新元バージョン、更新後バージョンの組合せの一覧から成る。1つの組合せは、そのアプリIDにおける、更新元バージョンから更新後バージョンへの更新が可能であることを示している。アプリバージョン管理テーブル333に登録されていないバージョンの組合せは、配信システム10による更新が出来ないことを意味する。この更新可能なバージョンの組合せ情報は、販売会社システム30から担当者がアプリを登録する際にアプリの管理情報と合わせて入力され、更新されることで維持されている。
アプリと同様に、配信システム10は、配信可能なFWも管理する。表4に登録ファームウェア管理テーブル334に登録されているFWの管理情報の例を示す。
FWの管理情報は、デバイスモデル、バージョン、URLの組合せの一覧から成る。デバイスモデルとバージョンの組合せに対応するFWのファイルは、URLに示すコンテンツサーバ20上の記憶場所に格納されている。FWの管理情報は、販売会社システム30から担当者がFWを登録する際に入力され、更新されることで維持されている。
FWにおいては、バージョン更新の際にソフトウェアの構成が変わった場合など、バージョン更新用の仕組みを更新後バージョンのFWに実装する必要がある場合がある。したがって、更新前後のバージョン間にバージョン更新可能な組み合わせが存在する。例えば、現在がバージョン1、最新バージョンがバージョン3だとする。この時、バージョン1から最新バージョンへ更新する前に、一旦バージョン2へ更新してから、改めてバージョン3へ更新する必要がある場合がある。このような更新可能なバージョンの組合せをFWバージョンの管理情報で管理している。表5にファームウェアバージョン管理テーブル335に格納されている更新可能なFWバージョンの管理情報の例を示す。
更新可能なFWバージョンの管理情報は、デバイスモデル、更新元バージョン、更新後バージョンの組合せの一覧から成る。デバイスモデルは、同じFWを適用可能なデバイスのグループを表す。1つの組合せは、そのデバイスモデルにおける、更新元バージョンから更新後バージョンへの更新が可能であることを示している。ファームウェアバージョン管理テーブル335に登録されていないバージョンの組合せは、更新出来ないことを意味する。この更新可能なバージョンの組合せ情報は、販売会社システム30から担当者がFWを登録する際にFWの管理情報と合わせて入力され、更新されることで維持されている。
アプリケーションにおいては、そのアプリケーションのバージョンが動作する環境、すなわち、ファームウェアのバージョンが限られる場合がある。例えば、アプリAのバージョン1はファームウェアのバージョン1の上で動作するように実装されているが、アプリAのバージョン2は、ファームウェアのバージョン2の上でなくては動作しない、という場合がある。このような場合には、アプリAをバージョン2へ更新する前にファームウェアをバージョン2に更新する必要がある。このようなアプリのバージョンおよびFWのバージョンの動作可能な組み合わせをバージョン組み合わせ情報で管理している。表6にバージョン制限管理テーブル336に格納されているバージョン組み合わせ情報の例を示す。
バージョン組み合わせ情報は、デバイスモデル、FWバージョン、ファイルIDの組合せの一覧から成るブラックリストである。1つの組合せは、デバイスモデルにおけるFWバージョンが示すバージョンのFW上でファイルIDが示すアプリのバージョンが動作しないことを示す。このバージョン組み合わせ情報は、販売会社システム30から担当者がFWおよびアプリケーションを登録する際に登録するファームウェアあるいはアプリケーションに依存関係があることが分った時に入力され、更新されることで維持されている。
配信システム10は、配信対象となる各デバイスの状態を保持し管理している。デバイスの状態を示す情報の一つとして、各デバイスで動作しているFWのバージョン情報がある。表7にデバイス管理テーブル337に格納されているデバイス管理情報の例を示す。
デバイスの管理情報は、デバイスID、デバイスモデル、バージョンの組合せの一覧から成る。デバイスIDは、デバイスの個体ごとの識別情報である。デバイスモデルは、デバイスIDで識別されるデバイスが属するデバイスモデルである。バージョンは、そのデバイスで現在動作しているFWのバージョンを示す。デバイスは、図5に示したシーケンスにおいて、配信システム10と通信する際に、自身のデバイスIDを合わせて通知する。配信システム10は、FW更新通知459で得られたデバイスIDとFWのバージョンから、460の処理においてデバイス管理テーブル337を更新する。なお、デバイスIDとデバイスモデルの対応については、不図示の管理情報に基づいて、デバイスIDからデバイスモデルへ一意に対応付けられるものとする。
デバイスの状態を示すもう一つの情報として、各デバイスにインストールされているアプリとその状態の情報がある。さらに、配信システム10は、それらのアプリおよびFWを次の更新タイミングでどのバージョンへ更新するか否かの情報を管理している。表8に更新予定バージョン管理テーブル338に格納されているデバイスの更新予定バージョン情報の例を示す。
更新予定バージョン情報は、デバイスID、アプリID、現在VER、更新VER、更新時、更新FWVERの組合せの一覧から成る。現在VERは、デバイスIDで示されるデバイスにインストールされたアプリIDで示されるアプリのバージョンを示す。デバイスIDとアプリID、現在VERの組合せによって、デバイスIDに示すデバイスにアプリIDとバージョンの組合せが示すアプリがインストールされていることを示している。また、インストール済みアプリ情報は、次に更新予定のアプリケーションとFWのバージョン情報とをさらに保持している。更新VERは、アプリIDの更新予定のバージョンを示す。更新FWVERは、FWの更新予定のバージョンを示す。「更新時」は、更新VERに示すアプリのバージョンをFW更新の前に更新するか、後に更新するかを示す。更新VERと更新時、更新FWVERの組合せによって、次回FWのバージョンに更新する際に、合わせてその前後のいずれかでアプリのバージョンに更新する予定であることを示している。更新の予定が無ければ、これらは空欄となる。この情報は、図4におけるアプリ状態記録419あるいは、図5におけるアプリ状態記録450及び469の処理で更新される。この情報に従って、配信システム10は、デバイスからの問い合わせに対して、更新すべきFWおよびアプリの情報を返却する。
表9に、図5におけるFW/アプリ情報442で配信システム10がデバイス400へ返す情報の例を示す。
デバイス400へ応答する情報は、コンテンツタイプ、ID、バージョンの組合せの一覧から成る。コンテンツタイプは、前アプリ、後アプリ、FWのいずれかである。前アプリは、FWの更新前に更新するアプリを示す。後アプリは、FWの更新後に更新するアプリである。FWはファームウェアである。コンテンツタイプが前アプリあるいは後アプリの場合には、IDは、アプリIDを示す。コンテンツタイプがFWの場合には、IDはデバイスモデルを示す。バージョンは各コンテンツのバージョンを示す。コンテンツタイプが前アプリあるいは後アプリの場合には、バージョンは、アプリIDに対応するバージョンを示す。コンテンツタイプがFWの場合には、バージョンは、デバイスモデルに対応するFWバージョンである。
デバイスへ応答する情報は、更新予定バージョン管理テーブル338から、情報を返却するデバイスのデバイスIDに対応するレコードを絞り込み、アプリID、更新VER、更新時、更新FWVERの情報を取り出したものである。更新予定バージョン管理テーブル338のデバイスIDに対応するレコードに更新FWVERが記録されていない場合、すなわちFWのバージョン更新が予定されていない場合には、コンテンツタイプがFWの情報は含まれない。また、同じくデバイスIDに対応するレコードにいずれのアプリIDの更新VERも記録されていない場合には、コンテンツタイプが前アプリおよび後アプリの情報は含まれない。
また、デバイスにアプリが一つもインストールされていない場合には、更新予定バージョン情報が存在しないため、デバイスからの問い合わせ時にコンテンツタイプがFWの情報だけが生成される。デバイスに返却する情報の作成方法については、図10で後述する。
●配信システムによる更新予定バージョン管理テーブル(表8)の更新
次に、配信システムの更新予定バージョン情報の更新処理について説明する。図6は、配信システム10における、デバイス400からアプリ更新通知449を受信した場合の処理(アプリ状態記録処理450)の例を示すフローチャートである。図6(a)は、図4のシーケンスにおけるアプリ状態記録処理419および図5のシーケンスにおけるアプリ状態記録処理450、469に対応する処理で、配信制御部317で実行される内容である。すなわちCPU201により実行される。
次に、配信システムの更新予定バージョン情報の更新処理について説明する。図6は、配信システム10における、デバイス400からアプリ更新通知449を受信した場合の処理(アプリ状態記録処理450)の例を示すフローチャートである。図6(a)は、図4のシーケンスにおけるアプリ状態記録処理419および図5のシーケンスにおけるアプリ状態記録処理450、469に対応する処理で、配信制御部317で実行される内容である。すなわちCPU201により実行される。
アプリ状態記録処理419、450あるいはアプリ状態記録処理469に対応して、ステップS1000からの処理を開始する。ここで、デバイスからは、デバイスIDおよびそのデバイスにインストールされている全アプリケーションのアプリIDおよびバージョンを受信する。
ステップS1001からステップS1006まででデバイス400から通知された全アプリのアプリIDについて、順に処理していく。ステップS1002では、更新予定バージョン管理テーブル338に、デバイスから通知されたデバイスIDおよび現在処理中のアプリIDの組合せに対応するレコードが存在するかを確認する。存在する場合(Yes.)には、ステップS1004へ進み、存在しない場合(No.)には、ステップS1003へ進む。ステップS1003では、デバイスIDとアプリIDの組合せに対応するレコードを追加する。ステップS1004では、デバイス400から通知されたデバイスIDおよび現在処理中のアプリIDの組合せに対応するレコードの現在VERを、デバイス400から通知されたアプリIDに対応するバージョンで更新する。次にステップS1005で、更新VER、更新時、更新FWVERをクリアする。ステップS1006では、デバイスから受信した全てのアプリIDについてステップS1005までの処理を完了したかを判断する。処理が完了していないアプリIDが残っている場合(No.)には、ステップS1001へ戻り、残りのアプリIDについての処理を行う。全てのアプリIDについて処理が完了している場合(Yes.)は、ステップS1007へ進み、非同期バッチ処理を起動する。非同期バッチ処理は、図6(a)と並列で(或いは非同期に)動作する、図6(b)に示す処理である。図6(b)に示す処理が起動したら、その終了を待たずにステップS1008へ進む。ステップS1008では、デバイス400へ、アプリ更新通知449等に対する応答を返す。これは、図4のシーケンスにおける応答420および図5のシーケンスにおける応答451、470に対応する
図6(b)は、図6(a)におけるステップS1007で起動され、バッチ処理部315で処理される、単一デバイスIDを指定した更新予定バージョン情報更新のバッチ処理のフローチャートの例である。
図6(b)は、図6(a)におけるステップS1007で起動され、バッチ処理部315で処理される、単一デバイスIDを指定した更新予定バージョン情報更新のバッチ処理のフローチャートの例である。
ステップS1100にて、デバイスから受信したデバイスIDをもって処理を開始する。
ステップS1101では、デバイスIDを指定して、更新予定バージョン情報更新(図7)の処理を呼び出す。当該デバイスIDの更新予定バージョン情報更新が終了したら、ステップS1002にてバッチ処理を終了する。更新予定バージョン情報を現在行っているソフトウェア更新の必要性の確認を滞らせることなく、次に更新対象となるソフトウェアのバージョンを示す情報が更新される。
ステップS1101では、デバイスIDを指定して、更新予定バージョン情報更新(図7)の処理を呼び出す。当該デバイスIDの更新予定バージョン情報更新が終了したら、ステップS1002にてバッチ処理を終了する。更新予定バージョン情報を現在行っているソフトウェア更新の必要性の確認を滞らせることなく、次に更新対象となるソフトウェアのバージョンを示す情報が更新される。
●更新予定バージョン情報更新処理
次に、更新予定バージョン情報更新処理の詳細を説明する。図7は、更新予定バージョン情報更新処理の例を示すフローチャートである。更新予定バージョン情報更新処理は、指定されたデバイスIDにおいて、呼び出し時点での情報に基づいて、次の更新タイミングで配信するFWのバージョンとアプリとそのバージョンを予め判断しておく。FWとアプリはそれぞれ更新予定バージョンを決定する。その時点の情報によって、FWだけ配信、アプリだけ配信、FWとアプリの両方を配信、となる場合があるが、更新時におけるFWとアプリのバージョンの組合せに制約がある場合には、その制約を満たしたバージョンが配信されるように決定される。
次に、更新予定バージョン情報更新処理の詳細を説明する。図7は、更新予定バージョン情報更新処理の例を示すフローチャートである。更新予定バージョン情報更新処理は、指定されたデバイスIDにおいて、呼び出し時点での情報に基づいて、次の更新タイミングで配信するFWのバージョンとアプリとそのバージョンを予め判断しておく。FWとアプリはそれぞれ更新予定バージョンを決定する。その時点の情報によって、FWだけ配信、アプリだけ配信、FWとアプリの両方を配信、となる場合があるが、更新時におけるFWとアプリのバージョンの組合せに制約がある場合には、その制約を満たしたバージョンが配信されるように決定される。
呼び出し元からデバイスIDが指定されて、ステップS1110からの処理を開始する。ステップS1111では、更新FWバージョン判断処理(図8)を呼び出す。呼出し時には、対象となるデバイスIDを指定しておく。更新FWバージョン判断処理は、指定されたデバイスIDにおいて次に更新するFWバージョンの情報を更新予定バージョン管理テーブル338へ反映する。
ステップS1112からステップS1114までで指定されたデバイスIDに対応するデバイスにインストールされている全アプリのアプリIDについて、順に処理していく。
ステップS1113では、更新アプリバージョン判断処理(図9)を呼び出す。更新アプリバージョン判断処理は、指定されたデバイスIDと現在処理中のアプリIDにおいて次に更新するアプリバージョンの情報を更新予定バージョン管理テーブル338(表8)へ反映する。
ステップS1114では、全てのアプリIDについてステップS1113までの処理を完了したかを判断する。処理が完了していないアプリIDが残っている場合(No.)には、ステップS1112へ戻り、残りのアプリIDについての処理を行う。全てのアプリIDについて処理が完了している場合(Yes.)は、ステップS1115へ進み、更新予定バージョン情報更新処理を終了する。
ステップS1112からステップS1114までで指定されたデバイスIDに対応するデバイスにインストールされている全アプリのアプリIDについて、順に処理していく。
ステップS1113では、更新アプリバージョン判断処理(図9)を呼び出す。更新アプリバージョン判断処理は、指定されたデバイスIDと現在処理中のアプリIDにおいて次に更新するアプリバージョンの情報を更新予定バージョン管理テーブル338(表8)へ反映する。
ステップS1114では、全てのアプリIDについてステップS1113までの処理を完了したかを判断する。処理が完了していないアプリIDが残っている場合(No.)には、ステップS1112へ戻り、残りのアプリIDについての処理を行う。全てのアプリIDについて処理が完了している場合(Yes.)は、ステップS1115へ進み、更新予定バージョン情報更新処理を終了する。
●更新FWバージョン判断処理(S1111)
図8は、図7のステップS1111における更新FWバージョン判断処理の例を示すフローチャートである。呼び出し元からデバイスIDが指定されて、ステップS1200からの処理を開始する。次に、ステップS1201では、登録ファームウェア管理テーブル334(表4)を検索して、指定されたデバイスIDに対応するデバイスモデルで最新のファームウェアのバージョンを求める。本実施例においては、バージョンは数値で定義されており、同じデバイスモデルのFWのバージョンの中で数値の昇順に新しくなっているものとする。したがって、数値が最も大きいものが最新バージョンである。この最新のバージョンを最初の更新候補バージョンとする。なおデバイスモデルは例えばデバイスIDから特定できるものとする。
次に、ステップS1202では、デバイス管理テーブル337(表7)からデバイスIDに対応するデバイスの現在バージョン(すなわち当該デバイスのファームウェアの現在のバージョン)を取得して、現在の更新候補バージョンが、デバイスの現在バージョンよりも新しいか、を判断する。更新候補バージョンが現在バージョンよりも新しい場合(Yes.)には、ステップS1203へ進む。現在バージョンよりも新しくない場合(No.)には、FWバージョン更新の必要が無いため、ステップS1209へ進む。ステップS1209では、更新予定バージョン管理テーブル338(表8)における、指定されたデバイスIDに一致する全てのレコードの更新FWVERを空欄にする。
図8は、図7のステップS1111における更新FWバージョン判断処理の例を示すフローチャートである。呼び出し元からデバイスIDが指定されて、ステップS1200からの処理を開始する。次に、ステップS1201では、登録ファームウェア管理テーブル334(表4)を検索して、指定されたデバイスIDに対応するデバイスモデルで最新のファームウェアのバージョンを求める。本実施例においては、バージョンは数値で定義されており、同じデバイスモデルのFWのバージョンの中で数値の昇順に新しくなっているものとする。したがって、数値が最も大きいものが最新バージョンである。この最新のバージョンを最初の更新候補バージョンとする。なおデバイスモデルは例えばデバイスIDから特定できるものとする。
次に、ステップS1202では、デバイス管理テーブル337(表7)からデバイスIDに対応するデバイスの現在バージョン(すなわち当該デバイスのファームウェアの現在のバージョン)を取得して、現在の更新候補バージョンが、デバイスの現在バージョンよりも新しいか、を判断する。更新候補バージョンが現在バージョンよりも新しい場合(Yes.)には、ステップS1203へ進む。現在バージョンよりも新しくない場合(No.)には、FWバージョン更新の必要が無いため、ステップS1209へ進む。ステップS1209では、更新予定バージョン管理テーブル338(表8)における、指定されたデバイスIDに一致する全てのレコードの更新FWVERを空欄にする。
ステップS1203では、デバイスIDに対応するデバイスの現在バージョンから更新候補バージョンへの更新が可能か否かを判断する。これには、ファームウェアバージョン管理テーブル335(表5)から、デバイスIDに対応するデバイスモデル、デバイスIDに対応する現在バージョンを更新元、更新候補バージョンを更新後、とした組合せを検索する。該当する組合せが存在する場合(Yes.)には、その組み合わせは更新可能な組み合わせであり、ステップS1204へ進む。該当する組合せが存在しない場合(No.)には、ステップS1210へ進む。
ステップS1210では、登録ファームウェア管理テーブル334(表4)を検索して、現在の更新候補バージョンから一つ前のバージョンを求め、それを新たな更新候補バージョンとしてステップS1202からの処理を繰り返す。
ステップS1210では、登録ファームウェア管理テーブル334(表4)を検索して、現在の更新候補バージョンから一つ前のバージョンを求め、それを新たな更新候補バージョンとしてステップS1202からの処理を繰り返す。
ステップS1204からステップS1207までで、更新予定バージョン管理テーブル338(表8)において、指定されたデバイスIDに対応するデバイスにインストールされている全アプリのアプリIDについて、順に動作確認判断の処理をしていく。ステップS1204では、更新予定バージョン管理テーブル338に登録されたアプリIDに順次着目する。現在着目しているアプリIDを着目アプリIDと呼ぶ。これはアプリID以外の他の処理対象についても同様とする。
ステップS1205では、更新予定バージョン管理テーブル338(表8)から着目アプリIDとその現在VERを特定する。そして特定した着目アプリIDとその現在VERとで登録アプリ管理テーブル332(表2)を検索し、該当するファイルIDを特定する。指定されたデバイスIDに対応するデバイスモデルと現在の更新候補FWバージョン、特定したアプリのファイルIDの組合せが、バージョン制限管理テーブル336(表6)に存在するかを検索する。組合せが存在すれば動作不可能、組合せが存在しなければ動作可能である。ステップS1206では、ステップS1205の検索結果に従って、処理を分岐する。動作可能(Yes.)である場合には、ステップS1207へ進む。動作不可能である場合(No.)には、ステップS1210へ進み、現在の更新候補バージョンの一つ前のバージョンを求め、それを新たな更新候補バージョンとしてステップS1202からの処理を繰り返す。
ステップS1207では、全てのアプリIDについてステップS1206までの処理を完了したかを判断する。処理が完了していないアプリIDが残っている場合(No.)には、ステップS1204へ戻り、残りのアプリIDについての処理を行う。全てのアプリIDについて処理が完了している場合(Yes.)は、ステップS1208へ進む。
ステップS1208へ進むと、そのときのFWの更新候補バージョンは、デバイスにインストールされた全てのアプリが動作可能、かつ、現在よりも新しいバージョンである。したがって、更新予定バージョン管理テーブル338(表8)における、指定されたデバイスIDに一致する全てのレコードの更新FWVERへ、FWの現在の更新候補バージョンを反映する。
ステップS1211で、更新FWバージョン判断処理は終了し、呼び出し元に戻る。
ステップS1208へ進むと、そのときのFWの更新候補バージョンは、デバイスにインストールされた全てのアプリが動作可能、かつ、現在よりも新しいバージョンである。したがって、更新予定バージョン管理テーブル338(表8)における、指定されたデバイスIDに一致する全てのレコードの更新FWVERへ、FWの現在の更新候補バージョンを反映する。
ステップS1211で、更新FWバージョン判断処理は終了し、呼び出し元に戻る。
以上の手順により、デバイス400からのアプリ更新通知の受信をトリガとして、そのデバイス400のファームウェアの更新可能な新しいバージョンを決定できる。決定されたバージョン情報は、たとえば次回の適用可能FW情報要求441に応答してデバイス400に送信できる。またこの処理はトリガとなった処理とは非同期に実行されるので、デバイスへの応答に遅延をもたらすことを防止できる。
●更新アプリバージョン判断処理
図9は、更新アプリバージョン判断処理の例を示すフローチャートである。呼び出し元からデバイスIDとアプリIDが指定されて、ステップS1300からの処理を開始する。それぞれ着目デバイスIDおよび着目アプリIDと呼ぶ。
次に、ステップS1301では、登録アプリ管理テーブル332(表2)を検索して、指定されたアプリIDで最新のバージョンを求める。本実施例においては、FW同様、アプリバージョンも数値で定義されており、同じアプリIDのバージョンの中で数値の昇順に新しくなっているものとする。したがって、数値が最も大きいものが最新バージョンである。この最新バージョンを最初の更新候補バージョンとする。
次に、ステップS1302では、更新予定バージョン管理テーブル338(表8)からデバイスIDとアプリIDの組合せに対応するアプリの現在VERを取得する。そして、現在の更新候補バージョンが、デバイスにインストールされている現在VERよりも新しいか、を判断する。更新候補バージョンが現在VERよりも新しい場合(Yes.)には、ステップS1303へ進む。現在VERよりも新しくない場合(No.)には、アプリバージョン更新の必要が無いため、ステップS1314へ進む。
ステップS1314へ来たということは、FW更新前後のバージョンに関わらず動作可能で現在よりも新しいアプリのバージョンは存在しないということである。したがってステップS1314では、更新予定バージョン管理テーブル338(表8)における、指定されたデバイスIDとアプリIDに一致するレコードの更新VERを空欄にする。
図9は、更新アプリバージョン判断処理の例を示すフローチャートである。呼び出し元からデバイスIDとアプリIDが指定されて、ステップS1300からの処理を開始する。それぞれ着目デバイスIDおよび着目アプリIDと呼ぶ。
次に、ステップS1301では、登録アプリ管理テーブル332(表2)を検索して、指定されたアプリIDで最新のバージョンを求める。本実施例においては、FW同様、アプリバージョンも数値で定義されており、同じアプリIDのバージョンの中で数値の昇順に新しくなっているものとする。したがって、数値が最も大きいものが最新バージョンである。この最新バージョンを最初の更新候補バージョンとする。
次に、ステップS1302では、更新予定バージョン管理テーブル338(表8)からデバイスIDとアプリIDの組合せに対応するアプリの現在VERを取得する。そして、現在の更新候補バージョンが、デバイスにインストールされている現在VERよりも新しいか、を判断する。更新候補バージョンが現在VERよりも新しい場合(Yes.)には、ステップS1303へ進む。現在VERよりも新しくない場合(No.)には、アプリバージョン更新の必要が無いため、ステップS1314へ進む。
ステップS1314へ来たということは、FW更新前後のバージョンに関わらず動作可能で現在よりも新しいアプリのバージョンは存在しないということである。したがってステップS1314では、更新予定バージョン管理テーブル338(表8)における、指定されたデバイスIDとアプリIDに一致するレコードの更新VERを空欄にする。
ステップS1303では、デバイスIDに対応するデバイスの現在バージョンから更新候補バージョンへの更新が可能か否かを判断する。これには、アプリバージョン管理テーブル333(表3)から、指定されたアプリIDと現在VERとを更新元とし、更新候補のバージョンを更新後とした組合せを検索する。更新可能つまり組合せが存在する場合(Yes.)には、ステップS1304へ進む。更新不可能、つまり組合せが存在しない場合(No.)には、ステップS1311へ進む。
ステップS1304では、更新予定バージョン管理テーブル338(表8)から、指定されたデバイスIDとアプリIDの組合せを検索し、更新FWVERが存在するか否かを判断する。更新FWVERがある場合(Yes.)には、ステップS1305へ進み、無い場合(No.)には、ステップS1309へ進む。
ステップS1305では、まず、更新FWバージョン(更新FWVER)とアプリの更新候補バージョンの組合せが動作可能かを、バージョン制限管理テーブル336(表6)から判断する。判断方法については、前述のステップS1205と同様であるので省略する。ステップS1306では、その判定結果に従って、動作可能である場合(Yes.)には、ステップS1307へ進む。動作不可能である場合(No.)には、ステップS1311へ進む。
ステップS1311では、登録アプリ管理テーブル332を検索して、現在の更新候補バージョンから一つ前のバージョンを求め、ステップS1302からの処理を繰り返す。
ステップS1304では、更新予定バージョン管理テーブル338(表8)から、指定されたデバイスIDとアプリIDの組合せを検索し、更新FWVERが存在するか否かを判断する。更新FWVERがある場合(Yes.)には、ステップS1305へ進み、無い場合(No.)には、ステップS1309へ進む。
ステップS1305では、まず、更新FWバージョン(更新FWVER)とアプリの更新候補バージョンの組合せが動作可能かを、バージョン制限管理テーブル336(表6)から判断する。判断方法については、前述のステップS1205と同様であるので省略する。ステップS1306では、その判定結果に従って、動作可能である場合(Yes.)には、ステップS1307へ進む。動作不可能である場合(No.)には、ステップS1311へ進む。
ステップS1311では、登録アプリ管理テーブル332を検索して、現在の更新候補バージョンから一つ前のバージョンを求め、ステップS1302からの処理を繰り返す。
ステップS1307では、デバイス管理テーブル337(表7)から取得した現在FWバージョンと着目アプリの更新候補バージョンの組合せが動作可能かを、バージョン制限管理テーブル336(表6)から判断する。動作可能である場合(Yes.)には、FWのバージョン更新前にアプリの更新をすることが出来るため、ステップS1308からステップS1312へ進む。動作不可能である場合(No.)には、FWのバージョン更新後にアプリの更新を行う必要があるため、ステップS1308からステップS1313へ進む。
ステップS1309は、更新FWバージョンが無い場合の判断処理である。ステップS1307と同様に、現在FWバージョンとアプリの更新候補バージョンの組合せが動作可能かを、バージョン制限管理テーブル336(表6)から判断する。ステップS1309の場合では、FWの更新が無いため、動作不可能である場合(No.)、ステップS1310からステップS1311へ進み、一つ前のバージョンを更新候補バージョンとし、ステップS1302からの処理を繰り返す。動作可能である場合(Yes.)、アプリだけの更新は可能であるため、ステップS1310からステップS1312へ進む。FWの更新が無いアプリだけの更新の場合、前更新と後更新の両方が可能であるが、本実施例では、前更新で統一する処理としている。
ステップS1312へきたということは、アプリの更新候補バージョンは、対象デバイスの現在のFWバージョンで動作可能ということである。さらに、これから更新予定のFWバージョンでも動作可能あるいはFWの更新が無い、かつ、着目アプリの更新候補バージョンは、現在のバージョンよりも新しいということである。したがって、更新予定バージョン管理テーブル338(表8)における、指定されたデバイスIDとアプリIDに一致するレコードの更新VERへ、当該アプリの現在の更新候補バージョンを反映する。そして、当該レコードの更新時には、「前」を設定する。
ステップS1313へ来たということは、アプリの現在の更新候補バージョンは、対象デバイスの現在のFWバージョンで動作不可能ということである。しかし、更新予定のバージョンのFWの更新後には動作可能、かつ、着目アプリの更新候補バージョンは、現在のバージョンよりも新しいということである。したがって、更新予定バージョン管理テーブル338に(表8)おける、指定されたデバイスIDとアプリIDに一致するレコードの更新VERへアプリの現在の更新候補バージョンを反映する。そして、当該レコードの更新時には、「後」を設定する。
ステップS1315で、更新アプリバージョン判断処理は終了し、呼び出し元に戻る。
ステップS1315で、更新アプリバージョン判断処理は終了し、呼び出し元に戻る。
以上の手順により、デバイス400からのアプリ更新通知の受信をトリガとして、そのデバイス400のアプリの更新可能なバージョンを決定できる。決定したアプリの更新バージョンは、現在のファームウェアまたは更新後のファームウェアで動作可能であることが保証されている。またこの処理はトリガとなった処理とは非同期に実行されるので、デバイスへの応答に遅延をもたらすことを防止できる。
●FWおよびアプリの自動更新処理
図10は、配信システム10におけるFWおよびアプリの自動更新処理の例を示すフローチャートである。図10は、図5のシーケンスにおける適用可能FW情報要求441の受信に対応して、FW/アプリ情報442の応答のために配信制御部317で処理される内容である。
図10は、配信システム10におけるFWおよびアプリの自動更新処理の例を示すフローチャートである。図10は、図5のシーケンスにおける適用可能FW情報要求441の受信に対応して、FW/アプリ情報442の応答のために配信制御部317で処理される内容である。
適用可能FW情報要求441の受信に対応して、ステップS1400からの処理を開始する。ステップS1401で、デバイスからは、デバイスIDおよびそのデバイスにインストールされているFWのバージョンを受信する。このデバイスが着目デバイスとなる。ここで、受信した着目デバイスのFWバージョンをDFWVER、デバイスIDをX、として内部処理の変数に格納する。このデバイスを以下ではデバイスXと呼ぶこともある。
ステップS1402では、登録ファームウェア管理テーブル334(表4)からデバイスIDがXのレコードを検索し、そのバージョンを取得する。これが、配信システム10が把握している着目デバイスのFWバージョンである。そして、受信した着目デバイスのFWバージョンであるDFWVERと、配信システム10が把握しているFWバージョンとが一致しているかを判断する。一致している場合(Yes.)には、ステップS1403へ進む。異なる場合(No.)には、ステップS1404へ進む。
ステップS1403では、デバイスXの更新予定情報があるか否かを判断する。つまり、更新予定バージョン管理テーブル338(表8)に、デバイスIDがXのレコードが含まれているかを検索する。含まれていればデバイスXにアプリがインストールされているかを判断する。たとえばアプリIDが登録されていれば、アプリがインストールされていると判定できる。アプリがインストールされている場合には、FWの配信バージョン(更新FWVER)とアプリの配信バージョン(更新VER)を合わせて判断する。アプリがインストールされていない場合には、FW配信バージョン(更新FWVER)だけを判断する。DFWVERと配信システム10が把握しているFWバージョンが一致し(S1402-YES)、かつ、アプリがインストールされている場合(S1403-Yes.)には、更新予定バージョン情報更新処理(図7)で判断済みのFWとアプリのバージョン(すなわち更新予定バージョン管理テーブル338に登録されたFWとアプリのバージョン)で更新すればよい。したがって、ステップS1413へ進む。
ステップS1402では、登録ファームウェア管理テーブル334(表4)からデバイスIDがXのレコードを検索し、そのバージョンを取得する。これが、配信システム10が把握している着目デバイスのFWバージョンである。そして、受信した着目デバイスのFWバージョンであるDFWVERと、配信システム10が把握しているFWバージョンとが一致しているかを判断する。一致している場合(Yes.)には、ステップS1403へ進む。異なる場合(No.)には、ステップS1404へ進む。
ステップS1403では、デバイスXの更新予定情報があるか否かを判断する。つまり、更新予定バージョン管理テーブル338(表8)に、デバイスIDがXのレコードが含まれているかを検索する。含まれていればデバイスXにアプリがインストールされているかを判断する。たとえばアプリIDが登録されていれば、アプリがインストールされていると判定できる。アプリがインストールされている場合には、FWの配信バージョン(更新FWVER)とアプリの配信バージョン(更新VER)を合わせて判断する。アプリがインストールされていない場合には、FW配信バージョン(更新FWVER)だけを判断する。DFWVERと配信システム10が把握しているFWバージョンが一致し(S1402-YES)、かつ、アプリがインストールされている場合(S1403-Yes.)には、更新予定バージョン情報更新処理(図7)で判断済みのFWとアプリのバージョン(すなわち更新予定バージョン管理テーブル338に登録されたFWとアプリのバージョン)で更新すればよい。したがって、ステップS1413へ進む。
アプリがインストールされていない場合(No.)には、デバイス400から受信したファームウェアバージョンDFWVERを元に更新するFWのバージョンを判断する必要があるため、ステップS1404へ進む。アプリがインストールされていない場合で、更新するFWのバージョンが決定した場合には、ステップS1408で再度、アプリがインストールされているか否かが判断されて、処理が分岐する。
ステップS1404では、デバイス管理テーブル337(表7)から、デバイスIDがXのレコードを検索しデバイスモデルを特定する。そして、登録ファームウェア管理テーブル334(表4)から当該デバイスモデルのFWの最新バージョンを求める。ここで、内部処理の変数CURVERに求めた最新バージョンを格納する。CURVERは、現在の更新候補のバージョンを示す。
ステップS1405で、ファームウェアの更新候補ベージョンCURVERが現在バージョンDFWVERよりも新しいかを判断する。新しい場合には、ステップS1405へ進む。新しくない場合(No.)には、更新予定バージョン情報更新処理(図7)で判断済みのFWとアプリのバージョンで更新してはいけない、あるいは更新する必要が無いため、ステップS1410へ進む。
ステップS1406では、DFWVERからCURVERへのFWのバージョン更新が出来るか否かを、ファームウェアバージョン管理テーブル335(表5)から判断する。更新可能な場合(Yes.)には、ステップS1408へ進む。更新不可能な場合(No.)には、ステップS1407へ進み、登録ファームウェア管理テーブル334(表4)から一つ前のバージョンを求めてCURVERを更新し、ステップ1405からの処理を繰り返す。
ステップS1405で、ファームウェアの更新候補ベージョンCURVERが現在バージョンDFWVERよりも新しいかを判断する。新しい場合には、ステップS1405へ進む。新しくない場合(No.)には、更新予定バージョン情報更新処理(図7)で判断済みのFWとアプリのバージョンで更新してはいけない、あるいは更新する必要が無いため、ステップS1410へ進む。
ステップS1406では、DFWVERからCURVERへのFWのバージョン更新が出来るか否かを、ファームウェアバージョン管理テーブル335(表5)から判断する。更新可能な場合(Yes.)には、ステップS1408へ進む。更新不可能な場合(No.)には、ステップS1407へ進み、登録ファームウェア管理テーブル334(表4)から一つ前のバージョンを求めてCURVERを更新し、ステップ1405からの処理を繰り返す。
ステップS1408では、デバイスXについて、アプリ及び/又はFWの更新予定情報があるか否かを、更新予定バージョン管理テーブル338(表8)を参照して判断する。デバイスXにアプリがインストールされていない場合には、ここまでの処理において決定されたCURVERが、更新するFWのバージョンを示している。ステップS1408において、デバイスXの更新予定情報があると判定された場合(Yes.)には、ステップS1409へ進む。デバイスXの更新予定情報が無い場合(No.)、すなわち、アプリがインストールされていない場合には、ステップS1425へ進み、FWの更新情報のみを応答するための処理を行う。すなわち、ステップS1425では、応答442に、ファームウェアの現在の更新候補バーションCURVERを追加する。そしてステップS1426で追加されたファームウェアの現在の更新候補バーションを含む応答をデバイス400に送信する。
ステップS1409では、更新予定バージョン情報更新(図7)によって事前に更新予定バージョン管理テーブル338(表8)に記録されている更新FWVERと、現在のファームウェアの更新候補バージョンCURVERとが同じであるかを判断する。同じである場合(Yes.)には、アプリの更新が有ったとしても、FWの更新の後で更新が可能であることが判断済みであるため、次のステップS1412へ進む。異なる場合(No.)には、ステップS1410へ進む。
ステップS1410では、デバイス管理テーブル337(表7)におけるデバイスXのレコードに対して、デバイス400から受信したファームウェアバージョンDFWVERの値でバージョンを更新する。ステップS1410を通らない処理フローの場合には、デバイスXのFWのバージョン更新が実施されるため、図5におけるFW状態記録処理460のタイミングでデバイスXのデバイス管理情報(表7)は更新される。ステップS1411では、FWもアプリも更新情報は無いため、図5のFW/アプリ情報442は更新情報無しでデバイス400へ応答される。
ステップS1410では、デバイス管理テーブル337(表7)におけるデバイスXのレコードに対して、デバイス400から受信したファームウェアバージョンDFWVERの値でバージョンを更新する。ステップS1410を通らない処理フローの場合には、デバイスXのFWのバージョン更新が実施されるため、図5におけるFW状態記録処理460のタイミングでデバイスXのデバイス管理情報(表7)は更新される。ステップS1411では、FWもアプリも更新情報は無いため、図5のFW/アプリ情報442は更新情報無しでデバイス400へ応答される。
一方ステップS1412では、内部処理の変数であるAFTERフラグをオンにセットする(初期値はオフ)。すなわち、アプリの更新時期を、ファームウェアの更新の後に設定する。このフラグがセットされて、後のステップS1416へ進んだ場合には、「更新時」を「後」の値として処理を進める。すなわち、更新予定バージョン管理テーブル338における、全てのアプリの更新時が「後」として見なされることを意味する。そして、ステップS1413へ進む。
ステップS1413からの処理で、更新予定バージョン管理テーブル338の情報から、デバイス400へ応答する情報(表9)を作成する。ステップS1413では、更新予定バージョン管理テーブル338(表8)からデバイスXのレコードを検索する。
ステップS1414では、まず検索結果として得られた該当するレコードのうち、最初のレコードを取得して、対象レコードとする。
ステップS1415では、対象レコードに更新VERの記録があるか否かを判断する。つまり、対象レコードのアプリの更新バージョンがあるか否かを判断する。ある場合(Yes.)には、ステップS1416へ進み、応答情報に対象のアプリの更新情報を追加する。無い場合(No.)には、ステップS1419へ進み、処理を進める。
ステップS1416では、デバイスへ応答する情報におけるアプリの更新時を前後どちらにするかの判断をする。ステップS1412にて、AFTERフラグがセットされている場合には、ここにおいて、アプリは全て「後」更新と判断される。そうでない場合には、更新予定バージョン情報における対象レコードの「更新時」の値に従って、「前」か「後」と判断される。「前」と判断された場合には、ステップS1417へ進み、「後」と判断された場合には、ステップS1418へ進む。
ステップS1417では、表9で例示したデバイスへ応答する情報に、コンテンツタイプとして「前アプリ」、IDとして対象レコードのアプリIDの値、バージョンとして対象レコードの更新VERの値から成る組合せを追加する。
ステップS1418では、表9で例示したデバイスへ応答する情報に、コンテンツタイプとして「後アプリ」、IDとして対象レコードのアプリIDの値、バージョンとして対象レコードの更新VERの値から成る組合せを追加する。
ステップS1413からの処理で、更新予定バージョン管理テーブル338の情報から、デバイス400へ応答する情報(表9)を作成する。ステップS1413では、更新予定バージョン管理テーブル338(表8)からデバイスXのレコードを検索する。
ステップS1414では、まず検索結果として得られた該当するレコードのうち、最初のレコードを取得して、対象レコードとする。
ステップS1415では、対象レコードに更新VERの記録があるか否かを判断する。つまり、対象レコードのアプリの更新バージョンがあるか否かを判断する。ある場合(Yes.)には、ステップS1416へ進み、応答情報に対象のアプリの更新情報を追加する。無い場合(No.)には、ステップS1419へ進み、処理を進める。
ステップS1416では、デバイスへ応答する情報におけるアプリの更新時を前後どちらにするかの判断をする。ステップS1412にて、AFTERフラグがセットされている場合には、ここにおいて、アプリは全て「後」更新と判断される。そうでない場合には、更新予定バージョン情報における対象レコードの「更新時」の値に従って、「前」か「後」と判断される。「前」と判断された場合には、ステップS1417へ進み、「後」と判断された場合には、ステップS1418へ進む。
ステップS1417では、表9で例示したデバイスへ応答する情報に、コンテンツタイプとして「前アプリ」、IDとして対象レコードのアプリIDの値、バージョンとして対象レコードの更新VERの値から成る組合せを追加する。
ステップS1418では、表9で例示したデバイスへ応答する情報に、コンテンツタイプとして「後アプリ」、IDとして対象レコードのアプリIDの値、バージョンとして対象レコードの更新VERの値から成る組合せを追加する。
ステップS1419では、対象レコードがデバイスの最終レコードであるかを判断する。最終レコードである場合(Yes.)には、ここまでで全てのアプリの応答情報の追加が終了しているため、ステップS1421へ進み、FWの応答情報の判断処理を行う。最終レコードでない場合(No.)には、ステップS1420へ進む。
ステップS1420では、検索結果から次のレコードを取得して、それを対象レコードとし、ステップS1415からの処理を繰り返す。
ステップS1420では、検索結果から次のレコードを取得して、それを対象レコードとし、ステップS1415からの処理を繰り返す。
ステップS1421では、最終レコードに対して、更新FWVERの記録があるか否かを判断する。つまり、デバイスXにFWの更新バージョンがあるか否かを判断する。ある場合(Yes.)には、ステップS1422へ進み、デバイスへの応答情報にFWの更新情報を追加する。無い場合(No.)には、ステップS1424へ進む。
ステップS1422では、表9で例示したデバイスへ応答する情報に、コンテンツタイプとして「FW」、IDとしてXのデバイスモデルの値、バージョンとして対象レコードの更新FWVERの値から成る組合せを追加する。
ステップS1423では、ここまでに作成したデバイスへの応答情報をもって、FWとアプリの更新情報をデバイスへ応答して、応答442とする。なお、ステップS1415からS1420の処理の繰り返しの中でアプリの更新情報が一つもなければ、ここでFWの更新情報のみとなる場合もある。
ステップS1424では、ここまでに作成したデバイスへの応答情報をもって、アプリの更新情報のみをデバイスへ応答して応答442とする。
ステップS1425では、表9で例示したデバイスへ応答する情報に、コンテンツタイプとして「FW」、IDとしてXのデバイスモデルの値、バージョンとしてCURVERの値から成る組合せを追加する。
ステップS1426では、ここまでに作成したデバイスへの応答情報をもって、FWの更新情報のみをデバイスへ応答して応答442とする。
ステップS1422では、表9で例示したデバイスへ応答する情報に、コンテンツタイプとして「FW」、IDとしてXのデバイスモデルの値、バージョンとして対象レコードの更新FWVERの値から成る組合せを追加する。
ステップS1423では、ここまでに作成したデバイスへの応答情報をもって、FWとアプリの更新情報をデバイスへ応答して、応答442とする。なお、ステップS1415からS1420の処理の繰り返しの中でアプリの更新情報が一つもなければ、ここでFWの更新情報のみとなる場合もある。
ステップS1424では、ここまでに作成したデバイスへの応答情報をもって、アプリの更新情報のみをデバイスへ応答して応答442とする。
ステップS1425では、表9で例示したデバイスへ応答する情報に、コンテンツタイプとして「FW」、IDとしてXのデバイスモデルの値、バージョンとしてCURVERの値から成る組合せを追加する。
ステップS1426では、ここまでに作成したデバイスへの応答情報をもって、FWの更新情報のみをデバイスへ応答して応答442とする。
図10の手順をまとめると、デバイスが申告したファームウェアバージョンと、サーバが管理しているデバイスのファームウェアバージョンとが一致しているなら、更新予定を確認し、更新予定があるならば、FW/アプリ応答442は、更新予定バージョン管理テーブル338の登録内容に従う。
一方、デバイスが申告したファームウェアバージョンと、サーバが管理しているデバイスのファームウェアバージョンとが一致していないか、または更新予定がない場合には、まずファームウェアの更新バージョンを決定する。更新バージョンは、デバイスの現在のバージョンより新しく、かつ、更新可能なバージョンのうち最も新しいバージョンである。このときには、更新されるアプリはすべてファームウェアの後に更新するものと設定する。
これによって、更新すべきファームウェアのバージョン及びアプリのバージョンを決定できる。また、アプリの更新バージョンが図6(b)の処理で決定されている場合には、アプリのバージョンも併せてデバイスに通知することができる。
●FW登録更新時処理
更新予定バージョン情報は、新しくFWが登録された時にも更新される。FWが新規に登録されれば、自動アップデートによる定期確認の際に新しいFWの方を配信する判断となる可能性がある。この時には、アプリの動作依存情報も反映されている必要がある。
更新予定バージョン情報は、新しくFWが登録された時にも更新される。FWが新規に登録されれば、自動アップデートによる定期確認の際に新しいFWの方を配信する判断となる可能性がある。この時には、アプリの動作依存情報も反映されている必要がある。
図11(a)は、FW登録後にバッチ処理部315で処理される、FW登録更新時処理の例を示すフローチャートである。
FWの登録によって、登録ファームウェア管理テーブル334(表4)、ファームウェアバージョン管理テーブル335(表5)、および、バージョン制限管理テーブル336(表6)が更新されると、ステップS1120からの処理が開始する。
FWの登録によって、登録ファームウェア管理テーブル334(表4)、ファームウェアバージョン管理テーブル335(表5)、および、バージョン制限管理テーブル336(表6)が更新されると、ステップS1120からの処理が開始する。
ステップS1121では、FW登録された対象のデバイスモデルを特定する。ここで、対象デバイスモデルに属するデバイスIDの一覧を持って、ステップS1122からステップS1124までで対象デバイスモデルに属する全デバイスIDについて、順に処理していく。
ステップS1123は、処理するデバイスIDで、更新予定バージョン情報更新処理(図7、ステップS1110)を呼び出す。
ステップS1124では、デバイスモデルに属する全てのデバイスIDについてステップS1123の処理を完了したかを判断する。処理が完了していないデバイスIDが残っている場合(No.)には、ステップS1122へ戻り、残りのデバイスIDについての処理を行う。全てのデバイスIDについて処理が完了している場合(Yes.)は、ステップS1125へ進み、FW登録更新時処理を終了する。
ステップS1123は、処理するデバイスIDで、更新予定バージョン情報更新処理(図7、ステップS1110)を呼び出す。
ステップS1124では、デバイスモデルに属する全てのデバイスIDについてステップS1123の処理を完了したかを判断する。処理が完了していないデバイスIDが残っている場合(No.)には、ステップS1122へ戻り、残りのデバイスIDについての処理を行う。全てのデバイスIDについて処理が完了している場合(Yes.)は、ステップS1125へ進み、FW登録更新時処理を終了する。
この手順で、ファームウェアの新バージョンが登録されると、それに応じて更新予定バージョン管理テーブル338を更新することができる。
●定時バッチ処理
さらに、バッチ処理部315は、定期的にスケジュールされた日時に起動する定時バッチ処理も行う。アプリのバージョンだけが更新された場合などは、この定時バッチ処理で、更新予定バージョン管理テーブル338を更新する。
図11(b)は、定時バッチ処理の例を示すフローチャートである。例えば、毎日深夜0時に処理を起動するように設定されたスケジューラ318により、バッチ処理部315において、ステップS1130からの処理を開始する。
ステップS1131からステップS1133までで、更新予定バージョン管理テーブル338(表8)に登録された全デバイスIDについて、順に処理していく。
ステップS1132は、処理するデバイスIDで、更新予定バージョン情報更新処理(図7、ステップS1110)を呼び出す。
ステップS1133では、全てのデバイスIDについてステップS1132の処理を完了したかを判断する。処理が完了していないデバイスIDが残っている場合(No.)には、ステップS1131へ戻り、残りのデバイスIDについての処理を行う。全てのデバイスIDについて処理が完了している場合(Yes.)は、ステップS1134へ進み、定時バッチ処理理を終了する。
さらに、バッチ処理部315は、定期的にスケジュールされた日時に起動する定時バッチ処理も行う。アプリのバージョンだけが更新された場合などは、この定時バッチ処理で、更新予定バージョン管理テーブル338を更新する。
図11(b)は、定時バッチ処理の例を示すフローチャートである。例えば、毎日深夜0時に処理を起動するように設定されたスケジューラ318により、バッチ処理部315において、ステップS1130からの処理を開始する。
ステップS1131からステップS1133までで、更新予定バージョン管理テーブル338(表8)に登録された全デバイスIDについて、順に処理していく。
ステップS1132は、処理するデバイスIDで、更新予定バージョン情報更新処理(図7、ステップS1110)を呼び出す。
ステップS1133では、全てのデバイスIDについてステップS1132の処理を完了したかを判断する。処理が完了していないデバイスIDが残っている場合(No.)には、ステップS1131へ戻り、残りのデバイスIDについての処理を行う。全てのデバイスIDについて処理が完了している場合(Yes.)は、ステップS1134へ進み、定時バッチ処理理を終了する。
この手順で、アプリの新バージョンが登録されていると、それに応じて更新予定バージョン管理テーブル338を更新することができる。図11に示したように、更新予定バージョン管理テーブル338は、設定した所定時期や、ファームウェアの登録などの所定のイベントをトリガとして実行させることもできる。
以上、本実施例では、無人で適切な最新バージョンに更新されている状態が望ましい、(定期)自動更新配信の場合のシーケンスについて説明した。しかしながら、有人であっても容易に適切なバージョンへの更新が可能となるようにするための仕組みとしても、本実施例に係る発明は適用可能である。
図12は、デバイスにおいて、デバイスの利用者によるFWおよびアプリの最新版への更新を実施する時の流れの例を示すシーケンス図である。図12のシーケンスは、基本的に図5のシーケンスに従うため、図5との差異のみ説明する。
利用者401は、デバイス400のソフトウェア(FWおよびアプリ)を適切な組み合わせの最新版へと更新するために、デバイス400への更新指示を行う480。これは、例えば、デバイス400の操作パネルに、「ソフトウェアの最新化」等のボタンがあり、これを押下することにより、続くシーケンスが回診することを意味する。以後、図5に示したデバイス400と配信システム10との通信シーケンスと同じやり取りを即時で実行することにより、利用者によるソフトウェア最新化が可能となる。
以上述べたように、配信システムにおいて、自動更新時にデバイスから現在のFWバージョンを受信するだけで、最新のアプリとFWを配信することが出来る。配信システムは、非同期で予め、各デバイスに配信予定のFWとアプリのバージョンを特定しておくことにより、配信時にサーバの応答速度を低下させることなくアプリとFWの適切なバージョンの組み合わせで配信することが出来る。適切な組み合わせについては、デバイスの現在バージョンを含め、アプリのバージョンだけを更新することが適切な場合は、アプリだけを配信し、FWだけ更新することが適切な場合は、FWだけを配信する。
これにより、MFPのようなデバイスにおいても、限られた現実的更新タイミングで、FWおよび複数のアプリをまとめて更新することが出来るようになり、MFPのようなデバイスにおいても配信スケジュールに関わる運用課題が軽減できた。また、FWとの組み合わせで動作が保証出来ているアプリだけを自動更新するということも可能となった。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
10 配信システム、20 コンテンツサーバ、30 販売会社システム、400 デバイス
Claims (9)
- 複数のデバイスと配信システムとを含むシステムであって、
前記配信システムは、
デバイスにインストールされているファームウェア及びアプリケーションのバージョン情報と、前記ファームウェア及びアプリケーションの更新予定のバージョン情報とを、デバイスIDごとに管理する管理手段と、
前記デバイスからの該デバイスのデバイスIDと該デバイスにインストールされているアプリケーションのバージョン情報を含む更新通知の受信に応じて、前記管理手段により管理される前記デバイスにインストールされているアプリケーションのバージョン情報を更新し、さらに、前記管理手段により管理された前記ファームウェア及びアプリケーションの更新予定のバージョン情報の更新を行う更新手段と、
前記デバイスから、該デバイスのデバイスIDと該デバイスにインストールされているファームウェアのバージョン情報とを含む、ファームウェアの更新の確認要求を受信する受信手段と、
前記受信手段により受信した前記確認要求に含まれる情報が示す前記ファームウェアのバージョン情報に基づいて該ファームウェアの更新予定のバージョン情報を特定し、さらに、前記管理手段で前記確認要求に含まれるデバイスIDに対応する前記アプリケーションについての更新予定が既に管理されていた際には、当該更新予定に基づいて、前記デバイスにインストールされているアプリケーションについての更新予定のバージョン情報の特定を行う特定手段と、
特定された前記ファームウェアの更新予定のバージョン情報と前記アプリケーションの更新予定のバージョン情報とを前記確認要求への応答として、前記デバイスに送信する応答手段と、を有し、
前記デバイスでは、前記応答に従い前記ファームウェア及びアプリケーションが更新され、当該アプリケーションの更新に応じてデバイスIDと更新後のアプリケーションのバージョン情報を含む更新通知が前記配信システムに送信されることを特徴とするシステム。 - 請求項1に記載のシステムであって、
前記更新手段はさらに、前記ファームウェアの新しいバージョン情報が前記配信システムに登録された際に前記更新を行うことを特徴とするシステム。 - 請求項1又は2に記載のシステムであって、
前記更新手段はさらに、所定のトリガで前記更新を行うことを特徴とするシステム。 - 請求項3に記載のシステムであって、
前記所定のトリガは、所定の時期に達したことであることを特徴とするシステム。 - 請求項1乃至4のいずれか一項に記載のシステムであって、
前記応答手段はさらに、前記アプリケーションの更新予定のバージョン情報が、前記ファームウェアの更新予定のバージョン情報と組み合わせられる場合には、前記アプリケーションの更新を前記ファームウェアの更新の後で行うことを示す情報を前記応答に含めることを特徴とするシステム。 - 請求項1乃至5のいずれか一項に記載のシステムであって、
前記更新手段は、前記デバイスから受信した前記ファームウェアのバージョン情報に基づいて、前記バージョン情報が示すバージョンよりも新しく、かつ、前記バージョンから更新可能であり、かつ、前記デバイスにインストールされている前記アプリケーションと組み合わせ可能であるようなバージョンのうち、最新のバージョンを、新たな前記ファームウェアの更新予定のバージョン情報とすることを特徴とするシステム。 - 請求項1乃至6のいずれか一項に記載のシステムであって、
前記更新手段は、前記デバイスから受信した前記デバイスIDに基づいて、前記デバイスにインストールされている前記アプリケーションについて、前記デバイスにインストールされているバージョン情報が示すバージョンよりも新しく、かつ、前記バージョンから更新可能であり、かつ、前記デバイスにインストールされている前記ファームウェアの更新予定のバージョンと組み合わせ可能であるようなバージョンのうち、最新のバージョンを、新たな前記アプリケーションの更新予定のバージョン情報とすることを特徴とするシステム。 - 請求項7に記載のシステムであって、
前記更新手段は、前記デバイスにインストールされている前記ファームウェアの更新予定のバージョンと組み合わせ可能でなくとも、前記デバイスにインストールされている前記ファームウェアの現在のバージョンと組み合わせ可能であれば、当該バージョンを、新たな前記アプリケーションの更新予定のバージョン情報とすることを特徴とするシステム。 - 複数のデバイスと配信システムとを含むシステムによる配信方法であって、
前記配信システムが、
デバイスにインストールされているファームウェア及びアプリケーションのバージョン情報と、前記ファームウェア及びアプリケーションの更新予定のバージョン情報とを、デバイスIDごとに管理し、
前記デバイスからの該デバイスのデバイスIDと該デバイスにインストールされているアプリケーションのバージョン情報を含む更新通知の受信に応じて、前記デバイスにインストールされているアプリケーションのバージョン情報を更新し、さらに、前記ファームウェア及びアプリケーションの更新予定のバージョン情報の更新を行い、
前記デバイスから、該デバイスのデバイスIDと該デバイスにインストールされているファームウェアのバージョン情報とを含む、ファームウェアの更新の確認要求を受信し、
受信した前記確認要求に含まれる情報が示す前記ファームウェアのバージョン情報に基づいて該ファームウェアの更新予定のバージョン情報を特定し、さらに、前記確認要求に含まれるデバイスIDに対応する前記アプリケーションについての更新予定が既に管理されていた際には、当該更新予定に基づいて、前記デバイスにインストールされているアプリケーションについての更新予定のバージョン情報の特定を行い、
特定された前記ファームウェアの更新予定のバージョン情報と前記アプリケーションの更新予定のバージョン情報とを前記確認要求への応答として、前記デバイスに送信し、
前記デバイスが、
前記応答に従い前記ファームウェア及びアプリケーションを更新し、当該アプリケーションの更新に応じてデバイスIDと更新後のアプリケーションのバージョン情報を含む更新通知を前記配信システムに送信することを特徴とするシステム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017094880A JP2018190341A (ja) | 2017-05-11 | 2017-05-11 | システム及び配信方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017094880A JP2018190341A (ja) | 2017-05-11 | 2017-05-11 | システム及び配信方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2018190341A true JP2018190341A (ja) | 2018-11-29 |
Family
ID=64480231
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017094880A Pending JP2018190341A (ja) | 2017-05-11 | 2017-05-11 | システム及び配信方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2018190341A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2021056584A (ja) * | 2019-09-27 | 2021-04-08 | 京セラドキュメントソリューションズ株式会社 | ファームウェア更新システム、電子機器およびファームウェア更新プログラム |
| JP2021144674A (ja) * | 2020-03-11 | 2021-09-24 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | 音声処理チップの処理方法、装置、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム |
-
2017
- 2017-05-11 JP JP2017094880A patent/JP2018190341A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2021056584A (ja) * | 2019-09-27 | 2021-04-08 | 京セラドキュメントソリューションズ株式会社 | ファームウェア更新システム、電子機器およびファームウェア更新プログラム |
| JP2021144674A (ja) * | 2020-03-11 | 2021-09-24 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | 音声処理チップの処理方法、装置、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム |
| US11556333B2 (en) | 2020-03-11 | 2023-01-17 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for processing audio processing chip, and electronic device |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6581418B2 (ja) | 配信システム、配信方法及びプログラム | |
| EP2820539B1 (en) | Distribution of application files | |
| JP6440643B2 (ja) | ソフトウェア更新システム、サーバ | |
| JP4371673B2 (ja) | プログラムインストール方法およびサーバ装置 | |
| JP6011479B2 (ja) | アプリケーション管理装置、アプリケーション管理システムおよびプログラム | |
| JP2011238007A (ja) | 配信装置、プログラム配信システム、配信方法及びプログラム | |
| EP2595368A2 (en) | Management device, information processing system, management method, and storage medium | |
| US20170024202A1 (en) | Information processing apparatus, method, and program | |
| US20130346455A1 (en) | Framework for applying metadata for multiple files managed using a content management system | |
| JP2015205499A (ja) | 画像処理装置、画像処理装置の制御方法およびプログラム | |
| EP2784669A1 (en) | Method, system and computer program product for handling needs for, and delivery of customized and/or personalized user interface elements | |
| JP2016064591A (ja) | 情報処理装置、その制御方法、プログラム。 | |
| JP2012146241A (ja) | ソフトウェアアップデート方法、ソフトウェアアップデート装置、及びソフトウェアアップデートプログラム | |
| KR101638689B1 (ko) | 클라이언트 단말에 대한 사용자 맞춤형 동기화 서비스 제공 방법 및 시스템 | |
| JP2018190341A (ja) | システム及び配信方法 | |
| JP6740037B2 (ja) | ソフトウェア配信システム、及びそのソフトウェア配信方法 | |
| JP2014013473A (ja) | ソフトウェア更新装置 | |
| US20190212996A1 (en) | Information processing apparatus and non-transitory computer readable medium storing program | |
| EP1521175A2 (en) | Program, apparatus and method for downloading and installing a program | |
| US9323907B2 (en) | Distribution apparatus, device, control method for distribution apparatus, and storage medium | |
| JP2016081162A (ja) | 管理装置、情報処理装置、管理装置の制御方法、情報処理装置の制御方法、及びプログラム | |
| WO2018010321A1 (zh) | 应用卡片的远程同步方法和装置 | |
| CN112769954B (zh) | 一种web程序自动存储和自动路由的方法和系统 | |
| JP2020119394A (ja) | シナリオ実行システム、管理装置、シナリオ実行管理方法及びプログラム | |
| KR20150109720A (ko) | 프로그램 일괄배포방법 및 이를 이용하는 서버-클라이언트 시스템 |