(57)【特許請求の範囲】
【請求項１】
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理プログラム。
【請求項２】
前記圧縮文字列を、前記変数名の文字列から計算されるハッシュ値とした請求項１記載の情報処理プログラム。
【請求項３】
前記圧縮文字列を用いた変数の設定情報は、変数名の各々を識別可能な文字数まで前記圧縮文字列を短縮した文字列に、前記変数の値を対応付けた情報である請求項１又は請求項２記載の情報処理プログラム。
【請求項４】
前記設定情報は、前記ソフトウェアプログラム又は該ソフトウェアプログラムの機能の各々を識別可能な文字列をキーとし、変数毎の前記圧縮文字列を短縮した文字列と該変数の値との組の集合をバリューとするキー−バリュー形式で前記設定ファイルに書き込まれる請求項３記載の情報処理プログラム。
【請求項５】
前記組の集合を、各組を区切り文字で区切って並べて、前記キー-バリュー形式のバリューに格納する請求項４記載の情報処理プログラム。
【請求項６】
前記問合せに対応して、前記圧縮文字列を短縮した文字列のうち、前記問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に最も類似する文字列に対応付けられた変数の値を応答する請求項３〜請求項５のいずれか１項記載の情報処理プログラム。
【請求項７】
前記問合せで複数の変数名が指定された場合、前記複数の変数名の各々に対応する変数の値を一覧にして応答する請求項１〜請求項６のいずれか１項記載の情報処理プログラム。
【請求項８】
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を用いて変数の設定情報が書き込まれ、かつ変数の値が設定される設定ファイルと、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する提供部と、
を含む情報処理装置。
【請求項９】
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置、及び情報処理方法に関する。
【背景技術】
【０００２】
従来、ソフトウェア製品の設定ファイルに記述された内容を、ＯＳ（Operating System）などの動作環境を指定する環境変数に設定することが行われている。ソフトウェア製品は、バージョンアップや障害に対する修正などにより、機能の追加や挙動の変更が生じるため、バージョン毎に適切な環境変数が設定される必要がある。
【０００３】
設定ファイルを用いたソフトウェア製品の管理に関する技術として、システムに接続された複数のコンピュータに自動インストールを行う際に、各コンピュータに固有の設定を施したインストールを行うことを可能とするコンピュータシステムが提案されている。このコンピュータシステムでは、各被インストール装置からインストール要求を受けたインストールサーバ装置が、各被インストール装置に対応したインストール用パラメータを固有情報データベースから取得する。そして、取得したパラメータに従い、インストールするソフトウェアのコンフィグレーションを保持する設定ファイルを作成し、各被インストール装置に送信し、インストールを行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開９−２１８７７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
環境変数として設定可能な文字数には制限があるため、設定ファイルに記述した内容を環境変数に設定した場合に、文字数オーバーが生じる場合がある。このような場合には、設定された環境変数を利用して動作する機能が正しく動作しなくなるという問題がある。
【０００６】
本発明は、一つの側面として、設定ファイルに書き込まれる変数の設定情報の文字数を削減することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、一つの態様として、ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得する。また、変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込む。そして、変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する。
【発明の効果】
【０００８】
一つの側面として、設定ファイルに書き込まれる変数の設定情報の文字数を削減することができる、という効果を有する。
【図面の簡単な説明】
【０００９】
【図１】設定ファイルのハッシュ化を説明するための図である。
【図２】ソースコードのブランチによる管理を説明するための図である。
【図３】ブランチ数の増加を説明するための図である。
【図４】一つのブランチでソースコードを管理する場合を説明するための図である。
【図５】設定ファイルの一例を示す図である。
【図６】環境変数の設定を説明するための図である。
【図７】他のアプリケーションとの間での環境変数名のバッティングを説明するための図である。
【図８】環境変数名の単純な短縮が困難であることを説明するための図である。
【図９】本実施形態に係る情報処理装置の概略構成を示す機能ブロック図である。
【図１０】設定ファイルの一例を示す図である。
【図１１】環境変数の一例を示す図である。
【図１２】本実施形態に係る情報処理装置として機能するコンピュータの概略構成を示すブロック図である。
【図１３】ソフトウェア製品の開発及びビルド時について説明するための図である。
【図１４】設定ファイル作成処理の一例を示すフローチャートである。
【図１５】ハッシュ化後の文字列の変換の一例を示す図である。
【図１６】環境変数名に応じて設定情報の格納先が複数ある場合の設定ファイルの一例を示す図である。
【図１７】設定ファイルのハッシュ化を説明するための図である。
【図１８】ソフトウェア製品のインストール時について説明するための図である。
【図１９】機能実行処理の一例を示すフローチャートである。
【図２０】マッピング処理の一例を示すフローチャートである。
【図２１】環境変数名に応じた設定値の応答を説明するための図である。
【図２２】保守時のマッピングプログラムの機能を説明するための図である。
【図２３】マッピングプログラムがない場合の保守作業を説明するための図である。
【図２４】出荷時のままのソフトウェア製品の保守作業を説明するための図である。
【図２５】出荷時から変更されているソフトウェア製品の保守作業を説明するための図である。
【図２６】通常のパッチの作成を説明するための図である。
【図２７】通常のパッチの適用を説明するための図である。
【図２８】通常のパッチが適用されたソフトウェア製品の機能実行時について説明するための図である。
【図２９】個別対応用のパッチの作成を説明するための図である。
【図３０】個別対応用のパッチの適用を説明するための図である。
【図３１】個別対応用のパッチが適用されたソフトウェア製品の機能実行時について説明するための図である。
【図３２】実行ファイル群及びマッピング部の他の構成例を示す図である。
【発明を実施するための形態】
【００１０】
まず、実施形態の詳細を説明する前に、設定ファイルに記述される環境変数の設定情報の文字数を削減する必要がある理由について説明する。
【００１１】
ソフトウェア製品では、バージョンアップにより機能を追加させる場合がある。また、ソフトウェア製品に障害が発生した場合、障害に対する修正をソフトウェア製品に適用する。この際、修正を適用しても、ソフトウェア製品のバージョン毎の動作に非互換が発生しないように、各バージョンのソースコードを管理する必要がある。
【００１２】
一般的には、ソフトウェア製品がバージョンアップする毎に、ソースコードを分けて管理する方法が使われる。この管理方法では、図２に示すように、ソースコードが木のように枝分かれしていくことから、枝分かれした各々のソースコードはブランチと呼ばれる。図２の例では、出荷時のソフトウェア製品（以下、「製品ｖ１．０」ともいう）に対し、機能Ａが追加されたバージョン２（以下、「製品ｖ２．０」ともいう）にバージョンアップしている。さらに、機能Ｂの挙動が変更されたバージョン２．１（以下、「製品ｖ２．１」ともいう）にバージョンアップしている。したがって、製品ｖ１．０のブランチ１０１から製品ｖ２．０のブランチ１０２が枝分かれし、さらに、製品ｖ２．１のブランチ１０３が枝分かれした状態で管理される。
【００１３】
上記のような各ブランチ１０１，１０２，１０３が管理されている状態でソフトウェア製品に障害Ｃが発生したとする。障害を修正するための障害修正情報は、各バージョンに対応した内容で作成する必要があり、作成された障害修正情報は、決まったバージョンにしか適用できない。図２の例では、ブランチ１０１，１０２，１０３の各々に対して障害Ｃに対する障害修正情報１１１，１１２，１１３がそれぞれ必要である。このように、バージョン毎のソースコードをブランチで管理する場合には、ブランチ数に比例して、障害修正情報の作成にかかるコストが増加するという問題がある。障害修正情報の作成作業、及び付随するテスト、検査、事務手続き等のコストは高く、ブランチ数の増加による保守工数の増加が大きな問題になる。
【００１４】
このような保守工数の増加を抑制するために、例えば、最新バージョンと前のバージョンのみをサポート対象にするなど、サポート対象とするバージョンを少なくするなどの対応が考えられる。しかし、長期サポートを保証しているソフトウェア製品や、サポート対象のバージョンが多いソフトウェア製品では、このような対応をとることができない。
【００１５】
また、ソフトウェア製品に含まれる全ての機能のうち、所定の機能のみを含む機能限定版、全ての機能を含む全機能版などの異なるエディションを提供している場合もあり、このエディションの相違によっても、ブランチ数は増加する。他にもＯＳ（Operating System）やアーキテクチャなど、ブランチ数を増加させる要素がある。これらの要素を考慮すると、図３に示すように、ブランチ数は乗算で増加していくことになり、サポートするバージョン数が少し増えるだけでも、ブランチ数は大きく増加してしまう。さらに、特定の機能の挙動だけが異なるエディションを、個別提供版として提供することも多い。このような個別提供版のエディション毎にブランチを分けてしまうと、ブランチ数が組み合わせ爆発を起こす。
【００１６】
そこで、サポートするバージョン数が多い状況で、保守工数を減らすために、異なるバージョンのソースコードを、例えば、図４に示すように、一つのブランチ１０４で扱うことが考えられる。これにより、障害修正情報１１４を一本かすることができ、保守工数の削減に繋がる。なお、以下では、バージョン、エディション、ＯＳ、アーキテクチャなどのブランチ数を増加させる要素として、「バージョン」を用いて説明するが、他の要素を用いた場合も同様である。
【００１７】
図４に示すように、一つのブランチ１０４でバージョン管理を行う場合、ソフトウェア製品に含まれる各機能の動作を定義する設定ファイルを用意し、設定ファイルに定義される各項目について、バージョン毎に適切な設定値を設定する。これにより、バージョン毎の動作を切り分けることができる。すなわち、バージョンが上がる毎に、設定ファイルには、追加された機能に対応した定義項目や、機能の挙動変更に対応した定義項目が増えていく。
【００１８】
例えば、図５に示すように、初期の製品ｖ１．０についての設定ファイル１２１には、定義項目は存在せず、各機能がデフォルト値で動作する。機能Ａが追加された製品ｖ２．０の設定ファイル１２２には、機能Ａを有効にするか無効にするかを設定可能な定義項目（「Ｅｎａｂｌｅ＿Ｆｅａｔｕｒｅ＿Ａ」）及びその設定値が記述される。また、機能Ｂの挙動が変更された製品ｖ２．１の設定ファイル１２３には、定義項目（「Ｅｎａｂｌｅ＿Ｆｅａｔｕｒｅ＿Ａ」）に加え、機能Ｂの挙動を指定する定義項目（「Ｆｅａｔｕｒｅ＿Ｂ＿Ｍｏｄｅ」）が記述される。例えば、「Ｅｎａｂｌｅ＿Ｆｅａｔｕｒｅ＿Ａ＝ｆａｌｓｅ」が指定された場合は、「Ｅｎａｂｌｅ＿Ｆｅａｔｕｒｅ＿Ａ」という定義項目が存在しない古いバージョンのデフォルト動作とすることで、バージョン間の互換性を保つことができる。
【００１９】
ここで、ソフトウェア製品が、機能を構成する言語として、バッチファイル、シェルスクリプト、Ｃ、Ｊａｖａ（登録商標）など複数の言語を利用可能な場合、言語毎に読み書きし易い記述形式が異なるため、設定ファイルの記述形式が問題になる。例えば、標準でＡＰＩ（Application Programming Interface）が用意されているＪａｖａ（登録商標）では、プロパティファイル形式が扱い易いが、バッチファイルでは環境変数を設定するバッチファイルの形式が扱い易い。
【００２０】
機能毎に設定ファイルを作成することも考えられるが、設定ファイルが複数存在すると、インシデント調査時の資料採取に取りこぼしの可能性が増えてしまう。また、同じ定義が複数の機能で利用される場合、複数の設定ファイルに同じ定義が存在することになる。このような複数の設定ファイルに存在する定義の設定値を書き換える場合、一部の設定ファイルに書き換え漏れが生じるなどして、全体に不整合が生じる可能性もある。
【００２１】
そこで、設定ファイルの内容を、機能を実現しているプロセスの環境変数に設定する。別の態様としては、例えば、機能を呼び出す親プロセスがバッチファイル、シェルスクリプト等の形式で記述された設定値を親プロセス自身の環境変数に設定した後で、機能のプロセスを呼び出す。これにより、親プロセスの環境変数が子プロセスである機能のプロセスに引き継がれる。なお、親プロセスは、直接の親プロセスではなく、親の親、あるいはさらにその親のプロセスでもよい。
【００２２】
しかし、上述のように、設定ファイルに記述される定義は、バージョンが上がるにしたがって増えていくため、環境変数として設定される文字数も増えることになる。ＯＳによって制限は異なるが、環境変数全体の文字数は制限されており、例えば、Ｗｉｎｄｏｗｓ（登録商標）の一部のバージョンでは２，０４７文字という制限がある。さらに、図６に示すように、機能が利用する環境変数１３１には、設定ファイル１３２に記述した環境変数に加え、ＯＳ又は機能を呼び出した親プロセスの環境変数１３３も引き継がれる。このため、機能が利用する環境変数１３１に設定される文字数は、なるべく少なくする必要がある。
【００２３】
環境変数は、環境変数名をキーとし、その環境変数名が示す環境変数の設定値をバリューとするキー−バリューの組で表される。そこで、環境変数に設定される文字数を少なくする方法として、環境変数名を短くすることが考えられる。単純な方法として、環境変数名の先頭から、他の環境変数名と識別可能な文字数まで短縮することが考えられる。例えば、「ＡＢＣ」という環境変数名と、「ＡＡＡ」という環境変数名とがある場合、１文字目は同じ「Ａ」のため、両者を識別できないが、２文字目は前者が「Ｂ」、後者が「Ａ」と異なる。したがって、前者を「ＡＢ」、後者を「ＡＡ」と短縮することができる。しかし、このような単純な文字数の短縮では、以下に説明するような問題が生じる。
【００２４】
図７に示すように、ＯＳの環境変数１３３から引き継いだ環境変数と、設定ファイル１３２から設定された環境変数に、同一の環境変数名（図７の例では、「ｆｅａｔｕｒｅ２」）が存在し、それぞれ異なる設定値が定められているとする。この場合、機能が利用する環境変数１３１にいて、「ｆｅａｔｕｒｅ２」の設定値が、ＯＳの環境変数１３３から引き継いだ設定値から、設定ファイル１３２により後から設定された設定値に上書きされてしまう。ある機能が、同一のＯＳ上で動作する別のアプリケーションを呼び出す場合、別のアプリケーションを呼び出した機能が利用する環境変数１３１が、呼び出されたアプリケーションの機能が利用する環境変数１３４として引き継がれる。呼び出された別のアプリケーションにおいて、ＯＳの環境変数１３３から引き継いだ設定値が必要だった場合、設定ファイル１３２により設定された設定値で上書きされているため、アプリケーションの動作に影響が出てしまう。一般には、呼び出している（第三者が開発した）別のアプリケーションがどのような環境変数を利用しているかは非公開情報であり、事前に把握することは困難であるため、このような環境変数名のバッティングが生じ得る。
【００２５】
このような環境変数名のバッティングを避けるために、ソフトウェア製品及び機能毎に固有の接頭辞を付ける方法が考えられる。例えば、上記の「ｆｅａｔｕｒｅ２」という環境変数について、ソフトウェア製品固有の「ＦＪ＿ＳＯＦＴＷＡＲＥ＿＊＊＊」のような接頭辞をつけて、「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ｆｅａｔｕｒｅ２」という環境変数名にすることができる。一方、ＯＳの環境変数は、同様に接頭辞を用いて、例えば、「ＯＳ＿ｆｅａｔｕｒｅ２」とすることができるため、環境変数名のバッティングを避けることができる。しかし、このような接頭辞を付加することが、環境変数の総文字数を増やす原因になる。
【００２６】
例えば、製品Ａの機能１に関する環境変数名には、「ＰＲＯＤＵＣＴ−Ａ＿ＦＥＡＴＵＲＥ−１」という接頭辞を付けるとする。この接頭辞を付けて、製品Ａの機能１のホームディレクトリのパスを表す環境変数名は「ＰＲＯＤＵＣＴ−Ａ＿ＦＥＡＴＵＲＥ−１＿ＨＯＭＥ−ＤＩＲ」とする。同様に、製品Ａの機能２に関する環境変数名には、「ＰＲＯＤＵＣＴ−Ａ＿ＦＥＡＴＵＲＥ−２」という接頭辞を付けるとする。この場合において、上記のように、他の環境変数名と識別可能な文字まで残す方法により環境変数名の文字数を少なくすることを考える。図８に示すように、短縮前の環境変数１４１では、環境変数名に共通の接頭辞「ＰＲＯＤＵＣＴ−Ａ＿ＦＥＡＴＵＲＥ−１」又は「ＰＲＯＤＵＣＴ−Ａ＿ＦＥＡＴＵＲＥ−２」が付いている。そのため、他の環境変数名と識別可能な文字まで残すとすると、図８の短縮後の環境変数１４２に示すように、接頭辞を省略することができないため、環境変数全体の文字数の削減効果が低い。
【００２７】
そこで、以下の実施形態では、環境変数名のバッティングを避けつつ、環境変数名の短縮を図り、設定ファイルに記述される環境変数の設定情報の文字数を削減することを目的とする。
【００２８】
以下、本発明に関する実施形態の一例を詳細に説明する。本実施形態では、上述のように、設定ファイルの内容が、機能が利用するプロセスの環境変数として設定されるソフトウェア製品がインストールされた情報処理装置について説明する。
【００２９】
＜情報処理装置の構成＞
図９に示すように、本実施形態に係る情報処理装置１０は、フロントエンド処理部１１と、環境変数設定部１２と、マッピング部１３と設定ファイル２１と、実行ファイル群２２とを含む。なお、マッピング部１３は、本発明の提供部の一例である。
【００３０】
フロントエンド処理部１１は、ユーザや他のアプリケーションからの指示を受け付けて、指示された機能の実行ファイルを起動する。
【００３１】
実行ファイル群２２には、ソフトウェア製品に含まれる各機能を動作させるための実行ファイルの各々が含まれる。フロントエンド処理部１１により起動された実行ファイルで必要な環境変数の設定値は、設定ファイル２１から設定された環境変数２３から取得される。各機能の実行ファイルは、設定値を知りたい環境変数の環境変数名をマッピング部１３に受け渡す。また、実行ファイルは、マッピング部１３からの応答により取得した設定値を用いて、指定された機能を動作させる。
【００３２】
設定ファイル２１には、環境変数２３として設定される各定義が記述されている。具体的には、図１０に示すように、設定ファイル２１には、ソフトウェア製品の製品名や、ソフトウェア製品に含まれる機能の機能名などの固有の文字列をキー２１Ｊとするキー−バリュー形式のバリュー２１Ｋに、各環境変数の設定情報２１Ｌが格納されている。各環境変数の設定情報２１Ｌは、各環境変数名をハッシュ値に変換し、さらに他の環境変数名と識別可能な文字数まで短縮した文字列をキー２１Ｍとし、その環境変数の設定値をバリュー２１Ｎとするキー−バリューの組である。各環境変数の設定情報２１Ｌは、各々を区切り文字（例えば、セミコロン）で区切って、バリュー２１Ｋに格納される。
【００３３】
なお、設定ファイル２１の作成方法の詳細については、後述する。
【００３４】
環境変数設定部１２は、設定ファイル２１に記述された内容を、図１１に示すように、環境変数２３として設定する。環境変数２３は、設定ファイル２１と同様、固有の文字列をキー２３Ｊとするキー−バリュー形式のバリュー２３Ｋに、キー２３Ｍとバリュー２３Ｎとの組で表された各環境変数の設定情報２３Ｌが格納された形式である。
【００３５】
マッピング部１３は、各機能の実行ファイルから受け渡された環境変数名に対応する設定値を、環境変数２３から探索して、実行ファイルへ応答する。
【００３６】
具体的には、マッピング部１３は、設定された環境変数２３から、受け渡された環境変数名に対応して予め定められた文字列と一致するキー２３Ｊを特定し、そのキー２３Ｊに対応するバリュー２３Ｋに格納された各環境変数の設定情報２３Ｌを読み込む。そして、マッピング部１３は、読み込んだ設定情報２３Ｌの各々を、キー２３Ｍ−バリュー２３Ｎの組として解釈する。また、マッピング部１３は、実行ファイルから受け渡された環境変数名からハッシュ値を計算する。そして、マッピング部１３は、キー２３Ｍ−バリュー２３Ｎの組から、計算したハッシュ値と最も一致するキー２３Ｍに対応するバリュー２３Ｎを探索し、探索したバリューの値を、実行ファイルへ応答する。
【００３７】
情報処理装置１０は、例えば、図１２に示すコンピュータ４０で実現することができる。コンピュータ４０はＣＰＵ４１、一時記憶領域としてのメモリ４２、及び不揮発性の記憶部４３を備える。また、コンピュータ４０は、表示装置及び入力装置等の入出力装置４８が接続される入出力インターフェース（Ｉ／Ｆ）４４を備える。また、コンピュータ４０は、記録媒体４９に対するデータの読み込みと書き込みとを制御するｒｅａｄ／ｗｒｉｔｅ（Ｒ／Ｗ）部４５、及びインターネット等のネットワークに接続されるネットワークＩ／Ｆ４６を備える。ＣＰＵ４１、メモリ４２、記憶部４３、入出力Ｉ／Ｆ４４、Ｒ／Ｗ部４５、及びネットワークＩ／Ｆ４６は、バス４７を介して互いに接続される。
【００３８】
記憶部４３は、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（solid state drive）、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部４３には、コンピュータ４０を情報処理装置１０として機能させるためのソフトウェア製品５０が記憶される。ソフトウェア製品５０には、フロントエンドプログラム５１と、環境変数設定プログラム５２と、マッピングプログラム５３と、設定ファイル２１と、実行ファイル群２２とが含まれる。
【００３９】
ＣＰＵ４１は、フロントエンドプログラム５１、環境変数設定プログラム５２、及びマッピングプログラム５３の各々を記憶部４３から読み出してメモリ４２に展開し、各プログラム５１，５２，５３が有するプロセスを順次実行する。
【００４０】
ＣＰＵ４１は、フロントエンドプログラム５１を実行することで、図９に示すフロントエンド処理部１１として動作する。また、ＣＰＵ４１は、環境変数設定プログラム５２を実行することで、図９に示す環境変数設定部１２として動作する。また、ＣＰＵ４１は、マッピングプログラム５３を実行することで、図９に示すマッピング部１３として動作する。これにより、ソフトウェア製品５０がインストールされたコンピュータ４０が、情報処理装置１０として機能することになる。
【００４１】
＜情報処理装置の作用＞
次に、本実施形態に係る情報処理装置１０の作用について説明する。
【００４２】
１．開発時
まず、情報処理装置１０にインストールされるソフトウェア製品５０の開発時について説明する。
【００４３】
ソフトウェア製品の開発者（設計者）が、ソフトウェア製品５０に含まれる各種ファイルの各々を作成する。そして、図１３に示すように、作成されたファイル群は、所定の記憶領域であるソースコードリポジトリ２４に格納される。ファイル群には、機能の各々についてのソースコード群２２Ａ、フロントエンドプログラムのソースコード５１Ａ、環境変数設定プログラムのソースコード５２Ａ、マッピングプログラムのソースコード５３Ａ、ハッシュ化前の設定ファイル２１Ａ、及び環境変数名と短縮されたハッシュ値との対応表２５が含まれる。ファイル群には、ソースコードリポジトリ２４に対して格納、更新、削除が行われる度に更新されるリビジョン番号が付与されて、管理される。
【００４４】
２．ビルド時
次に、ビルド時について説明する。
【００４５】
図１３に示すように、ソースコードリポジトリ２４に格納されたファイル群をビルドして、インストール媒体２６を作成する。ファイル群のビルドは、手動で行ってもよいし、ビルドツールを利用して行ってもよい。ここでは、ビルドツールによりビルドする場合について説明する。
【００４６】
なお、図１３は、Ｗｉｎｄｏｗｓ（登録商標）用のプログラムを作成する場合について図示したものである。図１３の記載では、設定ファイルがバッチファイル形式になっている。異なるＯＳ用のプログラムを作成する場合は、設定ファイルをＯＳに応じた適切な形式にする。例えば、ＵＮＩＸ（登録商標）用のプログラムではシェルスクリプト等にする。
【００４７】
具体的には、ビルドツールが、ファイル群が格納されているソースコードリポジトリ２４のリビジョン番号を書き写したリビジョンファイル２７を作成する。また、ビルドツールが、機能のソースコード群２２Ａ及び各プログラムのソースコード５１Ａ，５２Ａ，５３Ａの各々をコンパイルして、実行ファイル群２２及び各プログラム５１，５２，５３を作成する。また、ビルドツールが、ハッシュ化前の設定ファイル２１Ａから、ハッシュ化済みの設定ファイル２１を作成する。
【００４８】
ここで、図１４及び図１を参照して、設定ファイル２１の作成について詳述する。例えば、ソフトウェア製品５０で必要な全ての環境変数の環境変数名がハッシュ化前の設定ファイル２１Ａに記述されている状態で、ビルドツールが、図１４に示す設定ファイル作成処理を実行する。
【００４９】
ステップＳ１１で、ビルドツールが、ソースコードリポジトリ２４から、ハッシュ化前の設定ファイル２１Ａを読み込む。
【００５０】
次に、ステップＳ１２で、ビルドツールが、図１の２１１に示すように、設定ファイル２１Ａに記述された全ての環境変数名の各々からハッシュ値を計算する。例えば、環境変数名をハッシュ関数で変換し、０から最大値Ｍ（Ｍはハッシュ関数に依存）の範囲の数値を得る。１０進数では桁数が多くなってしまうので、環境変数の文字数削減の効果をより高めるために、例えば、図１５に示すように、数値をｎ進数で表現し、数字、アルファベット、及び記号を含む文字列に変換する。
【００５１】
次に、ステップＳ１３で、ビルドツールが、上記ステップＳ１２で計算されたハッシュ値が全て異なるか否かを判定する。ソフトウェア製品５０の開発段階で、全ての環境変数名が異なるように定めておくことはできるが、ハッシュ値の性質上、異なる環境変数名から計算されたハッシュ値が同一になってしまう場合もある。なお、入力値をランダムに変えた際に０から最大値Ｍまでが同確率で出現するハッシュ関数を利用した場合、ハッシュ値が８桁の１６進数の場合の一致確率は、１／（１６＾８）＝１／４，２９４，９６７，２９６である。また、ハッシュ値が４桁の３２進数の場合の一致確率は、１／（３２＾４）＝１，０４８，５７６という低確率である。
【００５２】
ハッシュ値が同一であることは、環境変数名のバッティングが生じることを意味するため、本ステップの判定は、計算されたハッシュ値が全て異なることを保証するための判定である。計算されたハッシュ値に同一のものが含まれる場合には、処理はステップＳ１４へ移行し、全て異なる場合には、処理はステップＳ１５へ移行する。図１の２１１の例では、２行目の環境変数名から計算されたハッシュ値と、３行目の環境変数名から計算されたハッシュ値とが同一になっているため、処理はステップＳ１４へ移行する。
【００５３】
ステップＳ１４では、ビルドツールが、ハッシュ値が同一になる環境変数名を開発者等に提示し、開発者等に環境変数名の変更を促す。ソフトウェア製品５０の出荷前の段階であるため、開発者等は、環境変数名を自由に変更することができる。例えば、図１の２１２に示すように、ハッシュ値が同一となっていた一方の環境変数名を変更することができる。ビルドツールは、変更された環境変数名を受け付け、処理はステップＳ１２に戻る。
【００５４】
変更された環境変数名について、改めてハッシュ値が計算され、例えば、図１の２１３に示すように、全てのハッシュ値が異なっている場合には、処理はステップＳ１５へ移行する。
【００５５】
ステップＳ１５では、ビルドツールが、図１の２１４に示すように、設定ファイル２１Ａの環境変数名を、それぞれ計算したハッシュ値に置き換える。そして、ビルドツールは、図１の２１５に示すように、ハッシュ値の先頭から見て、他のハッシュ値と識別できる最小文字数までを残すことにより、ハッシュ値を短縮する。上記ステップＳ１３の処理で、ハッシュ値が全て異なることが予め保証されているため、このように短縮しても、各ハッシュ値を識別することができる。
【００５６】
次に、ステップＳ１６で、ビルドツールは、各環境変数の設定情報２１Ｌとして、短縮したハッシュ値をキー２１Ｍ、その環境変数の設定値をバリュー２１Ｎとするキー−バリューの組を作成する。そして、ビルドツールは、ソフトウェア製品の製品名や機能名などの固有の文字列をキー２１Ｊとするキー−バリュー形式のバリュー２１Ｋに、各環境変数の設定情報２１Ｌを、区切り文字（例えば、セミコロン）で区切って格納する（図１０参照）。なお、区切り文字は、セミコロンに限定されず、他の記号を用いてもよい。このように、固有の文字列をキー２１Ｊに設定することで、図７に示すように、本ソフトウェア製品５０の機能と、他のアプリケーションの機能とで利用する環境変数名が同一の場合でも、参照先がバッティングすることを回避できる。
【００５７】
なお、図１の例では、設定ファイル２１に定義されるキー２１Ｊが１つの場合を示しているが、キー２１Ｊは、機能毎、機能を複数にグループ分けしたグループ毎など、複数のキー２１Ｊを定義してもよい。例えば、図１に示すハッシュ化前の設定ファイル２１Ａについて、機能Ａ（ＦＥＡＴＵＲＥ＿Ａ）及び機能Ｂ（ＦＥＡＴＵＲＥ＿Ａ）に関する環境変数を１つのグループとして、１つのキー２１Ｊを割り当てる。また、機能Ｃ（ＦＥＡＴＵＲＥ＿Ｃ）に関する環境変数に対して、別のキー２１Ｊを割り当てることができる。この場合、例えば、図１６に示すように、各キー２１Ｊに対応するバリュー２１Ｋに、対応する環境変数の設定情報２１Ｌが格納される。
【００５８】
このような機能のグループ分けは、開発者や保守担当者などが管理し易い形で設定すればよい。例えば、パス関係の環境変数の設定情報２１Ｌを、「ｐａｔｈｓ」というキー２１Ｊに対応するバリュー２１Ｋに格納することができる。また、例えば、ソフトウェア製品５０が部品単位で分かれていて、部品毎に環境変数２３を参照する場合には、部品Ａが使う環境変数の設定情報２１Ｌを、「ｃｏｍｐｏｎｅｎｔＡ」というキー２１Ｊに対応するバリュー２１Ｋに格納することができる。
【００５９】
次に、ステップＳ１７で、ビルドツールが、ソフトウェア製品５０が動作するＯＳに応じた言語（例えば、バッチファイルやシェルスクリプト）で設定ファイル２１を書き出し、設定ファイル作成処理は終了する。
【００６０】
なお、上記の設定ファイル作成処理は、ソフトウェア製品５０で必要な環境変数が全て決定した段階で行うことを前提としているが、これは、短縮したハッシュ値が全て異なることを保証するためである。
【００６１】
例えば、全ての環境変数名が決定していない段階で、図１７の２１５に示すように、その段階で決定している環境変数名について、短縮されたハッシュ値が求まっているとする。なお、この段階では、短縮される前のハッシュ値の情報（図１の２１４参照）は失われている。この状況で、例えば、「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ＦＥＡＴＵＲＥ＿Ｄ＿ＥＮＡＢＬＥＤ＝ｆａｌｓｅ」という定義（環境変数名＋設定値）を追加するとする。環境変数名「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ＦＥＡＴＵＲＥ＿Ｄ＿ＥＮＡＢＬＥＤ」から、ハッシュ値「２８４７ｅ０９１」が計算されたとすると、既に求まっている短縮されたハッシュ値（図１７の２１５）と識別可能な「２８４」に短縮される（図１７の２１６）。この場合、環境変数名から計算されるハッシュ値が「２８４」で始まる環境変数の設定値としては、図１７の２１６の１行目を参照すべきか、４行を参照すべきかを判断できない。このような事態を避けるために、全ての環境変数名が決定した段階で、ハッシュ化前の設定ファイル２１Ａから、ハッシュ化済みの設定ファイル２１を作成することとしている。
【００６２】
上記のように作成されたリビジョンファイル２７、実行ファイル群２２及び各プログラム５１，５２，５３、並びにハッシュ化済みの設定ファイル２１は、図１３に示すように、インストール媒体２６として、インストール媒体リポジトリ２８に格納される。ソフトウェア製品５０の出荷時には、インストール媒体リポジトリ２８からインストール媒体２６が取り出されて、出荷される。
【００６３】
ソースコードリポジトリ２４に格納されている環境変数名と短縮されたハッシュ値との対応表２５は、インストール媒体２６には含まれない。なお、対応表２５は、短縮されたハッシュ値と環境変数名とが１対１で対応付けられたものであり、手動で作成してもよいし、自動作成ツールを利用して作成してもよい。例えば、上記の設定ファイル作成処理のステップＳ１１で読み込んだハッシュ化前の設定ファイル２１Ａに記述された環境変数名と、ステップＳ１５で短縮されたハッシュ値とを対応付けることにより作成することができる。
【００６４】
ソースコードリポジトリ２４に格納された設定ファイル２１Ａが更新され、設定ファイル２１Ａに新しい環境変数名が追加された場合には、対応表２５も更新する。なお、対応表には、現在のリビジョンの設定ファイル２１Ａに記述されていない環境変数名も含め、全てのリビジョンで使用された環境変数名と、短縮されたハッシュ値との対応を記録しておく。
【００６５】
３．インストール時
次に、ソフトウェア製品５０のインストール時について説明する。
【００６６】
インストール時には、図１８に示すように、インストール媒体２６に含まれる実行ファイル群２２及び各プログラム５１，５２，５３、設定ファイル２１、並びにリビジョンファイル２７を、所定のインストール先２９に展開する。本実施形態では、インストール先２９は、コンピュータ４０の記憶部４３（図１２参照）である。
【００６７】
４．機能実行時
次に、ソフトウェア製品５０に含まれる機能の実行時について説明する。
【００６８】
ソフトウェア製品５０（インストール媒体２６）のインストール先２９であるコンピュータ４０で、ユーザによりソフトウェア製品５０に含まれるいずれかの機能が指定されると、コンピュータ４０において、図１９に示す機能実行処理が実行される。ここでは、ユーザにより、機能Ａが指定されたものとして説明する。
【００６９】
ステップＳ２１で、フロントエンドプログラム５１が、環境変数設定プログラム５２を実行する。すなわち、フロントエンド処理部１１が環境変数設定部１２を機能させ、設定ファイル２１の内容を、環境変数２３に設定させる。
【００７０】
次に、ステップＳ２２で、フロントエンド処理部１１が、機能Ａの実行ファイルを起動する。次に、ステップＳ２３で、機能Ａの実行ファイルが、機能Ａの動作に必要な環境変数の設定値を取得するために、その環境変数の環境変数名を、マッピング部１３に受け渡す。ここでは、「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ＦＥＡＴＵＲＥ＿Ａ＿ＥＮＡＢＬＥＤ」という環境変数名がマッピング部１３に受け渡されたものとする。
【００７１】
次に、ステップＳ２４で、マッピングプログラム５３が起動され、図２０に詳細を示すマッピング処理が実行される。
【００７２】
図２０に示すマッピング処理のステップＳ２４１で、マッピング部１３が、キー２３Ｊ−バリュー２３Ｋの形式で定義された環境変数２３（図１１参照）から、受け渡された環境変数に対応して予め定められたキー２３Ｊに対応するバリュー２３Ｋを読み込む。例えば、環境変数名「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ＦＥＡＴＵＲＥ＿Ａ＿ＥＮＡＢＬＥＤ」に対しては、「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ＦＥＡＴＵＲＥＳ」というキー２３Ｊが定められているとする。この場合、図２１に示すように、キー２３Ｊ「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ＦＥＡＴＵＲＥＳ」に対応するバリュー２３Ｋ（図２１の環境変数２３内の下線部）を読み込む。なお、環境変数名とキー２３Ｊとの対応関係は、マッピングプログラム５３に予め設定されているものとする。
【００７３】
次に、ステップＳ２４２で、マッピング部１３が、読み込んだバリュー２１Ｋから、区切り文字毎に１つずつ設定情報２３Ｌを抽出し、各設定情報２３Ｌを、図２１の２３１に示すように、キー−バリューの組（「キー」＝「バリュー」）として解釈する。
【００７４】
次に、ステップＳ２４３で、マッピング部１３が、図２１の２３２に示すように、実行ファイルから受け渡された環境変数名からハッシュ値を計算する。ここでは、環境変数名「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ＦＥＡＴＵＲＥ＿Ａ＿ＥＮＡＢＬＥＤ」から、ハッシュ値「２８４３０９３９」が計算されたものとする。
【００７５】
次に、ステップＳ２４４で、マッピング部１３が、上記ステップＳ２４２で解釈したキー−バリューの組から、上記ステップＳ２４３で計算したハッシュ値と最も一致するキーを探索する。ここでは、図２１の２３３に示すキー−バリューの組の１つ目のキーが、上記ステップ２４３で計算されたハッシュ値「２８４３０９３９」と最も一致する。
【００７６】
次に、ステップＳ２４５で、マッピング部１３が、上記ステップＳ２４４で探索したキーに対応するバリューの値（ここでは「ｔｒｕｅ」、図２１の２３３内の下線部）を取得し、機能Ａの実行ファイルへ応答して、機能実行処理に戻る。
【００７７】
次に、図１９に示す機能実行処理のステップＳ２５で、機能Ａの実行ファイルが、環境変数の設定値として、マッピング部１３からの応答により取得した値を設定する。すなわち、「ＦＪ＿ＳＯＦＴＷＡＲＥ＿ＦＥＡＴＵＲＥ＿Ａ＿ＥＮＡＢＬＥＤ＝ｔｒｕｅ」という定義が設定されて、機能Ａが動作し、機能実行処理は終了する。これにより、機能Ａの動作が、設定ファイル２１に設定された定義にしたがって切り分けられる。
【００７８】
なお、必要な環境変数が複数ある場合には、上記ステップＳ２３及びＳ２４の処理を繰り返す。また、上記ステップＳ２１の処理は、マッピング部１３が環境変数２３を参照する前までに行われていればよいため、例えば、ステップＳ２３の後に実行してもよい。
【００７９】
５．保守時（インシデント対応時）
次に、ソフトウェア製品５０の保守時について説明する。
【００８０】
上述したように、各機能の実行ファイルは、環境変数名（ｆｅａｔｕｒｅ＿ｎ）をマッピングプログラム５３に渡す。マッピングプログラム５３では、設定された環境変数２３を参照し、対応する設定値（ｖａｌｕｅ＿ｎ）を応答する（図２２の一点破線部）。
【００８１】
保守時にも、このマッピングプログラム５３の機能を利用して、調査対象の環境変数の設定値を取得することができる。例えば、図２２のＡに示すように、保守担当者が、調査対象の環境変数名（ｆｅａｔｕｒｅ＿ｎ）をマッピングプログラム５３に渡すことにより、対応する設定値（ｖａｌｕｅ＿ｎ）を取得することができる。
【００８２】
また、図２２のＢに示すように、一覧表示プログラム３１を用いて、複数の環境変数の各々の設定値を一覧３２で取得することも可能である。具体的には、保守担当者が、一覧表示プログラム３１に対して実行を指示する。一覧表示プログラム３１では、実行ファイル群２２で必要となる環境変数の全てを順番にマッピングプログラム５３に問合せる。そして、一覧表示プログラム３１は、全ての設定値をマッピングプログラム５３から取得すると、環境変数名と、その設定値とを一覧にして、表示装置（図示省略）に表示する。なお、一覧表示する場合、全ての環境変数についての一覧を表示する場合に限定されず、一覧に含める環境変数の指定を受け付けるようにしてもよい。
【００８３】
ここで、設定ファイルに定義する環境変数名をハッシュ化するだけで、本実施形態におけるマッピングプログラム５３を設けない場合を考える。この場合、図２３に示すように、保守担当者は、調査対象のソフトウェア製品５０のハッシュ化済みの設定ファイル２１と、環境変数と短縮されたハッシュ値との対応表２５とを付き合わせて、調査対象の環境変数の設定値を読み取る必要がある。この場合、対応表２５で見るべき行がずれるなどの読み間違いなどにより、適切な保守作業を行うことができない場合がある。
【００８４】
本実施形態のように、マッピングプログラム５３を設けることで、利用側（実行ファイル、保守担当者）は、環境変数名を指定するだけでよいため、間違いが起こり難い。
【００８５】
また、利用側で対応表２５を持つ必要がないため、設定ファイルの更新の都度、利用者側の対応表２５も交換するという負担がない。
【００８６】
以下では、上記のように、設定ファイル２１がハッシュ化されているとしても、保守作業時における設定ファイル２１の解読（調査対象の環境変数の設定値以外の内容についても確認することを含む）に影響がないことを説明する。
【００８７】
まず、インストール先２９にインストールされたソフトウェア製品５０の設定ファイル２１が、ソフトウェア製品５０の出荷時のままの場合について説明する。出荷時のままいか否かは、リビジョンファイル２７に記載されたリビジョン番号に基づいて確認することができる。保守担当者は、図２４に示すように、ソースコードリポジトリ２４において、インストール先２９のリビジョンファイル２７で確認したリビジョン番号で管理されているファイル群のハッシュ化前の設定ファイル２１Ａを参照する。ハッシュ化前の設定ファイル２１Ａの内容と、インストール先２９にインストールされているハッシュ化済みの設定ファイル２１の内容とは同じであるため、ハッシュ化済みの設定ファイル２１の内容を確認することができる。
【００８８】
次に、ソフトウェア製品５０の出荷後に、バグやユーザによる不正な書き換えなどにより、環境異常が生じている場合の保守時について説明する。環境異常が生じていると、マッピングプログラムが正常に動作する保証はない。この場合、保守担当者は、図２５に示すように、最新のリビジョン番号が付加されて、ソースコードリポジトリ２４に格納されている対応表２５を確認する。最新のリビジョン番号の対応表２５には、過去のリビジョンで定義された環境変数と短縮されたハッシュ値との対応関係が全て記載されている。このため、対応表２５を参照して、インストール先２９にインストールされているハッシュ化済みの設定ファイル２１の内容を解読することができる。
【００８９】
６．パッチ適用時
次に、出荷済みのソフトウェア製品５０に通常のパッチを適用する場合について説明する。なお、通常のパッチとは、後述する個別対応のパッチ以外のパッチである。
【００９０】
図２６に示すように、通常のパッチ３３は、最新のリビジョン番号が付加されて、ソースコードリポジトリ２４に格納されている各ソースコードをビルドすることにより作成する。すなわち、通常のパッチ３３には、最新の実行ファイル群２２Ｂ及び各プログラム５１Ｂ，５２Ｂ，５３Ｂが含まれることになる。なお、ソースコード以外（設定ファイル２１Ａ及び対応表２５）はパッチに含めない。
【００９１】
インストール先２９のソフトウェア製品５０に通常のパッチ３３を適用することは、図２７に示すように、作成した通常のパッチ３３で、インストール先２９の実行ファイル群２２及び各プログラム５１，５２，５３の各々を上書きすることである。これにより、実行ファイル群２２及び各プログラム５１，５２，５３の各々だけが最新化される。
【００９２】
通常のパッチ適用後の機能実行時の動作は、基本的には、上述した機能実行時と同様である。ただし、通常のパッチ３３の適用により、ある機能に関する新たな定義が追加された場合、設定ファイル２１は更新されていないため、新たな定義は設定ファイル２１に記述されていない。例えば、図２８に示すように、機能３の定義として、環境変数「ｆｅａｔｕｒｅ３」が定義された場合、機能３の実行ファイルは、環境変数「ｆｅａｔｕｒｅ３」の設定値を参照する必要がある。しかし、設定ファイル２１には、環境変数「ｆｅａｔｕｒｅ３」についての設定情報２１Ｌは記載されていない。この場合、環境変数「ｆｅａｔｕｒｅ３」を利用する機能３は、内部的に保持しているデフォルト値で動作することになるため、問題ない。なお、通常はパッチ適用前後の互換性を維持するため、パッチ適用前の動作をデフォルト値にする。ただし、セキュリティ上の問題があるなど、特別なケースでは、パッチ適用前の動作そのものに問題がある場合もあるため、デフォルト値がパッチ適用前の動作と異なることはあり得る。
【００９３】
次に、出荷済みのソフトウェア製品５０に個別対応のパッチを適用する場合について説明する。
【００９４】
図２９に示すように、個別対応用のパッチ３４は、最新のリビジョン番号が付加されて、ソースコードリポジトリ２４に格納されている各ソースコード及び設定ファイル２１Ａ２をビルドすることにより作成する。なお、設定ファイル２１Ａ２には、個別対応用の定義を記述しておく。すなわち、個別対応用のパッチ３４には、最新の実行ファイル群２２Ｃ及び各プログラム５１Ｃ，５２Ｃ，５３Ｃ、並びに個別対応用のハッシュ化済みの設定ファイル２１Ｃが含まれることになる。なお、対応表２５はパッチに含めない。
【００９５】
インストール先２９のソフトウェア製品５０に個別対応用のパッチ３４を適用することは、図３０に示すように、作成したパッチ３４で、インストール先２９の実行ファイル群２２及び各プログラム５１，５２，５３の各々を上書きすることである。さらに、個別対応用のパッチ３４の適用により、設定ファイル２１も上書きされる。これにより、実行ファイル群２２及び各プログラム５１，５２，５３の各々が最新化され、設定ファイル２１が個別対応化される。
【００９６】
個別対応用のパッチ適用後の機能実行時の動作は、基本的には、上述した機能実行時と同様である。ただし、個別対応用のパッチ３４の適用により、設定ファイル２１に定義された環境変数の設定値が個別対応用の値となっている。そのため、図３１に示すように、個別対応用の設定値が設定された環境変数を利用する機能が、個別対応の定義に従って動作する。なお、図３１の例では、環境変数「ｆｅａｔｕｒｅ１」及び「ｆｅａｔｕｒｅ２」の設定値が、通常の場合は「ｖａｌｕｅ１」及び「ｖａｌｕｅ２」であるのに対し、個別対応では「ｖａｌｕｅ１’」及び「ｖａｌｕｅ２’」となっている。
【００９７】
以上説明したように、本実施形態に係るソフトウェア製品がインストールされた情報処理装置によれば、設定ファイルに定義された環境変数名が、ハッシュ化されて短縮されているため、設定ファイルに書き込まれる変数の設定情報の文字数を削減することができる。また、マッピングプログラムに環境変数名を渡すだけで、対応する設定値を取得することができるため、機能による環境変数の利用時又は保守時における設定値の確認などの誤りを回避することができる。
【００９８】
また、環境変数名をハッシュ化して短縮した値は、ソフトウェア製品で必要な全ての環境変数について異なるように求めるため、環境変数名のバッティングを回避することができる。さらに、各環境変数の設定情報を、ソフトウェア製品又はソフトウェア製品の機能などの固有の文字列をキーとするキー−バリュー形式のバリューに格納する。このため、他のアプリケーションとの間でも、環境変数名のバッティングを回避することができる。
【００９９】
なお、上記実施形態では、ソースコードリポジトリ２４に、ハッシュ化前の設定ファイル２１Ａを格納しておく場合について説明したが、これに限定されない。例えば、ハッシュ化前の設定ファイル２１Ａから、人手により、又はビルドツール以外のツールを利用して、ハッシュ化済みの設定ファイル２１を作成して、ソースコードリポジトリ２４に格納しておいてもよい。この場合、ビルド時には、ソースコードリポジトリ２４に格納されたハッシュ化済みの設定ファイル２１をそのままインストール媒体２６に含めればよい。
【０１００】
また、上記実施形態では、実行ファイル群２２とは別にマッピングプログラム５３を設ける場合について説明したが、これに限定されない。例えば、図３２に示すように、機能の実行ファイルの各々に、マッピングプログラム５３を含めてもよい。この場合、各機能の実行ファイルが起動され、環境変数の設定値が必要になった場合には、各機能の実行ファイルに含まれるマッピングプログラム５３の各々が、環境変数２３を参照して、必要な設定値を取得することができる。
【０１０１】
また、上記実施形態では、環境変数名の圧縮文字列として、環境変数名をハッシュ化して短縮した文字列を用いる場合について説明したが、これに限定されない。ソフトウェア製品で必要な全ての環境変数名の各々を識別可能で、元の環境変数名よりも文字数が少なくなるものであればよい。
【０１０２】
なお、上記では、ソフトウェア製品５０が記憶部４３に予め記憶（インストール）されている態様を説明したが、これに限定されない。ソフトウェア製品は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリ等の記録媒体に記録された形態で提供することも可能である。
【０１０３】
以上の実施形態に関し、更に以下の付記を開示する。
【０１０４】
（付記１）
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理プログラム。
【０１０５】
（付記２）
前記圧縮文字列を、前記変数名の文字列から計算されるハッシュ値とした付記１記載の情報処理プログラム。
【０１０６】
（付記３）
前記圧縮文字列を用いた変数の設定情報は、変数名の各々を識別可能な文字数まで前記圧縮文字列を短縮した文字列に、前記変数の値を対応付けた情報である付記１又は付記２記載の情報処理プログラム。
【０１０７】
（付記４）
前記設定情報は、前記ソフトウェアプログラム又は該ソフトウェアプログラムの機能の各々を識別可能な文字列をキーとし、変数毎の前記圧縮文字列を短縮した文字列と該変数の値との組の集合をバリューとするキー−バリュー形式で前記設定ファイルに書き込まれる付記３記載の情報処理プログラム。
【０１０８】
（付記５）
前記組の集合を、各組を区切り文字で区切って並べて、前記キー-バリュー形式のバリューに格納する付記４記載の情報処理プログラム。
【０１０９】
（付記６）
前記問合せに対応して、前記圧縮文字列を短縮した文字列のうち、前記問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に最も類似する文字列に対応付けられた変数の値を応答する付記３〜付記５のいずれか１項記載の情報処理プログラム。
【０１１０】
（付記７）
前記問合せで複数の変数名が指定された場合、前記複数の変数名の各々に対応する変数の値を一覧にして応答する付記１〜付記６のいずれか１項記載の情報処理プログラム。
【０１１１】
（付記８）
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数の変数名の指定を含む、変数の値についての問合せを受けた場合、複数の変数の各々の変数名を表す文字列を圧縮した圧縮文字列に該変数の値を対応付けた設定情報が記述された設定ファイルから、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理プログラム。
【０１１２】
（付記９）
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を用いて変数の設定情報が書き込まれ、かつ変数の値が設定される設定ファイルと、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する提供部と、
を含む情報処理装置。
【０１１３】
（付記１０）
前記圧縮文字列を、前記変数名の文字列から計算されるハッシュ値とした付記９記載の情報処理装置。
【０１１４】
（付記１１）
前記圧縮文字列を用いた変数の設定情報は、変数名の各々を識別可能な文字数まで前記圧縮文字列を短縮した文字列に、前記変数の値を対応付けた情報である付記９又は付記１０記載の情報処理装置。
【０１１５】
（付記１２）
前記設定情報は、前記ソフトウェアプログラム又は該ソフトウェアプログラムの機能の各々を識別可能な文字列をキーとし、変数毎の前記圧縮文字列を短縮した文字列と該変数の値との組の集合をバリューとするキー−バリュー形式で前記設定ファイルに書き込まれる付記１１記載の情報処理装置。
【０１１６】
（付記１３）
前記組の集合を、各組を区切り文字で区切って並べて、前記キー-バリュー形式のバリューに格納する付記１２記載の情報処理装置。
【０１１７】
（付記１４）
前記問合せに対応して、前記圧縮文字列を短縮した文字列のうち、前記問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に最も類似する文字列に対応付けられた変数の値を応答する付記１１〜付記１３のいずれか１項記載の情報処理装置。
【０１１８】
（付記１５）
前記問合せで複数の変数名が指定された場合、前記複数の変数名の各々に対応する変数の値を一覧にして応答する付記９〜付記１４のいずれか１項記載の情報処理装置。
【０１１９】
（付記１６）
ソフトウェアプログラムの動作で用いられる変数の変数名の指定を含む、変数の値についての問合せを受けた場合、複数の変数の各々の変数名を表す文字列を圧縮した圧縮文字列に該変数の値を対応付けた設定情報が記述された設定ファイルから、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する提供部
を含む情報処理装置。
【０１２０】
（付記１７）
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理方法。
【０１２１】
（付記１８）
前記圧縮文字列を、前記変数名の文字列から計算されるハッシュ値とした付記１７記載の情報処理方法。
【０１２２】
（付記１９）
前記圧縮文字列を用いた変数の設定情報は、変数名の各々を識別可能な文字数まで前記圧縮文字列を短縮した文字列に、前記変数の値を対応付けた情報である付記１７又は付記１８記載の情報処理方法。
【０１２３】
（付記２０）
前記設定情報は、前記ソフトウェアプログラム又は該ソフトウェアプログラムの機能の各々を識別可能な文字列をキーとし、変数毎の前記圧縮文字列を短縮した文字列と該変数の値との組の集合をバリューとするキー−バリュー形式で前記設定ファイルに書き込まれる付記１９記載の情報処理方法。
【０１２４】
（付記２１）
前記組の集合を、各組を区切り文字で区切って並べて、前記キー-バリュー形式のバリューに格納する付記２０記載の情報処理方法。
【０１２５】
（付記２２）
前記問合せに対応して、前記圧縮文字列を短縮した文字列のうち、前記問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に最も類似する文字列に対応付けられた変数の値を応答する付記１９〜付記２１のいずれか１項記載の情報処理方法。
【０１２６】
（付記２３）
前記問合せで複数の変数名が指定された場合、前記複数の変数名の各々に対応する変数の値を一覧にして応答する付記１７〜付記２２のいずれか１項記載の情報処理方法。
【０１２７】
（付記２４）
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数の変数名の指定を含む、変数の値についての問合せを受けた場合、複数の変数の各々の変数名を表す文字列を圧縮した圧縮文字列に該変数の値を対応付けた設定情報が記述された設定ファイルから、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理方法。
【０１２８】
（付記２５）
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理プログラムが記憶された記憶媒体。
【符号の説明】
【０１２９】
１０   情報処理装置
１１   フロントエンド処理部
１２   環境変数設定部
１３   マッピング部
２１   設定ファイル
２１Ｊ 環境変数全体のキー
２１Ｋ 環境変数全体のバリュー
２１Ｌ 設定情報
２１Ｍ 各環境変数のキー
２１Ｎ 各環境変数のバリュー
２２   実行ファイル群
２３   環境変数
２４   ソースコードリポジトリ
２５   対応表
４０   コンピュータ
４１   ＣＰＵ
４２   メモリ
４３   記憶部
５０   ソフトウェア製品
５１   フロントエンドプログラム
５２   環境変数設定プログラム
５３   マッピングプログラム
【図１】
0006468098.tif 000002
【図２】
0006468098.tif 000003
【図３】
0006468098.tif 000004
【図４】
0006468098.tif 000005
【図５】
0006468098.tif 000006
【図６】
0006468098.tif 000007
【図７】
0006468098.tif 000008
【図８】
0006468098.tif 000009
【図９】
0006468098.tif 000010
【図１０】
0006468098.tif 000011
【図１１】
0006468098.tif 000012
【図１２】
0006468098.tif 000013
【図１３】
0006468098.tif 000014
【図１４】
0006468098.tif 000015
【図１５】
0006468098.tif 000016
【図１６】
0006468098.tif 000017
【図１７】
0006468098.tif 000018
【図１８】
0006468098.tif 000019
【図１９】
0006468098.tif 000020
【図２０】
0006468098.tif 000021
【図２１】
0006468098.tif 000022
【図２２】
0006468098.tif 000023
【図２３】
0006468098.tif 000024
【図２４】
0006468098.tif 000025
【図２５】
0006468098.tif 000026
【図２６】
0006468098.tif 000027
【図２７】
0006468098.tif 000028
【図２８】
0006468098.tif 000029
【図２９】
0006468098.tif 000030
【図３０】
0006468098.tif 000031
【図３１】
0006468098.tif 000032
【図３２】
0006468098.tif 000033