(57)【要約】【課題】ソフトウェアを構成する複数のプログラムのソースコードのライセンスを漏れなく管理する。【解決手段】ライセンス管理装置３００の制御部３１０の機能的構成である依存関係判別部３１２は、ソフトウェアをビルドする際のログであるビルド情報に基づいて、ソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する。ライセンス調査部３１３は、予め定めたライセンスを有するソースコードを判別するとともに、依存関係判別部３１２による判別結果に基づいて、判別したソースコードに依存する他のソースコードを特定し、他のソースコードに対しても同じライセンスを有すると判別する。結果出力部３１４は、ライセンス調査部３１３による判別結果を出力する。【選択図】図５
2018139054.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアをビルドする際のログであるビルド情報に基づいて、前記ソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する依存関係判別部と、
前記複数のプログラムのソースコードのうちから、予め定めたライセンスを有するソースコードを判別するとともに、前記依存関係判別部による判別結果に基づいて、前記判別したソースコードに依存する他のソースコードを特定し、該他のソースコードに対しても前記予め定めたライセンスを有すると判別するライセンス調査部と、
前記ライセンス調査部による判別結果を出力する結果出力部と、
を備えるライセンス管理装置。
【請求項２】
前記ビルド情報は、ソフトウェア生成物を生成しないビルドである擬似ビルドを実行した際のログである、
請求項１に記載のライセンス管理装置。
【請求項３】
前記予め定めたライセンスがソースコードの公開を義務づけるライセンスである場合に、前記ライセンス調査部が判別した前記予め定めたライセンスを有するソースコードのアーカイブを作成するアーカイブ作成部をさらに備える、
請求項１又は２に記載のライセンス管理装置。
【請求項４】
前記結果出力部は、前記ライセンス調査部が判別したライセンスの条文の一覧を出力する、
請求項１から３の何れか１項に記載のライセンス管理装置。
【請求項５】
ソフトウェアをビルドする際のログであるビルド情報に基づいて、前記ソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する依存関係判別ステップと、
前記複数のプログラムのソースコードのうちから、予め定めたライセンスを有するソースコードを判別するとともに、前記依存関係判別ステップでの判別結果に基づいて、前記判別したソースコードに依存する他のソースコードを特定し、該他のソースコードに対しても前記予め定めたライセンスを有すると判別するライセンス調査ステップと、
を有するライセンス管理方法。
【請求項６】
コンピュータを、
ソフトウェアをビルドする際のログであるビルド情報に基づいて、前記ソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する依存関係判別部、
前記複数のプログラムのソースコードのうちから、予め定めたライセンスを有するソースコードを判別するとともに、前記依存関係判別部による判別結果に基づいて、前記判別したソースコードに依存する他のソースコードを特定し、該他のソースコードに対しても前記予め定めたライセンスを有すると判別するライセンス調査部、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライセンス管理装置、ライセンス管理方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、オープン・ソース・ソフトウェア（ＯＳＳ）を利用したソフトウェアの開発が盛んとなっている。ＯＳＳの中には、ＯＳＳを利用した場合に、一定の条件を課すライセンスを伴うものが多い。従って、ＯＳＳを利用する場合、そのライセンスの調査や管理に多大な工数が必要となる。特許文献１は、この多大な工数を減らすため、ＯＳＳのライセンスをチェックするシステムを開示している。具体的には、特許文献１に開示されたシステムは、ユーザがＯＳＳをインターネットからダウンロードした際、そのＯＳＳのライセンスをチェックする。そして、ユーザがそのＯＳＳを用いて作成したソフトウェアをビルドする際、そのシステムは、そのソフトウェアが、そのＯＳＳのライセンスに違反していないかを判定し、その結果を出力する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１９１８８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＯＳＳの中には、そのライセンスが、そのＯＳＳを直接的に用いたソフトウェアだけでなく、そのＯＳＳを間接的に用いたソフトウェアに伝播するものがある。例えば、ＯＳＳのライセンスの１つであるＧＰＬ（GNU General Public License）では、ＧＰＬを有するプログラムＡを用いたプログラムＢだけでなく、プログラムＢを用いたプログラムＣにも、ＧＰＬの影響が及ぶ。特許文献１に開示されたシステムでは、ユーザによるＯＳＳの改変や、そのＯＳＳへのリンクがそのＯＳＳのライセンスに違反しているか否かを判定できるが、そのＯＳＳを間接的に用いたソフトウェアについては、そのＯＳＳのライセンスに違反しているか否かを判定することは、困難である。
【０００５】
本発明は、上記実情に鑑みてなされたものであり、ソフトウェアを構成する複数のプログラムのソースコードのライセンスを漏れなく管理することが可能なライセンス管理装置、ライセンス管理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明のライセンス管理装置は、
ソフトウェアをビルドする際のログであるビルド情報に基づいて、前記ソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する依存関係判別部と、
前記複数のプログラムのソースコードのうちから、予め定めたライセンスを有するソースコードを判別するとともに、前記依存関係判別部による判別結果に基づいて、前記判別したソースコードに依存する他のソースコードを特定し、該他のソースコードに対しても前記予め定めたライセンスを有すると判別するライセンス調査部と、
前記ライセンス調査部による判別結果を出力する結果出力部と、
を備える。
【発明の効果】
【０００７】
本発明によれば、ソフトウェアを構成する複数のプログラムのソースコードのライセンスを漏れなく管理することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に係るライセンス管理システムの構成例を示す図
【図２】本発明の実施形態に係るライセンス管理装置の構成例を示す図
【図３】ライセンス情報テーブルに格納されるデータの一例を示す図
【図４】調査結果格納テーブルに格納されるデータの一例を示す図
【図５】制御部の機能構成の一例を示す概略ブロック図
【図６】依存関係取得部により取得されたソースコード間の依存関係の一例を模式的に表す図
【図７】ライセンス診断処理のフローチャート
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付す。
【００１０】
本発明の実施形態に係るライセンス管理システム１の構成例を図１に示す。ライセンス管理システム１は、利用者端末１００と、開発環境サーバ２００と、ライセンス管理装置３００と、を備える。利用者端末１００と開発環境サーバ２００とライセンス管理装置３００とは、インターネット４００を介して、互いに通信可能に接続されている。
【００１１】
利用者端末１００は、ユーザによって操作されるパーソナルコンピュータ、タブレット端末等である。ユーザは、利用者端末１００を操作して、ソフトウェアのビルドの指示、ライセンス診断の指示等を行う。
【００１２】
開発環境サーバ２００は、利用者端末１００又はライセンス管理装置３００からの指示に基づいてソフトウェアのビルドを実行するサーバである。なお、ソフトウェアのビルドとは、ソフトウェアを構成する複数のプログラムのソースコードを正規の手順でコンパイル及びリンクして実行可能なソフトウェア生成物に変換することをいう。開発環境サーバ２００には、ビルドを行うために必要なコンパイラ、リンケージエディタ、スクリプト、ビルドコマンド等が予めインストールされている。
【００１３】
ライセンス管理装置３００は、ソフトウェアのライセンスを管理する。具体的には、ライセンス管理装置３００は、診断対象のソフトウェアを構成する複数のプログラムのソースコード各々のライセンスをチェックし、その結果を出力する。
【００１４】
ランセンス管理装置３００の構成を図２に示す。ライセンス管理装置３００は、制御部３１０と、記憶部３２０と、通信部３３０と、入力部３４０と、出力部３５０と、を備える。これらの各部は、バス３６０により接続されている。
【００１５】
制御部３１０は、例えば、ＣＰＵ（Central Processing Unit）、ＣＰＵが実行するプログラムを格納するＲＯＭ（Read Only Memory）、ＣＰＵが生成したデータを一時的に格納するＲＡＭ（Random Access Memory）等を備え、ライセンス管理装置３００全体の制御を行う。
【００１６】
記憶部３２０は、ハードディスクドライブや、フラッシュメモリ、ＳＳＤ（Solid State Drive）のような書き込み可能な記憶装置を備える。記憶部３２０は、ライセンス情報テーブル３２１と、調査結果格納テーブル３２２と、を記憶する。
【００１７】
ライセンス情報テーブル３２１は、ライセンス情報記憶部に対応し、ライセンスの種類毎に、ライセンスに関する各種の情報が登録されるテーブルである。
【００１８】
図３に、ライセンス情報テーブル３２１に格納される情報の一例を示す。図３に示すライセンス情報テーブル３２１には、ライセンスの種類毎に、ライセンス特定情報と、ライセンス種別と、伝播フラグと、公開フラグと、バージョンと、ＵＲＩ（Uniform Resource Identifier）と、を表す情報が対応付けて格納されている。ライセンス情報テーブル３２１に格納される各種データは、定期的にインターネット４００を介して収集され、最新のものに更新される。
【００１９】
なお、ライセンス特定情報は、ライセンスを特定するための情報である。ライセンス特定情報は、例えば、そのライセンスを有するプログラムのソースコード中に一般的に記述されるキーワードである。
ライセンス種別は、ライセンスの種類を表す。具体的なライセンスの種類は、例えば、ＧＰＬ、ＢＳＤ（Berkeley Software Distribution License）等である。
伝播フラグは、あるソースコードに付与されているライセンスが、そのソースコードに依存する他のソースコードにも伝播（ライセンス伝播）するか否かを示すフラグである。伝播フラグ「１」は、ライセンス伝播することを示す。伝播フラグ「０」は、ライセンス伝播しないことを示す。
公開フラグは、そのソースコードの公開が義務づけられているか否かを示すフラグである。公開フラグ「１」は、ソースコードの公開が義務づけられていることを示す。公開フラグ「０」は、ソースコードの公開が義務づけられていないことを示す。
ＵＲＩは、そのライセンスがインターネット４００のウェブ上で公開されている場合のそのウェブページのアドレスである。
【００２０】
ここで、ＧＰＬは、あるＯＳＳを利用したソフトウェア全体に対して、そのソースコードを公開する必要がある。すなわち、ＧＰＬは、そのＯＳＳのライセンスの影響が伝播するライセンスである。例えば、あるＯＳＳが、ＧＰＬを有する場合、そのＯＳＳを改変することにより作成されたプログラム、そのＯＳＳへのリンクを含むプログラム等も、ＧＰＬを有することとなる。従って、それらのプログラムも、そのソースコードを公開することが義務づけられる。そのため、ライセンス情報テーブル３２１において、ＧＰＬの伝播フラグは「１」、公開フラグは「１」に設定されている。
【００２１】
これに対し、ＢＳＤライセンスは、ＢＳＤライセンスを有するＯＳＳの利用、再配布にあたり、予め定められている条件を満たせばよく、制限が少ないライセンスである。また、ＢＳＤライセンスを有するＯＳＳを改変したプログラムは、そのソースコードを非公開にすることができる。そのため、図３に示すライセンス情報テーブル３２１において、ＢＳＤライセンスの伝播フラグは「０」、公開フラグは「０」に設定されている。
【００２２】
図２に戻り、調査結果格納テーブル３２２には、ソフトウェアを構成する各プログラムのソースコードのライセンスを調査した結果を示す情報が格納される。具体的には、図４に示すように、調査結果格納テーブル３２２には、ソースコード毎に、ソースコードのファイル名と、ソースコードに課せられているライセンスの種別と、伝播元ファイル名と、を示す情報が格納される。伝播元ファイル名は、そのソースコードがライセンス伝播の影響を受ける場合、そのソースコードに影響を与える原因であるソースコードのファイル名である。
【００２３】
図２に戻り、通信部３３０は、インターネット４００を介して、利用者端末１００及び開発環境サーバ２００と、無線または有線による通信を行うためのインターフェースである。
【００２４】
入力部３４０は、ボタン、タッチパネル、キーボード等の入力装置を備える。入力部３４０は、ユーザからの操作入力を受け付け、受け付けた操作入力に対応する操作入力信号を制御部３１０に出力する。
【００２５】
出力部３５０は、ＣＲＴ（Cathode Ray Tube）、液晶ディスプレイ等の表示装置を備える。出力部３５０は、制御部３１０から供給される文字、画像等のデータを表示する。
【００２６】
次に、ライセンス管理装置３００の制御部３１０の機能について説明する。図５は、制御部３１０の機能構成の一例を示す概略ブロック図である。制御部３１０は、機能的な構成として、プログラム取得部３１１と、依存関係判別部３１２と、ライセンス調査部３１３と、結果出力部３１４と、アーカイブ作成部３１５と、を備える。
【００２７】
プログラム取得部３１１は、開発環境サーバ２００から、ライセンス診断の対象とするソフトウェアを構成する複数のプログラムのソースコードと、このソフトウェアをビルドした際のビルド情報とを取得する。
【００２８】
依存関係判別部３１２は、プログラム取得部３１１により取得されたビルド情報に基づいて、プログラム取得部３１１により取得された複数のプログラム間の依存関係を判別する。プログラム間の依存関係は、例えば、あるプログラムが、他のプログラムをリンク（利用、参照等）するという形式で利用している関係である。リンクには、動的リンクや静的リンクが含まれる。
【００２９】
図６は、依存関係判別部３１２により判別されたソースコード間の依存関係の一例を模式的に表す図である。この依存関係は、プログラム取得部３１１により取得された複数のプログラムのソースコードそれぞれを表すノードと、依存関係があるプログラムを表すノード間を結ぶ矢印線と、から構成される木構造で表される。矢印線の始点に接続するノードのソースコードは、この矢印線の終点に接続するノードのソースコードに依存していることを示す。例えば、図６から、ソースコード「aa.c」は、２つのソースコード「bb.c」、「dd.c」に依存していることが分かる。さらに、ソースコード「bb.c」は、ソースコード「cc.h」に依存していることが分かる。そのため、ソースコード「aa.c」は、間接的にソースコード「cc.h」にも依存していることが分かる。
【００３０】
なお、以下の説明では、直接及び間接的に他のソースコードに依存する回数が多いソースコードほど、依存関係が上位のソースコードであると定義する。例えば、図６の例では、どのソースコードにも依存していないソースコード「cc.h」、「dd.c」、「ff.c」、「hh.c」、「ii.c」、「jj.c」は、依存関係が最下位のソースコードとなる。また、ソースコード「main.c」は、依存関係が最上位のソースコードとなる。
【００３１】
図５に戻り、ライセンス調査部３１３は、ライセンス情報テーブル３２１に記憶されているライセンス情報及び依存関係判別部３１２によって判別されたソースコード間の依存関係に基づいて、調査対象とするプログラムのソースコード各々のライセンスを判別し、判別結果を調査結果格納テーブル３２２に登録する。
【００３２】
具体的には、まず、ライセンス調査部３１３は、調査対象とする複数のプログラムのソースコードのうち、ライセンス情報テーブル３２１に記憶されたライセンス特定情報を含むソースコードを特定してそのライセンスの種類を判別する。そして、ライセンス調査部３１３は、判別結果を調査結果格納テーブル３２２に登録する。
【００３３】
例えば、ライセンス情報テーブル３２１に図３に示すような情報が記憶されており、調査対象とする複数のプログラムのソースコードの中から、ライセンス特定情報「GNU General Public License」が記述されているソースコードを特定した場合、ライセンス調査部３１３は、当該ソースコードのライセンスは「ＧＰＬ」であると判別する。そして、ライセンス調査部３１３は、特定したソースコードのファイル名と判別したライセンス種別とを対応付けたエントリを調査結果格納テーブル３２２に登録する。なお、ここで登録されるエントリの伝播元ファイル名は「無し」とする。
【００３４】
続いて、ライセンス調査部３１３は、ライセンス情報テーブル３２１を参照して、判別したソースコードのライセンスの伝播フラグが「１」であるか否かを判別する。伝播フラグが「１」である場合、ライセンス調査部３１３は、依存関係判別部３１２が判別した依存関係に基づいて、このソースコードに直接又は間接的に依存する他のソースコードを全て特定する。そして、ライセンス調査部３１３は、特定した他のソースコードに対しても、同様のライセンス種別を有すると判別し、判別結果を調査結果格納テーブル３２２に登録する。
【００３５】
例えば、ソースコード間に図６に示すような依存関係が有り、ソースコード「ii.c」のライセンスが「ＧＰＬ」であると判別された場合を考える。図３より、「ＧＰＬ」は他のソースコードに伝播するため、ライセンス調査部３１３は、このソースコード「ii.c」に依存するソースコード「gg.c」も、ライセンス種別が「ＧＰＬ」であると判別する。さらに、ライセンス調査部３１３は、このソースコード「gg.c」に依存する「ee.c」も、ライセンス種別が「ＧＰＬ」であると判別する。さらに、ライセンス調査部３１３は、このソースコード「ee.c」に依存する「main.c」も、ライセンス種別が「ＧＰＬ」であると判別する。よって、最終的にライセンス調査部３１３は、ソースコード「ii.c」に直接又は間接的に依存するソースコードとして「gg.c」、「ee.c」、「main.c」の３つのソースコードを判別する。そして、ライセンス調査部３１３は、ファイル名「gg.c」、ライセンス種別「ＧＰＬ」、伝播元ファイル名「ii.c」としたエントリと、ファイル名「ee.c」、ライセンス種別「ＧＰＬ」、伝播元ファイル名「ii.c」としたエントリと、ファイル名「main.c」、ライセンス種別「ＧＰＬ」、伝播元ファイル名「ii.c」としたエントリと、を調査結果格納テーブル３２２に登録する。
【００３６】
図５に戻り、結果出力部３１４は、ライセンス調査部３１３による調査結果として、調査結果格納テーブル３２２に格納されたデータを出力部３５０から出力させる。
【００３７】
アーカイブ作成部３１５は、調査結果格納テーブル３２２を参照して、ライセンスを調査したソースコードの中から公開が義務づけられているソースコードを特定し、特定したソースコードを、コンポーネント毎にまとめたアーカイブファイルを作成する（アーカイブする）。なお、コンポーネントとは、機能毎のまとまりを意味し、予めどのソースコードがどのコンポーネントに属するかが定義されている。なお、コンポーネントの単位をライブラリの単位と一致させてもよい。また、アーカイブ作成部３１５は、コンポーネント毎ではなく、特定した全てのソースコードを１つにまとめたアーカイブファイルを作成してもよく、アーカイブファイルを作成する単位は種々のものが採用可能である。
【００３８】
次に、本実施形態に係るライセンス管理装置３００の制御部３１０が実施するライセンス診断処理の動作について、図７のフローチャートを用いて説明する。
【００３９】
ライセンス診断処理は、ユーザからの操作により入力部３４０を介してライセンス診断処理の実行開始を表す旨の指示情報を受け取った場合、若しくは、インターネット４００を介して利用者端末１００からライセンス診断処理の実行開始を示す指示情報を通信部３３０が受信した場合に開始される。なお、この指示情報には、調査対象とするソフトウェアを特定する情報と、このソフトウェアを構成する複数のプログラムのソースコードのうち、実際にライセンスを調査するソースコードを指定するための調査対象指定情報とが含まれている。調査対象指定情報は、ライブラリ、ヘッダファイル、スクリプトファイルのようにソースコードの種類を指定するものでもよいし、ファイル名でライセンス調査対象のソースコードを直接指定するものでもよい。
【００４０】
まず、ライセンス調査部３１３は、調査結果格納テーブル３２２に格納されているデータ（前回の調査結果）が有ればこのデータを消去する（ステップＳ１０１）。
【００４１】
続いて、プログラム取得部３１１は、開発環境サーバ２００から、ライセンスの管理対象であるソフトウェアを構成する複数のプログラムのソースコードと、当該ソフトウェアのビルド情報とを取得する（ステップＳ１０２）。
【００４２】
次に、依存関係判別部３１２は、取得したビルド情報に基づいて、取得した複数のプログラム間の依存関係を判別する（ステップＳ１０３）。
【００４３】
続いて、ライセンス調査部３１３は、判別した依存関係を参照して、調査対象指定情報で指定されているソースコードとこのソースコードが直接又は間接的に依存するソースコードとを、調査対象モジュールとして特定する（ステップＳ１０４）。
【００４４】
例えば、ステップＳ１０３で図６に示すようなソースコード間の依存関係が判別され、調査対象指定情報としてソースコード「ee.c」が指定されている場合を考える。この場合、ライセンス調査部３１３は、調査対象モジュールとして、このソースコード「ee.c」と、このソースコード「ee.c」が直接又は間接的に依存するソースコード「ff.c」、「gg.c」、「hh.c」、「ii.c」、「jj.c」とを特定する。
【００４５】
図７に戻り、続いて、ライセンス調査部３１３は、判別した調査対象モジュールに含まれる未選択のソースコードの中から、ステップＳ１０３で判別した依存関係が最下位のソースコードを１つ選択する（ステップＳ１０５）。
【００４６】
そして、ライセンス調査部３１３は、ライセンス情報テーブル３２１のライセンス特定情報をキーワードに選択したソースコードを検索することにより、当該ソースコードのライセンスの有無及び、ライセンスを有する場合はその種類を判別し、判別結果を調査結果格納テーブル３２２に登録する（ステップＳ１０６）。
【００４７】
続いて、ライセンス調査部３１３は、ライセンス情報テーブル３２１の伝播フラグを参照して、ステップＳ１０６で判別したソースコードのライセンスが、このソースコードを利用する他のソースコードにも伝播するか否かを判別する（ステップＳ１０７）。伝播しないと判別した場合（ステップＳ１０７；Ｎｏ）、ステップＳ１０９に処理は移る。
【００４８】
一方、ソースコードのライセンスが伝播すると判別した場合（ステップＳ１０７；Ｙｅｓ）、ライセンス調査部３１３は、ステップＳ１０３で判別した依存関係に基づいて、そのソースコードが直接又は間接的に依存する他のソースコードを判別する。そして、ライセンス調査部３１３は、判別した他のソースコードに対しても、ステップＳ１０６で判別したものと同じライセンスを有すると判別し、判別結果を調査結果格納テーブル３２２に登録する（ステップＳ１０８）。
【００４９】
続いて、ライセンス調査部３１３は、調査対象モジュールに含まれる全てのソースコードをステップＳ１０５で選択したか否かを判別する（ステップＳ１０９）。未選択のソースコードがある場合（ステップＳ１０９；Ｎｏ）、ステップＳ１０５に処理は戻る。
【００５０】
全てのソースコードを選択した場合（ステップＳ１０９；Ｙｅｓ）、結果出力部３１４は、ライセンスの調査結果を出力する。具体的には、結果出力部３１４は、調査結果格納テーブル３２２に格納されているデータを出力部に出力（表示）させる（ステップＳ１１０）。なお、利用者端末１００からの指示によってライセンス診断処理が開始された場合は、結果出力部３１４は、調査結果格納テーブル３２２に格納されているデータをこの利用者端末１００に送信して、利用者端末１００の図示せぬ表示部に調査結果を出力させてもよい。
【００５１】
続いて、アーカイブ作成部３１５は、ライセンスを調査したソースコードのうち、公開が義務づけられているソースコードを特定する。例えば、ライセンス調査部３１３は、調査結果格納テーブル３２２を参照して、ライセンス情報テーブル３２１の公開フラグが「１」であるライセンス（例えばＧＰＬ）を有するソースコードを特定すればよい。そして、ライセンス調査部３１３は、特定した公開が義務づけられているソースコードをコンポーネント毎にまとめたアーカイブファイルを作成する（アーカイブする）（ステップＳ１１１）。以上でライセンス診断処理は終了する。
【００５２】
以上説明したように、本実施形態のライセンス管理装置３００は、ソフトウェアをビルドする際のログであるビルド情報に基づいて、ライセンス管理対象であるソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する。そして、ライセンス管理装置３００は、ライセンス特定情報を用いて予め定めたライセンスを有するソースコードを判別する。そして、判別したライセンスが伝播する場合、ライセンス管理装置３００は、判別した依存関係に基づいて、このソースコードに依存する他のソースコードを特定し、特定した他のソースコードに対しても同じライセンスを有すると判別する。従って、ライセンス管理装置３００は、ライセンス伝播も考慮して、プログラムのソースコードのライセンスを調査することができ、ライセンスを漏れなく管理することができる。
【００５３】
以上、本発明の実施形態について説明したが、本発明は本実施形態によって限定されるものではない。
【００５４】
例えば、上記実施形態では、調査対象モジュールに含まれるソースコードのライセンスを調査したが、ソフトウェアを構成する全てのプログラムのソースコードを対象に、ライセンスを調査してもよい。
【００５５】
例えば、ビルドを実行するビルドコマンドとは別に、ビルドコマンドをラッパーしたラッパーコマンドを開発環境サーバ２００に用意しておく。このラッパーコマンドは、通常のビルドとは異なり、ソフトウェア生成物を生成せずにビルドのログ（ビルド情報）の出力を目的とした擬似ビルドを実行するためのコマンドである。そして、ライセンス管理装置３００は、このラッパーコマンドを用いて擬似ビルドが実行された際のログ情報を開発環境サーバ２００から取得し、取得したログ情報を用いてソースコード間の依存関係の判別（図７のステップＳ１０３）をしてもよい。擬似ビルドでは、ソフトウェア生成部が生成されずに通常のビルドよりも短時間でビルド情報が出力されるため、ライセンス診断処理の実行速度を向上させることが可能となる。なお、擬似ビルド時に出力されるビルド情報を通常のビルド時で出力されるビルド情報よりも詳細な内容で出力させたり、ソースコード間の依存関係の判別が容易になる形式でビルド情報を出力させたりしてもよい。
【００５６】
例えば、ライセンス管理装置３００は、開発環境サーバ２００からビルド情報を取得したが、ライセンス管理装置３００にビルド又は擬似ビルドを実行できる環境を構築し、ライセンス管理装置３００でビルド又は擬似ビルドを実行してビルド情報を取得してもよい。
【００５７】
また、ライセンス診断処理の各ステップを複数の装置で分担して実行してもよい。例えば、依存関係の判別までのステップ（ステップＳ１０１〜Ｓ１０３）を利用者端末１００又は開発環境サーバ２００で実行して結果をライセンス管理装置３００に送信し、以降のステップＳ１０４〜Ｓ１１１をライセンス管理装置３００が実行してもよい。
【００５８】
また、上記実施形態では、ライセンス管理装置３００の依存関係判別部３１２が、ビルド情報を用いてソースコード間の依存関係を判別したが、他の情報を用いて依存関係を判別してもよい。例えば、依存関係判別部３１２は、ビルドによって生成されるソフトウェア生成物を開発環境サーバ２００から取得し、ソフトウェア生成物の内容を解析してソースコード間の依存関係を判別してもよい。また、依存関係判別部３１２は、依存関係のうち静的リンクはビルド情報を用いて判別し、動的リンクはソフトウェア生成物を用いて判別してもよい。
【００５９】
また、上記実施形態では、ライセンス診断処理において、調査対象モジュールに含まれる未選択のソースコードから、依存関係が下位のものを順に選択してライセンスを判別したが（図７のステップＳ１０５、Ｓ１０６）、ソースコードをどのような順で選択するかは任意であり、例えば、調査対象モジュールに含まれる未選択のソースコードから、ランダムに１つを選択してもよい。
【００６０】
例えば、上記実施形態では、結果出力部３１４は、ライセンスの調査結果として、調査結果格納テーブル３２２に格納されているデータを出力したが（図７のステップＳ１１０）、これ以外のデータを出力してもよい。例えば、結果出力部３１４は、ライセンスを調査したソースコードのうち、公開が義務づけられているラインセンスを有するものや、非推奨のライセンスを有するものが有る場合に、ソフトウェア全体にライセンスに関する問題があるとして、警告メッセージを出力部３５０に出力してもよい。
【００６１】
また、例えば、結果出力部３１４は、判別したライセンスの条文をインターネット４００を介して取得し、付加情報としてライセンス結果とともに出力させてもよい。また、結果出力部３１４は、予め定めた形式（ＰＤＦ形式、ＨＴＭＬ形式、ＸＭＬ形式等）で取得したライセンスの条文を１つにまとめたファイルを出力させてもよい。
【００６２】
また、上記実施形態では、ライセンス管理装置３００と利用者端末１００と開発環境サーバ２００とが、別々の機器により実現されている例が記載されているが、各装置の上述した機能が、１つのパーソナルコンピュータ、サーバ等の機器によって実現されてもよい。
【００６３】
例えば、本実施形態に係るライセンス管理装置３００の動作を規定する動作プログラムを既存のパーソナルコンピュータや情報端末機器等に適用することで、当該パーソナルコンピュータ等を本発明に係るライセンス管理装置３００として機能させることも可能である。
【００６４】
また、このようなプログラムの配布方法は任意であり、例えば、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto Optical Disk）、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネット４００などの通信ネットワークを介して配布してもよい。
【符号の説明】
【００６５】
１  ライセンス管理システム、１００  利用者端末、２００  開発環境サーバ、３００  ライセンス管理装置、４００  インターネット、３１０  制御部、３２０  記憶部、３２１  ライセンス情報テーブル、３２２  調査結果格納テーブル、３３０  通信部、３４０  入力部、３５０  出力部、３６０  バス、３１１  プログラム取得部、３１２  依存関係判別部、３１３  ライセンス調査部、３１４  結果出力部、３１５  アーカイブ作成部
【図１】
2018139054.tif 000003
【図２】
2018139054.tif 000004
【図３】
2018139054.tif 000005
【図４】
2018139054.tif 000006
【図５】
2018139054.tif 000007
【図６】
2018139054.tif 000008
【図７】
2018139054.tif 000009