(57)【要約】【課題】プログラム開発を行う組織において、プログラムのビルド前にライセンスを持つプログラムのライセンスをチェックし、監視できるシステムを提供することを目的とする。【解決手段】組織内にプログラムを監視する端末を用意し、開発用端末にはライセンスチェックプログラムをインストールし、例えば組織外から入手したライセンス付きプログラムをユーザに渡す前に、当該プログラムがライセンス付きかチェックする。ライセンス付きであるときは、そのライセンスについてライセンスポリシーが作成済みかをチェックする。ライセンスポリシーが作成されていないライセンスについては、ポリシー作成者がライセンスポリシーを作成する。ユーザがそのプログラムをビルドする際、開発用端末内にあるライセンスチェックプログラムによってライセンスが違反していないかをチェックし、その結果を表示する。【選択図】図２
2008191889.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムのライセンスをチェックするライセンスチェックシステムであって、
ライセンスを表現するキーワードを記憶した検索キーワード記憶手段と、
ソースプログラムのファイルまたはソースプログラムのライセンスを記述したドキュメントファイルから前記キーワードを検索することにより、当該ソースプログラムのライセンスについて記述したライセンス該当箇所を検索するライセンス該当検索手段と、
ライセンス毎に、当該ライセンス付きのソースプログラムに対して守らなければならない条件、および、その条件に違反した場合に何をしなければならないかを規定した制約内容を記憶したライセンスポリシー記憶手段と、
前記ライセンス該当検索手段により検索されたライセンスに対して、前記ライセンスポリシー記憶手段に既にライセンスポリシーが登録されているか否か判定する手段と、
ライセンスポリシーが登録されていないライセンスが検索された場合に、当該ライセンスについてライセンスポリシーを作成することを促すメッセージを、所定のチェック用端末に出力する手段と、
開発者の指示によるプログラムのビルド時に、ビルドに使用するプログラムに対してライセンス付きか否かをチェックし、ライセンス付きのプログラムについては前記ライセンスポリシー記憶手段から該当するライセンスポリシーを読み出し、当該ライセンス付きのプログラムに対して守らなければならない条件を守っているか否かをチェックするライセンスチェック手段と、
前記守らなければならない条件が守られていなかった場合に、その旨および当該ライセンスポリシーの制約内容を、ビルドを指示した前記開発者の端末に出力する手段と
を備えることを特徴とするライセンスチェックシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種のプログラムを利用しようとする際に、そのプログラムのライセンスに違反していないかをチェックするシステムに関するものである。
【背景技術】
【０００２】
近年、ソースコードを無償で公開するオープンソースソフトが増えている。ソースコードがあれば、そのソフトウェアの類似品を作成したりすることができるが、オープンソースソフトの中には、一定の条件を課したソフトウェアライセンスが付いているものが多い。例えば、オープンソースの中には、オープンソースプログラムを改変して新たにプログラムを作成した場合、作成したソースを公開しなければならないというものがある。また、商用ソフトの中には、有償でソースを提供するものもある。
【０００３】
これらのライセンスチェックを行うシステムとして、完成したソフトウェアのソースのライセンス情報をデータベース化し、その情報からライセンスの判別を行うものは存在していた。
【０００４】
なお、本発明に関連する公知技術文献としては下記の特許文献１がある。該文献に記載のライセンス判別システムは、対象ソフトウェアが自身のプログラム情報テーブルを有するようにするとともに、各種ソフトウェアのプログラム情報テーブルと各種ライセンス情報テーブルを格納したデータベースを有し、前記データベースを参照することにより対象ソフトウェアが依存するソフトウェアから受けるライセンス制限を判別し、これによりソフトウェアが依存する他のプログラムから受けるライセンス制限を自動的に効率良く判別するものである。
【特許文献１】特開２００４−２５２８７０
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、ユーザ（開発者）が勝手に外部からライセンス付きのプログラムを入手し、該プログラムを利用してシステム開発を行うことにより、ライセンスチェックが抜けてしまうことがある。また、ユーザが入手したライセンス付きのプログラムを勝手に改変してしまうと、後でソースを公開しなければならなくなったり、ライセンスに違反してしまうといったことが生じてしまう。
【０００６】
本発明の目的は、プログラム開発を行う組織において、プログラムのビルド前にライセンスを持つプログラムのライセンスをチェックし、監視できるシステムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明のライセンスチェックシステムでは、ライセンスを表現するキーワードを記憶しておき、開発者が入手しようとしたソースプログラムのファイルまたはソースプログラムのライセンスを記述したドキュメントファイルから前記キーワードを検索することにより、当該ソースプログラムのライセンスについて記述したライセンス該当箇所を検索する。一方、ライセンス毎に、当該ライセンス付きのソースプログラムに対して守らなければならない条件、および、その条件に違反した場合に何をしなければならないかを規定した制約内容を記憶したライセンスポリシー記憶手段を設け、検索されたライセンスに対して、前記ライセンスポリシー記憶手段に既にライセンスポリシーが登録されているか否か判定する。ライセンスポリシーが登録されていないライセンスが検索された場合には、当該ライセンスについてライセンスポリシーを作成することを促すメッセージを、所定のチェック用端末に出力する。このチェック用端末は、例えば、プログラムのライセンスの内容について正しい判断ができる法務部門などに属する担当者が使用する端末である。その担当者は、前記メッセージを受けて、未だライセンスポリシーが作成されていないライセンスについてライセンスポリシーを作成する。開発者がプログラムのビルドを行う際には、ビルドに使用するプログラムに対してライセンス付きか否かをチェックし、ライセンス付きのプログラムについては前記ライセンスポリシー記憶手段から該当するライセンスポリシーを読み出し、当該ライセンス付きのプログラムに対して守らなければならない条件を守っているか否かをチェックする。守らなければならない条件が守られていなかった場合には、その旨および当該ライセンスポリシーの制約内容を、ビルドを指示した開発者の端末に出力する。以上のようにして、開発者が入手しようとしたオープンソースソフトのライセンスをチェックすることができる。
【０００８】
なお、チェック用端末は、前記担当者が簡単にライセンスポリシーを作成することができるようなユーザインターフェースを備えるようにするとよい。また、ライセンスチェックの対象とするプログラムは、例えば、前記開発者がインターネット経由でダウンロードして入手する場合があるので、開発者が開発者用端末からインターネット経由でダウンロード要求を発行したプログラムは当該開発者端末に送ることなく一時的な保管場所に保管し、ライセンスポリシーが作成された後に当該開発者端末に送るようにするとよい。
【０００９】
ライセンスで規定されている守らなければならない条件とは、例えば、プログラムの改変を不許可にする、あるいは他のプログラムとのリンクを不許可にする、などである。プログラムの改変のチェックは、例えば、プログラムを開発者が入手する前に当該プログラムのチェックサムを計算して記憶しておき、ビルドする際に再度チェックサムを計算し前記記憶した値と同一かをチェックすることにより行う。チェックサムを計算する代わりに、そのプログラムのソースファイルのアクセス権限を、ユーザに対して書き込み不可にすることによって、改変してはいけないプログラムを改変できないようにしてもよい。また、チェックサムを計算する代わりに、そのプログラムのソースファイルを暗号化して、ユーザが改変できないようにすることによって、改変してはいけないプログラムを改変できないようにしてもよい。ビルドする際には、そのビルドに使用する全てのファイルについて漏れなくライセンスのチェックを行うのがよい。
【発明の効果】
【００１０】
本発明のライセンスチェックシステムによれば、次のような効果がある。
（１）プログラムのビルド時に、使用する全てのプログラムやライブラリのライセンスチェックを行うので、ライセンスのチェック漏れを防ぐことができる。
（２）ユーザが外部からプログラムを入手する際にライセンスに関する情報を取得するので、ユーザに勝手にプログラムを入手されることを防ぐことができる。
（３）各ライセンスに対して、組織内のライセンスに詳しい担当者にライセンスポリシーを作成させ、チェックすることにより、ユーザの誤判断を防ぐことができる。
（４）新しいライセンス形態に対しても、ライセンスポリシーを新たに作成することによって対応できる。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明の実施の形態を添付図面に基づいて説明する。
【００１２】
図１は、本発明の実施の形態の一例であるライセンスチェックシステムの全体構成を示す。開発者が使用する各開発用端末１０２には、ライセンスチェックプログラム１０２ａがインストールされている。チェック用端末１０１には、準備プログラム１０１ａとライセンスポリシー作成プログラム１０１ｂがインストールされている。一時保管場所１０３は、組織外から入手したプログラムを一時保存する記憶装置である。チェック用端末１０１と各開発用端末１０２と一時保管場所１０３とは、組織内のＬＡＮによって相互に接続されているため、データを相互にやり取りすることができる環境にある。この組織内システムは、組織外のインターネットに接続されており、インターネット上のサイトから種々のプログラムをダウンロードすることができる。本システムは、会社や学校などのようなプログラムの開発を行っている組織内にあることを想定している。
【００１３】
図１にあるチェック用端末１０１は、後で詳細を述べるが、組織内でライセンスについて詳しい法務部門などの担当者が操作することで、組織内に入力されたプログラム（開発者がインターネット経由で外部から入手したプログラム）の監視を行う端末である。また、開発用端末１０２は、組織の開発部門の開発者がプログラムを作成するための端末である。各開発用端末１０２にインストールされているライセンスチェックプログラム１０２ａは、各開発用端末１０２内で高いユーザ権限を持つプログラムであり、開発者が実際に操作するファイルのアクセス権限などを操作することができる。ライセンスチェックプログラム１０２ａは、開発者がビルドに使用しようとしたプログラムのライセンスをチェックし、ライセンス制限がある場合にはそのファイルをビルドに使用できないようにするなどのアクセス制限をかけることができる。
【００１４】
次に図２を参照して、図１のシステムにおける処理の流れについて説明する。
【００１５】
まず、開発用端末１０２で開発を行うユーザ（開発者）２０１は、インターネット上に公開されているライセンス付きのオープンソースプログラム２０２を入手するため、当該プログラム２０２を公開しているサイトにダウンロード要求を出す。そのダウンロード要求に応じて、プログラム２０２はダウンロードされ、組織内の一時保管場所１０３に保存される。一時保管場所１０３とは、例えば、会社などの組織内とインターネットとの間にあるゲートウェイサーバの位置や、組織間のゲートウェイの位置に設けられた記憶装置であり、組織内で特にライセンスについての監視対象とする必要がある部門からプログラムのダウンロード要求があった場合に、ここにデータが一時保存される。なお、一時保管場所１０３に一時保存されたプログラムについては、どのユーザのダウンロード要求に応じてダウンロードされたものかを管理しておくものとする。
【００１６】
一時保管場所１０３に保存されたプログラム（ソースファイル）は、準備プログラム１０１ａに入力される。ライセンス付きのプログラムの中には、そのプログラムを改造してソフトウェアの一部又は全てとして作成し、公開すると、ライセンス違反になる場合がある。準備プログラム１０１ａは、外部から入手したソースプログラムを用いてビルドする際にライセンス付きプログラムの改変が行われていないかどうかチェックするための準備処理や、プログラム中からライセンスに関する宣言箇所を検索する機能を有する。
【００１７】
まず、準備プログラム１０１ａ内のライセンス該当検索部２０３が、一時保管場所１０３にあるソースプログラムを入力する。ライセンス該当検索部２０３は、入力したプログラムからライセンスに関する宣言部の検索を行う。これは、入力したプログラムから、検索条件ファイル２０５に登録されている語句を検索する処理である。ポリシー作成者２０４は、検索条件ファイル２０５に、ライセンスに関する語句などのキーワードをあらかじめ登録しておく。ポリシー作成者２０４は、ソフトウェアライセンスについての解釈ができる組織内の法務部門などの担当者が行う。ライセンス該当検索部２０３は、検索の結果、マッチした語句、つまりライセンスを宣言している部分を当該プログラムから抽出し、ライセンスリスト２０６に出力する。またライセンス該当検索部２０３は、ライセンスリスト２０６に出力されたライセンス情報のうち、未だライセンスポリシーが作成されていないものについては当該ライセンス情報をポリシー作成者２０４に送信する。ポリシー作成者２０４は、ライセンスポリシー作成部２１１を用いて、送られてきたライセンス情報に応じたライセンスポリシーを作成する。
【００１８】
なお、ライセンスリストファイル２０６をポリシー作成者２０４に送信する代わりに、ポリシー作成者２０４が、ライセンスリスト２０６や一時保管場所１０３内のプログラムを直接参照してチェックを行ってもよい。ライセンス該当検索部２０３の処理は、図３で詳しく説明する。また、ここではユーザ２０１毎にライセンスリストファイル２０６を作成するものとして説明するが、１つのライセンスリストファイル２０６に複数ユーザに関するライセンス情報を格納して管理するようにしてもよい。
【００１９】
ライセンス情報表示部２０７は、一時保管場所１０３にダウンロードされたプログラムについて、新たなライセンス情報がライセンスリストファイル２０６に追加された場合に、当該プログラムのダウンロード要求を発行したユーザ２０１にメッセージを送る処理などを行う。ライセンス情報表示部２０７の処理は、図４で詳しく説明する。
【００２０】
図３を参照して、ライセンス該当検索部２０３の処理を説明する。まずステップ３０１で、図２の検索条件ファイル２０５を読み込む。そして、ステップ３０２で、一時保管場所１０３にあるファイル（外部から入力したソースプログラム）の１つを読み込む。
【００２１】
ここで、検索条件ファイル２０５の構成について説明する。図１１は、検索条件ファイル２０５に格納する各項目と、それらの項目の設定例を示す。「検索対象ディレクトリ（ファイル）パス」の項目には、検索対象プログラムが置かれているディレクトリやファイルのパスを指定する。ここでは、一時保管場所１０３のディレクトリである「C:\Linux\License」が設定されている。「検索キーワード」の項目には、ライセンス名や関連語など、検索したい語句を設定する。ここでは３つのキーワードの例を示したが、その数は任意である。「手動検索」の項目には、ＯＮまたはＯＦＦを設定する。ライセンス該当検索部２０３による自動的なライセンス検索を行う場合はこの項目をＯＦＦとし、行いたくない場合はＯＮとする。ＯＮにすると手動検索のために、一時保管場所１０３からポリシー作成者２０４にプログラムが渡される。なお、ここではパスとキーワードと手動検索の１組のレコードの例のみを図示したが、複数組の検索条件を設定可能である。
【００２２】
図３の流れ図に戻り、ステップ３０３で、検索条件ファイル２０５で指定されているキーワードをキーとして、一時保管場所１０３から読み込まれたファイル内に当該キーワードにマッチする部分があるか検索する。マッチする語句があった場合、ステップ３０５で、当該ユーザ２０１に対応する図２のライセンスリスト２０６に追記する。読み込まれたファイルの中にキーワードが無かった場合、ライセンスリスト２０６への追記は行われない。なお、オープンソースプログラムでは、１つ１つのソースプログラム毎にその先頭部分にライセンスの記述がある場合のほか、複数のソースプログラムのライセンスがテキストその他のドキュメントファイルに記述されている場合などがある。そのため、ステップ３０２で読み込むファイルは、ソースプログラムの他、テキストその他のドキュメントファイルも含む。
【００２３】
図１２に、ライセンスリストファイル２０６の構成を示す。ライセンスリストファイル２０６には、検索キーワードが発見されたファイルの「ファイル名」、そのキーワードが含まれている「行目」、そのキーワードである「該当語句」の各項目が出力される。例えば、図１２から、ｆｉｌｅＡの８行目に“ＧＰＬ”というキーワードが発見されたことが分かる。なお、ファイル名と該当行目と該当語句の１組のレコードを「ライセンス情報」と呼ぶ。
【００２４】
次に、ステップ３０６にて、検索条件ファイル２０５で指定されているディレクトリパス内の全てのファイルについてチェックが完了した場合は、ステップ３０７に進む。未だ検索対象ファイルが残っていたら、ステップ３０２に戻り、処理を継続する。ステップ３０７では、ライセンスリストファイル２０６に１つ以上のライセンス情報があるか判定する。ある場合は、ステップ３０８で、それらのライセンス情報の全てに対して既にライセンスポリシーが作成済みか判定する。未だライセンスポリシーが作成されていないライセンス情報があれば、ステップ３０９に進み、それらのライセンス情報をポリシー作成者２０４へ送信する。そして、ステップ３１０で、ポリシー作成者２０４に対して図５のメッセージ１を表示して、ライセンスポリシーが未作成のライセンス情報に対応するライセンスポリシーの作成を依頼し、図２のライセンス情報表示部２０７の処理に移る。ステップ３０７でライセンスリストファイル２０６中にライセンス情報が無い場合、またはステップ３０８でライセンスリストファイル２０６中の全てのライセンス情報に対してライセンスポリシーが作成済みである場合は、図２のライセンス情報表示部２０７の処理に移る。
【００２５】
図４を参照して、ライセンス情報表示部２０７の処理を説明する。ライセンス情報表示部２０７は、ステップ４０１で、まずライセンス該当検索部２０３の処理によりライセンスリスト２０６に新たなライセンス情報が作成されているかどうかチェックする。作成されていない場合、新たなライセンスを含むプログラムがないということであるので、ステップ４０５で、一時保管場所１０３から当該ユーザ２０１の開発用端末１０２へ、当該ユーザ２０１がダウンロード要求したプログラムを転送する。新たなライセンス情報が作成されていた場合、ステップ４０２で、そのライセンス情報に対応するライセンスポリシーが既に登録されているか、ライセンスポリシーファイル２１２と比較してチェックする。例えば、図１２のライセンスリストの各ライセンス情報が新たに作成されたとすると、“ＧＰＬ”や“ＬＧＰＬ”で特定されるライセンスのライセンスポリシーがライセンスポリシーファイル２１２に既に登録済かをチェックするということである。登録されていた場合、ステップ４０３で、当該ユーザ２０１に図５のメッセージ２を表示し、ダウンロード要求を出したプログラムがライセンスを含んでいることを知らせ、ステップ４０５に進んで、一時保管場所１０３から要求を出したユーザ２０１の開発用端末１０２へプログラムを転送する。ライセンスポリシーが登録されていない場合、ステップ４０４で、当該ユーザに図５のメッセージ３を表示し、ダウンロード要求を出したプログラムのライセンスポリシーがまだできていないことからダウンロードできないということを当該ユーザに知らせ、要求を出したプログラムのユーザへの転送を行わずに処理を終了する。なお、メッセージ３における「ダウンロードできません」は、「一時保管場所１０３から当該ユーザ２０１の開発用端末１０２へのプログラムの転送が行われない」ということを意味している（外部サイトから一時保管場所１０３へのダウンロードは既に済んでいる）。
【００２６】
図２に戻り、上述したライセンス該当検索部２０３やライセンス情報表示部２０７の処理が終了したら、チェックサム計算部２０９によりプログラムのチェックサムを計算する。
【００２７】
図６を参照して、チェックサム計算部２０９の処理を説明する。ステップ６０１で、ライセンス該当検索部２０３の処理と同様に、一時保管場所１０３から１ソースファイルを読み込む。次にステップ６０２で、読み込んだソースファイルのチェックサムを計算する。ステップ６０３で、計算結果をチェックサムファイル２１０に出力する。ステップ６０４で、一時保管場所１０３にある全てのソースファイルについてチェックサムを計算したかチェックし、まだ未計算のものがあれば、ステップ６０１へ戻り、処理を繰り返す。全てのファイルのチェックサムが計算済であれば、ステップ６０５で、チェックサムファイル２１０を、そのソースファイルのダウンロード要求を出したユーザ２０１の開発用端末１０２内のライセンスチェックプログラム１０２ａに転送して、終了する。チェックサムファイル２１０は、ソースファイルが改変されていないかどうか、ライセンスチェックプログラム１０２ａの判定部処理にて使用するファイルである。
【００２８】
図１３に、チェックサムファイル２１０の構成を示す。チェックサムファイル２１０には、各ソースファイルの「ファイル名」と、その「チェックサム」が格納される。なお、本実施形態では、後述するライセンスチェックプログラム１０２ａにより、このチェックサムを用いてライセンス条件がソース改変不許可のプログラムが改変されていないかチェックするようにしているが、チェックサム計算の代わりに、ライセンス条件がソース改変不許可のプログラムについては、当該プログラムのアクセス権限をユーザ２０１が書き込み不可にすることで、初めから改変ができないプログラムをユーザ２０１に渡すようにしてもよい。あるいは、改変できないように暗号化したプログラムをユーザ２０１に渡し、ライセンスチェックの後、ビルドする直前に復号化してもよい。
【００２９】
次に、ポリシー作成者２０４は、送信されてきたライセンス情報（図１２）から、宣言されているライセンス名（「該当語句」の部分）を読み、そのライセンスの基本的な内容を理解し、組織内でどのように規定するかを決定する。そして、ポリシー作成者は、ライセンスポリシー作成プログラム１０１ｂの中のライセンスポリシー作成部２１１により、ライセンスポリシーを作成しライセンスポリシーファイル２１２に書き込む。
【００３０】
図７は、ライセンスポリシー作成部２１１の処理手順を示す。ステップ７０１で、ポリシー作成者２０４によりライセンスポリシーの各項目が入力されると、それらの入力された項目の情報はライセンスポリシーファイル２１２に追記される。ステップ７０２で、ライセンスポリシーファイル２１２を、ダウンロード要求したユーザに対応する開発用端末１０２にあるライセンスチェックプログラム１０２ａに送信する。ライセンスポリシーファイル２１２には、ライセンスの制約条件が含まれており、１つのライセンスにつき１つのライセンスポリシーが設定される。ライセンスポリシーファイル２１２もチェックサムファイル２１０と同様に、ビルド時に使用される。
【００３１】
図１４は、ライセンスポリシーファイル２１２の構成の一例である。「ライセンス名」の項目にはライセンスポリシーを設定するライセンス名を、「バージョン」の項目には設定するライセンスのバージョンを、それぞれ設定する。同一ライセンスにおいてもバージョンが異なると内容が変更されることもあるため、バージョンごとにライセンス内容を設定することができる。「ソース改変」の項目には、「許可」または「不許可」を設定する。「許可」はそのプログラムの改変が許可されていることを示し、「不許可」は改変が許可されていないことを示す。「ライブラリのリンク」の項目には、そのプログラムがライブラリとして使われる場合、それを組み込まれることが許可されているかいないかを示す「許可」または「不許可」を設定する。「ライセンス違反時の動作」の項目には、そのライセンスで規定されているライセンス制約条件に該当した場合（ここではソース改変不許可であるのにソースを改変した場合、または、リンク不許可であるのにリンクした場合）、どのような動作をさせるかを設定する。あらかじめ、いくつかの中から選択できるようになっており、例えば、ライセンス制約条件に該当した場合は、そのプログラムを含むソフトウェアのビルド実行を不可にする、または、ビルドは実行できるが警告メッセージを出す、などの動作を設定するものである。「ライセンス制約項目」には、そのライセンス制約条件に該当した場合、そのライセンスの条項ではどんな内容が要求されているのか、について設定する。例えば、ソースの改変が禁止されているプログラムを改変してプログラムを作成した場合、そのプログラムを含む全てのプログラムのソースを公開しなければいけない、などの制約内容である。この項目は、警告時にこの内容を表示して、ユーザに注意させることが目的である。これらの項目は、後で述べるライセンスの判定をする際に用いられる。
【００３２】
ユーザ２０１は、一時保管場所１０３から転送されたプログラム２１３を受け取ったとき、それがライセンス付きであれば、ステップ４０３で表示される図５のメッセージ２などを見ているはずである。しかし、受け取ったプログラムを含め、ユーザ２０１は、気づかずにライセンス付プログラムを改変し（２１４）、ライセンス違反をしているかもしれない。そのようなことを未然に防ぐため、ユーザ２０１がビルドする際に、次に述べるライセンスチェックプログラム１０２ａが起動し、チェックが行われる。ライセンスチェックプログラム１０２ａは、ライセンスの判定を行う判定部２１６を備えている。この判定部２１６は、ライセンスポリシーファイル２１２のライセンス条件と、チェックサムファイル２１０を参照しながら、ライセンス違反がないかチェックする。
【００３３】
図８を参照して、判定部２１６の処理を説明する。この判定部２１６は、ユーザ２０１がダウンロード要求をしたプログラムに対して、ビルドを行う際にステップ８０１で起動される。起動されると、ステップ８０２で、ライセンスポリシー作成プログラム１０１ｂから受信したライセンスポリシーファイル２１２を読み込む。次にステップ８０３で、ソースファイルを１つ読み込む。ステップ８０４で、コンパイルを行う前に、読み込んだソースファイルに対応するライセンスポリシーファイル２１２のライセンス条件をチェックする。ステップ８０５でライセンス条件がソース改変不許可ではない場合、ステップ８０６で通常通りコンパイルを行う。ソース改変不許可である場合は、図９の改変チェック部の処理へ進む。
【００３４】
図９の改変チェック部の処理では、ソースが改変されているかどうかをチェックする。まずステップ９０１で、準備プログラム１０１ａから受信したチェックサムファイル２１０の中から対象ファイルのチェックサム値を読み込む。ステップ９０２で、現在のファイルのチェックサムを計算し、読み込んだチェックサムの値と比較する。ステップ９０３で値が同じであれば、ソース改変していないということであるから、ステップ９０６で通常通りコンパイルを行い、改変チェック部の処理を終了する。値が異なれば、ステップ９０４で、ライセンスポリシー作成時に設定した「ライセンス違反時の動作」の内容を実行する。例えば、ライセンスポリシーの「ライセンス違反時の動作」に「ビルド不可」が設定されていた場合は、当該対象ファイルに対する当該ユーザのアクセス権限をアクセス不可に設定するなどの措置をすることにより、ビルドができないようにする。「ライセンス違反時の動作」が「警告表示」の場合は、警告を表示してユーザ２０１に確認させた後、ステップ８０６と同様にしてコンパイルを行うものとする。ステップ９０５で、判定結果ファイルに出力し、終了する。
【００３５】
図８に戻り、ステップ８０７で、ビルドに使用する対象ファイルが全て改変チェックされたか確認する。まだ終わっていなければ、ステップ８０３に戻り、処理を繰り返す。終わった場合は、ステップ８０８で、ライブラリからリンク対象のファイルを１つ読み込む。そして、ステップ８０９で、リンクを行う前に、読み込んだファイルのライセンス条件がリンク不許可かどうか、ライセンスポリシーファイルのリンク条件と照らし合わせる。ステップ８１０でライセンス条件がリンク不許可ではない場合、ステップ８１１で、通常通りリンクを行う。リンク不許可だった場合、図１０のリンクチェック部の処理へ進む。
【００３６】
図１０のリンクチェック部では、ステップ１００１で、読み込まれたプログラムがそれ以外のプログラムに組み込まれるかどうかチェックする。これは、リンクを行う際の実行コマンドからどのプログラムをリンクしようとしているかチェックし、読み込んだリンク対象のプログラムがそれ以外のプログラムに組み込まれようとしているかどうかをチェックするものである。ステップ１００２で組み込まれない場合、リンクチェック部の処理を終了する。組み込まれる場合、改変チェック部のときと同じように、ステップ１００３で、ライセンスポリシー作成時に設定した「ライセンス違反時の動作」の内容を実行する。そして、ステップ１００４で、判定結果ファイルに書き出し、リンクチェック部処理を終了する。
【００３７】
図８に戻り、ステップ８１２で、リンクの対象ファイルが全てリンクチェックされたかどうかチェックする。未だチェックされていないファイルがあれば、ステップ８０８に戻り、処理を繰り返す。全てチェックされていたら、ステップ８１３で、当該ユーザ２０１の開発用端末１０２に判定結果（ステップ９０５，１００４で判定結果ファイルに書き出した内容）を表示する。ステップ８１４で、ポリシー作成者２０４のチェック用端末１０１に、上記判定結果が記載されたログ２１７を出力する。ポリシー作成者２０４は、その判定結果ログ２１７を参考にして、ユーザ２０１への注意喚起などを行う。
【００３８】
図１５は、チェック対象プログラム情報を示す。図３のステップ３０２で検索対象ファイルを読み込む際に、あらかじめ図１５のようなチェック対象プログラム情報を作成し、ここに登録された各ファイルを１つずつ処理していくようにしている。処理済みのファイルは、図１５の情報から削除される。
【００３９】
図１６は、ステップ８１３や８１４でユーザ２０１やポリシー作成者２０４の端末に表示される判定結果の例を示す。「検索終了ファイル数」には、検索が終了したファイルの数（すなわち、ビルドに際してステップ８０３や８０８で読み込んだファイルの数）を表示する。「ライセンス違反ファイル数」には、ライセンスに違反したファイルの数（すなわち、ステップ９０３から９０４に進んだファイル、および、ステップ１００２から１００３に進んだファイルの数）を表示する。「判定結果」は、ステップ９０４で実行しステップ９０５で判定結果ファイルに書き出された情報であり、「ビルド不可」や「警告」など、結果内容に応じて表示する。「プログラム名」と「ライセンス名」は、ライセンス制約条件に違反したプログラム名と該当したライセンス名を表示する。また、「プログラム改変」には、チェックサムファイルによって判定したプログラム改変の有無を表示する。「ライブラリのリンク」には、リンク処理の実行の有無を表示する。「ライセンス制約項目」には、図１４の「ライセンス制約項目」と同様に、当該ライセンスに違反した場合の制約内容について表示する。
【００４０】
上記実施形態では、インターネットからオープンソースプログラムを入手した場合について述べたが、インターネット経由に限らず、ＣＤ−ＲＯＭなどのメディア経由や組織外からプログラムを入手した場合でも同様の手法によってライセンスのチェックを行うことができる。
【００４１】
また、上記実施形態では、ソース改変不可やリンク不可のライセンス制約の場合の例を述べたが、それ以外のライセンス制約を持つ場合であっても、そのチェックプログラムを上述の各プログラムに含めることにより、今回と同じようなライセンスチェックを行うことができる。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施形態を示すライセンスチェックプログラムを含む複数のコンピュータを相互に接続したネットワーク図である。
【図２】実施形態のシステムにおける処理の流れの一例を示した図である。
【図３】ライセンスの該当部分を検索する処理部の流れを示した図である。
【図４】ライセンス情報を表示する処理部の流れを示した図である。
【図５】ユーザやポリシー作成者へ表示する画面の例を示した図である。
【図６】チェックサムを計算する処理部の流れを示した図である。
【図７】ライセンスポリシーを作成する処理部の流れを示した図である。
【図８】ライセンスの判定を行う処理部の流れを示した図である。
【図９】プログラムの改変をチェックする処理の流れを示した図である。
【図１０】ライブラリのリンクをチェックする処理の流れを示した図である。
【図１１】検索条件ファイルの構成を示した図である。
【図１２】ライセンスリストファイルの構成を示した図である。
【図１３】チェックサムファイルの構成を示した図である。
【図１４】ライセンスポリシーを示した図である。
【図１５】チェック対象プログラム情報を示した図である。
【図１６】ライセンス判定結果の構成を示した図である。
【符号の説明】
【００４３】
１０１…チェック用端末、１０１ａ…準備プログラム、１０１ｂ…ライセンスポリシー作成プログラム、１０２…開発用端末、１０２ａ…ライセンスチェックプログラム、１０３…一時保管場所、２０１…ユーザ、２０２…ライセンス付ソースプログラム、２０３…ライセンス該当検索部、２０４…ポリシー作成者、２０５…検索条件ファイル、２０６…ライセンスリストファイル、２０９…チェックサム計算部、２１０…チェックサムファイル、２１１…ライセンスポリシー作成部、２１２…ライセンスポリシーファイル、２１４…ライセンス付プログラム（改変後）、２１６…判定部、２１７…結果ログ。
【図１】
2008191889.tif 000003
【図２】
2008191889.tif 000004
【図３】
2008191889.tif 000005
【図４】
2008191889.tif 000006
【図５】
2008191889.tif 000007
【図６】
2008191889.tif 000008
【図７】
2008191889.tif 000009
【図８】
2008191889.tif 000010
【図９】
2008191889.tif 000011
【図１０】
2008191889.tif 000012
【図１１】
2008191889.tif 000013
【図１２】
2008191889.tif 000014
【図１３】
2008191889.tif 000015
【図１４】
2008191889.tif 000016
【図１５】
2008191889.tif 000017
【図１６】
2008191889.tif 000018