説明

プログラムのライセンスチェックシステム

【課題】プログラム開発を行う組織において、プログラムのビルド前にライセンスを持つプログラムのライセンスをチェックし、監視できるシステムを提供することを目的とする。
【解決手段】組織内にプログラムを監視する端末を用意し、開発用端末にはライセンスチェックプログラムをインストールし、例えば組織外から入手したライセンス付きプログラムをユーザに渡す前に、当該プログラムがライセンス付きかチェックする。ライセンス付きであるときは、そのライセンスについてライセンスポリシーが作成済みかをチェックする。ライセンスポリシーが作成されていないライセンスについては、ポリシー作成者がライセンスポリシーを作成する。ユーザがそのプログラムをビルドする際、開発用端末内にあるライセンスチェックプログラムによってライセンスが違反していないかをチェックし、その結果を表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、各種のプログラムを利用しようとする際に、そのプログラムのライセンスに違反していないかをチェックするシステムに関するものである。
【背景技術】
【0002】
近年、ソースコードを無償で公開するオープンソースソフトが増えている。ソースコードがあれば、そのソフトウェアの類似品を作成したりすることができるが、オープンソースソフトの中には、一定の条件を課したソフトウェアライセンスが付いているものが多い。例えば、オープンソースの中には、オープンソースプログラムを改変して新たにプログラムを作成した場合、作成したソースを公開しなければならないというものがある。また、商用ソフトの中には、有償でソースを提供するものもある。
【0003】
これらのライセンスチェックを行うシステムとして、完成したソフトウェアのソースのライセンス情報をデータベース化し、その情報からライセンスの判別を行うものは存在していた。
【0004】
なお、本発明に関連する公知技術文献としては下記の特許文献1がある。該文献に記載のライセンス判別システムは、対象ソフトウェアが自身のプログラム情報テーブルを有するようにするとともに、各種ソフトウェアのプログラム情報テーブルと各種ライセンス情報テーブルを格納したデータベースを有し、前記データベースを参照することにより対象ソフトウェアが依存するソフトウェアから受けるライセンス制限を判別し、これによりソフトウェアが依存する他のプログラムから受けるライセンス制限を自動的に効率良く判別するものである。
【特許文献1】特開2004−252870
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、ユーザ(開発者)が勝手に外部からライセンス付きのプログラムを入手し、該プログラムを利用してシステム開発を行うことにより、ライセンスチェックが抜けてしまうことがある。また、ユーザが入手したライセンス付きのプログラムを勝手に改変してしまうと、後でソースを公開しなければならなくなったり、ライセンスに違反してしまうといったことが生じてしまう。
【0006】
本発明の目的は、プログラム開発を行う組織において、プログラムのビルド前にライセンスを持つプログラムのライセンスをチェックし、監視できるシステムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明のライセンスチェックシステムでは、ライセンスを表現するキーワードを記憶しておき、開発者が入手しようとしたソースプログラムのファイルまたはソースプログラムのライセンスを記述したドキュメントファイルから前記キーワードを検索することにより、当該ソースプログラムのライセンスについて記述したライセンス該当箇所を検索する。一方、ライセンス毎に、当該ライセンス付きのソースプログラムに対して守らなければならない条件、および、その条件に違反した場合に何をしなければならないかを規定した制約内容を記憶したライセンスポリシー記憶手段を設け、検索されたライセンスに対して、前記ライセンスポリシー記憶手段に既にライセンスポリシーが登録されているか否か判定する。ライセンスポリシーが登録されていないライセンスが検索された場合には、当該ライセンスについてライセンスポリシーを作成することを促すメッセージを、所定のチェック用端末に出力する。このチェック用端末は、例えば、プログラムのライセンスの内容について正しい判断ができる法務部門などに属する担当者が使用する端末である。その担当者は、前記メッセージを受けて、未だライセンスポリシーが作成されていないライセンスについてライセンスポリシーを作成する。開発者がプログラムのビルドを行う際には、ビルドに使用するプログラムに対してライセンス付きか否かをチェックし、ライセンス付きのプログラムについては前記ライセンスポリシー記憶手段から該当するライセンスポリシーを読み出し、当該ライセンス付きのプログラムに対して守らなければならない条件を守っているか否かをチェックする。守らなければならない条件が守られていなかった場合には、その旨および当該ライセンスポリシーの制約内容を、ビルドを指示した開発者の端末に出力する。以上のようにして、開発者が入手しようとしたオープンソースソフトのライセンスをチェックすることができる。
【0008】
なお、チェック用端末は、前記担当者が簡単にライセンスポリシーを作成することができるようなユーザインターフェースを備えるようにするとよい。また、ライセンスチェックの対象とするプログラムは、例えば、前記開発者がインターネット経由でダウンロードして入手する場合があるので、開発者が開発者用端末からインターネット経由でダウンロード要求を発行したプログラムは当該開発者端末に送ることなく一時的な保管場所に保管し、ライセンスポリシーが作成された後に当該開発者端末に送るようにするとよい。
【0009】
ライセンスで規定されている守らなければならない条件とは、例えば、プログラムの改変を不許可にする、あるいは他のプログラムとのリンクを不許可にする、などである。プログラムの改変のチェックは、例えば、プログラムを開発者が入手する前に当該プログラムのチェックサムを計算して記憶しておき、ビルドする際に再度チェックサムを計算し前記記憶した値と同一かをチェックすることにより行う。チェックサムを計算する代わりに、そのプログラムのソースファイルのアクセス権限を、ユーザに対して書き込み不可にすることによって、改変してはいけないプログラムを改変できないようにしてもよい。また、チェックサムを計算する代わりに、そのプログラムのソースファイルを暗号化して、ユーザが改変できないようにすることによって、改変してはいけないプログラムを改変できないようにしてもよい。ビルドする際には、そのビルドに使用する全てのファイルについて漏れなくライセンスのチェックを行うのがよい。
【発明の効果】
【0010】
本発明のライセンスチェックシステムによれば、次のような効果がある。
(1)プログラムのビルド時に、使用する全てのプログラムやライブラリのライセンスチェックを行うので、ライセンスのチェック漏れを防ぐことができる。
(2)ユーザが外部からプログラムを入手する際にライセンスに関する情報を取得するので、ユーザに勝手にプログラムを入手されることを防ぐことができる。
(3)各ライセンスに対して、組織内のライセンスに詳しい担当者にライセンスポリシーを作成させ、チェックすることにより、ユーザの誤判断を防ぐことができる。
(4)新しいライセンス形態に対しても、ライセンスポリシーを新たに作成することによって対応できる。
【発明を実施するための最良の形態】
【0011】
以下に、本発明の実施の形態を添付図面に基づいて説明する。
【0012】
図1は、本発明の実施の形態の一例であるライセンスチェックシステムの全体構成を示す。開発者が使用する各開発用端末102には、ライセンスチェックプログラム102aがインストールされている。チェック用端末101には、準備プログラム101aとライセンスポリシー作成プログラム101bがインストールされている。一時保管場所103は、組織外から入手したプログラムを一時保存する記憶装置である。チェック用端末101と各開発用端末102と一時保管場所103とは、組織内のLANによって相互に接続されているため、データを相互にやり取りすることができる環境にある。この組織内システムは、組織外のインターネットに接続されており、インターネット上のサイトから種々のプログラムをダウンロードすることができる。本システムは、会社や学校などのようなプログラムの開発を行っている組織内にあることを想定している。
【0013】
図1にあるチェック用端末101は、後で詳細を述べるが、組織内でライセンスについて詳しい法務部門などの担当者が操作することで、組織内に入力されたプログラム(開発者がインターネット経由で外部から入手したプログラム)の監視を行う端末である。また、開発用端末102は、組織の開発部門の開発者がプログラムを作成するための端末である。各開発用端末102にインストールされているライセンスチェックプログラム102aは、各開発用端末102内で高いユーザ権限を持つプログラムであり、開発者が実際に操作するファイルのアクセス権限などを操作することができる。ライセンスチェックプログラム102aは、開発者がビルドに使用しようとしたプログラムのライセンスをチェックし、ライセンス制限がある場合にはそのファイルをビルドに使用できないようにするなどのアクセス制限をかけることができる。
【0014】
次に図2を参照して、図1のシステムにおける処理の流れについて説明する。
【0015】
まず、開発用端末102で開発を行うユーザ(開発者)201は、インターネット上に公開されているライセンス付きのオープンソースプログラム202を入手するため、当該プログラム202を公開しているサイトにダウンロード要求を出す。そのダウンロード要求に応じて、プログラム202はダウンロードされ、組織内の一時保管場所103に保存される。一時保管場所103とは、例えば、会社などの組織内とインターネットとの間にあるゲートウェイサーバの位置や、組織間のゲートウェイの位置に設けられた記憶装置であり、組織内で特にライセンスについての監視対象とする必要がある部門からプログラムのダウンロード要求があった場合に、ここにデータが一時保存される。なお、一時保管場所103に一時保存されたプログラムについては、どのユーザのダウンロード要求に応じてダウンロードされたものかを管理しておくものとする。
【0016】
一時保管場所103に保存されたプログラム(ソースファイル)は、準備プログラム101aに入力される。ライセンス付きのプログラムの中には、そのプログラムを改造してソフトウェアの一部又は全てとして作成し、公開すると、ライセンス違反になる場合がある。準備プログラム101aは、外部から入手したソースプログラムを用いてビルドする際にライセンス付きプログラムの改変が行われていないかどうかチェックするための準備処理や、プログラム中からライセンスに関する宣言箇所を検索する機能を有する。
【0017】
まず、準備プログラム101a内のライセンス該当検索部203が、一時保管場所103にあるソースプログラムを入力する。ライセンス該当検索部203は、入力したプログラムからライセンスに関する宣言部の検索を行う。これは、入力したプログラムから、検索条件ファイル205に登録されている語句を検索する処理である。ポリシー作成者204は、検索条件ファイル205に、ライセンスに関する語句などのキーワードをあらかじめ登録しておく。ポリシー作成者204は、ソフトウェアライセンスについての解釈ができる組織内の法務部門などの担当者が行う。ライセンス該当検索部203は、検索の結果、マッチした語句、つまりライセンスを宣言している部分を当該プログラムから抽出し、ライセンスリスト206に出力する。またライセンス該当検索部203は、ライセンスリスト206に出力されたライセンス情報のうち、未だライセンスポリシーが作成されていないものについては当該ライセンス情報をポリシー作成者204に送信する。ポリシー作成者204は、ライセンスポリシー作成部211を用いて、送られてきたライセンス情報に応じたライセンスポリシーを作成する。
【0018】
なお、ライセンスリストファイル206をポリシー作成者204に送信する代わりに、ポリシー作成者204が、ライセンスリスト206や一時保管場所103内のプログラムを直接参照してチェックを行ってもよい。ライセンス該当検索部203の処理は、図3で詳しく説明する。また、ここではユーザ201毎にライセンスリストファイル206を作成するものとして説明するが、1つのライセンスリストファイル206に複数ユーザに関するライセンス情報を格納して管理するようにしてもよい。
【0019】
ライセンス情報表示部207は、一時保管場所103にダウンロードされたプログラムについて、新たなライセンス情報がライセンスリストファイル206に追加された場合に、当該プログラムのダウンロード要求を発行したユーザ201にメッセージを送る処理などを行う。ライセンス情報表示部207の処理は、図4で詳しく説明する。
【0020】
図3を参照して、ライセンス該当検索部203の処理を説明する。まずステップ301で、図2の検索条件ファイル205を読み込む。そして、ステップ302で、一時保管場所103にあるファイル(外部から入力したソースプログラム)の1つを読み込む。
【0021】
ここで、検索条件ファイル205の構成について説明する。図11は、検索条件ファイル205に格納する各項目と、それらの項目の設定例を示す。「検索対象ディレクトリ(ファイル)パス」の項目には、検索対象プログラムが置かれているディレクトリやファイルのパスを指定する。ここでは、一時保管場所103のディレクトリである「C:\Linux\License」が設定されている。「検索キーワード」の項目には、ライセンス名や関連語など、検索したい語句を設定する。ここでは3つのキーワードの例を示したが、その数は任意である。「手動検索」の項目には、ONまたはOFFを設定する。ライセンス該当検索部203による自動的なライセンス検索を行う場合はこの項目をOFFとし、行いたくない場合はONとする。ONにすると手動検索のために、一時保管場所103からポリシー作成者204にプログラムが渡される。なお、ここではパスとキーワードと手動検索の1組のレコードの例のみを図示したが、複数組の検索条件を設定可能である。
【0022】
図3の流れ図に戻り、ステップ303で、検索条件ファイル205で指定されているキーワードをキーとして、一時保管場所103から読み込まれたファイル内に当該キーワードにマッチする部分があるか検索する。マッチする語句があった場合、ステップ305で、当該ユーザ201に対応する図2のライセンスリスト206に追記する。読み込まれたファイルの中にキーワードが無かった場合、ライセンスリスト206への追記は行われない。なお、オープンソースプログラムでは、1つ1つのソースプログラム毎にその先頭部分にライセンスの記述がある場合のほか、複数のソースプログラムのライセンスがテキストその他のドキュメントファイルに記述されている場合などがある。そのため、ステップ302で読み込むファイルは、ソースプログラムの他、テキストその他のドキュメントファイルも含む。
【0023】
図12に、ライセンスリストファイル206の構成を示す。ライセンスリストファイル206には、検索キーワードが発見されたファイルの「ファイル名」、そのキーワードが含まれている「行目」、そのキーワードである「該当語句」の各項目が出力される。例えば、図12から、fileAの8行目に“GPL”というキーワードが発見されたことが分かる。なお、ファイル名と該当行目と該当語句の1組のレコードを「ライセンス情報」と呼ぶ。
【0024】
次に、ステップ306にて、検索条件ファイル205で指定されているディレクトリパス内の全てのファイルについてチェックが完了した場合は、ステップ307に進む。未だ検索対象ファイルが残っていたら、ステップ302に戻り、処理を継続する。ステップ307では、ライセンスリストファイル206に1つ以上のライセンス情報があるか判定する。ある場合は、ステップ308で、それらのライセンス情報の全てに対して既にライセンスポリシーが作成済みか判定する。未だライセンスポリシーが作成されていないライセンス情報があれば、ステップ309に進み、それらのライセンス情報をポリシー作成者204へ送信する。そして、ステップ310で、ポリシー作成者204に対して図5のメッセージ1を表示して、ライセンスポリシーが未作成のライセンス情報に対応するライセンスポリシーの作成を依頼し、図2のライセンス情報表示部207の処理に移る。ステップ307でライセンスリストファイル206中にライセンス情報が無い場合、またはステップ308でライセンスリストファイル206中の全てのライセンス情報に対してライセンスポリシーが作成済みである場合は、図2のライセンス情報表示部207の処理に移る。
【0025】
図4を参照して、ライセンス情報表示部207の処理を説明する。ライセンス情報表示部207は、ステップ401で、まずライセンス該当検索部203の処理によりライセンスリスト206に新たなライセンス情報が作成されているかどうかチェックする。作成されていない場合、新たなライセンスを含むプログラムがないということであるので、ステップ405で、一時保管場所103から当該ユーザ201の開発用端末102へ、当該ユーザ201がダウンロード要求したプログラムを転送する。新たなライセンス情報が作成されていた場合、ステップ402で、そのライセンス情報に対応するライセンスポリシーが既に登録されているか、ライセンスポリシーファイル212と比較してチェックする。例えば、図12のライセンスリストの各ライセンス情報が新たに作成されたとすると、“GPL”や“LGPL”で特定されるライセンスのライセンスポリシーがライセンスポリシーファイル212に既に登録済かをチェックするということである。登録されていた場合、ステップ403で、当該ユーザ201に図5のメッセージ2を表示し、ダウンロード要求を出したプログラムがライセンスを含んでいることを知らせ、ステップ405に進んで、一時保管場所103から要求を出したユーザ201の開発用端末102へプログラムを転送する。ライセンスポリシーが登録されていない場合、ステップ404で、当該ユーザに図5のメッセージ3を表示し、ダウンロード要求を出したプログラムのライセンスポリシーがまだできていないことからダウンロードできないということを当該ユーザに知らせ、要求を出したプログラムのユーザへの転送を行わずに処理を終了する。なお、メッセージ3における「ダウンロードできません」は、「一時保管場所103から当該ユーザ201の開発用端末102へのプログラムの転送が行われない」ということを意味している(外部サイトから一時保管場所103へのダウンロードは既に済んでいる)。
【0026】
図2に戻り、上述したライセンス該当検索部203やライセンス情報表示部207の処理が終了したら、チェックサム計算部209によりプログラムのチェックサムを計算する。
【0027】
図6を参照して、チェックサム計算部209の処理を説明する。ステップ601で、ライセンス該当検索部203の処理と同様に、一時保管場所103から1ソースファイルを読み込む。次にステップ602で、読み込んだソースファイルのチェックサムを計算する。ステップ603で、計算結果をチェックサムファイル210に出力する。ステップ604で、一時保管場所103にある全てのソースファイルについてチェックサムを計算したかチェックし、まだ未計算のものがあれば、ステップ601へ戻り、処理を繰り返す。全てのファイルのチェックサムが計算済であれば、ステップ605で、チェックサムファイル210を、そのソースファイルのダウンロード要求を出したユーザ201の開発用端末102内のライセンスチェックプログラム102aに転送して、終了する。チェックサムファイル210は、ソースファイルが改変されていないかどうか、ライセンスチェックプログラム102aの判定部処理にて使用するファイルである。
【0028】
図13に、チェックサムファイル210の構成を示す。チェックサムファイル210には、各ソースファイルの「ファイル名」と、その「チェックサム」が格納される。なお、本実施形態では、後述するライセンスチェックプログラム102aにより、このチェックサムを用いてライセンス条件がソース改変不許可のプログラムが改変されていないかチェックするようにしているが、チェックサム計算の代わりに、ライセンス条件がソース改変不許可のプログラムについては、当該プログラムのアクセス権限をユーザ201が書き込み不可にすることで、初めから改変ができないプログラムをユーザ201に渡すようにしてもよい。あるいは、改変できないように暗号化したプログラムをユーザ201に渡し、ライセンスチェックの後、ビルドする直前に復号化してもよい。
【0029】
次に、ポリシー作成者204は、送信されてきたライセンス情報(図12)から、宣言されているライセンス名(「該当語句」の部分)を読み、そのライセンスの基本的な内容を理解し、組織内でどのように規定するかを決定する。そして、ポリシー作成者は、ライセンスポリシー作成プログラム101bの中のライセンスポリシー作成部211により、ライセンスポリシーを作成しライセンスポリシーファイル212に書き込む。
【0030】
図7は、ライセンスポリシー作成部211の処理手順を示す。ステップ701で、ポリシー作成者204によりライセンスポリシーの各項目が入力されると、それらの入力された項目の情報はライセンスポリシーファイル212に追記される。ステップ702で、ライセンスポリシーファイル212を、ダウンロード要求したユーザに対応する開発用端末102にあるライセンスチェックプログラム102aに送信する。ライセンスポリシーファイル212には、ライセンスの制約条件が含まれており、1つのライセンスにつき1つのライセンスポリシーが設定される。ライセンスポリシーファイル212もチェックサムファイル210と同様に、ビルド時に使用される。
【0031】
図14は、ライセンスポリシーファイル212の構成の一例である。「ライセンス名」の項目にはライセンスポリシーを設定するライセンス名を、「バージョン」の項目には設定するライセンスのバージョンを、それぞれ設定する。同一ライセンスにおいてもバージョンが異なると内容が変更されることもあるため、バージョンごとにライセンス内容を設定することができる。「ソース改変」の項目には、「許可」または「不許可」を設定する。「許可」はそのプログラムの改変が許可されていることを示し、「不許可」は改変が許可されていないことを示す。「ライブラリのリンク」の項目には、そのプログラムがライブラリとして使われる場合、それを組み込まれることが許可されているかいないかを示す「許可」または「不許可」を設定する。「ライセンス違反時の動作」の項目には、そのライセンスで規定されているライセンス制約条件に該当した場合(ここではソース改変不許可であるのにソースを改変した場合、または、リンク不許可であるのにリンクした場合)、どのような動作をさせるかを設定する。あらかじめ、いくつかの中から選択できるようになっており、例えば、ライセンス制約条件に該当した場合は、そのプログラムを含むソフトウェアのビルド実行を不可にする、または、ビルドは実行できるが警告メッセージを出す、などの動作を設定するものである。「ライセンス制約項目」には、そのライセンス制約条件に該当した場合、そのライセンスの条項ではどんな内容が要求されているのか、について設定する。例えば、ソースの改変が禁止されているプログラムを改変してプログラムを作成した場合、そのプログラムを含む全てのプログラムのソースを公開しなければいけない、などの制約内容である。この項目は、警告時にこの内容を表示して、ユーザに注意させることが目的である。これらの項目は、後で述べるライセンスの判定をする際に用いられる。
【0032】
ユーザ201は、一時保管場所103から転送されたプログラム213を受け取ったとき、それがライセンス付きであれば、ステップ403で表示される図5のメッセージ2などを見ているはずである。しかし、受け取ったプログラムを含め、ユーザ201は、気づかずにライセンス付プログラムを改変し(214)、ライセンス違反をしているかもしれない。そのようなことを未然に防ぐため、ユーザ201がビルドする際に、次に述べるライセンスチェックプログラム102aが起動し、チェックが行われる。ライセンスチェックプログラム102aは、ライセンスの判定を行う判定部216を備えている。この判定部216は、ライセンスポリシーファイル212のライセンス条件と、チェックサムファイル210を参照しながら、ライセンス違反がないかチェックする。
【0033】
図8を参照して、判定部216の処理を説明する。この判定部216は、ユーザ201がダウンロード要求をしたプログラムに対して、ビルドを行う際にステップ801で起動される。起動されると、ステップ802で、ライセンスポリシー作成プログラム101bから受信したライセンスポリシーファイル212を読み込む。次にステップ803で、ソースファイルを1つ読み込む。ステップ804で、コンパイルを行う前に、読み込んだソースファイルに対応するライセンスポリシーファイル212のライセンス条件をチェックする。ステップ805でライセンス条件がソース改変不許可ではない場合、ステップ806で通常通りコンパイルを行う。ソース改変不許可である場合は、図9の改変チェック部の処理へ進む。
【0034】
図9の改変チェック部の処理では、ソースが改変されているかどうかをチェックする。まずステップ901で、準備プログラム101aから受信したチェックサムファイル210の中から対象ファイルのチェックサム値を読み込む。ステップ902で、現在のファイルのチェックサムを計算し、読み込んだチェックサムの値と比較する。ステップ903で値が同じであれば、ソース改変していないということであるから、ステップ906で通常通りコンパイルを行い、改変チェック部の処理を終了する。値が異なれば、ステップ904で、ライセンスポリシー作成時に設定した「ライセンス違反時の動作」の内容を実行する。例えば、ライセンスポリシーの「ライセンス違反時の動作」に「ビルド不可」が設定されていた場合は、当該対象ファイルに対する当該ユーザのアクセス権限をアクセス不可に設定するなどの措置をすることにより、ビルドができないようにする。「ライセンス違反時の動作」が「警告表示」の場合は、警告を表示してユーザ201に確認させた後、ステップ806と同様にしてコンパイルを行うものとする。ステップ905で、判定結果ファイルに出力し、終了する。
【0035】
図8に戻り、ステップ807で、ビルドに使用する対象ファイルが全て改変チェックされたか確認する。まだ終わっていなければ、ステップ803に戻り、処理を繰り返す。終わった場合は、ステップ808で、ライブラリからリンク対象のファイルを1つ読み込む。そして、ステップ809で、リンクを行う前に、読み込んだファイルのライセンス条件がリンク不許可かどうか、ライセンスポリシーファイルのリンク条件と照らし合わせる。ステップ810でライセンス条件がリンク不許可ではない場合、ステップ811で、通常通りリンクを行う。リンク不許可だった場合、図10のリンクチェック部の処理へ進む。
【0036】
図10のリンクチェック部では、ステップ1001で、読み込まれたプログラムがそれ以外のプログラムに組み込まれるかどうかチェックする。これは、リンクを行う際の実行コマンドからどのプログラムをリンクしようとしているかチェックし、読み込んだリンク対象のプログラムがそれ以外のプログラムに組み込まれようとしているかどうかをチェックするものである。ステップ1002で組み込まれない場合、リンクチェック部の処理を終了する。組み込まれる場合、改変チェック部のときと同じように、ステップ1003で、ライセンスポリシー作成時に設定した「ライセンス違反時の動作」の内容を実行する。そして、ステップ1004で、判定結果ファイルに書き出し、リンクチェック部処理を終了する。
【0037】
図8に戻り、ステップ812で、リンクの対象ファイルが全てリンクチェックされたかどうかチェックする。未だチェックされていないファイルがあれば、ステップ808に戻り、処理を繰り返す。全てチェックされていたら、ステップ813で、当該ユーザ201の開発用端末102に判定結果(ステップ905,1004で判定結果ファイルに書き出した内容)を表示する。ステップ814で、ポリシー作成者204のチェック用端末101に、上記判定結果が記載されたログ217を出力する。ポリシー作成者204は、その判定結果ログ217を参考にして、ユーザ201への注意喚起などを行う。
【0038】
図15は、チェック対象プログラム情報を示す。図3のステップ302で検索対象ファイルを読み込む際に、あらかじめ図15のようなチェック対象プログラム情報を作成し、ここに登録された各ファイルを1つずつ処理していくようにしている。処理済みのファイルは、図15の情報から削除される。
【0039】
図16は、ステップ813や814でユーザ201やポリシー作成者204の端末に表示される判定結果の例を示す。「検索終了ファイル数」には、検索が終了したファイルの数(すなわち、ビルドに際してステップ803や808で読み込んだファイルの数)を表示する。「ライセンス違反ファイル数」には、ライセンスに違反したファイルの数(すなわち、ステップ903から904に進んだファイル、および、ステップ1002から1003に進んだファイルの数)を表示する。「判定結果」は、ステップ904で実行しステップ905で判定結果ファイルに書き出された情報であり、「ビルド不可」や「警告」など、結果内容に応じて表示する。「プログラム名」と「ライセンス名」は、ライセンス制約条件に違反したプログラム名と該当したライセンス名を表示する。また、「プログラム改変」には、チェックサムファイルによって判定したプログラム改変の有無を表示する。「ライブラリのリンク」には、リンク処理の実行の有無を表示する。「ライセンス制約項目」には、図14の「ライセンス制約項目」と同様に、当該ライセンスに違反した場合の制約内容について表示する。
【0040】
上記実施形態では、インターネットからオープンソースプログラムを入手した場合について述べたが、インターネット経由に限らず、CD−ROMなどのメディア経由や組織外からプログラムを入手した場合でも同様の手法によってライセンスのチェックを行うことができる。
【0041】
また、上記実施形態では、ソース改変不可やリンク不可のライセンス制約の場合の例を述べたが、それ以外のライセンス制約を持つ場合であっても、そのチェックプログラムを上述の各プログラムに含めることにより、今回と同じようなライセンスチェックを行うことができる。
【図面の簡単な説明】
【0042】
【図1】本発明の一実施形態を示すライセンスチェックプログラムを含む複数のコンピュータを相互に接続したネットワーク図である。
【図2】実施形態のシステムにおける処理の流れの一例を示した図である。
【図3】ライセンスの該当部分を検索する処理部の流れを示した図である。
【図4】ライセンス情報を表示する処理部の流れを示した図である。
【図5】ユーザやポリシー作成者へ表示する画面の例を示した図である。
【図6】チェックサムを計算する処理部の流れを示した図である。
【図7】ライセンスポリシーを作成する処理部の流れを示した図である。
【図8】ライセンスの判定を行う処理部の流れを示した図である。
【図9】プログラムの改変をチェックする処理の流れを示した図である。
【図10】ライブラリのリンクをチェックする処理の流れを示した図である。
【図11】検索条件ファイルの構成を示した図である。
【図12】ライセンスリストファイルの構成を示した図である。
【図13】チェックサムファイルの構成を示した図である。
【図14】ライセンスポリシーを示した図である。
【図15】チェック対象プログラム情報を示した図である。
【図16】ライセンス判定結果の構成を示した図である。
【符号の説明】
【0043】
101…チェック用端末、101a…準備プログラム、101b…ライセンスポリシー作成プログラム、102…開発用端末、102a…ライセンスチェックプログラム、103…一時保管場所、201…ユーザ、202…ライセンス付ソースプログラム、203…ライセンス該当検索部、204…ポリシー作成者、205…検索条件ファイル、206…ライセンスリストファイル、209…チェックサム計算部、210…チェックサムファイル、211…ライセンスポリシー作成部、212…ライセンスポリシーファイル、214…ライセンス付プログラム(改変後)、216…判定部、217…結果ログ。

【特許請求の範囲】
【請求項1】
ソースプログラムのライセンスをチェックするライセンスチェックシステムであって、
ライセンスを表現するキーワードを記憶した検索キーワード記憶手段と、
ソースプログラムのファイルまたはソースプログラムのライセンスを記述したドキュメントファイルから前記キーワードを検索することにより、当該ソースプログラムのライセンスについて記述したライセンス該当箇所を検索するライセンス該当検索手段と、
ライセンス毎に、当該ライセンス付きのソースプログラムに対して守らなければならない条件、および、その条件に違反した場合に何をしなければならないかを規定した制約内容を記憶したライセンスポリシー記憶手段と、
前記ライセンス該当検索手段により検索されたライセンスに対して、前記ライセンスポリシー記憶手段に既にライセンスポリシーが登録されているか否か判定する手段と、
ライセンスポリシーが登録されていないライセンスが検索された場合に、当該ライセンスについてライセンスポリシーを作成することを促すメッセージを、所定のチェック用端末に出力する手段と、
開発者の指示によるプログラムのビルド時に、ビルドに使用するプログラムに対してライセンス付きか否かをチェックし、ライセンス付きのプログラムについては前記ライセンスポリシー記憶手段から該当するライセンスポリシーを読み出し、当該ライセンス付きのプログラムに対して守らなければならない条件を守っているか否かをチェックするライセンスチェック手段と、
前記守らなければならない条件が守られていなかった場合に、その旨および当該ライセンスポリシーの制約内容を、ビルドを指示した前記開発者の端末に出力する手段と
を備えることを特徴とするライセンスチェックシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate