(57)【要約】【課題】設定情報がバイナリデータ形式で記憶された情報処理装置上で動作するソフトウェアのバージョンが変更された場合に、バージョン変更前において設定済みの設定情報の内容をバージョン変更後においても維持する。【解決手段】不揮発性メモリ１２には、ユーザデータ１４の旧データ構造を定義する旧構造体のメンバを識別するメンバＩＤ及びメンバに対する設定値の記憶位置を示すオフセット情報を含むＮＶ側メンバ情報１６が記憶される。ＲＯＭ１８には、ユーザデータ１４の新データ構造を定義する新構造体のメンバを識別するメンバＩＤ及びメンバに対する設定値の記憶位置を示すオフセット情報を含むＲＯＭ側メンバ情報２０が記憶される。コンバート処理部２８は、ＮＶ側メンバ情報１６のオフセット情報に基づいて、各メンバの設定値を不揮発性メモリ１２から読み出し、ＲＯＭ側メンバ情報２０のオフセット情報に基づいて読み出した各設定値を書き戻す。【選択図】図１
2018018370.tif 000002
【特許請求の範囲】
【請求項１】
自装置に関する設定情報であって１又は複数の変数それぞれに対応する設定値を含む設定情報をバイナリ形式で記憶する設定情報記憶部と、
自装置上で動作するソフトウェアのバージョン変更前における前記設定情報に含まれる１又は複数の第１変数を識別する第１変数識別情報、及び、前記設定情報記憶部における前記第１変数に対応する設定値の記憶位置を示す第１記憶位置情報を含む第１変数情報を記憶する第１変数情報記憶部と、
前記ソフトウェアのバージョン変更後における前記設定情報に含まれる１又は複数の第２変数を識別する第２変数識別情報、及び、前記設定情報記憶部における前記第２変数に対応する設定値の記憶位置を示す第２記憶位置情報を含む第２変数情報を記憶する第２変数情報記憶部と、
前記第１記憶位置情報が示す前記記憶位置に基づいて、前記第１変数に対応する前記設定値を前記設定情報記憶部から読み出し、前記第１及び第２変数識別情報に基づいて、当該第１変数に対応する前記第２変数を特定し、前記第２記憶位置情報が示す、特定された前記第２変数に対応する前記記憶位置に基づいて、読み出した前記設定値を前記設定情報記憶部に書き込む転換処理を実行する設定情報転換部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記第１変数情報は、さらに、前記第１変数に対応する設定値のデータサイズを示す第１サイズ情報を含み、
前記第２変数情報は、さらに、前記第２変数に対応する設定値のデータサイズを示す第２サイズ情報を含み、
前記設定情報転換部は、前記第１記憶位置情報及び前記第１サイズ情報が示す記憶領域から前記第１変数に対応する前記設定値を読み出し、前記第２記憶位置情報及び前記第２サイズ情報が示す、特定された前記第２変数に対応する記憶領域に、読み出した前記設定値の少なくとも一部を書き込む、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２変数情報は、さらに、前記第２変数のデータ型を示すデータ型情報を含み、
前記設定情報転換部は、前記データ型情報が示す、特定された前記第２変数のデータ型に基づいて、読み出した前記設定値の少なくとも一部を書き込む、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
コンピュータを、
自装置に関する設定情報であって１又は複数の変数それぞれに対応する設定値を含む設定情報をバイナリ形式で記憶する設定情報記憶部と、
自装置上で動作するソフトウェアのバージョン変更前における前記設定情報に含まれる１又は複数の第１変数を識別する第１変数識別情報、及び、前記設定情報記憶部における前記第１変数に対応する設定値の記憶位置を示す第１記憶位置情報を含む第１変数情報を記憶する第１変数情報記憶部と、
前記ソフトウェアのバージョン変更後における前記設定情報に含まれる１又は複数の第２変数を識別する第２変数識別情報、及び、前記設定情報記憶部における前記第２変数に対応する設定値の記憶位置を示す第２記憶位置情報を含む第２変数情報を記憶する第２変数情報記憶部と、
前記第１記憶位置情報が示す前記記憶位置に基づいて、前記第１変数に対応する前記設定値を前記設定情報記憶部から読み出し、前記第１及び第２変数識別情報に基づいて、当該第１変数に対応する前記第２変数を特定し、前記第２記憶位置情報が示す、特定された前記第２変数に対応する前記記憶位置に基づいて、読み出した前記設定値を前記設定情報記憶部に書き込む転換処理を実行する設定情報転換部と、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
従来、自装置に関する設定情報を記憶する情報処理装置が知られている。例えば、複合機などの画像処理装置には、プリント機能を選択したときのプリント設定（初期設定）などを示す設定情報が、画像処理装置内に設けられる記憶部に記憶される。これらの設定情報は、例えば情報処理装置の利用者あるいは管理者などにより設定される。
【０００３】
情報処理装置上で動作するソフトウェア（例えばファームウェア）のバージョンが変更された場合、変更前と変更後との間において、設定情報の互換性が問題となる場合がある。そこで、従来、情報処理装置上で動作するソフトウェアのバージョンが変更された場合であっても、バージョン変更前の設定情報をバージョン変更後においても利用できるようにする技術が提案されている。
【０００４】
例えば、特許文献１には、設定情報に含まれる各データのバージョン変更前と変更後における対応関係を示す変換ルール情報に基づいて設定情報を変換する技術が開示されている。また、特許文献２には、予め用意された設定移行プログラムによって、情報処理装置上で動作するソフトウェアのバージョン変更に伴って、設定情報の移行（変換）処理を実行するシステムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２８７０５５号公報
【特許文献２】特開２００９−１６４９０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報処理装置において、記憶部（例えばメモリなど）の容量削減、あるいは設定情報の高速な読み書きを実現するために、データ容量の小さいバイナリ形式で設定情報を記憶部に記憶することが考えられる。一般的に、記憶部からのバイナリデータの読み出しは、読み出し部（例えば制御部など）が、当該バイナリデータのデータ構造を示す情報に基づいて、記憶部のメモリアドレスあるいはデータサイズなどを指定することで実行される。
【０００７】
情報処理装置上で動作するソフトウェアのバージョンが変更され、設定情報のデータ構造が変更されると、設定情報に含まれる各データが格納されるべきメモリアドレスあるいはサイズなどが変更される。バイナリ形式で設定情報が記憶されている場合、ソフトウェアのバージョン変更により設定情報のデータ構造が変更されると、読み出し部が参照するデータ構造と、記憶部に実際に記憶されている設定情報のデータ構造とが互いに異なることになる。その結果、設定情報を読み出せなくなってしまう。これにより、情報処理装置の利用者あるいは管理者などは、ソフトウェアのバージョン変更後に、再度、設定情報の設定を行わなければならないという問題があった。なお、ソフトウェアのバージョン変更前後における設定情報に含まれる各データの対応関係を示す情報や、設定情報の変換処理を行うための専用プログラムは、それ自体の容量が膨大となるのが一般的であり、バイナリ形式で設定情報を記憶する情報処理装置においてそれらを適用するのは好ましくない。
【０００８】
本発明の目的は、設定情報がバイナリデータ形式で記憶された情報処理装置上で動作するソフトウェアのバージョンが変更された場合に、バージョン変更前において設定済みの設定情報の内容をバージョン変更後においても維持することにある。
【課題を解決するための手段】
【０００９】
請求項１に係る発明は、自装置の関する設定情報であって１又は複数の変数それぞれに対応する設定値を含む設定情報をバイナリ形式で記憶する設定情報記憶部と、自装置上で動作するソフトウェアのバージョン変更前における前記設定情報に含まれる１又は複数の第１変数を識別する第１変数識別情報、及び、前記設定情報記憶部における前記第１変数に対応する設定値の記憶位置を示す第１記憶位置情報を含む第１変数情報を記憶する第１変数情報記憶部と、前記ソフトウェアのバージョン変更後における前記設定情報に含まれる１又は複数の第２変数を識別する第２変数識別情報、及び、前記設定情報記憶部における前記第２変数に対応する設定値の記憶位置を示す第２記憶位置情報を含む第２変数情報を記憶する第２変数情報記憶部と、前記第１記憶位置情報が示す前記記憶位置に基づいて、前記第１変数に対応する前記設定値を前記設定情報記憶部から読み出し、前記第１及び第２変数識別情報に基づいて、当該第１変数に対応する前記第２変数を特定し、前記第２記憶位置情報が示す、特定された前記第２変数に対応する前記記憶位置に基づいて、読み出した前記設定値を前記設定情報記憶部に書き込む転換処理を実行する設定情報転換部と、を備えることを特徴とする情報処理装置である。
【００１０】
請求項２に係る発明は、前記第１変数情報は、さらに、前記第１変数に対応する設定値のデータサイズを示す第１サイズ情報を含み、前記第２変数情報は、さらに、前記第２変数に対応する設定値のデータサイズを示す第２サイズ情報を含み、前記設定情報転換部は、前記第１記憶位置情報及び前記第１サイズ情報が示す記憶領域から前記第１変数に対応する前記設定値を読み出し、前記第２記憶位置情報及び前記第２サイズ情報が示す、特定された前記第２変数に対応する記憶領域に、読み出した前記設定値の少なくとも一部を書き込む、ことを特徴とする請求項１に記載の情報処理装置である。
【００１１】
請求項３に係る発明は、前記第２変数情報は、さらに、前記第２変数のデータ型を示すデータ型情報を含み、前記設定情報転換部は、前記データ型情報が示す、特定された前記第２変数のデータ型に基づいて、読み出した前記設定値の少なくとも一部を書き込む、ことを特徴とする請求項２に記載の情報処理装置である。
【００１２】
請求項４に係る発明は、コンピュータを、自装置に関する設定情報であって１又は複数の変数それぞれに対応する設定値を含む設定情報をバイナリ形式で記憶する設定情報記憶部と、自装置上で動作するソフトウェアのバージョン変更前における前記設定情報に含まれる１又は複数の第１変数を識別する第１変数識別情報、及び、前記設定情報記憶部における前記第１変数に対応する設定値の記憶位置を示す第１記憶位置情報を含む第１変数情報を記憶する第１変数情報記憶部と、前記ソフトウェアのバージョン変更後における前記設定情報に含まれる１又は複数の第２変数を識別する第２変数識別情報、及び、前記設定情報記憶部における前記第２変数に対応する設定値の記憶位置を示す第２記憶位置情報を含む第２変数情報を記憶する第２変数情報記憶部と、前記第１記憶位置情報が示す前記記憶位置に基づいて、前記第１変数に対応する前記設定値を前記設定情報記憶部から読み出し、前記第１及び第２変数識別情報に基づいて、当該第１変数に対応する前記第２変数を特定し、前記第２記憶位置情報が示す、特定された前記第２変数に対応する前記記憶位置に基づいて、読み出した前記設定値を前記設定情報記憶部に書き込む転換処理を実行する設定情報転換部と、として機能させることを特徴とするプログラムである。
【発明の効果】
【００１３】
請求項１又は４に記載の発明によれば、設定情報がバイナリデータ形式で記憶された情報処理装置上で動作するソフトウェアのバージョンが変更された場合に、バージョン変更前において設定済みの設定情報の内容をバージョン変更後においても維持することができる。
【００１４】
請求項２に記載の発明によれば、ソフトウェアのバージョン変更により設定情報に含まれる各変数のデータサイズが変更された場合であっても、適切に転換処理を行うことができる。
【００１５】
請求項３に記載の発明によれば、設定情報記憶部から読み出した設定情報を第２変数のデータ型の適切なデータとして前記設定情報記憶部に書き戻すことができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係る画像処理装置の構成概略図である。
【図２】第１実施形態における、コンバート処理前のＮＶ側メンバ情報の内容を示す概念図である。
【図３】第１実施形態における、ＲＯＭ側メンバ情報の内容を示す概念図である。
【図４】本実施形態の処理の流れを示すフローチャートである。
【図５】設定情報のコンバート処理の流れを示すフローチャートである。
【図６】第１実施形態における、コンバート処理後のＮＶ側メンバ情報の内容を示す概念図である。
【図７】第２実施形態における、コンバート処理前のＮＶ側メンバ情報の内容を示す概念図である。
【図８】第２実施形態における、ＲＯＭ側メンバ情報の内容を示す概念図である。
【図９】第２実施形態における、コンバート処理後のＮＶ側メンバ情報の内容を示す概念図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態を図面に基づいて説明する。
【００１８】
＜第１実施形態＞
図１には、本実施形態に係る情報処理装置としての画像処理装置１０の構成概略図が示されている。画像処理装置１０は、いわゆる複合機であり、プリント機能、コピー機能、スキャン機能、あるいはファックス機能などを有する装置である。
【００１９】
不揮発性メモリ１２は、例えばハードディスクあるいはフラッシュメモリ（ＳＤメモリカードあるいはＵＳＢ（Universal Serial Bus）メモリ）などから構成される。不揮発性メモリ１２は、画像処理装置１０に対して着脱可能となっていてもよい。不揮発性メモリ１２は、電源の供給を遮断しても記憶済みの情報を保持するものである。不揮発性メモリ１２には、設定情報としてのユーザデータ１４、及び第１変数情報としてのＮＶ側メンバ情報１６が記憶される。つまり、不揮発性メモリ１２は、設定情報記憶部及び第１変数情報記憶部として機能する。
【００２０】
ユーザデータ１４は、画像処理装置１０の動作に関する情報である。例えば、ユーザデータ１４には、画像処理装置１０において各機能が選択された場合の当該機能の設定（初期設定）などの情報が含まれる。ユーザデータ１４は、画像処理装置１０の利用者（ユーザ）あるいは管理者によって適宜設定されてよい。ユーザが画像処理装置１０を利用する場合にユーザを識別するための認証処理が行われる場合は、ユーザデータ１４はユーザ毎に記憶されてもよい。
【００２１】
ユーザデータ１４は、バイナリ形式で記憶される。これにより、不揮発性メモリ１２の低容量化が実現され、あるいは、不揮発性メモリ１２からのユーザデータ１４の高速な読み書き処理が実現される。
【００２２】
ユーザデータ１４のデータ構造は、後述のＲＯＭ（Read Only Memory）１８に記憶される、画像処理装置１０上で動作するソフトウェアとしてのファームウェアによって定義される。本実施形態においては、ユーザデータ１４のデータ構造は、１又は複数の変数としてのメンバを含む構造体で定義され、Ｃ言語によって以下のように定義されるものとする。
struct AAA{
int aaa;
short bbb;
short ccc;
long ddd;
}
【００２３】
ここで、「AAA」は構造体名である。「int aaa」、「short bbb」、「short ccc」、「long ddd」がそれぞれメンバを示す。「int aaa」を例に取ると、「int」がメンバのデータ型を示し、「aaa」がメンバのメンバ名を示す。なお、上記例では、ユーザデータ１４は１つの構造体から定義されているが、ユーザデータ１４のデータ構造は複数の構造体から定義されてもよい。
【００２４】
ユーザデータ１４は、上記のような構造体の各メンバに設定される設定値を含む。例えば、メンバ「int aaa」に対する設定値、メンバ「short bbb」に対する設定値、メンバ「short ccc」に対する設定値、及び「long ddd」に対する設定値を含む。
【００２５】
ＮＶ側メンバ情報１６は、不揮発性メモリ１２に記憶されているユーザデータ１４のデータ構造を定義する構造体のメンバに関する情報を含むものである。なお、ＮＶ側メンバ情報１６もバイナリ形式で不揮発性メモリ１２に記憶される。
【００２６】
ＲＯＭ１８に記憶されるファームウェアのバージョン変更（バージョンアップ及びバージョンダウンの双方を含む）が行われることによって、新バージョンのファームウェア（以下「新ファームウェア」と記載する）におけるユーザデータ１４のデータ構造（以下「新データ構造」と記載する）を定義する１又は複数の構造体（以下「新構造体」と記載する）のメンバが変更された場合であっても、不揮発性メモリ１２は、旧バージョンのファームウェア（以下「旧ファームウェア」と記載する）におけるユーザデータ１４のデータ構造（以下「旧データ構造」と記載する）を定義する１又は複数の構造体（以下「旧構造体」と記載する）のメンバに関する情報をＮＶ側メンバ情報１６として保持し続ける。つまり、ファームウェアのバージョンが変更された場合、ＮＶ側メンバ情報１６は旧構造体のメンバに関する情報を示すものとなる。
【００２７】
図２に、ＮＶ側メンバ情報１６の内容が示されている。本実施形態においては、ＮＶ側メンバ情報１６は、旧構造体に含まれる第１変数としてのメンバを識別、つまり一意に特定する第１変数識別情報としてのメンバＩＤ、及び、旧構造体の先頭アドレスから当該旧構造体に含まれるメンバに対応する設定値が記憶された記憶領域の先頭アドレスまでのバイトオフセットを示すオフセット情報を含んでいる。ＮＶ側メンバ情報１６に含まれるオフセット情報は、第１変数に対応する設定値の記憶位置を示す第１記憶位置情報として機能する。メンバＩＤは、ファームウェアの作成者（プログラマ）によって各メンバに付与されるものである。また、図２には示されていないが、ＮＶ側メンバ情報１６は、旧構造体の先頭アドレスを示す情報も含んでいる。
【００２８】
なお、図２において、メンバＩＤ「１」は上述の構造体におけるメンバ「int aaa」を示し、メンバＩＤ「２」はメンバ「short bbb」を示し、メンバＩＤ「３」はメンバ「short ccc」を示し、メンバＩＤ「４」はメンバ「long ddd」を示している。図２に示したＮＶ側メンバ情報１６によれば、各メンバＩＤが示すメンバに対応する設定値の記憶位置を把握することができる。例えば、メンバＩＤ「２」が示すメンバ（本例ではメンバ「short bbb」）に対応する設定値は、構造体「AAA」の先頭アドレスからオフセット４バイトから開始する記憶領域に記憶されていることが把握できる。
【００２９】
ＲＯＭ１８には、画像処理装置１０を動作させるためのプログラムが記憶される。また、ＲＯＭ１８には、画像処理装置１０上で動作する種々のソフトウェアが記憶される。当該ソフトウェアには、画像処理装置１０の各機能に対応するファームウェア、あるいは画像処理装置１０の機能全体に対応するファームウェアなどが含まれてよい。本実施形態では、ＲＯＭ１８には画像処理装置１０の機能全体に対応するファームウェアがインストールされ、当該ファームウェアのバージョンによりユーザデータ１４のデータ構造が変更され得るとする。当該ファームウェアは画像処理装置１０のユーザあるいは管理者などによってインストールされる。また、ＲＯＭ１８には、当該ファームウェアのバージョンを示す情報が記憶される。
【００３０】
ＲＯＭ１８には、ＲＯＭ１８にインストールされたファームウェアにおけるユーザデータ１４のデータ構造を定義する構造体のメンバに関する情報を含む第２変数情報としてのＲＯＭ側メンバ情報２０が記憶される。つまり、ＲＯＭ１８は第２変数情報記憶部として機能する。
【００３１】
ここで、ファームウェアのバージョン変更が行われ、ＲＯＭ１８に新ファームウェアがインストールされた場合、上述のように、ＮＶ側メンバ情報１６としては、旧データ構造を定義する旧構造体のメンバに関する情報が保持される一方、ＲＯＭ側メンバ情報２０には新データ構造を定義する新構造体のメンバに関する情報が保持される。
【００３２】
本実施形態においては、旧データ構造と新データ構造とが互いに異なるものとし、新データ構造は、以下の新構造体により定義されるとする。
struct AAA{
int aaa;
short bbb;
double xxx;
short ccc;
long ddd;
}
【００３３】
本実施形態においては、新構造体は、第２変数としてのメンバを５つ含む。詳しくは、旧構造体に比して「double xxx」が追加されている。このような場合、従来においては、メンバ「short ccc」及びメンバ「long ddd」のオフセットが変更されるため、これらのメンバの値を適切に読み込むことができなくなる。その結果、後述の制御部２６は、ユーザデータ１４が構造体「AAA」のデータであることを認識できず、旧ファームウェア時に設定されたユーザデータ１４全体を読み込むことができなくなってしまう。
【００３４】
図３に、ＲＯＭ側メンバ情報２０の内容が示されている。本実施形態においては、ＲＯＭ側メンバ情報２０は、新構造体に含まれるメンバを識別する第２変数識別情報としてのメンバＩＤ、及び、新構造体の先頭アドレスから当該新構造体に含まれるメンバに対応する設定値が記憶される記憶領域の先頭アドレスまでのバイトオフセットを示すオフセット情報を含んでいる。ＲＯＭ側メンバ情報２０に含まれるオフセット情報は、第２変数に対応する設定値の記憶位置を示す第２記憶位置情報として機能する。
【００３５】
なお、図３において、メンバＩＤ「１」は上述の構造体におけるメンバ「int aaa」を示し、メンバＩＤ「２」はメンバ「short bbb」を示し、メンバＩＤ「３」はメンバ「short ccc」を示し、メンバＩＤ「４」はメンバ「long ddd」を示し、メンバＩＤ「５」はメンバ「double xxx」を示している。このように、ＮＶ側メンバ情報１６及びＲＯＭ側メンバ情報２０において、新旧構造体において同一のメンバには同一のメンバＩＤが付与される。
【００３６】
さらに、図３に示されるように、ＲＯＭ側メンバ情報２０は、各メンバＩＤが示すメンバが含まれる構造体の構造体名を示す構造体名情報、各メンバのメンバ名を示すメンバ名情報、及び、各メンバに対応する設定値のデータサイズを示す第２サイズ情報としてのデータサイズ情報を含んでいる。各メンバのオフセット情報、及びデータサイズ情報に基づいて、当該メンバに対応する設定値が記憶される不揮発性メモリ１２内の記憶領域が決定される。また、図３には示されていないが、ＲＯＭ側メンバ情報２０は、新構造体の先頭アドレスを示す情報を含んでいる。
【００３７】
ＲＡＭ（Random Access Memory）２２には、各種データが一時的に書き込まれる。画像処理装置１０において処理が行われる際に、必要なデータがＲＡＭ２２上に展開され、展開されたデータに基づいて制御部２６が処理を行う。なお、ＲＡＭ２２は揮発性メモリであり、画像処理装置１０がパワーオフされるなどしてＲＡＭ２２への電源の供給が遮断されると、ＲＡＭ２２に記憶された内容は消去される。
【００３８】
入力部２４は、タッチパネルあるいはボタンなどを含んで構成される。入力部２４は、画像処理装置１０のユーザあるいは管理者などの指示を画像処理装置１０に入力するために用いられる。例えば、ユーザがユーザデータ１４を入力する際に入力部２４が用いられる。
【００３９】
制御部２６は、例えばＣＰＵ（Central Processing Unit）、あるいはマイクロコンピュータなどを含んで構成され、ＲＯＭ１８に記憶されたプログラムに従って画像処理装置１０の各部を動作させるものである。制御部２６は、当該プログラムにより、設定情報転換部としてのコンバート処理部２８としても機能する。
【００４０】
コンバート処理部２８は、ＮＶ側メンバ情報１６及びＲＯＭ側メンバ情報２０に基づいて、ユーザデータ１４の内容の少なくとも一部を維持しつつ、ユーザデータ１４のデータ構造を旧構造体によって定義される旧データ構造から新構造体によって定義される新データ構造に転換する転換処理としてのコンバート処理を行う。
【００４１】
以下、図２に示す内容のＮＶ側メンバ情報１６が不揮発性メモリ１２に記憶され、図３に示す内容のＲＯＭ側メンバ情報２０がＲＯＭ１８に記憶された場合を例にして、コンバート処理部２８が行うコンバート処理について説明する。なお、本実施形態では、ファームウェアのバージョン変更により、ユーザデータ１４のデータ構造を定義する構造体の構造体名、並びに、同一のメンバＩＤが示すメンバのデータ型及びデータサイズは変更されないものとする。
【００４２】
ファームウェアのバージョン変更が行われた場合、コンバート処理部２８は、ＮＶ側メンバ情報１６及びＲＯＭ側メンバ情報２０に基づいて、旧データ構造のユーザデータ１４を不揮発性メモリ１２から読み出す。
【００４３】
メンバＩＤ「３」を例にすると、まず、コンバート処理部２８は、ＲＯＭ側メンバ情報２０を参照して、メンバＩＤ「３」が示すメンバが含まれる構造体名「AAA」を特定する。次に、コンバート処理部２８は、ＮＶ側メンバ情報１６におけるメンバＩＤ「３」に関連付けられたオフセット情報「６バイト」に基づいて、旧データ構造における構造体「AAA」の先頭アドレスから６バイト目を読み出し開始位置として特定する。また、コンバート処理部２８は、ＲＯＭ側メンバ情報２０におけるメンバＩＤ「３」に関連付けられたデータサイズ情報「２バイト」に基づいて、特定した読み出し開始位置から２バイト分を読み出し領域として特定する。そして、コンバート処理部２８は、特定した読み出し領域から設定値を読み出す。読み出された設定値は、旧構造体におけるメンバ「short ccc」の設定値である。コンバート処理部２８は、読み出した設定値と当該メンバＩＤ「３」を関連付けて、ＲＡＭ２２に保持する。
【００４４】
上記の処理をＲＯＭ側メンバ情報２０に含まれる各メンバＩＤについて行う。それにより、各メンバＩＤ「１」〜「４」に関連付けられた各設定値がＲＡＭ２２に保持される。
【００４５】
メンバＩＤ「５」が示すメンバ「long ddd」は、新構造体において新たに追加されたメンバであるため、メンバＩＤ「５」に関する情報はＮＶ側メンバ情報１６に含まれていない。このように、ＲＯＭ側メンバ情報２０に含まれ、ＮＶ側メンバ情報１６に含まれないメンバＩＤに対しては、ＲＡＭ２２おいて、予め定められた所定値が関連付けられる。当該所定値は、画像処理装置１０のユーザあるいは管理者によって設定されてもよく、あるいは固定値（例えば「０」）であってもよい。なお、ＲＯＭ側メンバ情報２０に含まれず、ＮＶ側メンバ情報１６に含まれるメンバＩＤについては設定値の読み出し処理を行わない。
【００４６】
上記の処理により、ＲＯＭ側メンバ情報２０に含まれる各メンバＩＤに対して設定値が関連付けられてＲＡＭ２２に保持される。
【００４７】
次いで、コンバート処理部２８は、ＲＯＭ側メンバ情報２０に含まれるメンバＩＤ、オフセット情報、及びデータサイズ情報に基づいて、ＲＡＭ２２に保持した各設定値を不揮発性メモリ１２に書き戻す処理を行う。例えば、ＲＯＭ側メンバ情報２０におけるメンバＩＤ「３」に関連付けられたオフセット情報「１４バイト」及びデータサイズ情報「２バイト」に基づいて、新データ構造における構造体「AAA」のオフセット１４バイトから２バイト分の記憶領域を書き込み領域として特定する。そして、特定された書き込み領域に、ＲＡＭ２２に保持したメンバＩＤ「３」に関連付けられた設定値を書き込む。
【００４８】
メンバＩＤ「３」が示すメンバ「short ccc」に対応する設定値は、旧データ構造においては、旧構造体「AAA」の先頭アドレスからオフセット６バイトが示す位置に記憶されていたが、新データ構造においては、新構造体「AAA」の先頭アドレスからオフセット１４バイトが示す位置に記憶されることになっている。つまり、新旧データ構造においてメンバ「short ccc」に対応する設定値の記憶位置が変わっている。このような場合であっても、コンバート処理部２８は、ＮＶ側メンバ情報１６に基づいて、旧データ構造のユーザデータ１４からメンバ「short ccc」に対応する設定値を読み出し、ＲＯＭ側メンバ情報２０に基づいて、新データ構造においてメンバ「short ccc」に対応する設定値が書き込まれるべき記憶領域に、読み出した設定値を書き込むことができる。
【００４９】
以上の書き戻し処理によって、ユーザデータ１４の内容が維持されつつ、ユーザデータ１４のデータ構造が旧データ構造から新データ構造に変換される。つまり、たとえファームウェアのバージョン変更によりユーザデータ１４のデータ構造が変化したとしても、ユーザデータ１４の内容を引き継ぐことができる。
【００５０】
本実施形態では、コンバート処理部２８は、ファームウェアのバージョンが変更された後に、画像処理装置１０が起動されたタイミングでコンバート処理を行う。
【００５１】
画像処理装置１０の構成概略は以上の通りである。以下、図４及び図５に示すフローチャートに従って、画像処理装置１０の処理の流れについて説明する。図５に示すフローチャートは、図４に示すフローチャートに含まれる、設定情報のコンバート処理（ステップＳ１４）の詳細を示すものである。なお、ここでは、図４に示すフローチャートの開始時において、不揮発性メモリ１２には、図２に示す内容のＮＶ側メンバ情報１６が記憶されているものとする。また、図４に示すフローチャートの開始前において、画像処理装置１０のユーザあるいは管理者によって、画像処理装置１０に新ファームウェアがインストールされ、ＲＯＭ１８に新ファームウェアが記憶されたものとする。それと共に、ＲＯＭ１８には、図３に示す内容のＲＯＭ側メンバ情報２０が記憶されたものとする。
【００５２】
ステップＳ１０において、コンバート処理部２８は、不揮発性メモリ１２にＮＶ側メンバ情報１６が記憶されているか否かを判定する。ここでは、不揮発性メモリ１２にＮＶ側メンバ情報１６が記憶されているため（ここで、ＮＶ側メンバ情報１６が示すのは旧構造体のメンバに関する情報となる）ステップＳ１２に進む。仮に、画像処理装置１０の初回起動時など、不揮発性メモリ１２にＮＶ側メンバ情報１６が記憶されていない場合はステップＳ１６に進む。
【００５３】
ステップＳ１２において、コンバート処理部２８は、ＲＯＭ１８にインストールされているファームウェアのバージョンが、前回起動時と同じであったか否かを判定する。同じである場合は、ユーザデータ１４のデータ構造に変更が無いとみなせるため、ユーザデータ１４のコンバート処理を行わずに処理を終了する。ファームウェアのバージョンが変更された場合はステップＳ１４におけるユーザデータ１４のコンバート処理に進む。
【００５４】
ステップＳ１４において、コンバート処理部２８は、ユーザデータ１４の内容を維持しつつ、ユーザデータ１４のデータ構造を旧データ構造から新データ構造にコンバートするコンバート処理を行う。当該コンバート処理の詳細については図５のフローチャートを参照して後述する。
【００５５】
ステップＳ１６において、コンバート処理部２８は、ＲＯＭ側メンバ情報２０に含まれる内容をＮＶ側メンバ情報１６として不揮発性メモリ１２に記憶させる。具体的には、ＲＯＭ側メンバ情報２０に含まれるメンバＩＤ、及びオフセット情報をＮＶ側メンバ情報１６として不揮発性メモリ１２に記憶させる。図６に、ステップＳ１６において書き換えられたＮＶ側メンバ情報１６の内容が示されている。図６に示される通り、ステップＳ１６の書き換え処理により、ＮＶ側メンバ情報１６は、コンバートされた新構造体のメンバに関する情報を示すものとなる。
【００５６】
以下、図５に示すフローチャートに従って、ユーザデータ１４のコンバート処理の詳細について説明する。
【００５７】
ステップＳ３０において、コンバート処理部２８は、新構造体のメンバに関する情報を示すＲＯＭ側メンバ情報２０に含まれる１つのメンバ（注目メンバ）のメンバＩＤを特定する。ここでは、メンバＩＤ「１」が特定されたとする。さらに、コンバート処理部２８は、特定したメンバＩＤ「１」が、ＮＶ側メンバ情報１６に含まれるか否かを判定する。ＮＶ側メンバ情報１６にはメンバＩＤ「１」が含まれているため、ここではステップＳ３２に進む。
【００５８】
ステップＳ３２において、コンバート処理部２８は、ＮＶ側メンバ情報１６及びＲＯＭ側メンバ情報２０に基づいて、メンバＩＤ「１」が示すメンバの設定値を不揮発性メモリ１２から読み出す。具体的な読み出し方法は上述の通りである。そして、メンバＩＤ「１」と、読み出した設定値とを関連付けてＲＡＭ２２に保持させる。
【００５９】
ステップＳ３４において、コンバート処理部２８は、ＲＯＭ側メンバ情報２０に含まれる全てのメンバＩＤが示すメンバの設定値の読み出し処理を終えたか否かを判定する。ここでは、処理のメンバＩＤが残っているとしてステップＳ３０に戻る。
【００６０】
再度のステップＳ３０において、コンバート処理部２８は、新構造体のメンバに関する情報を示すＲＯＭ側メンバ情報２０に含まれる他のメンバＩＤを特定する。ここでは、メンバＩＤ「５」が特定されたとする。そして、コンバート処理部２８は、特定したメンバＩＤ「５」が、ＮＶ側メンバ情報１６に含まれるか否かを判定する。ＮＶ側メンバ情報１６にはメンバＩＤ「５」が含まれていないため、ここではステップＳ３６に進む。
【００６１】
ステップＳ３６において、コンバート処理部２８は、メンバＩＤ「５」と所定値とを関連付けてＲＡＭ２２に保持させる。ここでは、所定値として「０」がＲＡＭ２２に保持される。
【００６２】
ステップＳ３０からステップＳ３４までの処理を繰り返すことで、ＲＯＭ側メンバ情報２０に含まれるすべてのメンバＩＤと、各メンバＩＤに対応付けられた設定値がＲＡＭ２２に保持される。
【００６３】
再度のステップＳ３４で、ＲＯＭ側メンバ情報２０に含まれる全てのメンバＩＤが示すメンバの設定値の読み出し処理を終えたとコンバート処理部２８が判定した場合は、ステップＳ３８に進む。
【００６４】
ステップＳ３８において、コンバート処理部２８は、ＲＯＭ側メンバ情報２０に基づいて、ＲＡＭ２２に保持した各設定値を不揮発性メモリ１２に書き戻す処理を行う。具体的な書き戻し方法は上述の通りである。これにより、ユーザデータ１４が、その内容を維持しつつ、旧データ構造から新データ構造へとコンバートされる。
【００６５】
以上説明した本実施形態によれば、画像処理装置１０のファームウェアのバージョンが変更され、ユーザデータ１４のデータ構造が変更されたとしても、ユーザデータ１４の内容を維持しつつ、ユーザデータ１４を旧データ構造から新データ構造にコンバートすることができる。これにより、画像処理装置１０のユーザあるいは管理者は、ファームウェアのバージョンが変更され、ユーザデータ１４のデータ構造が変更された場合であっても、ユーザデータ１４を再設定する必要がなくなる。
【００６６】
＜第２実施形態＞
以下、第２実施形態について説明する。第２実施形態は、上述の第１実施形態に比して、ＮＶ側メンバ情報１６及びＲＯＭ側メンバ情報２０に含まれる情報が異なるものである。第１実施形態と同様である部分については、その説明を省略する。
【００６７】
図７に、第２実施形態におけるＮＶ側メンバ情報１６の内容が示されている。本実施形態においては、ＮＶ側メンバ情報１６は、第１実施形態に含まれていた情報に加え、旧構造体に含まれるメンバのデータ型を示すデータ型情報、及び、旧構造体に含まれるメンバに対応する設定値のデータサイズを示すサイズ情報（第１サイズ情報）を含んでいる。
【００６８】
第２実施形態においては、旧構造体は以下のプログラムで定義されるものとする。
struct AAA{
int aaa;
int bbb;
char ccc;
short ddd;
}
ＮＶ側メンバ情報１６においては、メンバＩＤ「１」（メンバ「int aaa」を示す）には、データ型情報「int」が関連付けられ、さらにメンバＩＤ「１」にはサイズ情報としてデータ型「int」のデータサイズであるサイズ情報「４バイト」が関連付けられる。他のメンバについても同様である。
【００６９】
図８に、第２実施形態におけるＲＯＭ側メンバ情報２０の内容が示されている。本実施形態においては、ＲＯＭ側メンバ情報２０においても、第１実施形態に含まれていた情報に加え、新構造体に含まれるメンバのデータ型を示すデータ型情報、及び、新構造体に含まれるメンバに対応する設定値のデータサイズを示すサイズ情報（第２サイズ情報）を含んでいる。
【００７０】
第２実施形態においては、新構造体は以下のプログラムで定義されるものとする。
struct AAA{
int aaa;
int bbb;
int xxx;
char ccc;
int ddd;
}
【００７１】
第２実施形態においては、ファームウェアのバージョン変更により、ユーザデータ１４のデータ構造を定義する構造体の構造体名は変更されないものの、同一のメンバＩＤが示すメンバのデータサイズあるいはデータ型が変更され得るものとする。本実施形態では、図７及び図８に示される通り、ファームウェアのバージョン変更により、メンバＩＤ「３」が示すメンバ「char ccc」のデータサイズが「４バイト」から「８バイト」へ変更されている。さらに、メンバＩＤ「４」が示すメンバ「short ddd」のデータ型が「short」から「int」へ変更され、それに伴い、データサイズも「２バイト」から「４バイト」へ変更されている。
【００７２】
第２実施形態における処理の流れも図４及び図５に示したフローチャートと同様である。ただし、コンバート処理の詳細については第１実施形態と異なる点があるため、以下、図７に示す内容のＮＶ側メンバ情報１６が不揮発性メモリ１２に記憶され、図８に示す内容のＲＯＭ側メンバ情報２０がＲＯＭ１８に記憶された場合を例にして、第２実施形態におけるコンバート処理について説明する。
【００７３】
ファームウェアのバージョン変更が行われた場合、コンバート処理部２８は、ＮＶ側メンバ情報１６に含まれるオフセット情報及びサイズ情報に基づいて、旧データ構造のユーザデータ１４を不揮発性メモリ１２から読み出す。
【００７４】
メンバＩＤ「４」を例にすると、まず、コンバート処理部２８は、ＲＯＭ側メンバ情報２０を参照して、メンバＩＤ「４」が示すメンバが含まれる構造体名「AAA」を特定する。次に、コンバート処理部２８は、ＮＶ側メンバ情報１６におけるメンバＩＤ「４」に関連付けられた、オフセット情報「１２バイト」及びサイズ情報「２バイト」に基づいて、旧データ構造における構造体「AAA」の先頭アドレスから１２バイト目から２バイトの領域を読み出し領域として特定する。そして、コンバート処理部２８は、特定した読み出し領域から設定値を読み出す。読み出された設定値は、旧構造体におけるメンバ「short ddd」の設定値である。コンバート処理部２８は、読み出した設定値と当該メンバＩＤ「４」を関連付けて、ＲＡＭ２２に保持する。
【００７５】
上記の処理をＲＯＭ側メンバ情報２０に含まれる各メンバＩＤについて行う。それにより、各メンバＩＤ「１」〜「４」に関連付けられた各設定値がＲＡＭ２２に保持される。また、第１実施形態と同様に、コンバート処理部２８は、ＮＶ側メンバ情報１６には含まれないメンバＩＤ「５」については所定値を関連付けてＲＡＭ２２に保持させる。
【００７６】
次いで、コンバート処理部２８は、ＲＯＭ側メンバ情報２０に含まれるメンバＩＤ、オフセット情報、データ型情報、及びデータサイズ情報に基づいて、ＲＡＭ２２に保持した各設定値を不揮発性メモリ１２に書き戻す処理を行う。
【００７７】
メンバＩＤ「４」が示すメンバ「short ddd」に着目すると、当該メンバに対応する設定値は、旧データ構造においてはサイズが「２バイト」であったが、新データ構造においてはサイズが「４バイト」となっている。このような場合、ＲＡＭ２２に保持されているメンバＩＤ「４」に関連付けられた設定値（２バイトデータ）をＲＯＭ側メンバ情報２０が示す４バイトの記憶領域（具体的には新構造体「AAA」の先頭アドレスからオフセット２０バイト目から４バイトの領域）に書き込む。
【００７８】
本例のように、ファームウェアのバージョン変更により、同一のメンバＩＤに対応する設定値のデータサイズが増大した場合は、ＲＯＭ側メンバ情報２０が示す記憶領域に対して、先詰め（小さい値のメモリアドレス側に寄せて記憶させる）又は後詰め（大きい値のメモリアドレス側に寄せて記憶させる）にて読み出したデータの書き込み処理を行う。このとき、先詰めするか後詰めするかの決定は、ＲＯＭ側メンバ情報２０が示す当該メンバＩＤに関連付けられたデータ型に従って決定してよい。例えば、データ型が文字型（「char」型など）である場合は先詰めし、データ型が数値型（「short」型あるいは「int」型など）である場合は後詰めするとしてよい。本例では、コンバート処理部２８は、ＲＯＭ側メンバ情報２０が示すメンバＩＤ「４」に関連付けられたデータ型（変更後のデータ型）「int」に従って、読み出し他２バイトデータを４バイトの記憶領域に対して後詰めにて書き込む。
【００７９】
また、ファームウェアのバージョン変更により、同一のメンバＩＤに対応する設定値のデータサイズが減少した場合は、ＲＯＭ側メンバ情報２０が示す記憶領域に対して、読み出したデータの先側又は後側の数バイトのデータを削除して書き込み処理を行う。このとき、先側又は後側のいずれのデータを削除するかは、ＲＯＭ側メンバ情報２０が示す当該メンバＩＤに関連付けられたデータ型に従って決定してよい。
【００８０】
ＲＡＭ２２に保持された、各メンバＩＤに関連付けられた設定値の書き戻し処理が完了すると、コンバート処理部２８は、ＲＯＭ側メンバ情報２０に含まれる内容をＮＶ側メンバ情報１６として不揮発性メモリ１２に記憶させる。具体的には、ＲＯＭ側メンバ情報２０に含まれるメンバＩＤ、オフセット情報、データ型情報、及びサイズ情報をＮＶ側メンバ情報１６として不揮発性メモリ１２に記憶させる。図９に、書き戻し処理後に書き換えられたＮＶ側メンバ情報１６の内容が示されている。図９に示される通り、当該書き換え処理により、ＮＶ側メンバ情報１６は、コンバートされた新構造体のメンバに関する情報を示すものとなる。
【００８１】
第２実施形態によれば、ファームウェアのバージョン変更により、同一のメンバＩＤが示すメンバのデータサイズあるいはデータ型が変更された場合であっても、ユーザデータ１４の内容を適切に維持しつつ、ユーザデータ１４を旧データ構造から新データ構造にコンバートすることができる。
【００８２】
例えば、第１実施形態においては、メンバＩＤに対応する設定値を不揮発性メモリ１２から読み出す場合に、ＲＯＭ側メンバ情報２０において当該メンバＩＤに関連付けられたサイズ情報を参照して読み出し領域を決定していた。例えば、図７及び図８のメンバＩＤ「３」を例とすると、第１実施形態では、ＮＶ側メンバ情報１６が示す構造体「AAA」の先頭アドレスからオフセット「８バイト」が読み出し開始位置として特定され、そこからＲＯＭ側メンバ情報２０が示すデータサイズ「８バイト」分のデータがメンバＩＤ「３」に対応する設定値として読み出されてしまう。そうすると、余計なデータ（本例ではメンバＩＤ「４」に対応する設定値）まで一緒に読み出してしまい、メンバＩＤ「３」に対応する設定値として適切なデータが読み出せなくなる。
【００８３】
第２実施形態によれば、ＮＶ側メンバ情報１６において当該メンバＩＤに関連付けられたサイズ情報を参照して読み出し領域を決定する。図７及び図８のメンバＩＤ「３」を例とすると、第２実施形態では、ＮＶ側メンバ情報１６が示す構造体「AAA」の先頭アドレスからオフセット「８バイト」から「４バイト」分のデータが、メンバＩＤ「３」に対応する設定値として読み出される。つまり、ファームウェアのバージョン変更により同一のメンバＩＤが示すメンバのデータサイズが変更された場合であっても、第２実施形態によれば、メンバＩＤ「３」に対応する設定値として適切なデータが読み出される。
【００８４】
以上、本発明に係る実施形態を説明したが、本発明は上記実施形態に限られるものではなく、本発明の趣旨を逸脱しない限りにおいて種々の変更が可能である。
【００８５】
例えば、本実施形態においては、情報処理装置として画像処理装置１０を例に説明したが、本発明が適用される情報処理装置としてはこれに限られず、自装置に関する設定情報を記憶し、自装置上で動作するソフトウェアのバージョンが変更された場合に当該設定情報のデータ構造が変更され得るものである限りどのような装置（コンピュータ）であってもよい。
【００８６】
また、本実施形態においては、ＮＶ側メンバ情報１６は、不揮発性メモリ１２に記憶されていたが、ＮＶ側メンバ情報１６は、他の記憶部に記憶されるようにしてもよい。例えば、ＲＯＭ１８に記憶されてもよい。
【符号の説明】
【００８７】
１０  画像処理装置、１２  不揮発性メモリ、１４  ユーザデータ、１６  ＮＶ側メンバ情報、１８  ＲＯＭ、２０  ＲＯＭ側メンバ情報、２２  ＲＡＭ、２４  入力部、２６  制御部、２８  コンバート処理部。
【図１】
2018018370.tif 000003
【図２】
2018018370.tif 000004
【図３】
2018018370.tif 000005
【図４】
2018018370.tif 000006
【図５】
2018018370.tif 000007
【図６】
2018018370.tif 000008
【図７】
2018018370.tif 000009
【図８】
2018018370.tif 000010
【図９】
2018018370.tif 000011