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