(57)【要約】【課題】  ライセンス条件の組み合わせが矛盾するようなソフトウエアの組み合わせを事前に発見することで、コンピュータシステムの機能構築作業を容易化し、また、オープンソースソフトウエアの利用を促進する。【解決手段】  複数のライセンスＩＤ（Ｌ）の組み合わせが当該ライセンス条件に矛盾するか否かを判定テーブル１７に予め設定しておき、コンパイラ２によりソースプログラムＸから生成されたオブジェクトＹをリンカ５で連携させて実行オブジェクトＺを生成する際に、ライセンス判定手段９が連携されるオブジェクトのライセンスＩＤの組み合わせが矛盾するか否かを判定テーブル１７に従って判定する。この結果、矛盾が生じる場合には、警告手段１５がライセンス条件の組み合わせが矛盾することを報知し、また、リンカ５による連携処理を中止する。【選択図】  図１
2006085211.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムからオブジェクトを作成する言語処理手段と、
複数のオブジェクトを連携させて実行処理される実行オブジェクトを作成する連携手段と、を有する実行オブジェクト生成装置において、
前記ソースプログラムに付与されているライセンス条件に基づいて、ソースプログラムから作成されたオブジェクトにライセンス条件を付与するライセンス付与手段と、
複数のライセンス条件の組み合わせが当該ライセンス条件に矛盾するか否かを予め設定した条件判定手段と、
前記連携手段による処理に際して、連携される複数のオブジェクトにそれぞれ付与されているライセンス条件の組み合わせが矛盾するか否かを前記条件判定手段に従って判定する連携ライセンス判定手段と、
を有することを特徴とする実行オブジェクト生成装置。
【請求項２】
請求項１に記載の実行オブジェクト生成装置において、
ライセンス条件の組み合わせが矛盾することを報知する警告手段を有し、
前記連携ライセンス判定手段は、矛盾すると判定する場合に当該警告手段に報知処理を行わせることを特徴とする実行オブジェクト生成装置。
【請求項３】
請求項１又は請求項３に記載の実行オブジェクト生成装置において、
前記連携ライセンス判定手段は、矛盾すると判定する場合に前記連携手段に連携処理を中止させることを特徴とする実行オブジェクト生成装置。
【請求項４】
請求項１乃至請求項４のいずれか１項に記載の実行オブジェクト生成装置において、
複数のライセンス条件の組み合わせに対して当該ライセンス条件に矛盾することのないライセンス条件を予め設定した条件決定手段と、
前記連携手段で連携される複数のオブジェクトに付与されているライセンス条件の組み合わせから、前記条件決定手段に従って生成された実行オブジェクトにライセンス条件を付与するライセンス決定手段と、
前記実行オブジェクトを複数連携させて実行処理するに際して、連携される複数の実行オブジェクトにそれぞれ付与されているライセンス条件の組み合わせが矛盾するか否かを前記条件判定手段に従って判定する実行ライセンス判定手段と、
を有することを特徴とする実行オブジェクト生成装置。
【請求項５】
請求項４に記載の実行オブジェクト生成装置において、
前記実行オブジェクトのライセンス条件の組み合わせが矛盾することを報知する警告手段を有し、
前記実行ライセンス判定手段は、矛盾すると判定する場合に当該警告手段に報知処理を行わせることを特徴とする実行オブジェクト生成装置。
【請求項６】
請求項４又は請求項５に記載の実行オブジェクト生成装置において、
前記実行ライセンス判定手段は、矛盾すると判定する場合に前記実行オブジェクトの実行処理を中止させることを特徴とする実行オブジェクト生成装置。
【請求項７】
コンピュータシステムが、言語処理でソースプログラムからオブジェクトを作成し、複数のオブジェクトを連携させて実行処理される実行オブジェクトを作成する実行オブジェクト生成方法において、
複数のライセンス条件の組み合わせが当該ライセンス条件に矛盾するか否かを予め設定した条件判定手段を用意し、
コンピュータシステムが、前記ソースプログラムに付与されているライセンス条件に基づいて、ソースプログラムから作成されたオブジェクトにライセンス条件を付与し、連携される複数のオブジェクトにそれぞれ付与されているライセンス条件の組み合わせが矛盾するか否かを前記条件判定手段に従って判定することを特徴とする実行オブジェクト生成方法。
【請求項８】
請求項７に記載の実行オブジェクト生成方法において、
複数のライセンス条件の組み合わせに対して当該ライセンス条件に矛盾することのないライセンス条件を予め設定した条件決定手段を用意し、
コンピュータシステムが、前記連携される複数のオブジェクトに付与されているライセンス条件の組み合わせから、前記条件決定手段に従って生成された実行オブジェクトにライセンス条件を付与し、当該実行オブジェクトを複数連携させて実行処理するに際して、連携される複数の実行オブジェクトにそれぞれ付与されているライセンス条件の組み合わせが矛盾するか否かを前記条件判定手段に従って判定することを特徴とする実行オブジェクト生成方法。
【請求項９】
ソースプログラムからオブジェクトを作成する言語処理機能と、複数のオブジェクトを連携させて実行処理される実行オブジェクトを作成する連携機能とを有するコンピュータが実行することで、
前記ソースプログラムに付与されているライセンス条件に基づいて、ソースプログラムから作成されたオブジェクトにライセンス条件を付与するライセンス付与機能と、
複数のライセンス条件の組み合わせが当該ライセンス条件に矛盾するか否かを予め設定した条件判定機能と、
前記連携機能による処理に際して、連携される複数のオブジェクトにそれぞれ付与されているライセンス条件の組み合わせが矛盾するか否かを前記条件判定手段に従って判定する連携ライセンス判定機能と、を構成することを特徴とする実行オブジェクト生成制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムから記述言語に応じた言語処理を行ってオブジェクトを作成し、複数のオブジェクトを連携させて実行オブジェクトを生成する技術に関し、特に、ソースプログラムに付与されているライセンス条件に違反することなく実行オブジェクトの生成や実行処理を行う技術に関する。
【背景技術】
【０００２】
コンピュータシステムが実行可能な形式のプログラムであるロードモジュール（実行オブジェクト）は、例えば、ソースプログラムを記述言語に応じたコンパイラやアセンブラ等の言語処理してオブジェクトを作成し、ｍａｋｅファイルに規定されている規則に従って、これら複数のオブジェクトをリンカ（リンケージエディタ）が連携させることで作成される。
【０００３】
また、コンピュータシステムでは、複数のソースプログラムから作成されたオブジェクトを組み合わせて連携させ、様々な機能を実現する実行オブジェクトが作成されている。
近年、オープンソースソフトウエアやフリーソフトウエア等と称せられるソースプログラムが提供されており、当該ソフトウエアを利用してコンピュータシステムを自由に構築することができるようになっている。
【０００４】
ここで、ソフトウエアには利用に関するライセンス条件が定められており、利用に際してライセンス条件を遵守しなければならない。
例えば、ソースプログラムＡには他のソースプログラムとの組み合わせ利用を禁止するライセンス条件が定められており、ソースプログラムＢには他のソースプログラムとの組み合わせ利用を禁止するライセンス条件が定められている場合、これらソースプログラムＡとＢとを組み合わせて実行オブジェクトを作成することは、ソースプログラムＢのライセンス条件に矛盾（すなわち、違反）してしまうこととなる。
【０００５】
ソフトウエアのライセンス管理に関して、ライセンス有無のテーブルを参照して、オブジェクトのライセンス有無をリンカによる連携処理時に判断して、判断結果をユーザにメッセージ表示する発明が提案されているが（特許文献１参照。）、この発明ではライセンス条件の組み合わせについての判断処理は行っていない。
【特許文献１】特開２０００―２９３３６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
コンピュータシステムに機能を構築する場合、ソフトウエアの利用に際して複数のライセンス条件の組み合わせが生じる場合には、ユーザが各ライセンス条件の条項を読んで、これらライセンス条件に矛盾した利用となってしまわないか否かを判断しなければならず、煩雑な作業が強いられていた。これにより、例えば、オープンソースソフトウエアを利用することにより所望の機能を容易に構築することができる場合にあっても、当該利用を妨げる原因ともなっていた。
【０００７】
本発明は、上記従来の事情に鑑みなされたもので、ライセンス条件の組み合わせが矛盾するようなソフトウエアの組み合わせを事前に発見することにより、コンピュータシステムの機能構築作業を容易化し、また、オープンソースソフトウエアの利用を促進することを目的としている。
【課題を解決するための手段】
【０００８】
本発明は、コンパイラ等の言語処理手段によりソースプログラムからオブジェクトを作成し、これら複数のオブジェクトを連携手段により連携させて実行処理される実行オブジェクトを作成する実行オブジェクト生成装置や、このような実行オブジェクト生成装置により実施される実行オブジェクト生成として実現される。
なお、実行オブジェクト生成装置はコンピュータハードウエアにより所定のプログラムを実行することで、上記機能や、下記の本発明に係る機能を構成する。
【０００９】
本発明では、複数のライセンス条件の組み合わせが当該ライセンス条件に矛盾するか否か（すなわち、条件に違反するか否か）を判定テーブル等の条件判定手段に予め設定しておき、連携手段による処理に際して、連携ライセンス判定手段が、連携される複数のオブジェクトにそれぞれ付与されているライセンス条件の組み合わせが矛盾するか否かを条件判定手段に従って判定する。
したがって、ライセンス条件の組み合わせが矛盾するようなソフトウエアの組み合わせが実行処理を行う前に自動的に発見される。
【００１０】
更に、本発明では、ライセンス条件の組み合わせが矛盾することを報知する警告手段を備え、連携ライセンス判定手段が、矛盾すると判定する場合に警告手段に報知処理を行わせるようにしてもよい。
これにより、警告手段からの警告音や警告メッセージの表示等といった報知により、ユーザはソフトウエアの利用にライセンス条件への違反があることを確実に認知することができる。
【００１１】
更に、本発明では、連携ライセンス判定手段が、矛盾すると判定する場合に連携手段に連携処理を中止させるようにしてもよい。
これにより、ライセンス条件への違反があるソフトウエアの利用は実行処理前に確実に回避される。
【００１２】
更に、本発明では、実行オブジェクトを複数連携させて実行処理する場合には、これら実行オブジェクトに基づくライセンス条件の組み合わせの正否を判定するようにしてもよい。すなわち、複数のライセンス条件の組み合わせに対して当該ライセンス条件に矛盾することのないライセンス条件を決定テーブル等の条件決定手段に予め設定しておき、ライセンス決定手段が、連携手段で連携される複数のオブジェクトに付与されているライセンス条件の組み合わせから、条件決定手段に従って生成された実行オブジェクトにライセンス条件を付与し、実行オブジェクトを複数連携させて実行処理するに際して、実行ライセンス判定手段が、連携される複数の実行オブジェクトにそれぞれ付与されているライセンス条件の組み合わせが矛盾するか否かを条件判定手段に従って判定する。
したがって、実行オブジェクトの実行処理においてライセンス条件の組み合わせに矛盾を生じさせてしまうようなソフトウエアの組み合わせが事前に自動的に発見される。
【００１３】
更に、本発明では、実行オブジェクトのライセンス条件の組み合わせが矛盾することを警告手段から報知するようにしたり、実行ライセンス判定手段が矛盾すると判定する場合に実行オブジェクトの実行処理を中止させるようにしてもよい。
なお、本発明は実行オブジェクトを実行処理して所期の機能を実現するコンピュータシステムに広く適用することができ、例えば、コンピュータシステムとして、複写機、プリンタ、ファクシミリ装置、これら機能を複合的に備えた複合機等といったコンピュータハードウエアによりプログラムを実行することで所期の機能を実現する機器に適用することができる。
【発明の効果】
【００１４】
本発明によると、ライセンス条件の組み合わせが矛盾するようなソフトウエアの組み合わせを、実行オブジェクトの作成処理中で事前に発見するようにしたため、コンピュータシステムの機能構築作業を容易化して作業負担を軽減し、また、種々なソフトウエアの利用を促進することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施例に基づいて具体的に説明する。
図１には、コンピュータシステムに設けた本例に係る実行オブジェクト生成装置の主要な構成を示してある。
なお、本例では、コンピュータシステムとしての複合機に実行オブジェクト生成装置を備えて、オープンソースソフトウエアを利用して当該複合機に目的の機能を構成する場合を説明するが、本発明を適用するコンピュータシステムやソフトウエアの種類には特に限定はない。
【００１６】
本例の装置には、複数のソースプログラムＸを記憶するソースファイル１、ソースプログラムＸを言語処理するコンパイラ２、言語処理により生成されたオブジェクトＹを記憶するライブラリファイル３、ｍａｋｅファイル４を参照して複数のオブジェクトＹをリンク付けにより連携させるリンカ５、複数のオブジェクトＹをリンク付けすることで生成された実行オブジェクトＺを記憶する実行オブジェクトファイル６を備えており、更に、実行オブジェクトＺを実行処理する実処理部７が備えられている。
【００１７】
更に、本例の装置には、ソースプログラムＸから生成される各オブジェクトＹにライセンス条件を付与するライセンスＩＤ付与手段８、リンカ５による連携処理に際してライセンス条件の組み合わせの正否を判定して所定の処理を行うライセンス判定手段９、リンカ５による連携処理で生成された実行オブジェクトにライセンス条件を付与するライセンス決定手段１０、実処理手段７で実行する実行オブジェクトＺに他の実行オブジェクトＺへの動的リンクが含まれているかを判定する動的リンク判定手段１１、動的リンクで連携される複数の実行オブジェクトＺについてライセンス条件の組み合わせの正否を判定して所定の処理を行うライセンス判定手段１２、動的リンクで連携された複数の実行オブジェクトＺからなる実行オブジェクトにライセンス条件を付与するライセンス決定手段１３、ライセンス判定手段９、１２の判定処理やライセンス決定手段１０、１３の決定処理で参照される参照テーブル１４、ライセンス判定手段９、１２の判定結果に応じて警報音の出力やメッセージの画面表示等の方法で報知動作を行う警報手段１５が備えられている。
【００１８】
ここで、本例では、上記のファイルやテーブルはコンピュータシステムに備えられているメモリにより構成され、その他の機能手段は本発明に係る制御プログラムをプロセッサ等のハードウエアで実行することにより構成されている。
また、本例では、各ソースプログラムＸ、各オブジェクトＹ、各実行オブジェクトＺにライセンス条件を一意に識別するライセンスＩＤ（Ｌ）を付加しているが、ライセンス条件の実体ある条項内容を付加したり、各ソースプログラムＸ、各オブジェクトＹ、各実行オブジェクトＺを一意に識別するプログラムＩＤとライセンスＩＤや条項内容とを対応付けてテーブル管理するようにしてもよい。
【００１９】
参照テーブル１３には、ライセンスＩＤとライセンス条件の内容とを予め対応付けて記述したライセンス条件テーブル１６、複数のライセンス条件（すなわち、ライセンスＩＤ）の組み合わせが当該ライセンス条件に矛盾するか否かを予め設定した判定テーブル１７、複数のライセンス条件の組み合わせに対して当該ライセンス条件に矛盾することのないライセンス条件（すなわち、ライセンスＩＤ）を予め設定した決定テーブル１８が格納されている。
【００２０】
本例のライセンス条件テーブル１６には、図２に示すように、ライセンスＩＤ（Ａ）は「ソースを公開してもしなくてもよい」といった任意条件が対応付けて記述され、ライセンスＩＤ（Ｂ）は「ソースを公開しなければならない」といった公開義務条件が対応付けて記述され、ライセンスＩＤ（Ｃ）は「ソースを公開してはならない」といった公開禁止条件が対応付けて記述されている。
【００２１】
これらライセンス条件は元々各ソースプログラムＸに付与されており、ソースプログラムをコンピュータシステムで利用して新たなプログラムを生成した場合に、生成したプログラムのソースコードを一般に利用できるように公開すべきか否かの条件である。
したがって、ライセンスＩＤ（Ａ）では生成したソースプログラムを公開するか否かは任意であり、ライセンスＩＤ（Ｂ）では生成したソースプログラムを公開する義務があり、ライセンスＩＤ（Ｃ）では生成したソースプログラムの公開が禁止されている。
【００２２】
本例の判定テーブル１７には、図３に示すように、対応するライセンス条件の内容に従って、複数（本例では２つ）のプログラムをリンク付けさせた場合に、これらライセンスＩＤの組み合わせが各ライセンス条件に違反するか否かが記述されており、当該記述は対応するライセンス条件の内容に従ってユーザにより作成されている。
本例では、３種類（Ａ）〜（Ｃ）のライセンスＩＤの組み合わせに対して、「任意条件：（Ａ）」と「公開義務条件（Ｂ）」又は「公開禁止条件（Ｃ）」との組み合わせは矛盾を生じないので「矛盾しない」が設定され、相反する条件である「公開義務条件（Ｂ）」と「公開禁止条件（Ｃ）」との組み合わせは矛盾を生じるので「矛盾する」が設定されている。
【００２３】
本例の決定テーブル１８には、図４に示すように、複数（本例では２つ）のプログラムをリンク付けさせた場合にライセンスＩＤの組み合わせが「矛盾しない」場合に、当該リンク図消したプログラム（実行オブジェクト）に付与するライセンスＩＤが、「公開義務条件」や「公開禁止条件」といった絶対的条件を「任意条件」とといった裁量的条件に優先させて記述されている。
本例では、同種のライセンスＩＤ同士の組み合わせには当該ライセンスＩＤを付与する他、絶対的条件を裁量的条件に優先させて、例えば、ライセンスＩＤ（Ａ）とライセンスＩＤ（Ｂ）との組み合わせにはライセンスＩＤ（Ｂ）を付与する、ライセンスＩＤ（Ａ）とライセンスＩＤ（Ｃ）との組み合わせにはライセンスＩＤ（Ｃ）を付与するといったように設定されている。
【００２４】
次に、本例による実行オブジェクトの生成処理を説明する。
コンパイラ２がソースプログラムＸを処理してオブジェクトＹを生成すると、ライセンスＩＤ付与手段８により当該オブジェクトＹにライセンスＩＤ（Ｌ）が付与される。
本例のライセンスＩＤ付与手段８は、元のソースプログラムＸに付与されているライセンスＩＤをそのまま生成されたオブジェクトＹに付与するが、ユーザの操作入力に応じて生成されたオブジェクトＹに妥当なライセンスＩＤを付与するようにしてもよい。
【００２５】
上記のようにして生成された各オブジェクトＹはそれぞれライセンスＩＤ（Ｌ）が付与されてライブラリファイル３に保持され、ｍａｋｅファイル４の規定に従って、リンカ５で２つのオブジェクトＹがリンク付けされる。
このリンク付け処理において、ライセンス判定手段９が判定テーブル１７を参照して、連携される２つのオブジェクトＹのライセンスＩＤの組み合わせの正否を判定する。この結果、ライセンスＩＤの組み合わせが「矛盾する」場合には、ライセンス判定手段９が、実行オブジェクト生成処理が不適であることを警報手段１５からの報知させるか、または、リンカ５による当該リンク付け処理を中止させるかの少なくともいずれか一方を行う。
なお、実行オブジェクト生成処理が不適であることの警報手段１５からの報知は、警報音出力で報知するか、または、実行オブジェクト生成処理が不適である旨のメッセージを画面表示出力で報知するかの少なくといずれか一方で行う。
【００２６】
一方、上記ライセンス判定手段９によりライセンスＩＤの組み合わせが「矛盾しない」と判定された場合には、リンカ５によるリンク付け処理で２つのオブジェクトＹから生成される実行オブジェクトＺに対して、ライセンス決定手段１０が決定テーブル１８を参照してライセンスＩＤ（Ｌ）を付与する。
【００２７】
上記のようにしてオブジェクトＹのリンク付け処理により生成された各実行オブジェクトＺはそれぞれライセンスＩＤ（Ｌ）が付与されて実行オブジェクトファイル６に保持され、実行処理部７で実行される。
この実行処理において、動的リンク判定手段１１が、例えば図５に示すように実行対象の実行オブジェクト（ａ）Ｚに他の実行オブジェクト（ｂ）Ｚへの動的なリンク情報が含まれ入ているか否かを判定する。
【００２８】
上記判定の結果、動的リンクが存在する場合には、複数の動的オブジェクトＺの組み合わせに伴うライセンスＩＤの組み合わせが生じるため、ライセンス判定手段１２が判定テーブル１７を参照して、動的リンクで連携される複数の実行オブジェクトＺについてライセンスＩＤの組み合わせの正否を判定する。
この結果、ライセンスＩＤの組み合わせが「矛盾する」場合には、ライセンス判定手段１２が、上記と同様に、実処理が不適であることを警報手段１５からの報知させるか、または、実処理部７による当該実行オブジェクトＺの処理を中止させるかの少なくともいずれか一方を行う。
【００２９】
一方、上記ライセンス判定手段１２によりライセンスＩＤの組み合わせが「矛盾しない」と判定された場合には、実処理部７により動的リンクで連携されて実行される実行オブジェクトＺの纏りに対して、ライセンス決定手段１３が決定テーブル１８を参照してライセンスＩＤ（Ｌ）を付与する。なお、複数の動的リンクが含まれている場合には、上記の処理をそれぞれ繰り返し行う。
したがって、ソースプログラムに設定されているライセンス条件に違反することなく、実行オブジェクトの作成処理、更には、実行オブジェクトの実処理を行うことができる。
【００３０】
なお、上記の例では、複数のライセンス条件の組み合わせが当該ライセンス条件に矛盾するか否かをテーブル形式の条件判定手段で設定し、また、複数のライセンス条件の組み合わせに対して当該ライセンス条件に矛盾することのないライセンス条件をテーブル形式の条件決定手段で設定したが、本発明では、連携ライセンス判定手段や実行ライセンス判定手段を構成するプログラムロジックで設定する等、公知の種々な方法で実現するようにしてもよい。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施例に係る実行オブジェクト生成装置の構成図である。
【図２】本発明の一実施例に係るライセンス条件テーブルを説明する図である。
【図３】本発明の一実施例に係る判定テーブルを説明する図である。
【図４】本発明の一実施例に係る決定テーブルを説明する図である。
【図５】本発明の一実施例に係る動的リンクを説明する図である。
【符号の説明】
【００３２】
１：ソースファイル、  ２：コンパイラ（言語処理手段）、
３：ライブラリファイル、  ５：リンカ（連携手段）、
６：実行オブジェクトファイル、  ７：実処理部、
８：ライセンスＩＤ付与手段、  ９：ライセンス判定手段、
１０：ライセンス決定手段、  １１：動的リンク判定手段、
１２：ライセンス判定手段、  １３：ライセンス決定手段、
１４：参照テーブル、  １５：警告手段、
１６：ライセンス条件テーブル、  １７：判定テーブル、
１８：決定テーブル、  Ｌ：ライセンスＩＤ、
Ｘ：ソースプログラム、  Ｙ：オブジェクト、
Ｚ：実行オブジェクト、
【図１】
2006085211.tif 000003
【図２】
2006085211.tif 000004
【図３】
2006085211.tif 000005
【図４】
2006085211.tif 000006
【図５】
2006085211.tif 000007