(57)【要約】【課題】一実施形態は、更新プログラムの作成の労力を低減する。【解決手段】一実施形態に係る情報処理装置が実行するソフトウェア更新方法は、更新プログラムを適用する工程を含む。更新プログラムを適用する工程は、個別更新プログラムが適用されているソフトウェアに、更新プログラムを適用する場合、ソフトウェアを、個別更新プログラムを適用する前の状態に戻した後で、更新プログラムを適用する。個別更新プログラムは、ソフトウェアの第１のユーザ群が用いる情報処理装置を対象に配布される。更新プログラムは、第１のユーザ群を包含する第２のユーザ群が用いる情報処理装置を対象に配布される。【選択図】図５
2017134541.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの第１のユーザ群が用いる情報処理装置を対象に配布された個別更新プログラムが適用されている前記ソフトウェアに、前記第１のユーザ群を包含する第２のユーザ群が用いる情報処理装置を対象に配布された更新プログラムを適用する場合、前記ソフトウェアを、前記個別更新プログラムを適用する前の状態に戻した後で前記更新プログラムを適用する工程を含む、情報処理装置が実行するソフトウェア更新方法。
【請求項２】
更に、前記ソフトウェアに前記個別更新プログラムを適用する場合、前記個別更新プログラムと、前記個別更新プログラムによる前記ソフトウェアの更新箇所の更新前のデータとを含むバックワード情報を、記憶部に保存する工程を含み、
前記更新プログラムを適用する工程は、前記バックワード情報を用いて、前記ソフトウェアを、前記個別更新プログラムを適用する前の状態に戻す、
ことを特徴とする、請求項１に記載のソフトウェア更新方法。
【請求項３】
前記更新プログラムを適用する工程は、前記更新プログラムよりも一つ前に前記第２のユーザ群が用いる情報処理装置を対象に配布された前回更新プログラムが前記ソフトウェアに適用された後、前記個別更新プログラム及び前記第１のユーザ群が用いる情報処理装置を対象に配布されている第２の個別更新プログラムが前記ソフトウェアに適用されていた場合、前記ソフトウェアを、前記個別更新プログラム及び前記第２の個別更新プログラムを適用する前の状態に戻した後で、前記更新プログラムを適用する、ことを特徴とする請求項１又は２に記載のソフトウェア更新方法。
【請求項４】
ソフトウェアの第１のユーザ群が用いる情報処理装置を対象に配布された個別更新プログラムが適用されている前記ソフトウェアに、前記第１のユーザ群を包含する第２のユーザ群が用いる情報処理装置を対象に配布された更新プログラムを適用する場合、前記ソフトウェアを、前記個別更新プログラムを適用する前の状態に戻した後で前記更新プログラムを適用する更新部を含む、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びソフトウェア更新方法に関する。
【背景技術】
【０００２】
情報処理装置にインストールされているオペレーティングシステム（ＯＳ）、及びアプリケーションなどのソフトウェアを更新（アップデート）するための更新プログラムが作成され、配布されている。ユーザは、例えば、情報処理装置にインストールされている更新対象のソフトウェアに、配布された更新プログラムを適用することで、ソフトウェアを更新することができる。
【０００３】
また、例えば、或るソフトウェアにおいて、特定の法人に所属するユーザなど、一部のユーザの業務に影響を与える不具合が発覚することがある。この場合、一部のユーザの業務への影響を抑える為に、ソフトウェアの全ユーザの情報処理装置を対象とする更新プログラムの配布とは別に、個別の更新プログラムを逸早くリリースし、不具合に対処することがある。個別の更新プログラムは、例えば、最小限の動作確認を行った後で早いタイミングでリリースされるため、例えば、業務に影響を受ける一部のユーザが用いる情報処理装置を対象に配布され、そのユーザ群の情報処理装置にインストールされているソフトウェアに限定して適用される。
【０００４】
これに関し、複数のプログラムの更新中にエラーが発生しても更新前のプログラムのバージョンの組み合わせに戻すための技術が知られている。（例えば、特許文献１）また、プログラム等の更新に起因するアクシデントに対しても短時間に対処できる情報記憶装置及びそのダウンロード方法を提供するための技術が知られている。（例えば、特許文献２）ファームウェアの更新に伴うサービス停止期間を短くするための技術が知られている。（例えば、特許文献３）
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−６５７１号公報
【特許文献２】特開２００１−１１７７８０号公報
【特許文献３】特開２０１３−１６１４０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のように、或るソフトウェアにおいて、一部のユーザが用いる情報処理装置にインストールされているソフトウェアを対象に個別の更新プログラムを逸早くリリースして、ソフトウェアを更新することがある。しかし、この場合、ソフトウェアは個別の更新プログラムの適用で改変されるため、例えば、その後に全ユーザの情報処理装置を対象とした通常の更新プログラムを適用すると不具合を生じる恐れがある。そのため、個別の更新プログラムが適用されたソフトウェアを更新するために、通常の更新プログラムと対応する別の個別の更新プログラムが別途作成されることがある。その結果、更新プログラムの作成や検証の時間が増加したり、ソフトウェアのバージョン管理が複雑になったりといった問題が生じることがある。１つの側面では、本発明は、更新プログラムの作成の労力を低減することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一つの態様の情報処理装置が実行するソフトウェア更新方法は、更新プログラムを適用する工程を含む。更新プログラムを適用する工程は、個別更新プログラムが適用されているソフトウェアに、更新プログラムを適用する場合、ソフトウェアを、個別更新プログラムを適用する前の状態に戻した後で、更新プログラムを適用する。個別更新プログラムは、ソフトウェアの第１のユーザ群が用いる情報処理装置を対象に配布される。更新プログラムは、第１のユーザ群を包含する第２のユーザ群が用いる情報処理装置を対象に配布される。
【発明の効果】
【０００８】
更新プログラムの作成の労力を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】ソフトウェアの更新を例示する図である。
【図２】ソフトウェアに個別更新プログラムが適用される場合を例示する図である。
【図３】実施形態に係る情報処理装置の機能ブロック構成を例示する図である。
【図４】記憶部に記憶されている情報のマップとアプリケーションシステム領域の構成とを例示する図である。
【図５】実施形態に係るソフトウェアの更新処理を例示する図である。
【図６】実施形態の適用例を示す図である。
【図７】実施形態に係る情報処理装置を実現するためのコンピュータのハードウェア構成を例示する図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
【００１１】
図１は、ソフトウェアの更新を例示する図である。図１では、機種名：Ｆ−ＯＡの情報処理装置１００にインストールされている或るソフトウェアのバージョンを、（Ｎ−１）回目の更新で更新されたバージョン：Ｖ（Ｎ−１）から、Ｎ回目の更新でバージョン：Ｖ（Ｎ）に更新する場合を例示している。なお、情報処理装置１００は、例えば、スマートフォン、携帯電話機、タブレット端末、パーソナルコンピュータ（ＰＣ）、ノートＰＣなどを含んでよい。また、ソフトウェアは、任意のソフトウェアであってよく、例えば、ＯＳ及びアプリケーションなどであってよい。ソフトウェアは、例えばＦＯＴＡ（Firmware On-The-Air）方式で更新されてよく、又は他の方式を用いて更新されてもよい。ソフトウェアを提供する会社は、例えば、更新後のバージョン：Ｖ（Ｎ）のソフトウェアと、更新前のバージョン：Ｖ（Ｎ−１）のソフトウェアとのデータの差分から更新プログラムを作成し、サーバにアップロードして配布する（図１の生成・配布（１））。図１の例では、Ｎ−１回目からＮ回目の更新に対して、１本の更新プログラムが作成されている。情報処理装置１００のユーザは、例えば、サーバからソフトウェアの更新プログラムをダウンロードしてソフトウェアに適用し、ソフトウェアを更新（アップデート）する（図１の更新（１））。
【００１２】
また、上述のように、一部のユーザが用いる情報処理装置にインストールされているソフトウェアを対象とした個別の更新プログラムを逸早くリリース（公開）し、適用することがある。例えば、或るソフトウェアにおいて、一部のユーザの業務に影響を与える不具合が発覚した場合、業務への影響を抑える為に、その一部のユーザが用いる情報処理装置に対して、不具合を修正する個別の更新プログラムが逸早くリリースされる。なお、一部のユーザは例えば、特定の法人に所属するユーザなどであってよい。この場合、更新プログラムは、業務に影響を受ける一部のユーザが用いる情報処理装置を対象に配布され、そのユーザ群の情報処理装置にインストールされているソフトウェアに限定して適用される。なお、以降の説明では、一部のユーザが用いる情報処理装置を対象に限定して配布される更新プログラムを個別更新プログラムと呼ぶことがある。また、例えば、対象が一部のユーザが用いる情報処理装置に限定されない更新プログラムを、通常の更新プログラムと呼ぶことがある。通常の更新プログラムは、例えば、全ユーザの情報処理装置を対象に配布されてよい。
【００１３】
図２は、ソフトウェアに個別更新プログラムが適用される場合を例示する図である。図２では、Ｎ−１回目の通常の更新プログラムの適用後に、Ｎ回目の通常の更新プログラムを適用する場合を例示している。そして、この２つの通常の更新プログラムのリリースの期間に、Ａ社向けの個別更新プログラムと、Ｂ社向けの個別更新プログラムとがリリースされている。この場合、例えば、Ａ社とＢ社以外の個別更新プログラムが適用されていない通常のユーザの情報処理装置１００は、Ｎ−１回目の通常の更新プログラムの適用で更新されたバージョン：Ｖ（Ｎ−１）Ａのソフトウェアを使用している。そのため、ソフトウェアの提供会社は、通常のユーザに対しては、バージョン：Ｖ（Ｎ−１）Ａのデータと、Ｎ回目の通常の更新プログラムの適用後のバージョン：Ｖ（Ｎ）Ａのデータとの差分から更新プログラムを作成し、配布する（図２の生成・配布（１））。そして、通常のユーザは、配布された更新プログラムを用いてソフトウェアをバージョン：Ｖ（Ｎ）Ａへと更新する（図２の更新（１））。
【００１４】
また、Ａ社に所属するユーザ群は、Ａ社向けの個別更新プログラムが適用されたバージョン：Ｖ（Ｎ−１）Ｂのソフトウェアを使用している。そのため、ソフトウェアの提供会社は、例えば、Ａ社向けのＶ（Ｎ−１）Ｂと、Ｎ回目の通常の更新プログラムの適用後のＶ（Ｎ）Ａとのソフトウェアのデータの差分から、Ａ社向けに個別の更新プログラムを作成し、配布する（図２の生成・配布（２））。Ａ社のユーザは、Ａ社向けに配布された個別の更新プログラムを用いてソフトウェアをバージョン：Ｖ（Ｎ）Ａへと更新する（図２の更新（１））。
【００１５】
また同様に、Ｂ社に所属するユーザ群は、Ｂ社向けの個別更新プログラムが適用されたバージョン：Ｖ（Ｎ−１）Ｃのソフトウェアを使用している。そのため、ソフトウェアの提供会社は、例えば、Ｂ社向けのＶ（Ｎ−１）Ｃと、Ｎ回目の通常の更新プログラムの適用後のＶ（Ｎ）Ａのソフトウェアのデータの差分から、Ｂ社向けに個別の更新プログラムを作成し、配布する（図２の生成・配布（３））。Ｂ社のユーザは、Ｂ社向けに配布された個別の更新プログラムを用いてソフトウェアをバージョン：Ｖ（Ｎ）Ａへと更新する（図２の更新（１））。
【００１６】
例えば、以上のように、新たな通常の更新プログラムがリリースされた場合、個別更新プログラムが適用されているＡ社及びＢ社には、通常の更新プログラムとは別に、個別の更新プログラムが用意される。そのため、ソフトウェアをバージョン：Ｖ（Ｎ）Ａへと更新するために作成される更新プログラムの本数は３本となる。この様に、一部のユーザが用いる情報処理装置を対象とした個別更新プログラムをリリースし、その後に、通常の更新プログラムをリリースする場合、その通常の更新プログラムと対応する別の個別更新プログラムが作成されることがある。その結果、更新プログラムの作成や検証の時間が増加したり、ソフトウェアのバージョン管理が複雑になったりといった問題が生じることがある。そのため、一部のユーザが用いる情報処理装置のソフトウェアに個別更新プログラムが適用されている場合にも、更新プログラムの作成の労力を低減することができる技術の提供が望まれている。
【００１７】
以下で述べる実施形態では、ソフトウェアに個別更新プログラムを適用する場合、個別更新プログラムと、個別更新プログラムの適用で更新されるソフトウェアの更新箇所の更新前のデータとを含むバックワード情報が、例えば、記憶装置に記憶される。そして、情報処理装置１００は、個別更新プログラムが適用されているソフトウェアを通常の更新プログラムで更新する場合、記憶装置に記憶されたバックワード情報を用いて、個別更新プログラムを適用する前の状態にソフトウェアを戻す。その後、情報処理装置１００は、戻されたソフトウェアに対して、通常の更新プログラムを適用して更新を行う。そのため、個別更新プログラムが適用されたソフトウェアも、通常の更新プログラムで更新することができる。従って、更新プログラムの作成の労力を低減することができる。以下、図面を参照して、実施形態を詳細に説明する。
【００１８】
図３は、実施形態に係る情報処理装置１００の機能ブロック構成を例示する図である。情報処理装置１００は、例えば、制御部３００及び記憶部３０２を含んでいる。制御部３００は、例えば更新部３１１などの機能部を含んでいる。また、情報処理装置１００の記憶部３０２は、例えば、後述するマップ４００の情報などを記憶している。これらの各機能部の詳細及び記憶部３０２に格納されている情報の詳細については後述する。
【００１９】
図４は、実施形態に係る情報処理装置１００が備える記憶部３０２に記憶されている情報のマップ４００とそのアプリケーションシステム領域４１０の構成とを例示する図である。マップ４００は、例えば、メモリマップであってよい。図４のマップ４００において、アプリケーションシステム領域４１０は、複数のアプリケーションシステムファイルを含む。アプリケーションシステムファイル１は、他のアプリケーションシステムファイルと異なり、例えば、機種名、ソフトウェアバージョン、ビルド日時などのソフトウェアに関する情報を含む管理ファイルであってよい。アプリケーションシステムファイル１は、例えば、ＯＳ、及び個別にインストールされるソフトウェアなどの複数のソフトウェアについての情報を含んでいてよい。アプリケーションシステムファイル１は、例えば、ソフトウェアの更新の実行時に変更される。アプリケーションシステムファイル１の機種名は、例えば、情報処理装置１００の機種を識別するための情報であってよい。また、アプリケーションシステムファイル１のソフトウェアバージョンは、現在インストールされているソフトウェアのバージョンであってよい。アプリケーションシステムファイル１のビルド日時は、例えば、ソフトウェアを現在のバージョンへと更新するために適用された更新プログラムが作成された日時であってよい。また、マップ４００は、更に、例えば、更新プログラムをダウンロードするための更新プログラムダウンロード領域４０１と、バックワード情報を保存するためのバックワード情報保存領域４０２とを含んでよい。なお、別の実施形態では、例えば、機種名、ソフトウェアバージョン、ビルド日時などのソフトウェアの更新に関する情報は、記憶部３０２に保持されたデータベースで管理されるなど、別の方式で管理されてもよい。
【００２０】
図５は、実施形態に係るソフトウェアの更新処理を例示する図である。情報処理装置１００の制御部３００は、例えば、情報処理装置１００が起動すると図５の処理を開始してよい。
【００２１】
ステップ５０１（以降、ステップを“Ｓ”と記載し、例えば、Ｓ５０１と表記する）において情報処理装置１００の制御部３００は、例えば、ソフトウェアの更新プログラムがリリースされているかを、更新プログラムを配布するサーバに問い合わせる。例えば、更新プログラムがＦＯＴＡで配布される場合には、制御部３００は、ＦＯＴＡのポーリングタイミングが来ると、ＦＯＴＡを配布するサーバに新しい更新プログラムがリリースされているか問い合わせる。或いは、例えば、ユーザが手動でソフトウェアの更新の確認指示を入力すると、制御部３００は、更新プログラムがリリースされているかの問い合わせを実行してよい。
【００２２】
Ｓ５０２において制御部３００は、サーバからの応答結果に基づいて、ソフトウェアの更新プログラムが自情報処理装置１００に向けてリリースされているか否かを判定する。新しいバージョンの更新プログラムがリリースされていない場合（Ｓ５０２がＮｏ）、フローはＳ５０１に戻る。一方、新しいバージョンの更新プログラムがリリースされている場合（Ｓ５０２がＹｅｓ）、フローはＳ５０３に進む。
【００２３】
なお、新しい更新プログラムが自情報処理装置１００に向けてリリースされているか否かの判定は、例えば、以下のように実施することができる。例えば、サーバにリリースされている更新プログラムが通常の更新プログラムであれば、更新プログラムは適用対象を制限されずに配布されている。そのため、制御部３００は、サーバで配布されている更新プログラムのバージョンが、アプリケーションシステムファイル１のソフトウェアバージョンよりも新しければ、Ｓ５０２においてＹｅｓと判定してよい。
【００２４】
また、サーバにリリースされている更新プログラムが個別更新プログラムである場合、サーバは、更新プログラムを一部の情報処理装置１００に制限して配布する。なお、この配布の制限は、例えば、情報処理装置１００のＩＭＥＩを用いて行うことができる。ＩＭＥＩは、International Mobile Equipment Identityの略称である。ＩＭＥＩは、一台一台の携帯電話端末及び携帯データ通信端末などの情報処理装置１００に付与される国際的な識別番号である。そして、例えば、個別更新プログラムの適用対象をＡ社の情報処理装置１００に限定する場合、Ａ社に出荷された情報処理装置１００のＩＭＥＩを指定して個別更新プログラムをサーバからリリースする。それにより、個別更新プログラムの配布対処をＡ社の情報処理装置１００に限定することが可能である。この場合、制御部３００は、例えば、リリースされている個別更新プログラムの適用対象として指定されたＩＭＥＩに自情報処理装置１００に対して付与されたＩＭＥＩが含まれているかを判定する。そして、適用対象に自情報処理装置１００のＩＭＥＩが含まれている場合に、個別更新プログラムのバージョンが、アプリケーションシステムファイル１のソフトウェアバージョンよりも新しければ、制御部３００は、Ｓ５０２においてＹｅｓと判定してよい。
【００２５】
Ｓ５０３において制御部３００は、リリースされた新しい更新プログラムをダウンロードする。例えば、制御部３００は、リリースされた新しい更新プログラムを記憶部３０２の更新プログラムダウンロード領域４０１に保存してよい。
【００２６】
Ｓ５０４において制御部３００は、保存した更新プログラムが、個別更新プログラムであるか否かを判定する。例えば、制御部３００は、ダウンロードした更新プログラムのソフトウェアのバージョンを確認し、個別更新プログラムであるか否かを判定してよい。一例として、ソフトウェアのバージョンはＶｘｘｙの形式で表されてよい。ここでは、ｘｘは数字で、初期出荷時を０１とし、以降、新しい通常の更新プログラムのリリースのたびに、０２、０３、・・・と順次インクリメントするものとする。また、ｙはアルファベットで、Ａが通常の更新プログラムを表し、Ａ以外の例えばＢ〜Ｚの値は、個別更新プログラムを表すものとする。この場合、制御部３００は、ダウンロードした更新プログラムのバージョンを確認し、末尾がＡなら通常の更新プログラムと判定してよい。また、制御部３００は、ダウンロードした更新プログラムのバージョンを確認し、末尾がＡ以外のＢ〜Ｚなら、個別更新プログラムと判定してよい。例えば、この様に、ソフトウェアのバージョンを所定のルールに従って決めることで、制御部３００は、更新プログラムのバージョンから、その更新プログラムが、通常の更新プログラムであるか、個別更新プログラムであるかを判別することが可能である。
【００２７】
Ｓ５０４においてダウンロードした更新プログラムが個別更新プログラムである場合（Ｓ５０４がＹｅｓ）、フローはＳ５０５に進む。Ｓ５０５において制御部３００は、ダウンロードした個別更新プログラムと、その個別更新プログラムで更新されるソフトウェアの更新箇所の更新前のデータとを含むバックワード情報を記憶部３０２のバックワード情報保存領域４０２に保存する。なお、後述するように、制御部３００は、バックワード情報保存領域４０２に保存したバックワード情報を用いることで、ソフトウェアを個別更新プログラムによる更新前の状態に戻すことができる。Ｓ５０６において制御部３００は、ダウンロードした個別更新プログラムをソフトウェアに適用してソフトウェアを更新し、フローはＳ５０１に戻る。
【００２８】
また、Ｓ５０４においてダウンロードした更新プログラムが個別更新プログラムでない場合（Ｓ５０４がＮｏ）、更新プログラムは通常の更新プログラムであり、この場合、フローはＳ５０７に進む。Ｓ５０７において制御部３００は、通常の更新プログラムを前回適用して以降、現在までに個別更新プログラムがソフトウェアに適用された実績があるか否かを判定する。例えば、図５の動作フローでは、後述するＳ５１１で述べるように、制御部３００は、通常の更新プログラムを適用すると、記憶部３０２のバックワード情報保存領域４０２に記憶されているバックワード情報を削除する。そのため、制御部３００は、例えば、記憶部３０２のバックワード情報保存領域４０２に個別更新プログラムに対応するバックワード情報が記憶されていなければ、Ｓ５０７においてＮｏと判定してよく、この場合、フローはＳ５０９に進む。一方、例えば、記憶部３０２のバックワード情報保存領域４０２に個別更新プログラムに対応するバックワード情報が記憶されていれば、制御部３００は、Ｓ５０７においてＹｅｓと判定してよく、この場合、フローはＳ５０８に進む。
【００２９】
Ｓ５０８において、制御部３００は、通常の更新プログラムが前回適用されて以降、現在までに適用された個別更新プログラムによるソフトウェアの変更を元に戻し、ソフトウェアを、通常の更新プログラムが前回適用された後の状態まで戻す。例えば、制御部３００は、Ｓ５０５で記憶部３０２のバックワード情報保存領域４０２に保存したバックワード情報を用いて、ソフトウェアを個別更新プログラムを適用する前の状態に戻してよい。なお、例えば、通常の更新プログラムが前回適用されて以降、現在までに複数の個別更新プログラムがソフトウェアに適用されている場合もある。この場合、制御部３００は、例えば、適用された順序の遅い個別更新プログラムに対応するバックワード情報から順に用いて、個別更新プログラムを適用する前の状態に戻し、複数の個別更新プログラムのそれぞれによるソフトウェアの更新を元に戻してよい。
【００３０】
Ｓ５０９において制御部３００は、Ｓ５０３でダウンロードした通常の更新プログラムをソフトウェアに適用する。なお、通常の更新プログラムは、個別更新プログラムをソフトウェアに適用することで修正される不具合を修正するプログラムを含んでいてよい。それにより、個別更新プログラムの適用で修正されていた不具合は、個別更新プログラムの適用前の状態にソフトウェアを戻した場合にも、通常の更新プログラムによって修正することができる。
【００３１】
Ｓ５１０において制御部３００は、記憶部３０２のバックワード情報保存領域４０２にバックワード情報が保存されているか否かを判定する。Ｓ５１０において記憶部３０２のバックワード情報保存領域４０２に個別更新プログラムに対応するバックワード情報が保存されていない場合（Ｓ５１０がＮｏ）、フローはＳ５０１に戻る。一方、Ｓ５１０において記憶部３０２のバックワード情報保存領域４０２に個別更新プログラムに対応するバックワード情報が保存されている場合（Ｓ５１０がＹｅｓ）、フローはＳ５１１に進む。Ｓ５１１において制御部３００は、バックワード情報保存領域４０２に保存されているバックワード情報を削除する。なお、バックワード情報保存領域４０２に複数のバックワード情報が記憶されている場合には、制御部３００は、その複数のバックワード情報を削除する。そのため、例えば、記憶部３０２のバックワード情報保存領域４０２には、前回の通常の更新プログラムが適用されて以降、次の通常の更新プログラムが適用されるまでの間の期間に適用された個別更新プログラムのバックワード情報が保持されてよい。Ｓ５１１において制御部３００が、記憶部３０２のバックワード情報保存領域４０２からバックワード情報を削除すると、フローはＳ５０１に戻る。
【００３２】
図５の動作フローにおいて、制御部３００は、例えば更新部３１１として動作する。
【００３３】
以上で述べた様に、制御部３００は、通常の更新プログラムがリリースされた際に、前回の通常の更新プログラムを適用した後、個別更新プログラムがソフトウェアに適用されている場合は、ソフトウェアを個別更新プログラムを適用する前の状態に戻す。その後、制御部３００は、リリースされた通常の更新プログラムをソフトウェアに適用する。従って、例えば、ソフトウェアの提供業者は、個別更新プログラムをリリースした後に通常の更新プログラムをリリースする場合にも、その個別更新プログラム毎に、更新プログラムを生成しなくてよい。
【００３４】
また、上記の実施形態では、制御部３００は、ソフトウェアに個別更新プログラムを適用する場合に、個別更新プログラムと、その個別更新プログラムにより更新される更新箇所の更新前のデータとを含むバックワード情報を、記憶部３０２に保存する。そのため、実施形態によれば、制御部３００は、個別更新プログラムを適用したソフトウェアを、個別更新プログラムを適用する前の状態に戻すことができる。
【００３５】
また、制御部３００は、バックワード情報を用いてソフトウェアを個別更新プログラムを適用する前の状態に戻した場合、そのバックワード情報を記憶部３０２から削除する。そのため、制御部３００は、例えば、記憶部３０２にバックワード情報が保存されているか否かを確認することで、ソフトウェアに個別更新プログラムが適用されているか否かを判定することができる。或いは、更新プログラムによる更新後のソフトウェアと、個別更新プログラムによる更新後のソフトウェアのバージョン名を区別可能なように、所定の規則に従ってバージョン名を設定する。それにより、制御部３００は、アプリケーションシステムファイル１を参照し、現在のソフトウェアのバージョン名を確認することで、ソフトウェアに個別更新プログラムが適用されているか否かを判定することができる。
【００３６】
以上で述べた様に、上記の実施形態によれば、個別更新プログラムをリリースし、その後に通常の更新プログラムをリリースする場合に、更新プログラムの作成時間、及び検証時間の増加を抑えることができる。また、ソフトウェアバージョン管理が複雑になることを抑制することができる。従って、実施形態によれば、更新プログラムの作成の労力を低減することができる。
【００３７】
なお、上記の実施形態では、Ｓ５０７において通常の更新プログラムを前回適用して以降、現在までに個別更新プログラムがソフトウェアに適用されているか否かを判定している。しかしながら、例えば、情報処理装置１００にソフトウェアがインストールされた直後など、通常の更新プログラムの適用実績がない場合には、制御部３００は、Ｓ５０７で、これまでに適用された個別更新プログラムがあるか否かを判定してよい。
【００３８】
また、上記の動作フローでは、Ｓ５０７において前回通常の更新プログラムが適用されて以降に適用された個別更新プログラムの特定を、記憶部３０２のバックワード情報保存領域４０２に保存されたバックワード情報に基づいて行っている。しかしながら、別の実施形態では、例えば、制御部３００は、適用された通常の更新プログラムと、個別更新プログラムの適用の際に、適用日時等の情報を記憶部３０２に保存する。そして、制御部３００は、その情報を参照することで、前回通常の更新プログラムが適用されて以降に適用された個別更新プログラムの特定を行ってもよい。
【００３９】
また、上記の実施形態では、無線通信を介して更新プログラムをダウンロードする場合を例示しているが、実施形態はこれに限定されるものではない。例えば、制御部３００は、ＳＤカードなどの可搬型記憶媒体に保存された更新プログラムを読み出してソフトウェアに適用してもよい。
【００４０】
また、上記の実施形態では、例えば、全ユーザの情報処理装置を対象に配布される通常の更新プログラムと、一部のユーザが用いる情報処理装置を対象に配布される個別更新プログラムとを例に説明を行っている。しかしながら、実施形態はこれに限定されるものではない。例えば、或るソフトウェアの第１のユーザ群が用いる情報処理装置を対象に配布された個別更新プログラムが適用されているソフトウェアに、第２のユーザ群が用いる情報処理装置を対象に配布された更新プログラムを適用する場合にも実施形態は適用できる。なお、第２のユーザ群は、第１のユーザ群を包含し、且つ、第１のユーザ群よりも大きなユーザ群であってよい。この場合、制御部３００は、ソフトウェアを、第１のユーザ群が用いる情報処理装置を対象に配布された個別更新プログラムを適用する前の状態に戻した後で、第２のユーザ群が用いる情報処理装置を対象に配布された更新プログラムを適用する。それにより、更新プログラムの作成の労力を低減することができる。また、この場合に、第２のユーザ群が用いる情報処理装置を対象に配布される更新プログラムは、上述の全ユーザの情報処理装置を対象とする通常の更新プログラムと対応していてよい。しかしながら、第２のユーザ群が用いる情報処理装置を対象に配布される更新プログラムは、全ユーザではなく、一部のユーザが用いる情報処理装置を対象に配布された更新プログラムであってもよい。また、第１のユーザ群が用いる情報処理装置を対象に配布された個別更新プログラムは、上述の実施形態における一部のユーザが用いる情報処理装置を対象に配布される個別更新プログラムと対応していてよい。
【００４１】
＜適用例＞
以上で述べた実施形態の適用例を、以下に述べる。図６は、実施形態の適用例を示す図である。図６では、通常の更新プログラムによる２回目の更新でバージョン：Ｖ０２Ａに更新されているソフトウェアへの個別更新プログラムと、通常の更新プログラムとの適用について例示する。
【００４２】
先ず、Ａ社の機種名：Ｆ−０Ａの情報処理装置１００のソフトウェアへの個別更新プログラムの適用について説明する。Ａ社は、例えば、工事関係の業務を行う会社であり、建造物の工事状況、状態を記録するために、情報処理装置１００で写真を大量に保存している。また、機種名：Ｆ−０Ａの情報処理装置１００のソフトウェア（バージョン：Ｖ０２Ａ）では、筐体の温度が基準値を超えたり、又は電池残量が基準値以下になったりすると、カメラの抑止処理を起動し、カメラのアプリケーションを終了させる仕様となっている。ここで、仮に記憶部３０２にカメラで撮像した写真データを保存している最中にカメラ抑止処理が起動した場合、写真データの保存の完了前にカメラのアプリケーションが終了してしまい、保存中の写真データが壊れてしまう恐れがあるとする。
【００４３】
この不具合はＡ社にとっては致命的な不具合となり得る。そのため、例えば、ソフトウェアの提供会社は、カメラの抑止処理の起動時に写真データを保存中の場合、保存が完了するまでカメラのアプリケーションを終了しないように仕様を修正するための個別更新プログラム（Ｖ０２Ｂ）を作成する。そして、最小限の動作確認を行った後、早いタイミングで個別更新プログラム（Ｖ０２Ｂ）をリリースする。この場合、例えば、最小限の動作確認しか行われていない為、リリースの対象はＡ社の情報処理装置１００に限定する。なお、個別更新プログラムを適用する対象となる情報処理装置１００の指定は、例えば、上述のように、情報処理装置１００のＩＭＥＩを用いて行うことができる。
【００４４】
Ａ社の機種名：Ｆ−０Ａの情報処理装置１００の制御部３００は、例えば、ソフトウェアの提供会社のサーバに、新しい更新プログラム（Ｖ０２Ｂ）がリリースされたことを確認すると、更新プログラム（Ｖ０２Ｂ）をダウンロードする。制御部３００は、ダウンロードが終了すると、ダウンロードした更新プログラムのソフトウェアバージョンを確認する。ここでダウンロードされる更新プログラムのバージョンはＶ０２Ｂであり、末尾がＡ以外となっている。そのため、制御部３００は、ダウンロードした更新プログラムを個別更新プログラムと判定してよい。この場合、制御部３００は、個別更新プログラムと、個別更新プログラムで更新される箇所の更新前のデータとを含むバックワード情報を記憶部３０２に保存する。その後、制御部３００は、個別更新プログラムをソフトウェアに適用し、ソフトウェアを、バージョン：Ｖ０２ＡからＶ０２Ｂへと更新する（図６の個別更新（１））。
【００４５】
続いて、Ｂ社の機種名：Ｆ−０Ａの情報処理装置１００のソフトウェアへの個別更新プログラムの適用について説明する。例えば、Ｂ社は或るビルディングの５階に事務所を構えており、５階には他にも多くの会社が事務所を構えている。その結果、２．４ＧＨｚ帯は、ＷｉＦｉ（登録商標）の電波が密集しており、電波干渉により通信速度が遅くなり、つながりにくいという問題が生じている。なお、ＷｉＦｉの周波数帯域は、自動、２．４ＧＨｚ固定、及び５ＧＨｚ固定の３パターンが設定可能であるものとし、５ＧＨｚは屋外の使用が制限されるため、通常は自動、又は２．４ＧＨｚ固定に設定されるものとする。しかし、Ｂ社は先に述べた理由により、ＷｉＦｉ帯域を５ＧＨｚ固定に設定して情報処理装置１００を使用している。ところが、バージョン：Ｖ０２Ａのソフトウェアには、ＷｉＦｉ帯域を５ＧＨｚ固定で長時間使用すると通信ができなくなるという不具合が潜んでいたことが、或るタイミングで発覚したとする。
【００４６】
この不具合はＢ社にとっては通信ができなくなるという業務に支障をきたす重大な不具合である。そのため、例えば、ソフトウェアの提供会社は、この不具合を修正するための個別更新プログラム（バージョン：Ｖ０２Ｃ）を作成し、最小限の動作確認を行った後、早いタイミングでリリースする。なお、最小限の動作確認しか行っていない為、例えば、ソフトウェアの適用対象は、Ｂ社に出荷したＩＭＥＩの情報処理装置１００に限定する。
【００４７】
Ｂ社の機種名：Ｆ−０Ａの情報処理装置１００の制御部３００は、例えば、ソフトウェアの提供会社のサーバに、新しい更新プログラム（Ｖ０２Ｃ）がリリースされたことを確認すると、更新プログラム（Ｖ０２Ｃ）をダウンロードする。制御部３００は、ダウンロードが終了すると、ダウンロードした更新プログラムのソフトウェアバージョンを確認する。ここでダウンロードされる更新プログラムのバージョンはＶ０２Ｃであり、末尾がＡ以外となっている。そのため、制御部３００は、ダウンロードした更新プログラムを個別更新プログラムと判定してよい。そして、制御部３００は、個別更新プログラムと、個別更新プログラムで更新される箇所の更新前のデータとを含むバックワード情報を、記憶部３０２に保存する。その後、制御部３００は、個別更新プログラムを適用し、ソフトウェアを、バージョン：Ｖ０２ＡからＶ０２Ｃへと更新する（図６の個別更新（２））。
【００４８】
ここまでにおいて、Ａ社、及びＢ社の機種名：Ｆ−０Ａの情報処理装置１００のソフトウェアには、個別更新プログラムが適用され、ソフトウェアバージョンがそれぞれ、Ｖ０２Ｂ、及びＶ０２Ｃに更新されている。情報処理装置１００の制御部３００は、個別更新の後も、例えば、ソフトウェアの提供会社のサーバに、新しい更新プログラムがリリースされているかを問い合わせ続ける。
【００４９】
そして、ソフトウェアの提供会社は、Ａ社向け個別更新プログラム及びＢ社向け個別更新プログラムのリリース後、Ａ社にリリースしたカメラ抑止処理の修正と、Ｂ社にリリースしたＷｉＦｉの修正との両方を行ったソフトウェアの動作検証を行う。そして、提供会社は、動作検証の結果、不具合が無いことが確認できたら、両方の修正を含むバージョン：Ｖ０３Ａの通常の更新プログラムを作成し、機種名：Ｆ−０Ａの全情報処理装置１００を対象に配布する（図６の生成・配布(1)）。
【００５０】
上述のように、Ａ社、Ｂ社の機種名：Ｆ−０Ａの情報処理装置１００の制御部３００は、新しい更新プログラムがリリースされているかを継続して確認しており、新しい更新プログラムがリリースされた場合、その更新プログラムをダウンロードする。そして、制御部３００は、ダウンロードした更新プログラムのソフトウェアバージョンを確認する。ここで、ダウンロードした更新プログラムのソフトウェアバージョンはＶ０３Ａであり、末尾がＡなので、制御部３００は、更新プログラムが通常の更新プログラムであると判定できる。
【００５１】
そして、制御部３００は、通常の更新プログラムを適用する際に、前回の通常の更新プログラムの適用後に個別更新プログラムが適用されている場合には、個別更新プログラムで更新された箇所を前回の通常の更新プログラムの適用後の状態まで戻す。それから、制御部３００は、今回配布された通常の更新プログラムを適用する。
【００５２】
例えば、Ａ社の機種名：Ｆ−０Ａの情報処理装置１００の制御部３００は、Ｖ０２ＡからＶ０２Ｂへの個別更新の際に記憶部３０２に保存したバックワード情報を使って、ソフトウェアをＶ０２Ａの適用直後の状態まで戻す（図６のバックワード（１））。その後、制御部３００は、Ｖ０２Ａの適用直後の状態まで戻したソフトウェアに、Ｖ０３Ａへの通常の更新プログラムを適用し、ソフトウェアを更新する（図６の更新（１））。なお、更新を実行すると、制御部３００は、Ｖ０２ＡからＶ０２Ｂへの個別更新の際に記憶部３０２に保存したバックワード情報を削除してよい。
【００５３】
また、Ｂ社の機種名：Ｆ−０Ａの情報処理装置１００の場合は、Ｖ０２ＡからＶ０２Ｃへの個別更新の際に記憶部３０２に保存したバックワード情報を使って、ソフトウェアをＶ０２Ａの適用直後の状態まで戻す（図６のバックワード（２））。その後、制御部３００は、Ｖ０２Ａの適用直後の状態まで戻したソフトウェアに、Ｖ０３Ａへの通常の更新プログラムを適用し、ソフトウェアを更新する（図６の更新（１））。更新を実行すると、制御部３００は、Ｖ０２ＡからＶ０２Ｃへの個別更新の際に記憶部３０２に保存したバックワード情報を削除してよい。
【００５４】
以上で述べた様に、バックワード情報を用いて、個別更新プログラムによる更新箇所を、更新前の元の状態に戻すことで、個別更新プログラムを適用されたソフトウェアに対しても通常の更新プログラムを適用することができる。
【００５５】
なお、図６の例は、Ｖ０２Ａ及びＶ０３Ａの２つの通常の更新プログラムの間にＡ社、及びＢ社の情報処理装置に対して、それぞれ１つの個別更新プログラムがリリースされた場合を述べている。しかしながら、例えば、１社に向けて個別更新プログラムのリリースを複数回実施した場合にも、適用された順序の遅い個別更新プログラムから順に、バックワード情報を用いて適用前の状態に戻すことで、実施形態を適用することができる。
【００５６】
例えばＣ社の機種名：Ｆ−０Ａの情報処理装置１００が、Ｖ０２Ａへの通常の更新プログラムをソフトウェアに適用した後、Ｖ０２Ｂ、及びＶ０２Ｃの個別更新プログラムをソフトウェアに適用し、その後Ｖ０３Ａへの通常の更新プログラムを適用するとする。この場合、制御部３００は、Ｖ０２Ｂへのソフトウェアの更新時に、Ｖ０２ＢからＶ０２Ａへと戻すためのバックワード情報を記憶部３０２に保存する。また、制御部３００は、Ｖ０２Ｃへのソフトウェアの更新時に、Ｖ０２ＣからＶ０２Ｂへと戻すためのバックワード情報を記憶部３０２に保存する。
【００５７】
そして、Ｖ０３Ａへのソフトウェアの更新時、制御部３００は、先ずＶ０２ＣからＶ０２Ｂへと戻すためのバックワード情報を使ってバージョン：Ｖ０２Ｂまでソフトウェアを戻す。続いて、制御部３００は、Ｖ０２ＢからＶ０２Ａへと戻すためのバックワード情報を使ってバージョン：Ｖ０２Ａまでソフトウェアを戻す。その後、制御部３００は、バージョン：Ｖ０３Ａへの通常の更新プログラムを適用し、ソフトウェアを更新する。例えば、この様に処理を実行することで、或る会社の情報処理装置１００のソフトウェアに複数の個別更新プログラムを適用した場合にも、通常の個別更新プログラムを適用することができる。
【００５８】
以上において実施形態を例示したが、実施形態はこれに限定されるものではない。例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、又は、一部の処理が省略されてもよい。例えば、図５のＳ５０５とＳ５０６との処理は順序を入れ替えて実行してもよい。
【００５９】
図７は、実施形態に係る情報処理装置１００を実現するためのコンピュータ７００のハードウェア構成を例示する図である。図７の情報処理装置１００を実現するためのハードウェア構成は、例えば、プロセッサ７０１、メモリ７０２、記憶装置７０３、読取装置７０４、通信インタフェース７０６、及び入出力インタフェース７０７を備える。なお、プロセッサ７０１、メモリ７０２、記憶装置７０３、読取装置７０４、通信インタフェース７０６、入出力インタフェース７０７は、例えば、バス７０８を介して互いに接続されている。
【００６０】
プロセッサ７０１は、メモリ７０２を利用して例えば上述の動作フローの手順を記述したプログラムを実行することにより、上述した制御部３００を含む各機能部の一部または全部の機能を提供する。また、記憶部３０２は、例えばメモリ７０２、記憶装置７０３、及び着脱可能記憶媒体７０５を含む。情報処理装置１００のプロセッサ７０１は、例えば、記憶装置７０３に格納されているプログラムを読み出して実行することで、更新部３１１として機能する。情報処理装置１００のメモリ７０２には、例えば、マップ４００の情報が格納されている。
【００６１】
メモリ７０２は、例えば半導体メモリであり、ＲＡＭ領域及びＲＯＭ領域を含んでいてよい。なお、ＲＡＭは、Random Access Memoryの略称である。また、ＲＯＭは、Read Only Memoryの略称である。記憶装置７０３は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記憶装置である。
【００６２】
読取装置７０４は、プロセッサ７０１の指示に従って着脱可能記憶媒体７０５にアクセスする。着脱可能記憶媒体７０５は、例えば、半導体デバイス（ＵＳＢメモリ等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、光学的作用により情報が入出力される媒体（ＣＤ−ＲＯＭ、ＤＶＤ等）などにより実現される。なお、ＵＳＢは、Universal Serial Busの略称である。ＣＤは、Compact Discの略称である。ＤＶＤは、Digital Versatile Diskの略称である。
【００６３】
通信インタフェース７０６は、プロセッサ７０１の指示に従ってネットワーク７２０を介してデータを送受信する。入出力インタフェース７０７は、例えば、入力装置及び出力装置との間のインタフェースであってよい。入力装置は、例えばユーザからの指示を受け付けるキーボードやマウスなどのデバイスである。出力装置は、例えばディスプレーなどの表示装置、及びスピーカなどの音声装置である。
【００６４】
実施形態に係る各プログラムは、例えば、下記の形態で情報処理装置１００に提供される。
（１）記憶装置７０３に予めインストールされている。
（２）着脱可能記憶媒体７０５により提供される。
（３）プログラムサーバなどのサーバ７３０から提供される。 
【００６５】
なお、図７を参照して述べた情報処理装置１００を実現するためのコンピュータ７００のハードウェア構成は、例示であり、実施形態はこれに限定されるものではない。例えば、上述の機能部の一部または全部の機能がＦＰＧＡ及びＳｏＣなどによるハードウェアとして実装されてもよい。なお、ＦＰＧＡは、Field Programmable Gate Arrayの略称である。ＳｏＣは、System-on-a-chipの略称である。
【００６６】
以上において、いくつかの実施形態が説明される。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施され得ることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【符号の説明】
【００６７】
１００      情報処理装置
３００      制御部
３０２      記憶部
３１１      更新部
７００      コンピュータ
７０１      プロセッサ
７０２      メモリ
７０３      記憶装置
７０４      読取装置
７０５      着脱可能記憶媒体
７０６      通信インタフェース
７０７      入出力インタフェース
７０８      バス
７２０      ネットワーク
７３０      サーバ
【図１】
2017134541.tif 000003
【図２】
2017134541.tif 000004
【図３】
2017134541.tif 000005
【図４】
2017134541.tif 000006
【図５】
2017134541.tif 000007
【図６】
2017134541.tif 000008
【図７】
2017134541.tif 000009