以下、本発明を実施するための形態について図面を用いて説明する。なお、フローチャートの記述においては、各ステップを「S」で表す。
<実施例1>
図1は実施例1のシステム構成を示すブロック図である。配信システム10はWebサーバ12、DBサーバ13及びアプリケーションサーバ11を備える。Webサーバ12はインターネット100に接続されており、配信システム10はWebサーバ12を介して顧客企業114のデバイス115〜117、顧客企業119のデバイス120〜127、顧客企業129のデバイス131と通信を行う。これにより、アプリケーションソフトウェア(以後「アプリ」と略記)及びファームウェア(以後「FW」と略記)の配信制御を行う。
アプリ及びFWの実ファイルはコンテンツサーバ20にあり、デバイスへアプリをインストールする場合には、配信システム10からコンテンツサーバ20上の実ファイルの位置情報を取得し、コンテンツサーバ20からアプリをダウンロードする。これにより、多くのデバイスのアプリ配信の負荷を分散し効率良くアプリの配信を行うことが出来る。アプリ及びFWの更新も同様である。コンテンツサーバ20は、コンテンツ管理サーバ21およびファイル・ストレージ22、23を備える。コンテンツ管理サーバ21は、外部からのリクエストに従って、ファイル・コンテンツすなわちアプリ及びFWを保存、あるいは提供する。
顧客企業のデバイスには、マルチ・ファンクション・プリンタ(MFP)や、シングル・ファンクション・プリンタ(SFP)等の種類があり、デバイスのモデル毎に一つあるいは複数の機能が搭載されている。それらの機能を実現するためのFWがインストールされることにより、デバイスの各機能が利用可能となる。また、デバイスのモデル毎、あるいは、デバイスのモデルに共通で実行可能なアプリをインストールして実行することが可能である。各アプリは、デバイスのFWと独立して実行、停止が可能である。デバイスの利用者は、そのデバイスで利用可能な複数のアプリの中から、所望のものを選び、ライセンスを購入するなどして入手することにより、インストールを行う。また、デバイスのアプリの不具合が修正された場合や機能の改善あるいは追加された場合には、アプリを更新することで、それらを利用することが出来る。
本実施例では、デバイスとしてMFPおよびSFPを例に挙げているが、これに限るものではない。すなわち、配信システム10によるアプリの自動配信が為される一方で、デバイス本体の機能とは独立して、インストール、アンインストール、起動、停止が制御可能なアプリが利用可能なデバイスであれば、本発明の技術は有効である。他に本発明が有効な例としては、インターネットに接続された家電、電子制御機器を複数搭載する車両、あるいは携帯電話などが挙げられる。
販売会社システム30は、デバイスを各顧客企業114、119、129へ販売し、維持、管理するデバイスの製造会社あるいはデバイスの販売会社がアプリ及びFWの登録・管理のための操作をする。販売会社システム30は、1台以上のPC31、32あるいはサーバ33、34を備える。販売会社システム30から配信システム10およびコンテンツサーバ20へアクセスすることにより、アプリ及びFWの登録と配信設定を行う。
図2は本実施例のハードウェア構成を示すブロック図である。アプリケーションサーバ11は、バス205を介して接続されたCPU201、RAM202、ROM203、ネットワークインタフェース204、HDD206等を備える。また、アプリケーションサーバ11は、ネットワークインタフェース204を介してWebサーバ12やDBサーバ13と互いに接続されている。配信システム10はHDD206やROM203、RAM202に記録されたデータ及びプログラムを読み出してCPU201で実行することにより実現される。また、その機能は、複数のサーバの機能の連携によって実現される場合もある。ネットワークインタフェース204は、配信システム10内のサーバ間の機能連携に使われると共に、インターネット100を介して、外部システムと通信するためにも使用される。なお、図2はアプリケーションサーバ11に対応して図示しているが、デバイスも同様のハードウェア構成を持っているものとする。
図3は、本実施例における配信システム10の機能構成を示すブロック図である。デバイス(ネットワークデバイス)400は配信システム10に接続するデバイスの一例である。Webブラウザ302は、配信システム10に接続する販売会社システムの一例としてのクライアントシステムである。
Webインターフェース部310はデバイス400に対するアプリ及びFWの配信機能を提供するものであり、各デバイスから各種リクエストを受信し、処理結果を返却する。例えば、アプリ配送情報のリクエストを受信すると、対象とするアプリの格納されている場所を検索し、アプリを取得するためのURLとして返却する。リクエスト処理の詳細については、後述する。
ユーザインタフェース部311は、配信システムにアクセスして、アプリ及びFWの登録や配信設定を行う。リクエスト受信部312はデバイスからのリクエストを受信する。レスポンス返信部313はデバイスへレスポンスを返す。配信設定制御部314はFWおよびアプリの配信設定を制御するものであり、デバイス管理部315、アプリ配信設定部317、FW配信設定部318を制御して、ユーザインタフェース部311で表示する配信設定のための画面の出力内容を決定する。デフォルト起動状態判断部319は、アプリ配信設定部317から呼び出されて、デフォルト起動状態を判断する。
DBアクセス部320は、各種処理に応じて、データ管理部330で管理されている以下のテーブルのデータを更新あるいは検索する。即ち、登録アプリ管理テーブル331、更新可能アプリ管理テーブル332は、登録ファームウェア管理テーブル333、デバイス管理テーブル334、インストール済みアプリ管理テーブル335、アプリ配信管理テーブル336である。また、FW配信管理テーブル337、更新後状態テーブル338である。
デバイス400の構成は以下の通りである。メイン処理部340はデバイス400の本来の主機能(例えば、プリンターであれば画像形成処理)を処理する。デバイス400は、この主機能の他に、デバイスのFWおよびアプリの配信制御を行うための機能も備えている。その機能を処理するのが以下の機能ブロック341〜348である。
ブロック341は、配信システム10からアプリ及びFWの配信を受けるためのWebインターフェース部であり、配信システム10のWebインターフェース部310と接続されている。ブロック342は配信処理部である。ブロック343はアプリインストール部である。ブロック344はアプリ更新部である。ブロック345はFW更新部である。ブロック346はアプリ起動制御部である。ブロック347は配信されたFWを格納するFW格納部である。ブロック348は配信されたアプリを格納するアプリ格納部である。
図4は、デバイスのアプリ及びFWをインストールあるいは更新するために、デバイスを維持、管理するサービスマン、および、デバイスの利用者の操作によってデバイス及び配信システムを操作する時の流れの例を示すシーケンス図である。利用者401がデバイス400を利用し、サービスマン402がデバイス400に対して、アプリおよびFWの更新のために、配信システム10へのリモート配信の設定操作を行う。
点線409で囲まれた範囲は利用者401が新しいアプリをインストールする時のシーケンスを示している。利用者401は新しいアプリをデバイス400へインストールするために、デバイス400のユーザインタフェースを操作し、アプリのインストール指示を出す(410)。この指示に対応してデバイス400は、インストールするアプリを特定する情報を配信システム10へ送り、対応するアプリを要求する(411)。これに対して配信システム10は、デバイス400からのリクエストをWebインターフェース部310で処理する。Webインターフェース部310は、リクエストで渡されるアプリ名称あるいはアプリIDを持って登録アプリ管理テーブル331からアプリのURLを検索する。配信システム10は、検索したURLを、プログラムファイルをダウンロードするためのURLとして、デバイス400へ返却する(412)。以後、配信システム10が処理するデバイス400からのリクエストは、Webインターフェース部310で処理されるものとして説明を続ける。
デバイス400は返却されたURLでコンテンツサーバ20にアクセスし、インストールするアプリのファイルを要求する(413)。その応答(414)で取得したアプリのファイルを使用して、デバイス400はアプリのインストール処理を行う(415)。インストール処理が終了しインストールしたアプリが起動すると、デバイス400は配信システム10へ、新しいアプリがインストールされたことを通知する(416)。デバイス400からアプリのインストール通知を受けると、配信システム10はそれを記録し、デバイスに現在インストールされているアプリの情報を更新する(417)。この時、通知を受けた対象デバイスにおける対象アプリの動作状態(稼働状態)が「起動」中であることも記憶しておく。配信システム10は、アプリの状態を記録すると、デバイス400へ応答を返す(418)。
次に、点線420で囲まれた範囲は、利用者401がインストールされたアプリを停止する時のシーケンスを示している。アプリのインストール後、何らかの理由でアプリの動作を停止させたい場合、利用者401は、デバイス400のユーザインタフェースを操作し、アプリの停止指示を出す(421)。これに応じて、デバイス400は対象アプリの実行を停止する(422)。そして、配信システム10へ当該アプリの状態を通知し、停止状態になったことを伝える(423)。停止の通知を受けた配信システム10は、それを記録し、対象アプリの動作状態が「停止」中として、現在インストールされているアプリの情報を更新する(424)。そして、デバイス400へ応答を返す(425)。
点線430で囲まれた範囲は、利用者401が停止中のアプリを再起動する時のシーケンスを示している。利用者401は、デバイス400のユーザインタフェースを操作し、アプリの起動指示を出す(431)。これに応じて、デバイス400は対象アプリの実行を開始する(432)。そして、配信システム10へ当該アプリの状態を通知し、起動状態になったことを伝える(433)。起動の通知を受けた配信システム10は、それを記録し、対象アプリの動作状態が「起動」中として、現在インストールされているアプリの情報を更新する(434)。そして、デバイス400へ応答を返す(435)。
点線420と430で囲まれた範囲の処理は、利用者の意図に従って、どのタイミングでも実施可能である。配信システム10は、アプリ起動状態通知(423、433)に従って、随時、配信システム10内のアプリ状態情報を更新する。
点線440で囲まれた範囲は、サービスマン402によって、アプリの更新のための配信予約設定441を操作することを示している。また、点線442で囲まれた範囲は、サービスマン402によって、FWの更新のための配信予約設定443を操作することを示している。点線440と442の範囲の処理は、サービスマン402によってどのタイミングでも実施可能であるが、点線440の範囲については、対象デバイスに設定対象のアプリがインストールされていることが前提となる。本実施例における説明においては、点線440と442の範囲の処理は排他的に実施されるものとするが、両者を同時に実施することも可能である。
点線444で囲まれた範囲は、デバイス400から配信システム10に対して、定期的に問い合わせる配信設定確認のシーケンスを示している。デバイス400は、所定の周期あるいは決められたタイミングにおいて、配信システム10に、デバイス400向けのアプリ更新あるいはFW更新の設定があるかどうかを問い合わせる(445)。配信システム10は、アプリ更新あるいはFW更新の配信設定の有無と配信設定がある場合には、その情報をデバイス400へ応答する(446)。
図5はアプリ更新の配信設定がある場合の流れを示すシーケンス図である。処理441、445、446は、図4に示す同じ番号のシーケンスと同じものを示している。まず、サービスマン402がアプリの更新予約を設定(441)すると、配信システム10はその後のデバイス400からの配信設定確認(445)で配信設定情報を返す(446)。ここで返された配信設定情報には、配信日時情報、配信識別情報及び更新後の実行状態指示情報が含まれる。デバイス400は、予約された配信日時(452)になると、配信システム10へ配信識別情報を送り、対応するアプリを要求する(453)。これに対して、配信システム10は、リクエストで渡される配信識別情報からアプリ配信管理テーブル336を検索して、アプリIDとバージョンを特定し、さらに登録アプリ管理テーブル331からアプリのURLを検索する。配信システム10は、検索したURLを、プログラムファイルをダウンロードするためのURLとして、デバイス400へ返却する(454)。デバイス400は返却されたURLでコンテンツサーバ20にアクセスし、インストールするアプリのファイルを要求する(455)。コンテンツサーバ20はそのアプリのファイルをデバイス400に返す(456)。
点線457で囲まれた範囲は、対象となるアプリのデバイスにおける動作状態によって処理の有無が変わる。更新対象となるアプリが動作している場合は、デバイス400は、対象アプリを停止する(458)。その後、応答(456)で取得したアプリのファイルを使用して、アプリの更新処理を行う(459)。
点線460で囲まれた範囲は、処理446で取得した配信設定情報に従って処理の内容が変わる。取得した配信設定情報の更新後実行状態指示がアプリを起動状態とする場合には、更新処理後、対象アプリの起動処理を行う(461)。その後、デバイス400は、配信システム10へアプリの更新完了及び更新後の実行状態を通知する(462)。更新の通知を受けた配信システム10はそれを記録し、対象アプリの動作状態を更新する(463)。そして、デバイス400へ応答を返す(464)。
図6は、FW更新の配信設定がある場合の流れを示すシーケンス図である。処理443、445、446は、図4に示す同じ番号のシーケンスと同じものを示している。まず、サービスマン402がFWの更新予約を設定(443)すると、配信システム10は、その後のデバイス400からの配信設定確認(445)で配信設定情報を返す(446)。ここで返された配信設定情報には、配信日時情報、配信識別情報が含まれる。デバイス400は予約された配信日時(472)になると、配信システム10へ配信識別情報を送り、対応するFWを要求する(473)。これに対して、配信システム10は、渡された配信識別情報からFW配信管理テーブル337を検索して、バージョンを特定し、さらに登録ファームウェア管理テーブル333からFWのURLを検索する。配信システム10は、検索したURLをプログラムファイルをダウンロードするためのURLとして、デバイス400へ返却する(474)。
デバイス400は、返却されたURLでコンテンツサーバ20にアクセスし、インストールするFWのファイルを要求する(475)。コンテンツサーバ20は要求されたファイルをデバイス400に返す(476)。デバイス400は、応答(476)で取得したFWのファイルを使用して、FWの更新処理(477)を行って再起動する(478)。再起動後、デバイス400は、配信システム10へ更新後のバージョン情報を含めてFWの更新通知を送る(479)。配信システム10は、デバイス400からの更新通知によって、渡された更新後バージョンの情報でデバイス管理テーブル334を更新する。これにより、配信システム10に保持している、デバイス400のFWの現在バージョンの情報が更新される。配信システム10はデバイス400へ応答を返し(481)、これによりこのシーケンスは終了する。
次に、処理441に示すアプリの配信設定における設定方法について説明する。図7に、サービスマン402がWebブラウザ302を使用して、アプリあるいはFWの更新のために配信設定を行うために最初に表示されるユーザインタフェース画面の例を示す。
図7の画面500では、まず、更新対象の配信ソフトウェア種別選択と配信対象デバイスの検索を行う。ラジオボタン501は配信ソフトウェア種別を選択するためのボタンである。FW更新の配信設定の場合には「ファームウェア配信」を選択し、アプリ更新の配信設定の場合には「アプリケーション配信」を選択する。フィールド502には、所定のFWバージョンを持つデバイスを選択するための検索条件を入力する。フィールド503には、所定のアプリがインストールされているデバイスを選択するための検索条件を入力する。フィールド504には、所定のアプリのバージョンがインストールされているデバイスを選択するための検索条件を入力する。フィールド505は、特定の機種のデバイスを選択するために、デバイスモデル名を検索条件に入力する。フィールド506には、予め、対象デバイスの一覧が分かっている場合に、対象デバイスのデバイスIDが記述されたファイルを入力する。各デバイスには、個体を識別するためのIDとしてシリアル番号が付与されており、これをデバイスIDと呼ぶ。デバイスIDは製造会社および販売会社によって管理されている。そして、商品であるデバイス個体を管理するとともに、ある一定範囲のデバイスIDを同じモデルの商品として管理する。フィールド506に、ファイルを入力後、アップロードボタン508を押下することによって、対象デバイス一覧を対象として表示することができる。ラジオボタン501で、“ファームウェア配信”を選択し、フィールド502、505に検索条件を入力して、検索ボタン507を押下することにより、配信システム10が管理するデバイス群の中から検索条件に合った一覧を表示する画面(不図示)へ遷移する。また、検索条件の代わりに、対象デバイスのデバイスIDが記述されたファイルをフィールド506に入力して、アップロードボタン508を押下することによって、対象デバイス一覧を対象として表示する画面(不図示)へ遷移する。
ラジオボタン501で“アプリケーション配信”を選択し、フィールド503〜505に検索条件を入力し、検索ボタン507を押下すると、配信システム10が管理するデバイス群の中から検索条件に合った一覧を表示する次の画面(図8の520)へ遷移する。また、検索条件の代わりに、対象デバイスのデバイスIDが記述されたファイルをフィールド506に入力して、アップロードボタン508を押下することによって、対象デバイス一覧を対象として表示する次の画面(図8の520)へ遷移する。
図8に、“アプリケーション配信”について、配信対象デバイスを選択するために表示されるユーザインタフェース画面の例を示す。画面520の画面は図7の500から遷移して表示される。また、画面520の中で検索条件を変えてデバイスの一覧を表示しなおすことも出来る。項目521〜528のユーザインタフェースは、図7における項目501〜508に対応して同じ機能を持つものとする。図8における例では、ラジオボタン521に示すように、「アプリケーション配信」のための設定画面になっていることを示している。
図8の画面520の下部には、検索あるいは一覧ファイルのアップロードにより一覧表示されたデバイスが表示される。欄530は配信対象デバイスを選択するチェックボックスを示す。欄531はサービスマン402から見た対象デバイスの顧客、すなわち利用者の顧客名を示す。欄532は個々のデバイスを識別するデバイスIDを示す。欄533はそのデバイスのモデル名を示す。欄534はそのデバイスで動作しているFWのバージョンを示す。欄535はそのデバイスにインストールされているアプリ(複数の場合あり)のアプリ名を示す。欄536はアプリ毎に個々のアプリを識別するアプリIDを示す。欄537はアプリ毎にそのアプリのバージョンを示す。
欄538はアプリ毎にそのアプリのデバイスにおける実行状態を示す。実行状態は、「起動」、「停止」、「不明」のいずれかである。図4における処理416、422、432、図5における処理461で通知された情報がある場合には、「起動」あるいは「停止」が表示される。通信上の不具合がある、デバイス側で起動状態情報を通知しない設定になっている、あるいは、通知する機能が無いデバイス等では、「不明」が表示される場合もある。欄539はアプリ毎に使用可能なライセンスの残数(例えば残日数)を示す。残数制限がある場合、デバイスから残数の情報が通知されれば、この欄に残数を示す数値が表示される。残数制限が無い場合や、情報が通知されない場合には、「N/A」が表示される。画面に表示し切れないデバイスリストがある場合は、スクロールバー540を用いて参照することができる。
図8では、ラジオボタン501で配信の種別として“ファームウェア配信”を選択した場合の検索などにより表示される前述した対象デバイス一覧とは異なり、欄535〜539などに示すアプリケーション配信に特有な情報も表示される。
図8の画面520を参照するサービスマン402は、ここで検索条件を変えながら、デバイス一覧を表示しなおして、最終的な配信対象のデバイスを欄530のチェックボックスで決定する。そして、デバイス一覧確定のための「次へ」ボタン541を押下することで、配信設定を行う次の画面(図9の560)へ遷移する。
図9に、更新アプリと配信設定を対象デバイスに対して設定するために表示されるユーザインタフェース画面の例を示す。画面560はアプリ更新のための配信設定のユーザインタフェース画面である。フィールド561は更新するアプリをアプリ名で指定するものである。ここでアプリを指定することにより、画面下部に表示されるデバイス一覧において、フィールド561で選択したアプリが現在インストールされているデバイスだけが配信対象として絞り込まれて表示が更新される。フィールド562は更新するアプリをアプリIDで指定するものである。フィールド562で選択した結果はフィールド561にも反映され、対応するアプリ名が表示される。逆にフィールド561で選択されたアプリ名に対応するIDでフィールド562も同時に更新されるものとする。フィールド561と同様に、下部に表示されるデバイス一覧も、そのアプリがインストールされたデバイスに更新される。フィールド563は更新するアプリのバージョンを指定するものである。
配信システム10は、各デバイスにインストールされているアプリの一覧および、配信可能なアプリのバージョンを保持している。したがって、公知の技術により、フィールド561、562、563は、有効なアプリとバージョンのみを表示するドロップダウンメニューとすることも可能である。
図9の画面560の下部には、配信対象として絞り込まれたデバイスの一覧が表示される。このユーザインタフェースにおいて、欄574に示す配信日時、および、欄575に示す配信後状態をデバイス毎に設定することができる。さらに、欄564に示す配信日時の一括設定、および、欄565の配信後状態の一括設定によって、一覧に表示されたデバイス全てに同じ設定を一括設定することも可能である。
欄566は配信対象として絞り込まれたデバイスの利用者の顧客名を示す。欄567は配信対象として絞り込まれたデバイスIDを示す。欄568は配信対象として絞り込まれたデバイスのモデル名を示す。欄569は配信対象として絞り込まれたデバイスで動作しているFWのバージョンを示す。欄570は561および562で指定されたアプリの、そのデバイスにインストールされているバージョンである。欄571はフィールド561および562で指定されたアプリの、そのデバイスにおける実行状態を示す。欄572はフィールド561および562で指定されたアプリの、そのデバイスにインストールされているバージョンから、フィールド563で指定されたバージョンへの更新が可能か否かを示す。欄572に「可」と表示されれば、アプリ更新の配信が可能であり、「不可」と表示されれば、そのデバイスに対するアプリ更新の配信設定はされない。欄573はフィールド561および562で指定されたアプリの、そのデバイスにおけるライセンス残数情報を示す。
サービスマン402は、欄566〜573の情報を参照しながら、欄574の配信日時および欄575の配信後状態をデバイス毎に設定する。欄574に設定された配信日時は、図5における処理446で各デバイスに返却され、予約日時(452)のタイミングとなる。欄575および565では、「起動」、「停止」、「維持」、「自動」の4つの状態を選択することが出来る。「起動」を選択すると、図5の処理446で返却される更新後起動状態として「起動」が指定される。同様に「停止」「維持」も更新後起動状態として指定される。「自動」の場合には、配信システム10によって自動判断された結果が指定される。画面に表示し切れないデバイスリストがある場合は、スクロールバー576を用いて参照することができる。
サービスマン402はフィールド561〜563で更新対象のアプリと更新後のバージョンを指定し、欄564、565、574、575で各デバイスの配信設定を入力した後、「登録」ボタン578を押下する。このようにして、各デバイスに対する配信設定(図5の処理441)が完了する。「戻る」ボタン577を押下すると、図8の画面520に戻る。「キャンセル」ボタン579を押下すると、配信設定を中止する。
なお、本実施例において、不図示の画面により、図7のラジオボタン501で「ファームウェア配信」を選択した場合にも、図8、図9に示すアプリ配信設定画面と同様に、対象デバイス毎にFWのバージョン選択及び配信日時指定が出来るものとする。また、「ファームウェア配信」を選択した場合、図8の項目530〜541に相当する情報は表示されず、図9のユーザインタフェース画面に相当する画面も表示されない。
以下、表を用いて、アプリ、FW、デバイスのそれぞれの管理情報と、アプリの配信情報の例を説明する。まず、表Aに登録アプリ管理テーブル331に格納されているアプリの管理情報の例を示す。
アプリの管理情報は、登録ID、アプリID、アプリ名、バージョン、URLの組合せの一覧を含む。あるバージョンの一つのアプリファイルは、アプリIDとバージョンの組合せで一意に識別され、URLに示すコンテンツサーバ20上の記憶場所に格納される。登録されたアプリの管理情報には一意の登録IDが付与され、管理情報の中で識別できる。また、ユーザインタフェース上での表示において分かり易いようにアプリ名を付けることが出来る。アプリの管理情報は、販売会社システム30から担当者がアプリを登録する際に入力され、更新されることで維持される。
デバイスにインストールされたアプリをバージョンアップなどで更新する場合、更新可能なバージョンを識別するために、配信システム10は、更新可能なアプリの組合せも管理する。表Bに更新可能アプリ管理テーブル332に格納されている更新可能なアプリの組合せ管理情報の例を示す。
更新可能アプリの管理情報は、表Aに示す管理情報によって管理される登録IDを使用して、更新前後の登録IDの組合せの一覧を含む。表Bに存在する、更新元の登録IDと更新後の登録IDの組合せが表Bに示す管理情報に存在する場合のみ、その登録ID間での更新が可能であることを示す。この組み合わせによる判断結果が、例えば図9における欄572(配信)に反映される。更新可能アプリの管理情報は、販売会社システム30から担当者がアプリを登録する際に入力され、更新されることで維持される。
アプリと同様に、配信システム10は、配信可能なFWも管理する。表Cに登録ファームウェア管理テーブル333に登録されているFWの管理情報の例を示す。
FWの管理情報は、デバイスモデル、バージョン、URLの組合せの一覧を含む。デバイスモデルとバージョンの組合せに対応するFWのファイルは、URLに示すコンテンツサーバ20上の記憶場所に格納される。FWについてもアプリと同様に、不図示の管理情報によって、更新可能なバージョンの組合せを管理する。FWの管理情報は、販売会社システム30から担当者がFWを登録する際に入力され、更新されることで維持される。
配信システム10は、配信対象となる各デバイスの状態を保持し管理する。デバイスの状態を示す情報の一つとして、各デバイスで動作しているFWのバージョン情報がある。表Dにデバイス管理テーブル334に格納されているデバイス管理情報の例を示す。
デバイスの管理情報は、デバイスID、デバイスモデル、バージョン、顧客名の組合せの一覧を含む。モデルは、デバイスIDで識別されるデバイスのモデルである。バージョンは、そのデバイスで現在動作しているFWのバージョンを示す。顧客名は、そのデバイスを所有する顧客名である。
デバイスの状態を示すもう一つの情報として、各デバイスにインストールされているアプリとその状態の情報がある。表Eにインストール済みアプリ管理テーブル335に格納されているデバイスのインストール済みアプリ情報の例を示す。
インストール済みアプリ情報は、デバイスID、アプリID、バージョン、動作状態、ライセンス残数、残数対応の組合せの一覧を含む。デバイスIDとアプリID、バージョンの組合せによって、デバイスIDに示すデバイスにアプリIDとバージョンの組合せが示すアプリがインストールされていることを示す。また、動作状態はそのアプリの動作状態を示す。残数対応は、ライセンス残数の情報が有効な場合にはTRUE、ライセンス残数の情報が無効な場合にはFALSEとなるフラグである。ライセンス残数は、そのデバイスにおけるアプリのライセンス残数を示す。残数対応がFALSEの場合には、ライセンス残数の値は使用しない。
表Fに、アプリ配信管理テーブル336に格納されているアプリの配信情報の例を示す。図9に示す画面560においてアプリの配信設定が登録されると、表Fに示すアプリ配信情報が更新されて、配信設定のレコードが追加される。アプリ配信情報は、配信ID、デバイスID、アプリID、バージョン、配信日時、状態指示の組合せの一覧を含む。配信IDは、残りの列の組合せで配信設定が追加される時に一意の識別子を生成して設定する。
図10に配信システム10における配信設定のフローチャートの例を示す。図10の処理は、図4の処理441および443に対応して配信設定制御部314で処理されるものであり、図7から図9に示す画面表示に対応する。
図4の処理441あるいは443によるサービスマン402からの更新予約操作により、配信設定処理が開始する(S1200)。配信設定制御部314は、S1201で、デバイス検索画面(図7)をユーザインタフェース部311へ表示する。図7におけるラジオボタン501で配信種別が、フィールド502〜505で検索条件が入力され、検索ボタン507が押下されると、S1202からS1204へ進む。一方、配信種別が入力され、フィールド506で一覧ファイルが入力され、アップロードボタン508が押下されると、S1202からS1203へ進む。
配信設定制御部314は、S1203では、アップロードされたファイルからデバイスIDの一覧を読み込み、S1204では、デバイス管理部315を呼び出す。デバイス管理部315は、S1204にて、検索条件に合致するデバイスの一覧を、デバイス管理テーブル334およびインストール済みアプリテーブル335から検索する。これらによって得られたデバイス一覧に対して、配信設定制御部314は、デバイス管理部315を呼び出し、デバイス状態情報を取得する(S1205)。
次に配信設定制御部314は、ラジオボタン501で指定された配信種別に従って、配信設定の内容を判断して以降の処理を切り替える(S1206)。つまり、FWの場合にはS1207へ進み、処理443に対応する配信設定を行い、アプリの場合にはS1209へ進み、処理441に対応する配信設定を行う。
S1207で、FW配信設定部318はFW配信設定画面を表示し、FWの配信設定を行ない、そして、FW配信管理テーブル337を更新する。これにより、配信設定処理は終了する(S1208)。
S1209では、配信設定制御部314は、対象デバイス選択画面(図8)をユーザインタフェース部311へ表示する。ここで、図8の画面520の下部にはS1205で取得したデバイス状態情報を表示する。S1210で、配信設定制御部314は、押下されたボタンによって、次の画面遷移あるいは表示の更新を判断する。検索ボタン527が押された場合にはS1211へ進み、デバイス管理部315がデバイスの検索を行う。アップロードボタン528が押下された場合にはS1212へ進み、デバイスIDの一覧を読み込む。いずれの場合も、デバイス管理部315がデバイス状態情報取得(S1213)を行い、配信設定制御部314がデバイス状態情報を更新する(S1214)。そして、対象デバイス一覧が確定されるまで図8の画面520の更新を繰り返す。
S1210で「次へ」ボタン541が押下されると、S1215へ進む。S1215では、アプリ配信設定部317が、選択された対象デバイスの中で、選択されたアプリの情報だけに絞り込む。これは、アプリ配信設定部317の内部の処理であるが、絞り込まれた内容は、図9における一覧表示の内容に相当する。S1216では、アプリ配信設定部317が、更新可能アプリ管理テーブル332を検索し、更新するアプリのバージョン情報と絞り込まれたデバイス状態情報から、各デバイスのアプリが更新可能か否かを判断する。これは、図9の欄572に表示される内容に相当する。
S1217で、デフォルト起動状態判断部319が、絞り込まれている各デバイスのアプリに対して、更新後の起動状態を決定する。これは、図9の欄575の初期表示及び、欄565において「自動」が選択された時に設定される内容に相当する。S1218で、配信設定制御部314は、アプリ配信設定画面(図9)をユーザインタフェース部311へ表示する。ここで、図9に一覧表示される初期値は、S1215〜S1217で決定した内容に従う。
次に、図9に示す画面の入力操作に従って、バージョンの選択とアプリの選択が変更されたかどうかを判断する(S1219、S1220)。フィールド563でバージョンの選択が変更された場合は、S1219からS1215に戻り、デバイス状態情報の絞り込み表示、及び配信可否(欄572)と更新後起動状態(欄575)の設定表示を更新する。フィールド561あるいは562でアプリの選択が変更された場合には、S1220からS1215に戻り、同様に設定表示を更新する。
さらに、図9の入力画面の中で、いずれかの操作ボタンが押下されたかどうかを判定する(S1221)。各デバイスへの配信日時および更新後起動状態が全て設定され、「登録」ボタン578が押下されると、S1221からS1222へ進む。S1221で「戻る」ボタン577が押下されたと判断された場合には、S1209、すなわち図8の画面の処理へ戻る。S1221で「キャンセル」ボタン579が押下されたと判断された場合には、S1223へ進み、処理を終了する。S1222で、アプリ配信設定部317が図9の画面に手入力された内容をアプリ配信管理テーブル336へ反映する。この後、S1223へ進み、処理を終了する。
次に、デフォルト起動状態判断部319におけるS1217の処理における判断方法について説明する。表Gに更新後状態テーブル338に格納されているアプリ更新後の起動状態指定値情報の例を示す。
起動状態指定値情報は、更新前登録ID、更新後登録ID、更新後起動状態の組合せの一覧を含む。更新前登録IDは、デバイスにインストールされているアプリの登録IDである。また、更新後登録IDは、配信設定を行う更新後のアプリの登録IDである。ここで、登録IDは、登録アプリ管理テーブル331で管理されているものを参照する。つまり、更新前登録IDと更新後登録IDの組合せに合致するアプリ配信設定がされるデバイスは、配信設定画面表示の配信後状態(欄575)の初期値は、この更新後起動状態で定義された値を使用する。該当する組み合わせが存在しない場合には、「維持」を初期値とする。
また、更新前登録IDあるいは更新後登録IDが「*」になっている場合には、任意の登録IDが合致すると判断する。例えば、表Gにおける3行目の例では、任意の登録IDのアプリから登録IDが1222にアプリ配信設定されるデバイスについては、初期値として「起動」を指定することを意味する。また、4行目の例では、登録IDが1212のアプリからアプリ配信設定される場合には、初期値として「停止」を指定することを意味する。表Gの記述方法の例においては、任意の登録IDの組合せを記述可能であるが、実際には、同じアプリIDでなければ更新出来ないため、異なるアプリ間の設定は参照されない。また、更新可能アプリ管理テーブル332によって更新可能な組み合わせが決定されるため、更新不可能な組み合わせについては、無効な設定となる。起動状態指定値情報は、販売会社システム30から担当者がアプリを登録する際に入力され、更新されることで維持される。
次にデバイス側の配信処理について説明する。図11は、デバイス400における配信処理のフローチャートの例である。図11は、デバイスの起動から、アプリおよびFWの配信を受ける処理全体を表す。この処理は配信処理部342で実行されるものである。
まず、S1000でデバイス400の電源が入ると、配信処理部342は、電源投入前にFWの更新処理があったかどうかを判断する(S1001)。これは、後述の図15におけるS1104の記録情報を確認して行なう。FWの更新があった場合には、S1002にて、FWの更新通知を配信システム10へ送信する。この通知は、図6の処理479に対応する。ここで送信される情報は、表Dに対応するデバイス管理テーブルを更新するための情報である。すなわち、デバイス400のデバイスID、デバイスモデル、更新後のバージョンである。
次に、S1003で、デバイス400における入力操作を確認する。入力操作がある場合には、その操作に応じてそれぞれの処理を行う。アプリインストールの入力操作(図4の処理410)がされた場合(「インストール」)には、S1004にて、アプリインストール部343を呼び出し、後述の図12に示す処理を行う。アプリ停止操作(図4の処理421)がされた場合(「停止」)には、S1005にて、アプリ起動制御部346を呼び出し、後述の図13に示す処理を行う。アプリ起動操作(図4の処理431)がされた場合(「起動」)には、S1006にて、アプリ起動制御部346を呼び出し、後述の図14に示す処理を行う。
S1007では、デバイス400における配信スケジュールがあるかどうかの判断を行う。これは、後述のS1016あるいはS1017において設定されたスケジュールを確認するものである。スケジュールがある場合にはS1008へ進む。S1008において、その時点でスケジュールされている配信日時となっているかどうか判断し、当該配信日時になっている場合にはS1009へ進み、未だ配信日時でない場合にはS1012へ進む。S1009では、スケジュールされている配信種別がアプリあるいはFWのいずれかを確認する。アプリの場合にはS1010へ進み、FWの場合にはS1011へ進む。アプリの場合は図5の処理452のタイミングからのシーケンスに対応し、FWの場合は図6の処理472のタイミングからのシーケンスに対応する。
S1010では、アプリ更新部344を呼び出し、後述の図16に示す処理を行ない、S1011では、FW更新部345を呼び出し、後述の図15の処理を行う。S1011のFW更新処理の呼び出し後は、アプリ同様次の処理へ進む。
次に、S1012にて、配信設定の確認を行う。これは、図4、図5、図6におけるシーケンスの処理445および446に対応する。配信処理部342は、処理445に対応して、配信システム10に対して、自身のデバイスIDを送信する。デバイス400に対する配信設定がある場合には、配信処理部342は、配信システム10から配信設定の情報を受信する。処理446で受信する配信設定情報は、アプリの配信の場合には、表Fにおけるデバイス400のデバイスIDに対応する情報である。配信処理部342は、配信システム10より、アプリの配信設定があるという情報に加えて、配信ID、アプリID、バージョン、配信日時、アプリ更新後の状態指示を受信する。
S1013では、配信システム10からのレスポンスに従って、配信設定の有無を判断する。配信設定がある場合にはS1014へ進み、配信設定が無い場合にはS1003へ戻り、配信処理を繰り返す。S1014では、配信システム10から受信した配信日時を記憶する。ここで記憶された配信日時は、S1007およびS1008における配信スケジュール有無の判断で参照される。
S1015では、受信した配信種別を判別する。配信システム10から受信した配信設定がアプリ配信設定であった場合はS1016へ進み、アプリ配信の配信設定を記憶してアプリ配信をスケジュールする。受信した配信設定がFW配信設定の場合はS1017へ進み、FW配信の配信設定を記憶してFW配信をスケジュールする。いずれの場合も配信設定を記憶したら、S1003へ戻り、配信処理を繰り返す。表Hに、デバイス400が記憶するアプリ配信の配信設定情報の例を示す。アプリ配信設定情報は、配信ID、アプリID、バージョン、配信日時、状態指示の組合せで記憶される。
図12に、図11におけるS1004に対応するアプリのインストール処理のフローチャートの例を示す。この処理はアプリインストール部343にて実行される。配信処理部342から呼び出されると、アプリインストール部343はS1030からの処理を開始する。
S1031では、配信システム10に対して、インストールするアプリの名称あるいはアプリIDを送信して、アプリのファイルをダウンロードするためのURLを取得する。この処理は図4の処理411および412に対応する。S1032では、取得したURLからアプリのファイルをダウンロードする。この処理は図4の処理413および414に対応する。S1033にて取得したアプリをインストールし、S1034でそのアプリを起動する。これら処理は図4の処理415に対応する。
S1035では、アプリの起動が成功して正常に動作しているかどうかを判断し、正常に動作している場合はS1037へ進み、正常に動作していない場合はS1036へ進む。S1037では、図4の処理416および418に対応する、アプリのインストール通知を配信システム10へ送信する。ここで、アプリインストール部343が配信システムへ送信する情報は、表Eの情報に対応する。すなわち、デバイス400のデバイスID、インストールしたアプリのアプリIDとバージョン、動作状態が現在「起動」であること、ライセンスに関する情報がある場合には、残数対応フラグのTRUEとライセンス残数を送信する。配信システム10からの応答(処理418)が返ってきたら、S1038にて処理を終了して、図11の処理へ戻る。S1036ではインストールのエラー表示を出し、S1038で処理を終了して、図11の処理へ戻る。
図13に、図11におけるS1005に対応するアプリの停止処理のフローチャートの例を示す。この処理はアプリ起動制御部346にて実行される。配信処理部342から呼び出されると、アプリ起動制御部346はS1050からの処理を開始する。
まず、S1051にて、指定されたアプリを停止する。この処理は図4の処理422に対応する。S1052にて、図4の処理423および425に対応する、指定されたアプリを停止したことを配信システム10へ通知する。ここで、アプリ起動制御部346が配信システム10へ送信する情報は、図12のS1037で送信する情報と同じく、表Eの情報に対応する。ただし、動作状態は現在「停止」であることを通知する。配信システム10からの応答(処理425)が返ってきたら、S1053にて処理を終了して、図11の処理へ戻る。
図14に、図11におけるS1006に対応するアプリの起動処理のフローチャートの例を示す。この処理はアプリ起動制御部346にて実行される。配信処理部342から呼び出されると、アプリ起動制御部346はS1070からの処理を開始する。
S1071にて、指定されたアプリを起動する。この処理は図4の処理432に対応する。S1072で、アプリの起動が成功して正常に動作しているかどうかを判断し、正常に動作している場合はS1074へ進み、正常に動作していない場合はS1073へ進む。S1074では、図4の処理433および435に対応する、アプリが起動したことを配信システム10へ送信する。ここで、アプリ起動制御部346が配信システム10へ送信する情報は、図12のS1037で送信する情報と同じく、表Eの情報に対応する。配信システム10からの応答(処理435)が返ってきたら、S1075にて処理を終了して、図11の処理へ戻る。S1073では起動のエラー表示を出し、S1075で処理を終了して、図11の処理へ戻る。
図15に、図11におけるS1011に対応するFW更新処理のフローチャートの例を示す。この処理はFW更新部345にて実行される。配信処理部342から呼び出されると、FW更新部345はS1100からの処理を開始する。
S1101では、配信システム10に対して、配信設定から得られる配信IDを送信し、更新するFWのファイルをダウンロードするためのURLを取得する。この処理は図6の処理473および474に対応する。S1102では取得したURLからFWのファイルをダウンロードする。この処理は図6の処理475および476に対応する。S1103にて、再起動した後にダウンロードしたFWで動作するように更新するFWをインストールする。そして、再起動時である図11のS1001でチェックされる更新処理情報を記憶する(S1104)。この処理は図6の処理477に対応する。そして、デバイス400を再起動して終了する(S1105)。
図16に、図11におけるS1010に対応するアプリ更新処理のフローチャートの例を示す。この処理はアプリ更新部344にて処理される。配信処理部342から呼び出されると、アプリ更新部344はS1120からの処理を開始する。
S1121では、配信システム10に対して、配信設定から得られる配信IDを送信し、更新するアプリのファイルをダウンロードするためのURLを取得する。この処理は図5の処理453および454に対応する。S1122では、取得したURLからアプリのファイルをダウンロードする。この処理は図5の処理455および456に対応する。次に、S1123にて、現在の対象アプリの起動状態を記憶する。S1124にて、アプリの起動状態を判断し、起動中の場合(「実行中」)には、S1125へ進み、アプリケーションの停止処理を行う。これは図5の処理458に対応する。続いてS1126に進み、アプリケーションの更新処理を行う。これは図5の処理459に対応する。S1124でアプリの起動状態が停止中の場合(「停止中」)には、停止処理なしでS1126へ進む。
その後、処理446で受信しS1016で記憶した配信設定(表H)に含まれるアプリ更新後の起動状態指示によって処理を分岐する(S1127)。起動状態指示が停止指示の場合(「停止」)は、停止状態のままで良いのでS1132へ進む。起動指示の場合(「起動」)はS1129へ進む。更新前状態を維持する指示(「状態維持」)の場合は、S1128へ進み、S1123で記憶した起動前状態を確認する。S1128において、更新前状態が「起動」であった場合はS1129へ進み、「停止」であった場合はS1132へ進む。
S1129ではインストールしたアプリを起動する。この処理は図5の処理461に対応する。S1130では、アプリの起動が成功して正常に動作しているかどうかを判断し、正常に動作している場合はS1132へ、正常に動作していない場合はS1131へ進む。S1131で、アプリの更新が失敗したことを配信システム10へ送信する。S1132で、アプリの更新が成功したこと、即ちアプリのインストール通知と同じ情報を配信システム10へ送信する。ここで、アプリインストール部434が配信システム10へ送信する情報は、図12のS1037で送信する情報と同じく、表Eの情報に対応する。ただし、動作状態は現在の状態に合わせて「起動」あるいは「停止」を通知する。S1131およびS1132における配信システム10への通知は、図5の処理462に対応する。配信システム10からの応答(処理464)が返ってきたら、S1133にて処理を終了して、図11の処理へ戻る。
図17に、配信システム10における、デバイス400からの配信設定確認リクエストの処理のフローチャートの例を示す。この処理は、図4〜図6の処理445および446に対応して、Webインターフェース部310で実行される。処理446で各デバイスから配信設定の有無の確認リクエストがくると、S1300からの処理を開始する。
先ず、S1301でリクエストを受信する。S1302では、リクエストで渡されるデバイスIDを持って、アプリ配信管理テーブル336からアプリ配信設定を検索する。S1303では、アプリ配信設定の有無を判断し、アプリ配信設定がある場合はS1304へ進み、無い場合はS1306へ進む。S1304では、アプリ配信管理テーブル336から対象デバイスIDの配信設定情報を取得して、アプリ配信設定情報として返却する。そして処理を終了する(S1305)。
S1306では、リクエストで渡されるデバイスIDを持って、FW配信管理テーブル337からFW配信設定を検索する。S1307でFW配信設定の有無を判断し、FW配信設定がある場合はS1308へ進み、無い場合はS1310へ進む。S1308では、FW配信管理テーブル337から対象デバイスIDの配信設定情報を取得して、FW配信設定情報として返却する。そして処理を終了する(S1309)。S1310では、アプリ、FWいずれの配信設定も無いものとして応答を返す。そして処理を終了する(S1311)。
図18に、配信システム10における、デバイス400からのアプリ更新通知リクエストの処理のフローチャートの例を示す。この処理は、図4の処理416、および図5の処理462に対応して、Webインターフェース部310で実行される。処理416あるいは462で各デバイスからアプリ更新通知のリクエストがくると、S1340からの処理を開始する。
まず、S1341でリクエストを受信する。S1342で、リクエストで渡される表Eに対応する情報をもって、インストール済みアプリ管理テーブル335を更新し、続けて、S1343で応答を返却する。そして処理を終了する(S1344)。
図19に、配信システム10における、デバイス400からのアプリ起動状態通知リクエストの処理のフローチャートの例を示す。この処理は、図4の処理423および433に対応して、Webインターフェース部310で実行される。処理423あるいは433で、各デバイスからアプリ起動状態通知のリクエストがくると、S1350からの処理を開始する。
先ず、S1351でリクエストを受信する。S1352で、リクエストで渡される表Eに対応する情報をもって、インストール済みアプリ管理テーブル335を更新し、続けて、S1353で応答を返却する。そして処理を終了する(S1354)。
以上、述べたように、配信システムにおいて、各デバイスのFWおよびアプリのインストール状態、起動状態を維持し、アプリの更新のために配信設定を行う際に、各デバイス毎に更新後の起動状態を指定できるようにした。これにより、複数デバイスのアプリの起動状態がそれぞれ異なっても、適切な起動状態で一括してリモート配信で更新が出来るようになった。また、更新元あるいは更新後のアプリの組合せ毎に更新後の起動状態を一括して自動設定が出来るようにしたことで、アプリ特有の事情に合わせて、容易に起動状態を一括設定することも可能となった。
<実施例2>
実施例1においては、図7におけるフィールド506(図10のS1203)、あるいは図8におけるフィールド526(同図S1212)の入力画面で指定しアップロードする一覧ファイルは、デバイスIDの一覧である。実施例2においては、ここでアップロードするファイルにアプリ更新後の状態指定の情報も含めた一覧ファイルを指定する。なお、実施例2については、実施例1と基本的な構成が同じであるため、実施例1との差異についてのみ説明する。
表Iに、アプリ更新後の起動状態指定も含めた対象デバイス一覧ファイルの例を示す。表Iに示す例は、例えば、CSVファイル(カンマ区切りファイル)のような形式でファイルに保存されているものとする。
表Iに示す対象デバイス一覧ファイルは、デバイスID、アプリIDおよび状態指示の組合せの一覧を含む。デバイスIDは配信設定対象デバイスを示し、アプリIDはデバイスIDに対応して、更新後状態を指定するアプリを示す。図10のS1203あるいはS1212で、表Iに示す例の一覧ファイルを読み込んだ場合、図10のS1217において、表Iの状態指示の列の値に従って、更新後起動状態のデフォルト値が決定される。また、一括設定の「自動」指定時の状態指示も同様に決定されるものとする。
以上、述べたように、配信システムにおいて対象デバイス一覧をファイルで指定する際に更新後起動状態をデバイス毎に指定することで、ユーザインタフェースで個別に設定するよりも柔軟な運用を行うことも可能となる。
<実施例3>
以下、実施例3について説明する。なお、実施例3については、実施例1と基本的な構成が同じであるため、実施例1との差異についてのみ説明する。図20に、実施例3における、デフォルト起動状態判断部319の処理のフローチャートの例を示す。
S1400で、実施例1における図10のS1217の処理を開始する。S1401では、図10のS1215で絞りこまれた配信対象デバイス一覧のデバイスIDを、順に処理するため、一時変数Target_IDに保持する。以後、S1402からS1417までの処理を各デバイスIDに対して繰り返し処理する。
S1402では、このフローチャートの処理における、デフォルト起動状態を決定するための一時変数TMPに「不明」を設定する。S1403では、インストール済みアプリ管理テーブル335に記録されているデバイスのアプリ情報を順に処理するため、該テーブルの各レコード(行)を一時変数Ref_IDに保持する。以後、S1404からS1413までの処理を各アプリ情報に対して繰り返し処理する。
S1404では、Ref_IDが示すレコードが記録しているアプリIDが現在配信設定しようとしているアプリIDと一致するかどうか判断し、一致する場合はS1405へ、一致しない場合はS1413へ進む。S1405では、Ref_IDが示すレコードが記録しているアプリバージョンがTarget_IDのデバイスにインストールされている配信対象アプリのバージョンと一致するかどうかを判断し、一致する場合はS1406へ、一致しない場合はS1413へ進む。S1406では、デバイス管理テーブル334からデバイスIDに対応するデバイスモデルを検索し、Ref_IDが示すレコードが記録しているデバイスIDのデバイスとTarget_IDのデバイスモデルが一致するかどうかを判断する。一致する場合はS1407へ、一致しない場合はS1413へ進む。S1407では、デバイス管理テーブル334からデバイスIDに対応するFWバージョンを検索し、Ref_IDが示すレコードが記録しているデバイスIDのデバイスとTarget_IDのFWバージョンが一致するかどうかを判断する。一致する場合はS1408へ、一致しない場合はS1413へ進む。
次に、S1408で、Ref_IDに記録されているアプリの起動状態を判断し、その結果によって処理を分岐する。起動状態が「不明」の場合はS1413へ進み、「起動」の場合はS1409へ進み、「停止」の場合はS1411へ進む。S1409では、一時変数TMPが「停止」になっているかどうかを判断する。TMPが「停止」である場合、同条件デバイスの中に「起動」状態のものと「停止」状態のものが混在していることを意味している。従って、S1414へ進み、Target_IDに対する状態指示を「維持」に決定する。TMPが「停止」ではない場合には、S1410へ進み、TMPに「起動」を設定して、S1403へ戻る。
S1411では、一時変数TMPが「起動」になっているかどうかを判断する。TMPが「起動」である場合、同条件デバイスの中に「起動」状態のものと「停止」状態のものが混在していることを意味している。従って、S1414へ進む。TMPが「起動」ではない場合は、S1412へ進み、TMPに「停止」を設定して、S1403へ戻る。
S1413では、インストール済みアプリ管理テーブル335の全レコードを検査したかどうかを判断する。まだ検査するレコードが残っている場合は、S1403へ戻り、処理を繰り返す。全レコードを検査した場合は、S1415にて、TMPS1402で設定した初期値の「不明」のままかどうかを判断する。TMPが「不明」の場合、Target_IDと同条件のデバイスが他に無いか、同条件の全てのデバイスにおいて、同条件のアプリの起動状態が全て「不明」、すなわち、情報が無いことを意味する。従って、S1414へ進み、Target_IDに対する状態指示を「維持」に決定する。TMPが「不明」以外の場合(「起動」あるいは「停止」)は、同条件の全デバイスにおいて、起動状態が「不明」のデバイスを除くと、全て同じ起動状態であることを意味する。従って、S1416へ進み、Target_IDのデバイスにおける起動状態が「不明」であっても、他のデバイスに合わせてTMPを更新後の起動状態と決定する。
S1414、S1416からS1417に進み、全ての配信対象デバイスについて検査したかどうかを判断する。全てのデバイスについて判断した場合は、S1418へ進み、処理を終了する。まだ検査するデバイスが残っている場合は、S1401へ戻り、処理を繰り返す。
以上、述べたように、デフォルト起動状態の判断において、同条件の他のデバイスのアプリの状態から判断することにより、対象デバイスが多い場合、かつ、アプリ等から一律に状態を決定できない場合でも更新後状態を一括して決定することが可能となる。この判断は、動作状態の不明デバイスを含め決定することができるという効果がある。
<実施例4>
以下、実施例4について説明する。なお、実施例4については、実施例1と基本的な構成が同じであるため、実施例1との差異についてのみ説明する。図21は、実施例4における、アプリ更新の配信設定シーケンス図である。図21は、実施例1における図5との差異部分を図示している。実施例1と同じ処理の部分については、図5と同じ番号を付している。
図21において、点線606で囲まれた範囲では、処理464で配信システム10が返す応答結果に従って、デバイス400がシーケンスを繰り返す。また、点線600で囲まれた範囲では、処理462で受信したデバイス400からの通知内容に従って、処理の有無が変わる。配信システム10は、デバイス400からのアプリ更新通知が失敗を示す場合、そして、デバイス400における対象アプリの更新前の起動状態が「起動」であった場合には、処理601に示す配信設定を行う。これは、更新前のバージョンのアプリに戻すために、元のバージョンのアプリの配信設定を行うものである。これにより、次回の配信設定確認(処理445)のタイミングにおいて、正常に動作していた元のバージョンのアプリに戻すことが可能となる。
また、処理464の応答において、配信システム10は、デバイス400に対するアプリの「起動」「停止」「状態維持」の指示を含めて返す。点線602および604で囲まれた範囲では、配信システム10からの応答の内容に従って、デバイス400の処理の内容および有無が変化する。処理603は、デバイス400がアプリの停止処理を行うことを示す。処理605は、デバイス400がアプリの起動処理を行うことを示す。処理の有無及びその判断処理について、次のフローチャートで説明する。
図22に、実施例4における、デバイス400のアプリ更新処理のフローチャートの例を示す。図22は、図16との差異部分を図示している。実施例1と同じ処理の部分については、図16と同じ番号を付している。
デバイス400は、S1131およびS1132において、更新通知をした後、配信システム10からの応答を受信する(S1500)。そして、S1501にて、配信システム10からの状態指示に従って、処理を分岐する。配信システム10からの状態指示が、「起動」の場合は、S1129へ戻り、再度アプリ起動処理を行う。状態指示が「停止」の場合は、S1502へ進み、アプリの停止処理を行い、アプリの更新処理を終了する。状態指示が「状態維持」の場合は、そのままアプリの更新処理を終了する。
図23に、実施例4における、配信システム10のアプリ起動状態通知リクエストの処理のフローチャートの例を示す。図23は実施例1における図18に替わるものである。実施例1と同じ処理の部分については、図18と同じ番号を付している。
S1341で受信した通知の内容に従って、S1520で更新が成功したかどうかを判断する。更新が成功している場合はS1342へ進み、アプリの状態情報を更新し、続いてS1527で、「状態維持」の指示を含めて応答する。更新が失敗した場合はS1521へ進む。S1521では、インストール済みアプリ管理テーブル335を検索し、対象デバイスにおける対象アプリの更新前の起動状態によって処理を分岐する。更新前の状態が「停止」であった場合はS1522へ進み、「起動」であった場合はS1524へ進む。
S1522では、停止状態でインストール済みアプリ管理テーブル335を更新する。そして、S1523で、デバイス400に対して、対象アプリの「停止」指示を含めて応答する。S1524では、インストール済みアプリ管理テーブル335を検索し、対象デバイスにおける対象アプリの更新前のアプリのバージョンを取得する。そして、アプリ配信管理テーブル336を更新し、更新前のバージョンのアプリの配信予約を入れる。さらに、S1525で、停止状態でインストール済みアプリ管理テーブル335を更新する。そして、S1526で、デバイス400に対して、対象アプリの「起動」指示を含めて応答する。S1525にて、「停止」状態で更新するのは、デバイス400においてアプリの再起動で失敗した場合にそれ以上起動指示を出さないようにするためである。
以上、述べたように、デバイスにおけるアプリ更新後の起動失敗に際しても、配信システムからの指示を送信することによって、配信システムの判断で適切な動作状態及び、正常なバージョンへの復帰が可能となる。
<その他の実施例>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。