JP6468098B2 - 情報処理プログラム、装置、及び方法 - Google Patents

情報処理プログラム、装置、及び方法 Download PDF

Info

Publication number
JP6468098B2
JP6468098B2 JP2015133886A JP2015133886A JP6468098B2 JP 6468098 B2 JP6468098 B2 JP 6468098B2 JP 2015133886 A JP2015133886 A JP 2015133886A JP 2015133886 A JP2015133886 A JP 2015133886A JP 6468098 B2 JP6468098 B2 JP 6468098B2
Authority
JP
Japan
Prior art keywords
variable
character string
value
setting
environment variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015133886A
Other languages
English (en)
Other versions
JP2017016479A (ja
Inventor
公弘 大久保
公弘 大久保
修 小山田
修 小山田
昌弘 竹田
昌弘 竹田
橋本 孝幸
孝幸 橋本
貢嗣 山本
貢嗣 山本
耕平 宇野
耕平 宇野
柴田 泰典
泰典 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015133886A priority Critical patent/JP6468098B2/ja
Priority to US15/195,290 priority patent/US20170003958A1/en
Publication of JP2017016479A publication Critical patent/JP2017016479A/ja
Application granted granted Critical
Publication of JP6468098B2 publication Critical patent/JP6468098B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、情報処理プログラム、情報処理装置、及び情報処理方法に関する。
従来、ソフトウェア製品の設定ファイルに記述された内容を、OS(Operating System)などの動作環境を指定する環境変数に設定することが行われている。ソフトウェア製品は、バージョンアップや障害に対する修正などにより、機能の追加や挙動の変更が生じるため、バージョン毎に適切な環境変数が設定される必要がある。
設定ファイルを用いたソフトウェア製品の管理に関する技術として、システムに接続された複数のコンピュータに自動インストールを行う際に、各コンピュータに固有の設定を施したインストールを行うことを可能とするコンピュータシステムが提案されている。このコンピュータシステムでは、各被インストール装置からインストール要求を受けたインストールサーバ装置が、各被インストール装置に対応したインストール用パラメータを固有情報データベースから取得する。そして、取得したパラメータに従い、インストールするソフトウェアのコンフィグレーションを保持する設定ファイルを作成し、各被インストール装置に送信し、インストールを行う。
特開9−218777号公報
環境変数として設定可能な文字数には制限があるため、設定ファイルに記述した内容を環境変数に設定した場合に、文字数オーバーが生じる場合がある。このような場合には、設定された環境変数を利用して動作する機能が正しく動作しなくなるという問題がある。
本発明は、一つの側面として、設定ファイルに書き込まれる変数の設定情報の文字数を削減することを目的とする。
本発明は、一つの態様として、ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得する。また、変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込む。そして、変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する。
一つの側面として、設定ファイルに書き込まれる変数の設定情報の文字数を削減することができる、という効果を有する。
設定ファイルのハッシュ化を説明するための図である。 ソースコードのブランチによる管理を説明するための図である。 ブランチ数の増加を説明するための図である。 一つのブランチでソースコードを管理する場合を説明するための図である。 設定ファイルの一例を示す図である。 環境変数の設定を説明するための図である。 他のアプリケーションとの間での環境変数名のバッティングを説明するための図である。 環境変数名の単純な短縮が困難であることを説明するための図である。 本実施形態に係る情報処理装置の概略構成を示す機能ブロック図である。 設定ファイルの一例を示す図である。 環境変数の一例を示す図である。 本実施形態に係る情報処理装置として機能するコンピュータの概略構成を示すブロック図である。 ソフトウェア製品の開発及びビルド時について説明するための図である。 設定ファイル作成処理の一例を示すフローチャートである。 ハッシュ化後の文字列の変換の一例を示す図である。 環境変数名に応じて設定情報の格納先が複数ある場合の設定ファイルの一例を示す図である。 設定ファイルのハッシュ化を説明するための図である。 ソフトウェア製品のインストール時について説明するための図である。 機能実行処理の一例を示すフローチャートである。 マッピング処理の一例を示すフローチャートである。 環境変数名に応じた設定値の応答を説明するための図である。 保守時のマッピングプログラムの機能を説明するための図である。 マッピングプログラムがない場合の保守作業を説明するための図である。 出荷時のままのソフトウェア製品の保守作業を説明するための図である。 出荷時から変更されているソフトウェア製品の保守作業を説明するための図である。 通常のパッチの作成を説明するための図である。 通常のパッチの適用を説明するための図である。 通常のパッチが適用されたソフトウェア製品の機能実行時について説明するための図である。 個別対応用のパッチの作成を説明するための図である。 個別対応用のパッチの適用を説明するための図である。 個別対応用のパッチが適用されたソフトウェア製品の機能実行時について説明するための図である。 実行ファイル群及びマッピング部の他の構成例を示す図である。
まず、実施形態の詳細を説明する前に、設定ファイルに記述される環境変数の設定情報の文字数を削減する必要がある理由について説明する。
ソフトウェア製品では、バージョンアップにより機能を追加させる場合がある。また、ソフトウェア製品に障害が発生した場合、障害に対する修正をソフトウェア製品に適用する。この際、修正を適用しても、ソフトウェア製品のバージョン毎の動作に非互換が発生しないように、各バージョンのソースコードを管理する必要がある。
一般的には、ソフトウェア製品がバージョンアップする毎に、ソースコードを分けて管理する方法が使われる。この管理方法では、図2に示すように、ソースコードが木のように枝分かれしていくことから、枝分かれした各々のソースコードはブランチと呼ばれる。図2の例では、出荷時のソフトウェア製品(以下、「製品v1.0」ともいう)に対し、機能Aが追加されたバージョン2(以下、「製品v2.0」ともいう)にバージョンアップしている。さらに、機能Bの挙動が変更されたバージョン2.1(以下、「製品v2.1」ともいう)にバージョンアップしている。したがって、製品v1.0のブランチ101から製品v2.0のブランチ102が枝分かれし、さらに、製品v2.1のブランチ103が枝分かれした状態で管理される。
上記のような各ブランチ101,102,103が管理されている状態でソフトウェア製品に障害Cが発生したとする。障害を修正するための障害修正情報は、各バージョンに対応した内容で作成する必要があり、作成された障害修正情報は、決まったバージョンにしか適用できない。図2の例では、ブランチ101,102,103の各々に対して障害Cに対する障害修正情報111,112,113がそれぞれ必要である。このように、バージョン毎のソースコードをブランチで管理する場合には、ブランチ数に比例して、障害修正情報の作成にかかるコストが増加するという問題がある。障害修正情報の作成作業、及び付随するテスト、検査、事務手続き等のコストは高く、ブランチ数の増加による保守工数の増加が大きな問題になる。
このような保守工数の増加を抑制するために、例えば、最新バージョンと前のバージョンのみをサポート対象にするなど、サポート対象とするバージョンを少なくするなどの対応が考えられる。しかし、長期サポートを保証しているソフトウェア製品や、サポート対象のバージョンが多いソフトウェア製品では、このような対応をとることができない。
また、ソフトウェア製品に含まれる全ての機能のうち、所定の機能のみを含む機能限定版、全ての機能を含む全機能版などの異なるエディションを提供している場合もあり、このエディションの相違によっても、ブランチ数は増加する。他にもOS(Operating System)やアーキテクチャなど、ブランチ数を増加させる要素がある。これらの要素を考慮すると、図3に示すように、ブランチ数は乗算で増加していくことになり、サポートするバージョン数が少し増えるだけでも、ブランチ数は大きく増加してしまう。さらに、特定の機能の挙動だけが異なるエディションを、個別提供版として提供することも多い。このような個別提供版のエディション毎にブランチを分けてしまうと、ブランチ数が組み合わせ爆発を起こす。
そこで、サポートするバージョン数が多い状況で、保守工数を減らすために、異なるバージョンのソースコードを、例えば、図4に示すように、一つのブランチ104で扱うことが考えられる。これにより、障害修正情報114を一本かすることができ、保守工数の削減に繋がる。なお、以下では、バージョン、エディション、OS、アーキテクチャなどのブランチ数を増加させる要素として、「バージョン」を用いて説明するが、他の要素を用いた場合も同様である。
図4に示すように、一つのブランチ104でバージョン管理を行う場合、ソフトウェア製品に含まれる各機能の動作を定義する設定ファイルを用意し、設定ファイルに定義される各項目について、バージョン毎に適切な設定値を設定する。これにより、バージョン毎の動作を切り分けることができる。すなわち、バージョンが上がる毎に、設定ファイルには、追加された機能に対応した定義項目や、機能の挙動変更に対応した定義項目が増えていく。
例えば、図5に示すように、初期の製品v1.0についての設定ファイル121には、定義項目は存在せず、各機能がデフォルト値で動作する。機能Aが追加された製品v2.0の設定ファイル122には、機能Aを有効にするか無効にするかを設定可能な定義項目(「Enable_Feature_A」)及びその設定値が記述される。また、機能Bの挙動が変更された製品v2.1の設定ファイル123には、定義項目(「Enable_Feature_A」)に加え、機能Bの挙動を指定する定義項目(「Feature_B_Mode」)が記述される。例えば、「Enable_Feature_A=false」が指定された場合は、「Enable_Feature_A」という定義項目が存在しない古いバージョンのデフォルト動作とすることで、バージョン間の互換性を保つことができる。
ここで、ソフトウェア製品が、機能を構成する言語として、バッチファイル、シェルスクリプト、C、Java(登録商標)など複数の言語を利用可能な場合、言語毎に読み書きし易い記述形式が異なるため、設定ファイルの記述形式が問題になる。例えば、標準でAPI(Application Programming Interface)が用意されているJava(登録商標)では、プロパティファイル形式が扱い易いが、バッチファイルでは環境変数を設定するバッチファイルの形式が扱い易い。
機能毎に設定ファイルを作成することも考えられるが、設定ファイルが複数存在すると、インシデント調査時の資料採取に取りこぼしの可能性が増えてしまう。また、同じ定義が複数の機能で利用される場合、複数の設定ファイルに同じ定義が存在することになる。このような複数の設定ファイルに存在する定義の設定値を書き換える場合、一部の設定ファイルに書き換え漏れが生じるなどして、全体に不整合が生じる可能性もある。
そこで、設定ファイルの内容を、機能を実現しているプロセスの環境変数に設定する。別の態様としては、例えば、機能を呼び出す親プロセスがバッチファイル、シェルスクリプト等の形式で記述された設定値を親プロセス自身の環境変数に設定した後で、機能のプロセスを呼び出す。これにより、親プロセスの環境変数が子プロセスである機能のプロセスに引き継がれる。なお、親プロセスは、直接の親プロセスではなく、親の親、あるいはさらにその親のプロセスでもよい。
しかし、上述のように、設定ファイルに記述される定義は、バージョンが上がるにしたがって増えていくため、環境変数として設定される文字数も増えることになる。OSによって制限は異なるが、環境変数全体の文字数は制限されており、例えば、Windows(登録商標)の一部のバージョンでは2,047文字という制限がある。さらに、図6に示すように、機能が利用する環境変数131には、設定ファイル132に記述した環境変数に加え、OS又は機能を呼び出した親プロセスの環境変数133も引き継がれる。このため、機能が利用する環境変数131に設定される文字数は、なるべく少なくする必要がある。
環境変数は、環境変数名をキーとし、その環境変数名が示す環境変数の設定値をバリューとするキー−バリューの組で表される。そこで、環境変数に設定される文字数を少なくする方法として、環境変数名を短くすることが考えられる。単純な方法として、環境変数名の先頭から、他の環境変数名と識別可能な文字数まで短縮することが考えられる。例えば、「ABC」という環境変数名と、「AAA」という環境変数名とがある場合、1文字目は同じ「A」のため、両者を識別できないが、2文字目は前者が「B」、後者が「A」と異なる。したがって、前者を「AB」、後者を「AA」と短縮することができる。しかし、このような単純な文字数の短縮では、以下に説明するような問題が生じる。
図7に示すように、OSの環境変数133から引き継いだ環境変数と、設定ファイル132から設定された環境変数に、同一の環境変数名(図7の例では、「feature2」)が存在し、それぞれ異なる設定値が定められているとする。この場合、機能が利用する環境変数131にいて、「feature2」の設定値が、OSの環境変数133から引き継いだ設定値から、設定ファイル132により後から設定された設定値に上書きされてしまう。ある機能が、同一のOS上で動作する別のアプリケーションを呼び出す場合、別のアプリケーションを呼び出した機能が利用する環境変数131が、呼び出されたアプリケーションの機能が利用する環境変数134として引き継がれる。呼び出された別のアプリケーションにおいて、OSの環境変数133から引き継いだ設定値が必要だった場合、設定ファイル132により設定された設定値で上書きされているため、アプリケーションの動作に影響が出てしまう。一般には、呼び出している(第三者が開発した)別のアプリケーションがどのような環境変数を利用しているかは非公開情報であり、事前に把握することは困難であるため、このような環境変数名のバッティングが生じ得る。
このような環境変数名のバッティングを避けるために、ソフトウェア製品及び機能毎に固有の接頭辞を付ける方法が考えられる。例えば、上記の「feature2」という環境変数について、ソフトウェア製品固有の「FJ_SOFTWARE_***」のような接頭辞をつけて、「FJ_SOFTWARE_feature2」という環境変数名にすることができる。一方、OSの環境変数は、同様に接頭辞を用いて、例えば、「OS_feature2」とすることができるため、環境変数名のバッティングを避けることができる。しかし、このような接頭辞を付加することが、環境変数の総文字数を増やす原因になる。
例えば、製品Aの機能1に関する環境変数名には、「PRODUCT−A_FEATURE−1」という接頭辞を付けるとする。この接頭辞を付けて、製品Aの機能1のホームディレクトリのパスを表す環境変数名は「PRODUCT−A_FEATURE−1_HOME−DIR」とする。同様に、製品Aの機能2に関する環境変数名には、「PRODUCT−A_FEATURE−2」という接頭辞を付けるとする。この場合において、上記のように、他の環境変数名と識別可能な文字まで残す方法により環境変数名の文字数を少なくすることを考える。図8に示すように、短縮前の環境変数141では、環境変数名に共通の接頭辞「PRODUCT−A_FEATURE−1」又は「PRODUCT−A_FEATURE−2」が付いている。そのため、他の環境変数名と識別可能な文字まで残すとすると、図8の短縮後の環境変数142に示すように、接頭辞を省略することができないため、環境変数全体の文字数の削減効果が低い。
そこで、以下の実施形態では、環境変数名のバッティングを避けつつ、環境変数名の短縮を図り、設定ファイルに記述される環境変数の設定情報の文字数を削減することを目的とする。
以下、本発明に関する実施形態の一例を詳細に説明する。本実施形態では、上述のように、設定ファイルの内容が、機能が利用するプロセスの環境変数として設定されるソフトウェア製品がインストールされた情報処理装置について説明する。
<情報処理装置の構成>
図9に示すように、本実施形態に係る情報処理装置10は、フロントエンド処理部11と、環境変数設定部12と、マッピング部13と設定ファイル21と、実行ファイル群22とを含む。なお、マッピング部13は、本発明の提供部の一例である。
フロントエンド処理部11は、ユーザや他のアプリケーションからの指示を受け付けて、指示された機能の実行ファイルを起動する。
実行ファイル群22には、ソフトウェア製品に含まれる各機能を動作させるための実行ファイルの各々が含まれる。フロントエンド処理部11により起動された実行ファイルで必要な環境変数の設定値は、設定ファイル21から設定された環境変数23から取得される。各機能の実行ファイルは、設定値を知りたい環境変数の環境変数名をマッピング部13に受け渡す。また、実行ファイルは、マッピング部13からの応答により取得した設定値を用いて、指定された機能を動作させる。
設定ファイル21には、環境変数23として設定される各定義が記述されている。具体的には、図10に示すように、設定ファイル21には、ソフトウェア製品の製品名や、ソフトウェア製品に含まれる機能の機能名などの固有の文字列をキー21Jとするキー−バリュー形式のバリュー21Kに、各環境変数の設定情報21Lが格納されている。各環境変数の設定情報21Lは、各環境変数名をハッシュ値に変換し、さらに他の環境変数名と識別可能な文字数まで短縮した文字列をキー21Mとし、その環境変数の設定値をバリュー21Nとするキー−バリューの組である。各環境変数の設定情報21Lは、各々を区切り文字(例えば、セミコロン)で区切って、バリュー21Kに格納される。
なお、設定ファイル21の作成方法の詳細については、後述する。
環境変数設定部12は、設定ファイル21に記述された内容を、図11に示すように、環境変数23として設定する。環境変数23は、設定ファイル21と同様、固有の文字列をキー23Jとするキー−バリュー形式のバリュー23Kに、キー23Mとバリュー23Nとの組で表された各環境変数の設定情報23Lが格納された形式である。
マッピング部13は、各機能の実行ファイルから受け渡された環境変数名に対応する設定値を、環境変数23から探索して、実行ファイルへ応答する。
具体的には、マッピング部13は、設定された環境変数23から、受け渡された環境変数名に対応して予め定められた文字列と一致するキー23Jを特定し、そのキー23Jに対応するバリュー23Kに格納された各環境変数の設定情報23Lを読み込む。そして、マッピング部13は、読み込んだ設定情報23Lの各々を、キー23M−バリュー23Nの組として解釈する。また、マッピング部13は、実行ファイルから受け渡された環境変数名からハッシュ値を計算する。そして、マッピング部13は、キー23M−バリュー23Nの組から、計算したハッシュ値と最も一致するキー23Mに対応するバリュー23Nを探索し、探索したバリューの値を、実行ファイルへ応答する。
情報処理装置10は、例えば、図12に示すコンピュータ40で実現することができる。コンピュータ40はCPU41、一時記憶領域としてのメモリ42、及び不揮発性の記憶部43を備える。また、コンピュータ40は、表示装置及び入力装置等の入出力装置48が接続される入出力インターフェース(I/F)44を備える。また、コンピュータ40は、記録媒体49に対するデータの読み込みと書き込みとを制御するread/write(R/W)部45、及びインターネット等のネットワークに接続されるネットワークI/F46を備える。CPU41、メモリ42、記憶部43、入出力I/F44、R/W部45、及びネットワークI/F46は、バス47を介して互いに接続される。
記憶部43は、HDD(Hard Disk Drive)、SSD(solid state drive)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部43には、コンピュータ40を情報処理装置10として機能させるためのソフトウェア製品50が記憶される。ソフトウェア製品50には、フロントエンドプログラム51と、環境変数設定プログラム52と、マッピングプログラム53と、設定ファイル21と、実行ファイル群22とが含まれる。
CPU41は、フロントエンドプログラム51、環境変数設定プログラム52、及びマッピングプログラム53の各々を記憶部43から読み出してメモリ42に展開し、各プログラム51,52,53が有するプロセスを順次実行する。
CPU41は、フロントエンドプログラム51を実行することで、図9に示すフロントエンド処理部11として動作する。また、CPU41は、環境変数設定プログラム52を実行することで、図9に示す環境変数設定部12として動作する。また、CPU41は、マッピングプログラム53を実行することで、図9に示すマッピング部13として動作する。これにより、ソフトウェア製品50がインストールされたコンピュータ40が、情報処理装置10として機能することになる。
<情報処理装置の作用>
次に、本実施形態に係る情報処理装置10の作用について説明する。
1.開発時
まず、情報処理装置10にインストールされるソフトウェア製品50の開発時について説明する。
ソフトウェア製品の開発者(設計者)が、ソフトウェア製品50に含まれる各種ファイルの各々を作成する。そして、図13に示すように、作成されたファイル群は、所定の記憶領域であるソースコードリポジトリ24に格納される。ファイル群には、機能の各々についてのソースコード群22A、フロントエンドプログラムのソースコード51A、環境変数設定プログラムのソースコード52A、マッピングプログラムのソースコード53A、ハッシュ化前の設定ファイル21A、及び環境変数名と短縮されたハッシュ値との対応表25が含まれる。ファイル群には、ソースコードリポジトリ24に対して格納、更新、削除が行われる度に更新されるリビジョン番号が付与されて、管理される。
2.ビルド時
次に、ビルド時について説明する。
図13に示すように、ソースコードリポジトリ24に格納されたファイル群をビルドして、インストール媒体26を作成する。ファイル群のビルドは、手動で行ってもよいし、ビルドツールを利用して行ってもよい。ここでは、ビルドツールによりビルドする場合について説明する。
なお、図13は、Windows(登録商標)用のプログラムを作成する場合について図示したものである。図13の記載では、設定ファイルがバッチファイル形式になっている。異なるOS用のプログラムを作成する場合は、設定ファイルをOSに応じた適切な形式にする。例えば、UNIX(登録商標)用のプログラムではシェルスクリプト等にする。
具体的には、ビルドツールが、ファイル群が格納されているソースコードリポジトリ24のリビジョン番号を書き写したリビジョンファイル27を作成する。また、ビルドツールが、機能のソースコード群22A及び各プログラムのソースコード51A,52A,53Aの各々をコンパイルして、実行ファイル群22及び各プログラム51,52,53を作成する。また、ビルドツールが、ハッシュ化前の設定ファイル21Aから、ハッシュ化済みの設定ファイル21を作成する。
ここで、図14及び図1を参照して、設定ファイル21の作成について詳述する。例えば、ソフトウェア製品50で必要な全ての環境変数の環境変数名がハッシュ化前の設定ファイル21Aに記述されている状態で、ビルドツールが、図14に示す設定ファイル作成処理を実行する。
ステップS11で、ビルドツールが、ソースコードリポジトリ24から、ハッシュ化前の設定ファイル21Aを読み込む。
次に、ステップS12で、ビルドツールが、図1の211に示すように、設定ファイル21Aに記述された全ての環境変数名の各々からハッシュ値を計算する。例えば、環境変数名をハッシュ関数で変換し、0から最大値M(Mはハッシュ関数に依存)の範囲の数値を得る。10進数では桁数が多くなってしまうので、環境変数の文字数削減の効果をより高めるために、例えば、図15に示すように、数値をn進数で表現し、数字、アルファベット、及び記号を含む文字列に変換する。
次に、ステップS13で、ビルドツールが、上記ステップS12で計算されたハッシュ値が全て異なるか否かを判定する。ソフトウェア製品50の開発段階で、全ての環境変数名が異なるように定めておくことはできるが、ハッシュ値の性質上、異なる環境変数名から計算されたハッシュ値が同一になってしまう場合もある。なお、入力値をランダムに変えた際に0から最大値Mまでが同確率で出現するハッシュ関数を利用した場合、ハッシュ値が8桁の16進数の場合の一致確率は、1/(16^8)=1/4,294,967,296である。また、ハッシュ値が4桁の32進数の場合の一致確率は、1/(32^4)=1,048,576という低確率である。
ハッシュ値が同一であることは、環境変数名のバッティングが生じることを意味するため、本ステップの判定は、計算されたハッシュ値が全て異なることを保証するための判定である。計算されたハッシュ値に同一のものが含まれる場合には、処理はステップS14へ移行し、全て異なる場合には、処理はステップS15へ移行する。図1の211の例では、2行目の環境変数名から計算されたハッシュ値と、3行目の環境変数名から計算されたハッシュ値とが同一になっているため、処理はステップS14へ移行する。
ステップS14では、ビルドツールが、ハッシュ値が同一になる環境変数名を開発者等に提示し、開発者等に環境変数名の変更を促す。ソフトウェア製品50の出荷前の段階であるため、開発者等は、環境変数名を自由に変更することができる。例えば、図1の212に示すように、ハッシュ値が同一となっていた一方の環境変数名を変更することができる。ビルドツールは、変更された環境変数名を受け付け、処理はステップS12に戻る。
変更された環境変数名について、改めてハッシュ値が計算され、例えば、図1の213に示すように、全てのハッシュ値が異なっている場合には、処理はステップS15へ移行する。
ステップS15では、ビルドツールが、図1の214に示すように、設定ファイル21Aの環境変数名を、それぞれ計算したハッシュ値に置き換える。そして、ビルドツールは、図1の215に示すように、ハッシュ値の先頭から見て、他のハッシュ値と識別できる最小文字数までを残すことにより、ハッシュ値を短縮する。上記ステップS13の処理で、ハッシュ値が全て異なることが予め保証されているため、このように短縮しても、各ハッシュ値を識別することができる。
次に、ステップS16で、ビルドツールは、各環境変数の設定情報21Lとして、短縮したハッシュ値をキー21M、その環境変数の設定値をバリュー21Nとするキー−バリューの組を作成する。そして、ビルドツールは、ソフトウェア製品の製品名や機能名などの固有の文字列をキー21Jとするキー−バリュー形式のバリュー21Kに、各環境変数の設定情報21Lを、区切り文字(例えば、セミコロン)で区切って格納する(図10参照)。なお、区切り文字は、セミコロンに限定されず、他の記号を用いてもよい。このように、固有の文字列をキー21Jに設定することで、図7に示すように、本ソフトウェア製品50の機能と、他のアプリケーションの機能とで利用する環境変数名が同一の場合でも、参照先がバッティングすることを回避できる。
なお、図1の例では、設定ファイル21に定義されるキー21Jが1つの場合を示しているが、キー21Jは、機能毎、機能を複数にグループ分けしたグループ毎など、複数のキー21Jを定義してもよい。例えば、図1に示すハッシュ化前の設定ファイル21Aについて、機能A(FEATURE_A)及び機能B(FEATURE_A)に関する環境変数を1つのグループとして、1つのキー21Jを割り当てる。また、機能C(FEATURE_C)に関する環境変数に対して、別のキー21Jを割り当てることができる。この場合、例えば、図16に示すように、各キー21Jに対応するバリュー21Kに、対応する環境変数の設定情報21Lが格納される。
このような機能のグループ分けは、開発者や保守担当者などが管理し易い形で設定すればよい。例えば、パス関係の環境変数の設定情報21Lを、「paths」というキー21Jに対応するバリュー21Kに格納することができる。また、例えば、ソフトウェア製品50が部品単位で分かれていて、部品毎に環境変数23を参照する場合には、部品Aが使う環境変数の設定情報21Lを、「componentA」というキー21Jに対応するバリュー21Kに格納することができる。
次に、ステップS17で、ビルドツールが、ソフトウェア製品50が動作するOSに応じた言語(例えば、バッチファイルやシェルスクリプト)で設定ファイル21を書き出し、設定ファイル作成処理は終了する。
なお、上記の設定ファイル作成処理は、ソフトウェア製品50で必要な環境変数が全て決定した段階で行うことを前提としているが、これは、短縮したハッシュ値が全て異なることを保証するためである。
例えば、全ての環境変数名が決定していない段階で、図17の215に示すように、その段階で決定している環境変数名について、短縮されたハッシュ値が求まっているとする。なお、この段階では、短縮される前のハッシュ値の情報(図1の214参照)は失われている。この状況で、例えば、「FJ_SOFTWARE_FEATURE_D_ENABLED=false」という定義(環境変数名+設定値)を追加するとする。環境変数名「FJ_SOFTWARE_FEATURE_D_ENABLED」から、ハッシュ値「2847e091」が計算されたとすると、既に求まっている短縮されたハッシュ値(図17の215)と識別可能な「284」に短縮される(図17の216)。この場合、環境変数名から計算されるハッシュ値が「284」で始まる環境変数の設定値としては、図17の216の1行目を参照すべきか、4行を参照すべきかを判断できない。このような事態を避けるために、全ての環境変数名が決定した段階で、ハッシュ化前の設定ファイル21Aから、ハッシュ化済みの設定ファイル21を作成することとしている。
上記のように作成されたリビジョンファイル27、実行ファイル群22及び各プログラム51,52,53、並びにハッシュ化済みの設定ファイル21は、図13に示すように、インストール媒体26として、インストール媒体リポジトリ28に格納される。ソフトウェア製品50の出荷時には、インストール媒体リポジトリ28からインストール媒体26が取り出されて、出荷される。
ソースコードリポジトリ24に格納されている環境変数名と短縮されたハッシュ値との対応表25は、インストール媒体26には含まれない。なお、対応表25は、短縮されたハッシュ値と環境変数名とが1対1で対応付けられたものであり、手動で作成してもよいし、自動作成ツールを利用して作成してもよい。例えば、上記の設定ファイル作成処理のステップS11で読み込んだハッシュ化前の設定ファイル21Aに記述された環境変数名と、ステップS15で短縮されたハッシュ値とを対応付けることにより作成することができる。
ソースコードリポジトリ24に格納された設定ファイル21Aが更新され、設定ファイル21Aに新しい環境変数名が追加された場合には、対応表25も更新する。なお、対応表には、現在のリビジョンの設定ファイル21Aに記述されていない環境変数名も含め、全てのリビジョンで使用された環境変数名と、短縮されたハッシュ値との対応を記録しておく。
3.インストール時
次に、ソフトウェア製品50のインストール時について説明する。
インストール時には、図18に示すように、インストール媒体26に含まれる実行ファイル群22及び各プログラム51,52,53、設定ファイル21、並びにリビジョンファイル27を、所定のインストール先29に展開する。本実施形態では、インストール先29は、コンピュータ40の記憶部43(図12参照)である。
4.機能実行時
次に、ソフトウェア製品50に含まれる機能の実行時について説明する。
ソフトウェア製品50(インストール媒体26)のインストール先29であるコンピュータ40で、ユーザによりソフトウェア製品50に含まれるいずれかの機能が指定されると、コンピュータ40において、図19に示す機能実行処理が実行される。ここでは、ユーザにより、機能Aが指定されたものとして説明する。
ステップS21で、フロントエンドプログラム51が、環境変数設定プログラム52を実行する。すなわち、フロントエンド処理部11が環境変数設定部12を機能させ、設定ファイル21の内容を、環境変数23に設定させる。
次に、ステップS22で、フロントエンド処理部11が、機能Aの実行ファイルを起動する。次に、ステップS23で、機能Aの実行ファイルが、機能Aの動作に必要な環境変数の設定値を取得するために、その環境変数の環境変数名を、マッピング部13に受け渡す。ここでは、「FJ_SOFTWARE_FEATURE_A_ENABLED」という環境変数名がマッピング部13に受け渡されたものとする。
次に、ステップS24で、マッピングプログラム53が起動され、図20に詳細を示すマッピング処理が実行される。
図20に示すマッピング処理のステップS241で、マッピング部13が、キー23J−バリュー23Kの形式で定義された環境変数23(図11参照)から、受け渡された環境変数に対応して予め定められたキー23Jに対応するバリュー23Kを読み込む。例えば、環境変数名「FJ_SOFTWARE_FEATURE_A_ENABLED」に対しては、「FJ_SOFTWARE_FEATURES」というキー23Jが定められているとする。この場合、図21に示すように、キー23J「FJ_SOFTWARE_FEATURES」に対応するバリュー23K(図21の環境変数23内の下線部)を読み込む。なお、環境変数名とキー23Jとの対応関係は、マッピングプログラム53に予め設定されているものとする。
次に、ステップS242で、マッピング部13が、読み込んだバリュー21Kから、区切り文字毎に1つずつ設定情報23Lを抽出し、各設定情報23Lを、図21の231に示すように、キー−バリューの組(「キー」=「バリュー」)として解釈する。
次に、ステップS243で、マッピング部13が、図21の232に示すように、実行ファイルから受け渡された環境変数名からハッシュ値を計算する。ここでは、環境変数名「FJ_SOFTWARE_FEATURE_A_ENABLED」から、ハッシュ値「28430939」が計算されたものとする。
次に、ステップS244で、マッピング部13が、上記ステップS242で解釈したキー−バリューの組から、上記ステップS243で計算したハッシュ値と最も一致するキーを探索する。ここでは、図21の233に示すキー−バリューの組の1つ目のキーが、上記ステップ243で計算されたハッシュ値「28430939」と最も一致する。
次に、ステップS245で、マッピング部13が、上記ステップS244で探索したキーに対応するバリューの値(ここでは「true」、図21の233内の下線部)を取得し、機能Aの実行ファイルへ応答して、機能実行処理に戻る。
次に、図19に示す機能実行処理のステップS25で、機能Aの実行ファイルが、環境変数の設定値として、マッピング部13からの応答により取得した値を設定する。すなわち、「FJ_SOFTWARE_FEATURE_A_ENABLED=true」という定義が設定されて、機能Aが動作し、機能実行処理は終了する。これにより、機能Aの動作が、設定ファイル21に設定された定義にしたがって切り分けられる。
なお、必要な環境変数が複数ある場合には、上記ステップS23及びS24の処理を繰り返す。また、上記ステップS21の処理は、マッピング部13が環境変数23を参照する前までに行われていればよいため、例えば、ステップS23の後に実行してもよい。
5.保守時(インシデント対応時)
次に、ソフトウェア製品50の保守時について説明する。
上述したように、各機能の実行ファイルは、環境変数名(feature_n)をマッピングプログラム53に渡す。マッピングプログラム53では、設定された環境変数23を参照し、対応する設定値(value_n)を応答する(図22の一点破線部)。
保守時にも、このマッピングプログラム53の機能を利用して、調査対象の環境変数の設定値を取得することができる。例えば、図22のAに示すように、保守担当者が、調査対象の環境変数名(feature_n)をマッピングプログラム53に渡すことにより、対応する設定値(value_n)を取得することができる。
また、図22のBに示すように、一覧表示プログラム31を用いて、複数の環境変数の各々の設定値を一覧32で取得することも可能である。具体的には、保守担当者が、一覧表示プログラム31に対して実行を指示する。一覧表示プログラム31では、実行ファイル群22で必要となる環境変数の全てを順番にマッピングプログラム53に問合せる。そして、一覧表示プログラム31は、全ての設定値をマッピングプログラム53から取得すると、環境変数名と、その設定値とを一覧にして、表示装置(図示省略)に表示する。なお、一覧表示する場合、全ての環境変数についての一覧を表示する場合に限定されず、一覧に含める環境変数の指定を受け付けるようにしてもよい。
ここで、設定ファイルに定義する環境変数名をハッシュ化するだけで、本実施形態におけるマッピングプログラム53を設けない場合を考える。この場合、図23に示すように、保守担当者は、調査対象のソフトウェア製品50のハッシュ化済みの設定ファイル21と、環境変数と短縮されたハッシュ値との対応表25とを付き合わせて、調査対象の環境変数の設定値を読み取る必要がある。この場合、対応表25で見るべき行がずれるなどの読み間違いなどにより、適切な保守作業を行うことができない場合がある。
本実施形態のように、マッピングプログラム53を設けることで、利用側(実行ファイル、保守担当者)は、環境変数名を指定するだけでよいため、間違いが起こり難い。
また、利用側で対応表25を持つ必要がないため、設定ファイルの更新の都度、利用者側の対応表25も交換するという負担がない。
以下では、上記のように、設定ファイル21がハッシュ化されているとしても、保守作業時における設定ファイル21の解読(調査対象の環境変数の設定値以外の内容についても確認することを含む)に影響がないことを説明する。
まず、インストール先29にインストールされたソフトウェア製品50の設定ファイル21が、ソフトウェア製品50の出荷時のままの場合について説明する。出荷時のままいか否かは、リビジョンファイル27に記載されたリビジョン番号に基づいて確認することができる。保守担当者は、図24に示すように、ソースコードリポジトリ24において、インストール先29のリビジョンファイル27で確認したリビジョン番号で管理されているファイル群のハッシュ化前の設定ファイル21Aを参照する。ハッシュ化前の設定ファイル21Aの内容と、インストール先29にインストールされているハッシュ化済みの設定ファイル21の内容とは同じであるため、ハッシュ化済みの設定ファイル21の内容を確認することができる。
次に、ソフトウェア製品50の出荷後に、バグやユーザによる不正な書き換えなどにより、環境異常が生じている場合の保守時について説明する。環境異常が生じていると、マッピングプログラムが正常に動作する保証はない。この場合、保守担当者は、図25に示すように、最新のリビジョン番号が付加されて、ソースコードリポジトリ24に格納されている対応表25を確認する。最新のリビジョン番号の対応表25には、過去のリビジョンで定義された環境変数と短縮されたハッシュ値との対応関係が全て記載されている。このため、対応表25を参照して、インストール先29にインストールされているハッシュ化済みの設定ファイル21の内容を解読することができる。
6.パッチ適用時
次に、出荷済みのソフトウェア製品50に通常のパッチを適用する場合について説明する。なお、通常のパッチとは、後述する個別対応のパッチ以外のパッチである。
図26に示すように、通常のパッチ33は、最新のリビジョン番号が付加されて、ソースコードリポジトリ24に格納されている各ソースコードをビルドすることにより作成する。すなわち、通常のパッチ33には、最新の実行ファイル群22B及び各プログラム51B,52B,53Bが含まれることになる。なお、ソースコード以外(設定ファイル21A及び対応表25)はパッチに含めない。
インストール先29のソフトウェア製品50に通常のパッチ33を適用することは、図27に示すように、作成した通常のパッチ33で、インストール先29の実行ファイル群22及び各プログラム51,52,53の各々を上書きすることである。これにより、実行ファイル群22及び各プログラム51,52,53の各々だけが最新化される。
通常のパッチ適用後の機能実行時の動作は、基本的には、上述した機能実行時と同様である。ただし、通常のパッチ33の適用により、ある機能に関する新たな定義が追加された場合、設定ファイル21は更新されていないため、新たな定義は設定ファイル21に記述されていない。例えば、図28に示すように、機能3の定義として、環境変数「feature3」が定義された場合、機能3の実行ファイルは、環境変数「feature3」の設定値を参照する必要がある。しかし、設定ファイル21には、環境変数「feature3」についての設定情報21Lは記載されていない。この場合、環境変数「feature3」を利用する機能3は、内部的に保持しているデフォルト値で動作することになるため、問題ない。なお、通常はパッチ適用前後の互換性を維持するため、パッチ適用前の動作をデフォルト値にする。ただし、セキュリティ上の問題があるなど、特別なケースでは、パッチ適用前の動作そのものに問題がある場合もあるため、デフォルト値がパッチ適用前の動作と異なることはあり得る。
次に、出荷済みのソフトウェア製品50に個別対応のパッチを適用する場合について説明する。
図29に示すように、個別対応用のパッチ34は、最新のリビジョン番号が付加されて、ソースコードリポジトリ24に格納されている各ソースコード及び設定ファイル21A2をビルドすることにより作成する。なお、設定ファイル21A2には、個別対応用の定義を記述しておく。すなわち、個別対応用のパッチ34には、最新の実行ファイル群22C及び各プログラム51C,52C,53C、並びに個別対応用のハッシュ化済みの設定ファイル21Cが含まれることになる。なお、対応表25はパッチに含めない。
インストール先29のソフトウェア製品50に個別対応用のパッチ34を適用することは、図30に示すように、作成したパッチ34で、インストール先29の実行ファイル群22及び各プログラム51,52,53の各々を上書きすることである。さらに、個別対応用のパッチ34の適用により、設定ファイル21も上書きされる。これにより、実行ファイル群22及び各プログラム51,52,53の各々が最新化され、設定ファイル21が個別対応化される。
個別対応用のパッチ適用後の機能実行時の動作は、基本的には、上述した機能実行時と同様である。ただし、個別対応用のパッチ34の適用により、設定ファイル21に定義された環境変数の設定値が個別対応用の値となっている。そのため、図31に示すように、個別対応用の設定値が設定された環境変数を利用する機能が、個別対応の定義に従って動作する。なお、図31の例では、環境変数「feature1」及び「feature2」の設定値が、通常の場合は「value1」及び「value2」であるのに対し、個別対応では「value1’」及び「value2’」となっている。
以上説明したように、本実施形態に係るソフトウェア製品がインストールされた情報処理装置によれば、設定ファイルに定義された環境変数名が、ハッシュ化されて短縮されているため、設定ファイルに書き込まれる変数の設定情報の文字数を削減することができる。また、マッピングプログラムに環境変数名を渡すだけで、対応する設定値を取得することができるため、機能による環境変数の利用時又は保守時における設定値の確認などの誤りを回避することができる。
また、環境変数名をハッシュ化して短縮した値は、ソフトウェア製品で必要な全ての環境変数について異なるように求めるため、環境変数名のバッティングを回避することができる。さらに、各環境変数の設定情報を、ソフトウェア製品又はソフトウェア製品の機能などの固有の文字列をキーとするキー−バリュー形式のバリューに格納する。このため、他のアプリケーションとの間でも、環境変数名のバッティングを回避することができる。
なお、上記実施形態では、ソースコードリポジトリ24に、ハッシュ化前の設定ファイル21Aを格納しておく場合について説明したが、これに限定されない。例えば、ハッシュ化前の設定ファイル21Aから、人手により、又はビルドツール以外のツールを利用して、ハッシュ化済みの設定ファイル21を作成して、ソースコードリポジトリ24に格納しておいてもよい。この場合、ビルド時には、ソースコードリポジトリ24に格納されたハッシュ化済みの設定ファイル21をそのままインストール媒体26に含めればよい。
また、上記実施形態では、実行ファイル群22とは別にマッピングプログラム53を設ける場合について説明したが、これに限定されない。例えば、図32に示すように、機能の実行ファイルの各々に、マッピングプログラム53を含めてもよい。この場合、各機能の実行ファイルが起動され、環境変数の設定値が必要になった場合には、各機能の実行ファイルに含まれるマッピングプログラム53の各々が、環境変数23を参照して、必要な設定値を取得することができる。
また、上記実施形態では、環境変数名の圧縮文字列として、環境変数名をハッシュ化して短縮した文字列を用いる場合について説明したが、これに限定されない。ソフトウェア製品で必要な全ての環境変数名の各々を識別可能で、元の環境変数名よりも文字数が少なくなるものであればよい。
なお、上記では、ソフトウェア製品50が記憶部43に予め記憶(インストール)されている態様を説明したが、これに限定されない。ソフトウェア製品は、CD−ROM、DVD−ROM、USBメモリ等の記録媒体に記録された形態で提供することも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理プログラム。
(付記2)
前記圧縮文字列を、前記変数名の文字列から計算されるハッシュ値とした付記1記載の情報処理プログラム。
(付記3)
前記圧縮文字列を用いた変数の設定情報は、変数名の各々を識別可能な文字数まで前記圧縮文字列を短縮した文字列に、前記変数の値を対応付けた情報である付記1又は付記2記載の情報処理プログラム。
(付記4)
前記設定情報は、前記ソフトウェアプログラム又は該ソフトウェアプログラムの機能の各々を識別可能な文字列をキーとし、変数毎の前記圧縮文字列を短縮した文字列と該変数の値との組の集合をバリューとするキー−バリュー形式で前記設定ファイルに書き込まれる付記3記載の情報処理プログラム。
(付記5)
前記組の集合を、各組を区切り文字で区切って並べて、前記キー-バリュー形式のバリューに格納する付記4記載の情報処理プログラム。
(付記6)
前記問合せに対応して、前記圧縮文字列を短縮した文字列のうち、前記問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に最も類似する文字列に対応付けられた変数の値を応答する付記3〜付記5のいずれか1項記載の情報処理プログラム。
(付記7)
前記問合せで複数の変数名が指定された場合、前記複数の変数名の各々に対応する変数の値を一覧にして応答する付記1〜付記6のいずれか1項記載の情報処理プログラム。
(付記8)
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数の変数名の指定を含む、変数の値についての問合せを受けた場合、複数の変数の各々の変数名を表す文字列を圧縮した圧縮文字列に該変数の値を対応付けた設定情報が記述された設定ファイルから、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理プログラム。
(付記9)
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を用いて変数の設定情報が書き込まれ、かつ変数の値が設定される設定ファイルと、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する提供部と、
を含む情報処理装置。
(付記10)
前記圧縮文字列を、前記変数名の文字列から計算されるハッシュ値とした付記9記載の情報処理装置。
(付記11)
前記圧縮文字列を用いた変数の設定情報は、変数名の各々を識別可能な文字数まで前記圧縮文字列を短縮した文字列に、前記変数の値を対応付けた情報である付記9又は付記10記載の情報処理装置。
(付記12)
前記設定情報は、前記ソフトウェアプログラム又は該ソフトウェアプログラムの機能の各々を識別可能な文字列をキーとし、変数毎の前記圧縮文字列を短縮した文字列と該変数の値との組の集合をバリューとするキー−バリュー形式で前記設定ファイルに書き込まれる付記11記載の情報処理装置。
(付記13)
前記組の集合を、各組を区切り文字で区切って並べて、前記キー-バリュー形式のバリューに格納する付記12記載の情報処理装置。
(付記14)
前記問合せに対応して、前記圧縮文字列を短縮した文字列のうち、前記問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に最も類似する文字列に対応付けられた変数の値を応答する付記11〜付記13のいずれか1項記載の情報処理装置。
(付記15)
前記問合せで複数の変数名が指定された場合、前記複数の変数名の各々に対応する変数の値を一覧にして応答する付記9〜付記14のいずれか1項記載の情報処理装置。
(付記16)
ソフトウェアプログラムの動作で用いられる変数の変数名の指定を含む、変数の値についての問合せを受けた場合、複数の変数の各々の変数名を表す文字列を圧縮した圧縮文字列に該変数の値を対応付けた設定情報が記述された設定ファイルから、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する提供部
を含む情報処理装置。
(付記17)
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理方法。
(付記18)
前記圧縮文字列を、前記変数名の文字列から計算されるハッシュ値とした付記17記載の情報処理方法。
(付記19)
前記圧縮文字列を用いた変数の設定情報は、変数名の各々を識別可能な文字数まで前記圧縮文字列を短縮した文字列に、前記変数の値を対応付けた情報である付記17又は付記18記載の情報処理方法。
(付記20)
前記設定情報は、前記ソフトウェアプログラム又は該ソフトウェアプログラムの機能の各々を識別可能な文字列をキーとし、変数毎の前記圧縮文字列を短縮した文字列と該変数の値との組の集合をバリューとするキー−バリュー形式で前記設定ファイルに書き込まれる付記19記載の情報処理方法。
(付記21)
前記組の集合を、各組を区切り文字で区切って並べて、前記キー-バリュー形式のバリューに格納する付記20記載の情報処理方法。
(付記22)
前記問合せに対応して、前記圧縮文字列を短縮した文字列のうち、前記問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に最も類似する文字列に対応付けられた変数の値を応答する付記19〜付記21のいずれか1項記載の情報処理方法。
(付記23)
前記問合せで複数の変数名が指定された場合、前記複数の変数名の各々に対応する変数の値を一覧にして応答する付記17〜付記22のいずれか1項記載の情報処理方法。
(付記24)
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数の変数名の指定を含む、変数の値についての問合せを受けた場合、複数の変数の各々の変数名を表す文字列を圧縮した圧縮文字列に該変数の値を対応付けた設定情報が記述された設定ファイルから、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理方法。
(付記25)
コンピュータに、
ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
ことを実行させることを特徴とする情報処理プログラムが記憶された記憶媒体。
10 情報処理装置
11 フロントエンド処理部
12 環境変数設定部
13 マッピング部
21 設定ファイル
21J 環境変数全体のキー
21K 環境変数全体のバリュー
21L 設定情報
21M 各環境変数のキー
21N 各環境変数のバリュー
22 実行ファイル群
23 環境変数
24 ソースコードリポジトリ
25 対応表
40 コンピュータ
41 CPU
42 メモリ
43 記憶部
50 ソフトウェア製品
51 フロントエンドプログラム
52 環境変数設定プログラム
53 マッピングプログラム

Claims (9)

  1. コンピュータに、
    ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
    変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
    変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
    ことを実行させることを特徴とする情報処理プログラム。
  2. 前記圧縮文字列を、前記変数名の文字列から計算されるハッシュ値とした請求項1記載の情報処理プログラム。
  3. 前記圧縮文字列を用いた変数の設定情報は、変数名の各々を識別可能な文字数まで前記圧縮文字列を短縮した文字列に、前記変数の値を対応付けた情報である請求項1又は請求項2記載の情報処理プログラム。
  4. 前記設定情報は、前記ソフトウェアプログラム又は該ソフトウェアプログラムの機能の各々を識別可能な文字列をキーとし、変数毎の前記圧縮文字列を短縮した文字列と該変数の値との組の集合をバリューとするキー−バリュー形式で前記設定ファイルに書き込まれる請求項3記載の情報処理プログラム。
  5. 前記組の集合を、各組を区切り文字で区切って並べて、前記キー-バリュー形式のバリューに格納する請求項4記載の情報処理プログラム。
  6. 前記問合せに対応して、前記圧縮文字列を短縮した文字列のうち、前記問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に最も類似する文字列に対応付けられた変数の値を応答する請求項3〜請求項5のいずれか1項記載の情報処理プログラム。
  7. 前記問合せで複数の変数名が指定された場合、前記複数の変数名の各々に対応する変数の値を一覧にして応答する請求項1〜請求項6のいずれか1項記載の情報処理プログラム。
  8. ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を用いて変数の設定情報が書き込まれ、かつ変数の値が設定される設定ファイルと、
    変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する提供部と、
    を含む情報処理装置。
  9. コンピュータに、
    ソフトウェアプログラムの動作で用いられる変数名を参照して、前記変数名の文字列について、圧縮処理が行なわれた圧縮文字列を取得し、
    変数の値が設定される設定ファイルに、前記圧縮文字列を用いて変数の設定情報を書き込み、
    変数名の指定を含む、変数の値についての問合せを受けた場合、該問合せで指定された変数名に前記圧縮処理が行なわれた結果得られる圧縮文字列に基づいて前記設定ファイルから特定される設定情報を前記問合せに対する応答として提供する
    ことを実行させることを特徴とする情報処理方法。
JP2015133886A 2015-07-02 2015-07-02 情報処理プログラム、装置、及び方法 Expired - Fee Related JP6468098B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015133886A JP6468098B2 (ja) 2015-07-02 2015-07-02 情報処理プログラム、装置、及び方法
US15/195,290 US20170003958A1 (en) 2015-07-02 2016-06-28 Non-transitory computer-readable recording medium, information processing device, and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015133886A JP6468098B2 (ja) 2015-07-02 2015-07-02 情報処理プログラム、装置、及び方法

Publications (2)

Publication Number Publication Date
JP2017016479A JP2017016479A (ja) 2017-01-19
JP6468098B2 true JP6468098B2 (ja) 2019-02-13

Family

ID=57684104

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015133886A Expired - Fee Related JP6468098B2 (ja) 2015-07-02 2015-07-02 情報処理プログラム、装置、及び方法

Country Status (2)

Country Link
US (1) US20170003958A1 (ja)
JP (1) JP6468098B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6661409B2 (ja) * 2016-03-01 2020-03-11 キヤノン株式会社 自動設置システム、情報処理装置、情報処理装置の制御方法、及びプログラム
CN113110846A (zh) * 2021-04-28 2021-07-13 网易传媒科技(北京)有限公司 一种环境变量的获取方法及装置
US20240086183A1 (en) * 2022-09-08 2024-03-14 Dell Products L.P. Software code verification using software code identifier comparison

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3205406B2 (ja) * 1992-11-10 2001-09-04 富士通株式会社 参照対象変数決定処理方法および翻訳処理システム
JP2004094425A (ja) * 2002-08-30 2004-03-25 Hitachi Ltd データベース構築処理変更方法
JP2004252708A (ja) * 2003-02-20 2004-09-09 Hitachi Software Eng Co Ltd オブジェクト値設定方法及びオブジェクト値設定プログラム
US20120254333A1 (en) * 2010-01-07 2012-10-04 Rajarathnam Chandramouli Automated detection of deception in short and multilingual electronic messages
GB2493875A (en) * 2010-04-26 2013-02-20 Trustees Of Stevens Inst Of Technology Systems and methods for automatically detecting deception in human communications expressed in digital form
US8838550B1 (en) * 2011-06-27 2014-09-16 Amazon Technologies, Inc. Readable text-based compression of resource identifiers
US8893099B1 (en) * 2011-11-30 2014-11-18 Google Inc. Inner function local variable name shadowing
CN103870492B (zh) * 2012-12-14 2017-08-04 腾讯科技(深圳)有限公司 一种基于键排序的数据存储方法和装置
JP6319740B2 (ja) * 2014-03-25 2018-05-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム

Also Published As

Publication number Publication date
JP2017016479A (ja) 2017-01-19
US20170003958A1 (en) 2017-01-05

Similar Documents

Publication Publication Date Title
CN110019215B (zh) 多重租赁数据库***中的键模式管理
US10019256B2 (en) Systems and methods for incremental software development
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
US8219592B2 (en) Method and system for using overlay manifests to encode differences between virtual machine images
AU2008288798B2 (en) Binary library
US8464242B2 (en) Virtualization of configuration settings
US7856440B2 (en) Method and system for separating content identifiers from content reconstitution information in virtual machine images
US9218137B2 (en) System and method for providing data migration services
TWI521428B (zh) 用於可延伸韌體抽取之方法及相關計算平台
KR102341154B1 (ko) 모바일 장치들의 원격 구성을 허용하기 위해 모바일 장치들 상에 설치되는 고속 어플리케이션
US20090222461A1 (en) Method and system for separating file system metadata from other metadata in virtual machine image format
WO2011089864A1 (ja) ファイル群整合性検証システム、ファイル群整合性検証方法およびファイル群整合性検証用プログラム
CN110162429B (zh) ***修复方法、服务器及存储介质
JP2014142678A (ja) 仮想サーバ移行計画作成方法およびシステム
JP6468098B2 (ja) 情報処理プログラム、装置、及び方法
US9934017B2 (en) Method and a system for merging several binary executables
AU2019371545B9 (en) Management system, acquisition device and management method
KR102392880B1 (ko) 계층화 문서를 관리하는 방법 및 이를 이용한 장치
US10394551B2 (en) Managing kernel application binary interface/application programming interface-based discrepancies relating to kernel packages
CN113515303B (zh) 一种项目转型方法、装置和设备
CN102043612A (zh) 版本编号的维护***及其维护方法
US11429537B2 (en) Method, device, and computer program product for managing storage system
US11256602B2 (en) Source code file retrieval
RU2628920C2 (ru) Способ обнаружения вредоносных сборок
JP6045707B2 (ja) ライセンス管理装置、ライセンス管理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181231

R150 Certificate of patent or registration of utility model

Ref document number: 6468098

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees