本記事は、[C#での設定ファイル管理とパラメータのバージョンアップ]の連載のベースとなる技術として、設定とパラメータファイルのバージョンアップ仕組みについて記載します。アプリケーションを開発するにおいて、アプリケーションのバージョンアップは欠かせないものです。アプリケーションのバージョンアップとともについて来るのが、設定ファイル、パラメータファイルのバージョンアップが伴います。この記載では、設定とパラメータファイルのバージョンアップの基本的な仕組みについて記載します。
設定ファイルのバージョンアップの仕組み
C#でのプログラミングであれ、C/C++のプログラムであれ、プログラミング言語に問わず、基本ルールは大きく変わりありません。管理人の場合は、以下のフロー(ロジック)を使っています。
- まず、ファイルのHeader部分を読み込みます。
XML,JSON,バイナリファイルなど同じ方法で先頭のHeader部分だけ読み込むと良いです。ファイルをすべて読み込む必要はありません。 - 読み込んだHeader部の情報をチェックし、アプリケーションとマッチングするファイルがチェックします。
もし、ここで、マッチングしない場合は読み込むことができない旨のエラー処理を行います。 - 読み込んだファイルはアプリケーションが要求するバージョンのファイルであるかチェックします。起動アプリケーションによっては、最新のバージョンであるかのチェックになります。
- 読み込んだファイルが最新バージョンであることから、ファイルをアプリケーションが保持している最新のフォーマット(クラスなど)で読み込みます。
- 読み込んだファイルはアプリケーションの最新のバージョンではありませんので、ファイルのHeader部分に書かれていたVersion情報に合わせて読み込みます。
例えば、アプリケーションはVersion=3で動作しようとするが、読み込んだHeader部分に書かれていたVersionが1であったなら、Version=1として読み込みます。 - バージョンアップ
6-1.読み込んだ情報を次のバージョンにデータ変換を行います。管理人はVersion Conveterと言います。
6-2.Version Conveterした結果が最新のバージョンであるかを再チェックします。
Version Conveterしてもバージョンが最新でなかった場合は、もう一度、Version Conveterします。例えば、アプリケーションはVersion=3で動作しようとするが、読み込んだHeader部分に書かれていたVersionが1であった場合、Version Conveterによって、Version=2になります。この時は、まだ、最新のバージョンでないので、もう一度、Version Convterterを行い、あったなら、Version=1として読み込みます。 - 最新のバージョンのデータになっているので、アプリケーションで必要な処理を行います。
データファイルの持ち方
・XML、JSONなどのテキストファイルの場合
XMLやJSONなどのテキストファイルの場合は、先頭部分のデータとして持ちます。すると、先頭だけ、読み込むことで、設定情報の変更・追加などに影響を受けず、ただしバージョンファイルとして読み込むことができます。
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="utf-8"?> <root> <AppInfo> <AppName>Naruhodo</AppName> <FileType>XmlDom</FileType> <Version>1</Version> </AppInfo> … |
バイナリファイルの場合
設定情報を独自のバイナリファイルとして扱う場合も、考え方は同じです。ヘッダの文字列の長さはアプリケーションの都合に合わせて変更してください。
まとめ
管理人の経験上、テキストファイル型のデータ保持方法(XML,JSONなど)も、バイナリファイルのデータ保持方法も、バージョンアップを行うためには、ファイルの先頭がほうが良いです。先頭のヘッダ部分を読み込み、必要なバージョンのファイルであるかをチェックし、バージョンアップを行います。