【文献】
大須賀 俊憲 Toshinori Osuka,ソフトウェア統合検索を利用した再利用支援システム Reuse Support System based on Software Integral Se,レクチャーノート/ソフトウェア学33 ソフトウェア工学の基礎XIV,日本,株式会社近代科学社,2007年11月30日,pp.203-208
【文献】
中田 敦,OSSが実現する“呉越同舟”,日経コンピュータ no.807 NIKKEI COMPUTER,日本,日経BP社 Nikkei Business Publications,Inc.,2012年 4月26日,pp.28-33
【文献】
江端 俊昭 Toshiaki Ebata,組み込みLinuxエンジニアになるための基本学習帳,SoftwareDesign No.160,日本,(株)技術評論社,2004年 2月18日,pp.180〜190
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
本発明の実施の形態について、図面を参照して詳細に説明する。
【0010】
(実施形態)
図1は、本発明の実施形態に係るライセンス管理システム1の構成例を示す概略ブロック図である。
図1に示すように、ライセンス管理システム1は、ライセンスの管理対象であるソフトウェアが生成される情報処理装置100と、情報処理装置100により生成されたソフトウェアのライセンスを管理するライセンス管理装置200と、ライセンス管理装置200と有線または無線により通信可能に接続されたネットワーク300と、を備える。
【0011】
情報処理装置100は、パーソナルコンピュータ等の一般的な情報処理装置から構成される。情報処理装置100において生成されるソフトウェアは、複数のプログラムから構成される。複数のプログラムは、ユーザが独自に作成したプログラムと、インターネット等の外部から取得されたOSSと、を含む。ここで、OSSは、一般に公開され、誰でも、無償で、利用や再配布、改変することができ、また、派生ソフトウェアの作成や配布を行うことができるプログラムである。情報処理装置100において生成されたソフトウェアは、情報処理装置100において実行されるものであってもよいし、例えば、図示しない機器に組み込まれ、その機器を動作させるものであってもよい。
【0012】
ライセンス管理装置200は、情報処理装置100により生成されたソフトウェアのライセンスを管理する。具体的には、ライセンス管理装置200は、情報処理装置100により生成されたソフトウェアを構成する複数のプログラムに含まれるOSSのライセンスをチェックし、その結果を出力する。
【0013】
ネットワーク300は、例えば、インターネットから構成される。
【0014】
次に、本実施形態におけるライセンス管理装置200の構成について詳細に説明する。
【0015】
図2に本実施形態に係るライセンス管理装置200のハードウェア構成の一例を示す。
図2に示すように、ライセンス管理装置200は、制御部210と、記憶部220と、通信部230と、入力部240と、出力部250と、を備え、各部はバス260により接続されている。
【0016】
制御部210は、例えば、CPU(Central Processing Unit)、CPUが実行するプログラムを格納するROM(Read Only Memory)、CPUが生成したデータを一時的に格納するRAM(Random Access Memory)から構成され、ライセンス管理装置200全体の制御を行う。
【0017】
記憶部220は、ハードディスクドライブや、フラッシュメモリ、SSD(Solid State Drive)のような、書き込み可能な記憶装置から構成される。記憶部220は、ライセンス情報テーブル221と、OSS情報テーブル222と、非OSS情報テーブル223と、を記憶する。
【0018】
ライセンス情報テーブル221は、ライセンスを特定するための情報と、そのライセンスの種別とを表す情報を格納する。
【0019】
図3に、ライセンス情報テーブル221に格納されるデータの一例を示す。
図3に示すライセンス情報テーブル221には、ライセンス特定情報と、ライセンス種別と、を表す情報が対応付けて格納されている。ライセンス特定情報は、ライセンスを特定するための情報であって、例えば、そのライセンスを有するプログラムのソースコード中に一般的に記述されるキーワードである。ライセンス種別は、ライセンスの種類を表す。具体的なライセンスの種類は、例えば、GPL、BSD(Berkeley Software Distribution License)等である。ライセンス情報テーブル221に格納される各種データは、予め、例えばライセンス管理を担当するユーザにより、入力され、ライセンス情報テーブル221に格納される。
【0020】
ここで、GPLは、あるOSSを利用したソフトウェア全体に対して、そのソースコードの公開等、そのOSSのライセンスの影響が及ぶ、すなわち、そのOSSのライセンスの影響が伝播するライセンスである。例えば、あるOSSが、GPLを有する場合、そのOSSを改変することにより作成されたプログラム、そのOSSが組み込まれたプログラム、そのOSSへのリンクを含むプログラム等のプログラムも、GPLを有することとなる。従って、それらのプログラムも、そのソースコードを公開することが義務付けられる。
【0021】
これに対し、BSDライセンスは、BSDライセンスを有するOSSの利用、再配布にあたり、所定の条件を満たせばよく、制限が少ないライセンスである。BSDライセンスを有するOSSを改変したプログラムは、そのソースコードを非公開にすることができる。
【0022】
従って、本実施形態に係るライセンス管理装置200は、GPLは伝播性があり、BSDライセンスは伝播性がないとして、ライセンス管理対象であるソフトウェアを構成する複数のプログラムにおいて、GPLが伝播する範囲を特定する。
【0023】
OSS情報テーブル222は、ライセンス管理対象であるソフトウェアを構成する複数のプログラムに含まれるOSSに関する情報を格納する。
【0024】
図4に、OSS情報テーブル222に格納されるデータの一例を示す。
図4に示すOSS情報テーブル222には、OSS毎に、OSSのファイル名と、OSSのバージョン情報と、OSSのライセンス種別と、OSSのURI(Uniform Resource Identifier)と、OSSの利用実績と、を表す情報が対応付けて格納されている。OSSのURIは、具体的には、そのOSSがインターネットのウェブ上で公開されている場合、そのウェブページのアドレスである。また、OSSの利用実績は、具体的には、そのOSSを利用している会社、そのOSSを利用している機器、その機器の型番等を表す情報である。OSS情報テーブル222に格納される各種データは、後述する処理により、インターネットを介して収集され、OSS情報テーブル222に格納される。
【0025】
非OSS情報テーブル223は、ライセンス管理対象であるソフトウェアを構成する複数のプログラムに含まれる、OSS以外のプログラム(非OSS)に関する情報を格納する。
【0026】
図5に、非OSS情報テーブル223に格納されるデータの一例を示す。
図5に示す非OSS情報テーブル223には、非OSS毎に、非OSSのファイル名と、ライセンス伝播の有無と、伝播元ライセンス種別と、伝播元ファイル名と、を表す情報が対応付けて格納されている。ライセンス伝播の有無は、その非OSSが、ライセンス伝播の影響を受けるか否かを表す。
図5において、ライセンス伝播の有無が"Y"である場合、その非OSSはライセンス伝播の影響を受ける。また、ライセンス伝播の有無が"N"である場合、その非OSSはライセンス伝播の影響を受けない。伝播元ライセンス種別は、その非OSSがライセンス伝播の影響を受ける場合、その非OSSに影響を与える原因であるOSSのライセンス種別である。また、伝播元ファイル名は、その非OSSがライセンス伝播の影響を受ける場合、その非OSSに影響を与える原因であるOSSのファイル名である。非OSS情報テーブル223に格納される各種データは、後述する処理において生成され、非OSS情報テーブル223に格納される。
【0027】
通信部230は、情報処理装置100及びネットワーク300と、無線または有線による通信を行うためのインターフェースから構成される。
【0028】
入力部240は、ボタン、タッチパネル、キーボード等の入力装置から構成される。入力部240は、ユーザからの操作入力を受け付け、受け付けた操作入力に対応する操作入力信号を制御部210に出力する。
【0029】
出力部250は、CRT(Cathode Ray Tube)や液晶ディスプレイ等の表示装置から構成され、制御部210から供給される文字や画像等のデータを表示する。
【0030】
次に、ライセンス管理装置200の制御部210の機能について説明する。
図6は、制御部210の機能構成の一例を示す概略ブロック図である。
図6に示すように、制御部210は、プログラム取得部211、依存関係取得部212、特定部213、情報収集部214、判定部215、結果出力部216として機能する。
【0031】
プログラム取得部211は、情報処理装置100から、情報処理装置100において生成されたソフトウェアを構成する複数のプログラムを取得する。また、プログラム取得部211は、そのソフトウェアに利用されている、少なくとも1つのOSSから構成されるOSSアーカイブを、情報処理装置100から取得する。
【0032】
依存関係取得部212は、プログラム取得部211により取得された複数のプログラム間の依存関係を取得する。プログラム間の依存関係は、例えば、あるプログラムが、他のプログラムをリンクするという形式で利用している関係である。リンクには、動的リンクや静的リンクが含まれる。具体的には、依存関係取得部212は、プログラム取得部211により取得された複数のプログラムに含まれる"makefile"の参照、または、ソフトウェアに実装されている依存関係を抽出するためのコマンドの使用等、一般的に知られている手法により、依存関係を取得する。
【0033】
図7は、依存関係取得部212により取得された依存関係の一例を模式的に表す図である。
図7に示す依存関係は、プログラム取得部211により取得された複数のプログラムそれぞれを表すノードと、依存関係があるプログラムを表すノード間を結ぶリンクと、から構成される木構造で表される。例えば、プログラム"xxx.c"が、"abc.c"と"xxxx.c"との2つのプログラムをリンクすることにより利用している場合、プログラム"xxx.c"を表すノードは、"abc.c"と"xxxx.c"を表すノードそれぞれと、リンクにより結ばれる。
【0034】
特定部213は、プログラム取得部211により取得された複数のプログラムのうちから、所定のライセンスを有するプログラムを特定する。具体的には、特定部213は、ライセンス情報テーブル221を参照し、複数のプログラムのうちから、ライセンス情報テーブル221に格納されたライセンス特定情報を含むプログラムを特定する。例えば、特定部213は、プログラム取得部211により取得された複数のプログラムのソースコード毎に、ライセンス特定情報として、"GNU General Public License"というキーワードが含まれているか否か判定する。そして、特定部213は、そのキーワードが含まれるプログラムを、ライセンス種別が"GPL"であるOSSとして、特定する。そして、特定部213は、OSSとして特定したプログラムのファイル名を、OSS情報テーブル222に格納する。
【0035】
また、特定部213は、ソフトウェアを構成する複数のプログラムのうちからOSSを特定する際に、プログラムのテキストファイルであるソースコードの他、プログラムのバイナリ形式のファイルについても、所定のライセンスを有するプログラムか否かを判定してもよい。
【0036】
なお、特定部213は、プログラム取得部211により取得された複数のプログラムのうち、プログラム取得部211により取得されたOSSアーカイブにすでに格納されているプログラムについては、ライセンス情報テーブル221を参照して、OSSか否か判定しなくてもよい。すなわち、特定部213は、そのプログラムがOSSか否かの判定を行わずに、そのプログラムのファイル名をOSS情報テーブル222に格納してもよい。
【0037】
また、特定部213は、プログラム取得部211により取得された複数のプログラムのうちから、所定のライセンスを有するプログラムを特定しなかったプログラムを、非OSSとして特定する。そして、特定部213は、非OSSとして特定したプログラムのファイル名を、非OSS情報テーブル223に格納する。
【0038】
情報収集部214は、特定部213により特定されたプログラムに関連する各種情報を、ネットワーク300を介して収集する。具体的には、情報収集部214は、特定部213により特定されたプログラム毎に、そのプログラムのファイル名、またはそのプログラムのソースコードと一致、または部分一致するプログラムをキーワードとして、インターネット上で検索する。そして、情報収集部214は、検索されたプログラムのURI、及び、その検索されたプログラムと関連付けて公開されている利用実績を収集し、OSS情報テーブル222に格納する。
【0039】
判定部215は、特定部213により非OSSとして特定されたプログラムについて、依存関係取得部212により取得された依存関係に基づいて、所定のライセンスを有するプログラムと依存関係があるか否かを判定する。具体的には、判定部215は、非OSS情報テーブル223に格納されている非OSS毎に、依存関係取得部212により取得された依存関係を辿って、OSS情報テーブル222に格納されているOSSのうち、例えばライセンス種別が"GPL"であるOSSと依存関係があるか否かを判定する。例えば、非OSS情報テーブル223に格納されているファイル名"MThij.c"について、判定部215は、
図7に示す依存関係から、"MThij.c"を表すノードの下位のノードの中に、OSS情報テーブル222に格納されている、ライセンス種別が"GPL"の"abc.c"を表すノードが存在することを特定する。そして、判定部215は、非OSS情報テーブル223に、"MThij.c"と対応付けて、ライセンス伝播の有無に"Y"、伝播元ライセンス種別に"GPL"、伝播元ファイル名に"abc.c"を格納する。
【0040】
結果出力部216は、OSS情報テーブル222及び非OSS情報テーブル223に格納されたデータを、出力部250に出力する。
【0041】
次に、本実施形態に係るライセンス管理装置200の動作について説明する。
【0042】
ライセンス管理装置200の制御部210が実行するソフトウェア診断処理について説明する。ソフトウェア診断処理は、例えば制御部210のCPUがROMに記憶されたプログラムを読み込むことにより実行される。
【0043】
図8は、ライセンス管理装置200の制御部210が実行するソフトウェア診断処理のフローチャートの一例である。ソフトウェア診断処理は、例えば、ユーザにより、入力部240を介して、ソフトウェア診断処理の実行開始を表す旨の操作入力を受け取ったことを契機として、開始する。
【0044】
まず、プログラム取得部211は、情報処理装置100から、ライセンスの管理対象であるソフトウェアを構成する複数のプログラムと、OSSアーカイブと、を取得する(ステップS101)。
【0045】
次に、依存関係取得部212は、ステップS101において取得された複数のプログラム間の依存関係を表す依存関係情報を取得する(ステップS102)。
【0046】
次に、特定部213は、ステップS101において取得された複数のプログラムのうち、ステップS101において取得されたOSSアーカイブに格納されていないプログラムについて、ライセンス情報テーブル221を参照して、OSSであるプログラムを特定する(ステップS103)。また、特定部213は、ステップS101において取得された複数のプログラムのうち、ステップS101において取得されたOSSアーカイブに格納されているプログラムと同じプログラムを、OSSとして特定する。そして、特定部213は、OSSとして特定したプログラムのファイル名を、OSS情報テーブル222に格納する。
【0047】
次に、情報収集部214は、OSS情報テーブル222に格納されている各OSSについて、インターネットを介して、そのOSSのURIや利用実績を収集し、OSS情報テーブル222に格納する(ステップS104)。
【0048】
次に、特定部213は、ステップS101において取得された複数のプログラムのうち、ステップS103においてOSSとして特定されなかったプログラムを非OSSとして特定する(ステップS105)。そして、特定部213は、非OSSとして特定したプログラムのファイル名を、非OSS情報テーブル223に格納する。
【0049】
次に、判定部215は、非OSS情報テーブル223に格納されている各非OSSについて、ステップS102において取得された依存関係情報に基づいて、ライセンス伝播の有無を判定する(ステップS106)。ライセンス伝播が有ると判定した場合、判定部215は、その非OSSのファイル名と対応付けて、ライセンス伝播が有る旨と、その伝播元のライセンス種別と、伝播元のOSSのファイル名とを表す情報を、非OSS情報テーブル223に格納する。
【0050】
次に、結果出力部216は、OSS情報テーブル222に格納されている各種情報、及び非OSS情報テーブル223に格納されている各種情報を、出力部250に出力表示する(ステップS107)。例えば、結果出力部216は、OSS情報テーブル222及び非OSS情報テーブル223に格納された各種情報を、それぞれ
図4及び
図5に示すような表形式で出力する。この際、結果出力部216は、予め設定された条件に合致する情報を、強調表示してもよい。例えば、結果出力部216は、非OSS情報テーブル223に格納されたライセンス伝播の有無が"Y"である非OSSの各種情報を強調表示してもよい。そして、ソフトウェア診断処理は終了する。
【0051】
以上説明したように、本実施形態のライセンス管理装置200は、ライセンス管理対象であるソフトウェアを構成する複数のプログラムについて、OSSと非OSSのうちいずれか特定する。そして、ライセンス管理装置200は、特定された非OSSについて、依存関係があるOSSによるライセンス伝播が有るか否かを判定する。従って、ライセンス管理装置200は、ライセンスの影響が伝播するOSSと依存関係があるプログラムを特定でき、ライセンスを漏れなく管理することができる。
【0052】
以上、本発明の実施形態について説明したが、本発明は本実施形態によって限定されるものではない。
【0053】
例えば、上記の実施形態において、ライセンス管理装置200は、情報処理装置100から、ライセンスの管理対象であるソフトウェアを構成する複数のプログラムと、OSSアーカイブと、を取得するが、ライセンスの管理対象であるソフトウェア等の取得方法はこれに限られない。例えば、ライセンスの管理対象であるソフトウェア等のデータをDVD(Digital Versatile Disk)等のメディアに記録し、そのDVDをライセンス管理装置200に読み取らせることで、そのソフトウェア等のデータを取得してもよい。
【0054】
また、上記の実施形態では、ライセンス管理装置200と情報処理装置100とが、別々の機器により実現されている例が記載されているが、その両方の装置の上述した機能が、1つのパーソナルコンピュータ等の機器によって実現されてもよい。また、情報処理装置100の機能のうち、ライセンスの管理対象であるソフトウェアの開発環境と、ライセンス管理装置200の機能とが、同一の機器により実現され、その機器が、OSSが組み込まれた機器と通信可能に接続されるように構成されてもよい。これらの場合において、ライセンス管理装置200の機能を実現するソフトウェアは、必要な場合に、情報処理装置100の機能が組み込まれた機器にインストールされ、不要になった場合に、アンインストールされてもよい。
【0055】
また、上記の実施形態では、情報処理装置100において、ライセンスの管理対象であるソフトウェアの開発環境としての機能と、前記ソフトウェアの実行環境としての機能との両方が、1つの機器により実現されている例が記載されているが、その両方の機能が、通信可能に接続されている別々の機器によって実現されてもよい。
【0056】
なお、上記実施の形態において、ライセンス管理装置200が実行するプログラムは、フレキシブルディスク、CD−ROM(Compact Disk Read-Only Memory)、DVD、MO(Magneto-Optical Disk)等のコンピュータ読み取り可能な記録媒体に格納されて配布されてもよい。そして、そのプログラムがパーソナルコンピュータ等の情報処理装置にインストールされることにより、上述の処理を実行する装置が構成されてもよい。
【0057】
また、プログラムは、インターネット等の通信ネットワーク上の所定のサーバ装置が有するディスク装置等に格納されてもよい。そして、プログラムは、例えば、搬送波に重畳されて、ダウンロードされてもよい。
【0058】
また、上述の機能を、OS(Operating System)が分担して実現する場合またはOSとアプリケーションとの協働により実現する場合、OSの機能を実現する部分以外のプログラムのみが、記録媒体に格納されて配布されてもよく、また、ダウンロードされてもよい。
【0059】
本発明は、本発明の広義の精神と範囲に逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。