(57)【要約】【課題】プログラム開発の効率化を図ること。【解決手段】情報表示装置２０２は、プログラムリスト１００への第１の命令文の入力を検出する検出処理と、第１の命令文の入力が検出された場合に、第１の命令文に対応する第１のライセンスを検索する第１の検索処理と、第１のライセンスを識別する情報と第１の命令文の出現位置とを対応付けた第１のライセンスに関する出現情報を格納する格納処理と、第１のライセンスに競合する第２のライセンスを検索する第２の検索処理と、第２のライセンスに関する出現情報を検索する第３の検索処理と、第１のライセンスを識別する情報と、前記第２のライセンスに関する出現情報とを、表示画面に表示する表示処理と、を実行する。【選択図】図１
2015225513.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納するメモリと、前記プログラムを実行するプロセッサと、を有する情報表示装置であって、
前記プロセッサは、
プログラムリストへの第１の命令文の入力を検出する検出処理と、
前記検出処理によって前記第１の命令文の入力が検出された場合に、命令文群の各命令文と当該命令文に設定されたライセンスとを対応付けたライセンス情報から、前記第１の命令文に対応する第１のライセンスを検索する第１の検索処理と、
前記ライセンスを識別する情報と前記命令文の出現位置とを対応付けて格納可能な前記ライセンスに関する出現情報に、前記第１の検索処理によって検索された前記第１のライセンスを識別する情報と前記第１の命令文の出現位置とを対応付けた前記第１のライセンスに関する出現情報を格納する格納処理と、
前記ライセンスと当該ライセンスに競合する競合ライセンスとを対応付けた競合ライセンス情報から、前記第１のライセンスに競合する第２のライセンスを検索する第２の検索処理と、
前記ライセンスに関する出現情報から、前記第２の検索処理によって検索された第２のライセンスに関する出現情報を検索する第３の検索処理と、
前記第１のライセンスを識別する情報と、前記第３の検索処理によって検索された前記第２のライセンスに関する出現情報とを、表示画面に表示する表示処理と、
を実行することを特徴とする情報表示装置。
【請求項２】
前記表示処理では、前記プロセッサは、前記第１の命令文および前記第１のライセンスを識別する情報と、前記第２の命令文および前記第２のライセンスに関する出現情報とを、前記表示画面に表示することを特徴とする請求項１に記載の情報表示装置。
【請求項３】
前記プロセッサは、
前記ライセンスに関する出現情報に基づいて、前記第１のライセンスの出現頻度と前記第２のライセンスの出現頻度を算出する算出処理を実行し、
前記表示処理では、前記プロセッサは、前記算出処理によって算出された前記第１のライセンスの出現頻度および前記第１のライセンスを識別する情報と、前記算出処理によって算出された前記第２のライセンスの出現頻度および前記第２のライセンスに関する出現情報とを、前記表示画面に表示することを特徴とする請求項１に記載の情報表示装置。
【請求項４】
前記プロセッサは、
前記命令文と当該命令文と置換可能な置換命令文とを対応付けた置換情報から、前記第１の命令文と置換可能な第３の命令文を検索する第４の検索処理を実行し、
前記表示処理では、前記プロセッサは、前記第４の検索処理によって検索された第３の命令文および前記第１のライセンスを識別する情報と、前記第２のライセンスに関する出現情報とを、前記表示画面に表示することを特徴とする請求項１に記載の情報表示装置。
【請求項５】
前記表示処理では、前記プロセッサは、前記第１のライセンスを識別する情報と、前記第２のライセンスに関する出現情報とを、前記第１の命令文の前記プログラムリストへの入力、前記プログラムリストの保存、または、前記プログラムリストの再オープンのいずれかのタイミングで、前記表示画面に表示することを特徴とする請求項１に記載の情報表示装置。
【請求項６】
前記プロセッサは、
前記ライセンスがライセンスポリシーに違反するか否かを示すライセンスポリシー情報を参照して、前記第１のライセンスがライセンスポリシーに違反するか否かを判断する判断処理を実行し、
前記表示処理では、前記プロセッサは、前記判断処理によって前記第１のライセンスがライセンスポリシーに違反すると判断された場合、前記第１の命令文と前記第１のライセンスとを対応付けたポリシー違反情報を表示することを特徴とする請求項１に記載の情報表示装置。
【請求項７】
前記表示処理では、前記プロセッサは、前記ポリシー違反情報を、前記第１の命令文の前記プログラムリストへの入力、前記プログラムリストの保存、または、前記プログラムリストの再オープンのいずれかのタイミングで、前記表示画面に表示することを特徴とする請求項６に記載の情報表示装置。
【請求項８】
プログラムを格納するメモリと、前記プログラムを実行するプロセッサと、を有する情報表示装置であって、
前記プロセッサは、
プログラムリストへの第１の命令文の入力を検出する検出処理と、
前記検出処理によって前記第１の命令文の入力が検出された場合に、命令文群の各命令文と当該命令文に設定されたライセンスとを対応付けたライセンス情報から、前記第１の命令文に対応する第１のライセンスを検索する第１の検索処理と、
前記ライセンスがライセンスポリシーに違反するか否かを示すライセンスポリシー情報を参照して、前記第１のライセンスがライセンスポリシーに違反するか否かを判断する判断処理と、
前記判断処理によって前記第１のライセンスがライセンスポリシーに違反すると判断された場合、前記第１の命令文と前記第１のライセンスとを対応付けたポリシー違反情報を表示する表示処理と、
を実行することを特徴とする情報表示装置。
【請求項９】
表示画面に情報を表示する情報表示方法であって、
メモリに格納されたプログラムを実行するプロセッサが、
プログラムリストへの第１の命令文の入力を検出する検出処理と、
前記検出処理によって前記第１の命令文の入力が検出された場合に、命令文群の各命令文と当該命令文に設定されたライセンスとを対応付けたライセンス情報から、前記第１の命令文に対応する第１のライセンスを検索する第１の検索処理と、
前記ライセンスを識別する情報と前記命令文の出現位置とを対応付けて格納可能な前記ライセンスに関する出現情報に、前記第１の検索処理によって検索された前記第１のライセンスを識別する情報と前記第１の命令文の出現位置とを対応付けた前記第１のライセンスに関する出現情報を格納する格納処理と、
前記ライセンスと当該ライセンスに競合する競合ライセンスとを対応付けた競合ライセンス情報から、前記第１のライセンスに競合する第２のライセンスを検索する第２の検索処理と、
前記ライセンスに関する出現情報から、前記第２の検索処理によって検索された第２のライセンスに関する出現情報を検索する第３の検索処理と、
前記第１のライセンスを識別する情報と、前記第３の検索処理によって検索された前記第２のライセンスに関する出現情報とを、表示画面に表示する表示処理と、
を実行することを特徴とする情報表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を表示する情報表示装置、および情報表示方法に関する。
【背景技術】
【０００２】
背景技術として、プログラムのライセンスチェックシステムがある（下記特許文献１を参照）。当該ライセンスチェックシステムは、プログラム開発を行う組織において、プログラムのビルド前にライセンスを持つプログラムのライセンスをチェックし、監視する。また、組織内にプログラムを監視する端末が用意され、開発用端末にはライセンスチェックプログラムがインストールされる。例えば、組織外から入手したライセンス付きプログラムをユーザに渡す前に、ライセンスチェックシステムは、当該プログラムがライセンス付きかチェックする。
【０００３】
ライセンスチェックシステムは、ライセンス付きであるときは、そのライセンスについてライセンスポリシーが作成済みかチェックする。ライセンスポリシーが作成されていないライセンスについては、ポリシー作成者がライセンスポリシーを作成する。ライセンスチェックシステムは、ユーザがそのプログラムをビルドする際、開発用端末内にあるライセンスチェックプログラムによってライセンスが違反していないかをチェックし、その結果を表示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１９１８８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のライセンスチェックシステムは、ライセンスチェックを行いながらライセンス付きのプログラムリストの修正を行うことができない。特許文献１のライセンスチェックシステムは、すでにプログラムがある程度できあがった状態となるビルド前の段階でライセンスのチェックを行うシステムである。ライセンス付きのプログラムリストに対して修正を加える場合、ライセンス付きプログラムリストの該当箇所と関連するプログラムリストにも修正を加えることが必要となる。したがって、プログラム開発に手戻りが生じてしまう。
【０００６】
また、特許文献１のライセンスチェックシステムは、プログラムリストがライセンス付きであるか否かを判定するライセンスチェックシステムであり、各ライセンス間のライセンスの競合を判定するものではない。したがって、ライセンスポリシーに違反していないライセンス同士のライセンス競合を見逃してしまう可能性がある。ライセンス競合が見逃された場合、ライセンス競合を回避するよう修正が必要となり、プログラム開発に手戻りが生じてしまう。
【０００７】
本発明は、プログラム開発の効率化を図ることを目的とする。
【課題を解決するための手段】
【０００８】
本願において開示される発明の一側面となる情報表示装置、および情報表示方法は、プログラムリストへの第１の命令文の入力を検出する検出処理と、前記検出処理によって前記第１の命令文の入力が検出された場合に、命令文群の各命令文と当該命令文に設定されたライセンスとを対応付けたライセンス情報から、前記第１の命令文に対応する第１のライセンスを検索する第１の検索処理と、前記ライセンスを識別する情報と前記命令文の出現位置とを対応付けて格納可能な前記ライセンスに関する出現情報に、前記第１の検索処理によって検索された前記第１のライセンスを識別する情報と前記第１の命令文の出現位置とを対応付けた前記第１のライセンスに関する出現情報を格納する格納処理と、前記ライセンスと当該ライセンスに競合する競合ライセンスとを対応付けた競合ライセンス情報から、前記第１のライセンスに競合する第２のライセンスを検索する第２の検索処理と、前記ライセンスに関する出現情報から、前記第２の検索処理によって検索された第２のライセンスに関する出現情報を検索する第３の検索処理と、前記第１のライセンスを識別する情報と、前記第３の検索処理によって検索された前記第２のライセンスに関する出現情報とを、表示画面に表示する表示処理と、を実行する。
【発明の効果】
【０００９】
本発明の代表的な実施の形態によれば、プログラム開発の効率化を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】本実施例にかかる情報表示装置による情報表示例を示す説明図である。
【図２】本実施例にかかる情報表示システムのシステム構成例を示す説明図である。
【図３】端末およびサーバのハードウェア構成例を示すブロック図である。
【図４】本実施例にかかる情報表示すシステムの機能的構成例を示すブロック図である。
【図５】図４に示した情報表示部の機能的構成例を示すブロック図である。
【図６】命令文定義ファイルの一例を示す説明図である。
【図７】ライセンス情報格納テーブルの一例を示す説明図である。
【図８】出現箇所情報格納テーブルの一例を示す説明図である。
【図９】競合ライセンス情報格納テーブルの一例を示す説明図である。
【図１０】置換可能命令文情報格納テーブルの一例を示す説明図である。
【図１１】ポップアップ情報格納テーブルの一例を示す説明図である。
【図１２】ライセンスポリシー違反情報の表示例を示す説明図である。
【図１３】ポップアップ情報の表示例１を示す説明図である。
【図１４】ポップアップ情報の表示例２を示す説明図である。
【図１５】ポップアップ情報の表示例３を示す説明図である。
【図１６】情報表示装置による情報表示処理の一例を示すフローチャートである。
【図１７】図１６に示した表示情報生成処理（ステップＳ１６０３）の一例を示すフローチャート１である。
【図１８】図１６に示した表示情報生成処理（ステップＳ１６０３）の一例を示すフローチャート２である。
【発明を実施するための形態】
【００１１】
インターネット等のオープンネットワークには、オープンソースソフトウェアと呼ばれるプログラムリスト付きのソフトウェアが公開されており、オープンソースソフトウェアのプログラムリストを、自由に開発者が開発するプログラムリストに組み込むことが可能である。オープンソースソフトウェアにはライセンスが指定されていることがあり、オープンソースソフトウェアを開発者が開発するプログラムリストに組み込むことで、オープンソースソフトウェアのライセンスによって開発に制約が生じることがある。
【００１２】
そこで、ライセンス競合やライセンスポリシー違反など、開発者が意図しないライセンスの制約を回避するため、本実施例にかかる情報表示装置は、プログラムリスト上の競合ライセンスの出現箇所やプログラムリスト上の命令文についてのライセンスポリシー違反を表示する。これにより、開発者がプログラムリストの作成または編集中に、競合ライセンスやライセンスポリシー違反に関係する命令文を修正することができる。
【００１３】
＜情報表示例＞
図１は、本実施例にかかる情報表示装置による情報表示例を示す説明図である。（Ａ）は、作成または編集中におけるプログラムリストの表示画面１０１の一例である。表示画面１０１は、開発者が関数で表現される命令文『ｆｕｎｃＣ１』までプログラムリスト１００に入力した状態の画面である。
【００１４】
（Ｂ）は、（Ａ）において、プログラムリスト１００の作成または編集中、命令文『ｆｕｎｃＣ１』が入力された場合に表示されるポリシー違反情報を示す表示画面１０２の一例である。表示画面１０２は、表示画面１０１に重畳表示される。表示画面１０２は、プログラムリスト１００に命令文『ｆｕｎｃＣ１』の入力があった場合に表示される。表示画面１０２には、対象命令文である命令文『ｆｕｎｃＣ１』がライセンスポリシーに違反することを示す情報が表示される。対象命令文とは、ライセンスポリシー違反や競合の判定対象となる命令文である。ライセンスポリシーとは、あらかじめ規定された開発要件であり、命令文に設定されたライセンスを、開発者が使用可能であるか否かを示す情報である。
【００１５】
たとえば、表示画面１０２では、命令文『ｆｕｎｃＣ１』に付与されているライセンスが、『ライセンス類型：Ｔ２』に属する『ライセンス：Ｌ３』であり、『ライセンス：Ｌ３』は、ライセンスポリシーに違反することを示す。情報表示装置は、表示画面１０２を、命令文『ｆｕｎｃＣ１』の入力時に表示させてもよく、プログラムリスト１００の保存時またはプログラムリスト１００が保存されたファイルの再オープン時に表示させてもよい。
【００１６】
（Ｃ）は、ポップアップ情報を示す表示画面１０３の一例である。表示画面１０３は、（Ａ）の表示画面１０１に表示されるプログラムリスト１００を保存する場合に表示される画面である。表示画面１０３の上段には、プログラムリスト１００に入力された対象命令文である命令文『ｆｕｎｃＣ１』に付与されているライセンスが、『ライセンス類型：Ｔ２』に属する『ライセンス：Ｌ３』であり、『ライセンス：Ｌ３』の出現率は５０％であることを示す。ライセンス出現率とは、ファイルＤＢ（Ｄａｔａｂａｓｅ）に保存されているプログラムリストのファイル群に出現するライセンスのうち、対象命令文に設定されたライセンスが出現する確率である。
【００１７】
表示画面１０３の中段には、競合命令文、競合ライセンス、競合ライセンス類型、競合ライセンス出現率、競合ライセンス出現箇所が表示される。「競合」とは、同じ著作物（本例ではプログラム）に共存させてはならない複数のライセンスが同じ著作物に共存しうる状態である。競合命令文とは、対象命令文に設定されたライセンスと競合するライセンス（競合ライセンス）が設定された命令文である。競合命令文は、同じプログラムリスト１００に対象命令文『ｆｕｎｃＣ１』よりも先に入力された命令文『ｆｕｎｃＡ１』でもよく、他のプログラムリストに入力された命令文でもよい。すなわち、「競合」は同一ファイルだけではなく、異なるファイル間でも生じる。競合ライセンス類型とは、競合ライセンスの種類を示す情報である。
【００１８】
競合ライセンス出現率とは、ファイルＤＢ（Ｄａｔａｂａｓｅ）に保存されているプログラムリストのファイル群に出現するライセンスのうち、競合命令文に設定された競合ライセンスが出現する確率である。競合ライセンス出現箇所とは、競合ライセンスが設定された競合命令文の出現位置を示す情報である。たとえば、競合ライセンスが設定された競合命令文が入力されたプログラムリストが保存されるファイルのファイル名、当該ファイルでの競合命令文が出現する先頭行からの行数、当該ファイルでの競合命令文が出現する行の先頭文字からのバイト数により特定される。
【００１９】
また、表示画面１０３の下段には、置換可能命令文が表示される。置換可能命令文とは、対象命令文と同等の機能を有し、かつ、対象命令文に設定されたライセンスとは競合しないライセンスが設定された命令文である。
【００２０】
なお、情報表示装置は、表示画面１０３を、プログラムリスト１００をファイルに保存する場合だけではなく、対象命令文の入力時や、当該ファイルの再オープン時に表示させてもよい。
【００２１】
このように、プログラムリスト１００の作成または編集中に表示画面１０２、１０３を表示することができるため、開発者は、ライセンスポリシーを遵守したり、他のライセンスと競合したりしないように、プログラムリストを作成または編集することができ、プログラムリストの作成または編集の手戻り発生を抑制することができる。
【００２２】
＜システム構成例＞
図２は、本実施例にかかる情報表示システムのシステム構成例を示す説明図である。情報表示システム２００は、端末２０１とサーバとなる情報表示装置２０２とがＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークに接続されたシステムである。端末２０１は、開発者が操作するコンピュータであり、プログラムリストの作成や編集が可能である。情報表示装置２０２は、図１の（Ｂ），（Ｃ）に示した表示画面１０２，１０３に関する情報を生成して端末２０１に送信し、端末２０１のブラウザに表示画面１０２，１０３を表示させるコンピュータである。なお、図２では、クライアントサーバ型の情報表示システム２００について説明したが、端末２０１において図１の（Ｂ），（Ｃ）に示した表示画面１０２，１０３に関する情報を生成することとしてもよい。
【００２３】
＜ハードウェア構成例＞
図３は、端末２０１および情報表示装置２０２（以下、総称してコンピュータ）のハードウェア構成例を示すブロック図である。コンピュータ３００は、プロセッサ３０１と、記憶デバイス３０２と、入力デバイス３０３と、出力デバイス３０４と、通信インターフェース（通信ＩＦ３０５）と、を有する。プロセッサ３０１、記憶デバイス３０２、入力デバイス３０３、出力デバイス３０４、および通信ＩＦ３０５は、バス３０６により接続される。プロセッサ３０１は、コンピュータ３００を制御する。記憶デバイス３０２は、プロセッサ３０１の作業エリアとなる。また、記憶デバイス３０２は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス３０２としては、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリがある。入力デバイス３０３は、データを入力する。入力デバイス３０３としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス３０４は、データを出力する。出力デバイス３０４としては、たとえば、ディスプレイ、プリンタがある。通信ＩＦ３０５は、ネットワーク２０３と接続し、データを送受信する。
【００２４】
＜機能的構成例＞
図４は、本実施例にかかる情報表示システム２００の機能的構成例を示すブロック図である。端末２０１は、取得部４１１と編集部４１２と保存部４１３とを有する。また、情報表示装置２０２は、情報表示部４２０とファイルＤＢ４２１とを有する。取得部４１１、編集部４１２、保存部４１３、および情報表示部４２０は、具体的には、たとえば、図３に示した記憶デバイス３０２に記憶されたプログラムをプロセッサ３０１に実行させることにより、その機能を実現する。また、ファイルＤＢ４２１は、記憶デバイス３０２によりその機能を実現する。
【００２５】
取得部４１１は、ファイルＤＢ４２１からプログラムリストが保存されているファイルを取得する。また、新規作成の場合、取得部４１１は、プログラムリストが未入力状態のファイルを取得する。取得されたファイルは、表示画面１０１として表示される。編集部４１２は、取得部４１１によって取得されたプログラムリストに、キーボードなどの入力デバイス３０３の操作により文字入力する。保存部４１３は、取得部４１１によって取得されたプログラムリストをファイルとしてファイルＤＢ４２１に保存する。情報表示部４２０は、取得部４１１によってプログラムリストが取得された場合に、図１の表示画面１０２，１０３に関する情報を生成して、表示先である端末２０１や情報表示装置２０２の出力デバイス３０４に出力する。出力デバイス３０４では、表示画面１０２，１０３が表示される。
【００２６】
図５は、図４に示した情報表示部４２０の機能的構成例を示すブロック図である。情報表示部４２０は、命令文定義ファイル５０１と、ライセンス情報格納テーブル５０２と、出現箇所情報格納テーブル５０３と、競合ライセンス情報格納テーブル５０４と、置換可能命令文情報格納テーブル５０５と、ポップアップ情報格納テーブル５０６とを有する。以後の説明では「テーブル」形式で説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等について単に「情報」と呼ぶことがある。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【００２７】
また、情報表示部４２０は、検出部５１０と、第１の検索部５１１と、格納部５１２と、第２の検索部５１３と、第３の検索部５１４と、算出部５１５と、第４の検索部５１６と、判断部５１７と、表示制御部５１８と、を有する。
【００２８】
検出部５１０は、プログラムリストへの第１の命令文の入力を検出する。検出元のプログラムリストは、編集部４１２により作成または編集中のファイルに格納されているプログラムリストである。第１の命令文とは、取得されたプログラムリストに入力された命令文であり、上述した対象命令文となる。検出部５１０は、第１の命令文の入力を、命令文定義ファイル５０１を参照することにより検出する。
【００２９】
図６は、命令文定義ファイル５０１の一例を示す説明図である。命令文定義ファイル５０１は、プログラムリストに入力された命令文を検出するための情報である。命令文定義ファイル５０１には、たとえば、命令文を検出するための情報として正規表現が規定される。したがって、検出部５１０は、プログラムリストに入力された文字列が正規表現に該当する場合に、入力された文字列を命令文として検出する。なお、命令文定義ファイル５０１には、正規表現に限らず、命令文が規定されてもよい。また、検出部５１０は、入力された命令文の削除も検出する。
【００３０】
図５に戻り、第１の検索部５１１は、検出部５１０によって第１の命令文の入力が検出された場合に、命令文群の各命令文と当該命令文に設定されたライセンスとを対応付けたライセンス情報から、第１の命令文に対応する第１のライセンスを検索する。検索された第１のライセンスと当該第１のライセンスに対応する第１の命令文は、ポップアップ情報格納テーブル５０６に格納される。また、ライセンス情報には、たとえば、ライセンス情報格納テーブル５０２が該当する。
【００３１】
図７は、ライセンス情報格納テーブル５０２の一例を示す説明図である。ライセンス情報格納テーブル５０２は、命令文７０１とライセンス７０２とライセンス類型７０３とを対応付けたテーブルである。ライセンス７０２には、ライセンスを識別する情報としてライセンス名が格納される。ライセンス類型７０３には、ライセンス７０２の種類が格納される。たとえば、ＧＰＬ（Ｇｅｎｅｒａｌ  Ｐｕｂｌｉｃ  Ｌｉｃｅｎｓｅ）はライセンス類型７０３であり、ＧＰＬｖ２やＧＰＬｖ３は、ライセンス類型：ＧＰＬに属するライセンス７０２である。ライセンス情報格納テーブル５０２は、どの命令文７０１にどのライセンス類型７０３のどのライセンス７０２が設定されたかを示す情報である。たとえば、命令文７０１がＳａである場合、対応するライセンス７０２はＬ１であり、ライセンスＬ１のライセンス類型７０３はＴ１である。ライセンス情報格納テーブル５０２は、あらかじめ用意されるテーブルであり、各エントリは、追加、変更、削除可能である。
【００３２】
図５に戻り、格納部５１２は、ライセンスを識別する情報と命令文の出現位置とを対応付けて格納可能なライセンスに関する出現情報に、第１の検索部５１１によって検索された第１のライセンスを識別する情報と第１の命令文の出現位置とを対応付けた第１のライセンスに関する出現情報を格納する。ライセンスに関する出現情報には、たとえば、出現箇所情報格納テーブル５０３が該当する。
【００３３】
図８は、出現箇所情報格納テーブル５０３の一例を示す説明図である。出現箇所情報格納テーブル５０３は、ライセンスの出現箇所を示す情報であり、ライセンス８０１とファイル名８０２と行数８０３とオフセット８０４とを対応付けた情報である。ライセンス８０１には、ライセンスを識別する情報としてライセンス名が格納される。ファイル名８０２、行数８０３およびオフセット８０４は、ライセンス８０１が設定された命令文の出現位置を示す。ファイル名８０２は、ライセンス８０１が設定された命令文が入力されたプログラムリストのファイルの名称である。行数８０３は、ファイル名８０２により特定されるファイルにおいて、ライセンス８０１が設定された命令文が出現する先頭行からの行数である。オフセット８０４は、ファイル名８０２により特定されるファイルにおいて、ライセンス８０１が設定された命令文が出現する行の先頭からのバイト数である。
【００３４】
出現箇所情報格納テーブル５０３の初期状態は空である。格納部５１２は、第１の検索部５１１によって検索された第１のライセンスのライセンス名と、第１の命令文が入力されたプログラムリストのファイル名、行数およびオフセットである出現位置とを、出現箇所情報格納テーブル５０３の新規エントリとして格納する。なお、検出部５１０によって命令文の削除が検出された場合、格納部５１２は、削除された命令文について格納されたエントリを出現箇所情報格納テーブル５０３から削除する。
【００３５】
図５に戻り、第２の検索部５１３は、ライセンスと当該ライセンスに競合する競合ライセンスとを対応付けた競合ライセンス情報から、第１のライセンスに競合する第２のライセンスを検索する。競合ライセンス情報には、たとえば、競合ライセンス情報格納テーブル５０４が該当する。
【００３６】
図９は、競合ライセンス情報格納テーブル５０４の一例を示す説明図である。競合ライセンス情報格納テーブル５０４は、ライセンス９０１と競合ライセンス９０２とライセンスポリシー違反９０３とを対応付けた情報である。競合ライセンス情報格納テーブル５０４では、ライセンス９０１が、競合ライセンス９０２と競合することを示す。また、ライセンスポリシー違反９０３は、ライセンス９０１がライセンスポリシー違反であるか否かを示す。
【００３７】
競合ライセンス情報格納テーブル５０４は、どのライセンスがどのライセンスと競合関係にあり、また、ライセンスポリシーに違反しているか遵守しているかを示す情報である。たとえば、第１の検索部５１１によって検索された第１のライセンスがＬ１である場合、競合ライセンスはＬ４であり、ライセンスＬ１はライセンスポリシーを遵守する。したがって、第２の検索部５１３は、第２のライセンスとしてライセンスＬ４を検索する。なお、競合ライセンス情報格納テーブル５０４は、あらかじめ用意されるテーブルであり、各エントリは、追加、変更、削除可能である。
【００３８】
第３の検索部５１４は、ライセンスに関する出現情報から、第２の検索部５１３によって検索された第２のライセンスに関する出現情報を検索する。具体的には、たとえば、第３の検索部５１４は、出現箇所情報格納テーブル５０３から、ライセンス８０１に第２のライセンスのライセンス名があるエントリを検索する。検索されたエントリである第２のライセンスに関する出現情報は、ポップアップ情報格納テーブル５０６に格納される。
【００３９】
算出部５１５は、ライセンスに関する出現情報に基づいて、第１のライセンスの出現頻度と第２のライセンスの出現頻度を算出する。ライセンスに関する出現情報には、上述したように、出現箇所情報格納テーブル５０３が該当する。出現頻度とは、ファイルＤＢ４２１のファイル群において、ライセンス８０１がどれくらい出現するかを示す情報である。出現頻度としては、出現確率や出現数がある。本実施例では、出現確率を用いて説明する。なお、出現数とは、あるライセンスについての出現箇所情報格納テーブル５０３のエントリ数である。また、出現確率は、あるライセンスについての出現数を、出現箇所情報格納テーブル５０３の総エントリ数で割った値である。
【００４０】
第４の検索部５１６は、命令文と当該命令文と置換可能な置換命令文とを対応付けた置換情報から、第１の命令文と置換可能な第３の命令文を検索する。置換情報には、たとえば、置換可能命令文情報格納テーブル５０５が該当する。
【００４１】
図１０は、置換可能命令文情報格納テーブル５０５の一例を示す説明図である。置換可能命令文情報格納テーブル５０５は、命令文１００１と置換可能命令文１００２とを対応付けたテーブルである。置換可能命令文１００２とは、命令文１００１と同等の命令を実行する文であり、命令文１００１と置換可能である。なお、置換可能命令文情報格納テーブル５０５は、あらかじめ用意されるテーブルであり、各エントリは、追加、変更、削除可能である。第４の検索部５１６によって検索された第３の命令文は、置換可能命令文１００２としてポップアップ情報格納テーブル５０６に格納される。
【００４２】
図５に戻り、判断部５１７は、ライセンスがライセンスポリシーに違反するか否かを示すライセンスポリシー情報を参照して、第１のライセンスがライセンスポリシーに違反するか否かを判断する。ライセンスポリシー情報には、たとえば、図９に示した競合ライセンス情報格納テーブル５０４が該当する。たとえば、ライセンスＬ１の場合は、競合ライセンス情報格納テーブル５０４においてライセンスポリシー違反９０３が『Ｎｏ』であるため、判断部５１７は、ライセンスＬ１はライセンスポリシーに違反していないと判断する。一方、ライセンスＬ２の場合は、競合ライセンス情報格納テーブル５０４においてライセンスポリシー違反９０３が『Ｙｅｓ』であるため、判断部５１７は、ライセンスＬ２はライセンスポリシーに違反すると判断する。
【００４３】
表示制御部５１８は、判断部５１７によって第１のライセンスがライセンスポリシーに違反すると判断された場合、第１の命令文と第１のライセンスとを対応付けたライセンスポリシー違反情報を表示画面に表示する。表示制御部５１８は、ライセンスポリシー違反情報を情報表示装置２０２の出力デバイス３０４の表示画面に表示してもよく、端末２０１にポップアップ情報を送信して、端末２０１の出力デバイス３０４の表示画面に表示させてもよい。ライセンスポリシー違反情報における第１の命令文は、たとえば、図１の表示画面１０２の『対象命令文：ｆｕｎｃＣ１』に相当する。また、ポリシー違反情報における第１のライセンスは、たとえば、図１の表示画面１０２の『ライセンス：Ｌ３』に相当する。
【００４４】
また、表示制御部５１８は、ライセンスポリシー違反情報を、第１の命令文のプログラムリストへの入力、プログラムリストの保存、または、プログラムリストの再オープンのいずれかのタイミングで、表示画面に表示することとしてもよい。第１の命令文のプログラムリストへの入力タイミングの場合、開発者は、これまでに入力した命令文の中から、今回入力した命令文についてポリシー違反であることを確認することができる。また、命令文の入力によりポリシー違反情報が表示されるため、開発者は、ポリシー違反情報を表示させるための操作を別途する必要はなく、プログラムリストの作成または編集をおこなうことができる。
【００４５】
また、プログラムリストの保存タイミングの場合、開発者は、保存直前にプログラムリストに含まれるポリシー違反を確認することができる。また、プログラムリストの再オープンのタイミングの場合、開発者は、編集開始時にプログラムリストに含まれるポリシー違反を確認することができる。
【００４６】
また、表示制御部５１８は、第１のライセンスを識別する情報と、第３の検索部５１４によって検索された第２のライセンスに関する出現情報とを、ポップアップ情報として表示画面に表示する。第１のライセンスを識別する情報は、第１のライセンスのライセンス名であり、たとえば、図１の表示画面１０３の『ライセンス：Ｌ３』に相当する。第２のライセンスに関する出現情報は、第１のライセンスと競合する第２のライセンス（競合ライセンス）の出現位置を示す情報（ファイル名、行数、オフセット）であり、たとえば、図１の表示画面１０３の『競合ライセンス出現箇所：ファイルＦａ（行数ＮＬａ）［バイト数ｏｓ１］』に相当する。
【００４７】
また、表示制御部５１８は、ポップアップ情報を情報表示装置２０２の出力デバイス３０４の表示画面に表示してもよく、端末２０１にポップアップ情報を送信して、端末２０１の出力デバイス３０４の表示画面に表示させてもよい。
【００４８】
また、表示制御部５１８は、第１の命令文および第１のライセンスを識別する情報と、第２の命令文および第２のライセンスに関する出現情報とを、ポップアップ情報として表示画面に表示することとしてもよい。第１の命令文は、たとえば、図１の表示画面１０３の『対象命令文：ｆｕｎｃＣ１』に相当する。第２の命令文は、競合命令文であり、たとえば、図１の表示画面１０３の『競合命令文：ｆｕｎｃＡ１』に相当する。
【００４９】
また、表示制御部５１８は、算出部５１５によって算出された第１のライセンスの出現頻度および第１のライセンスを識別する情報と、算出部５１５によって算出された第２のライセンスの出現頻度および第２のライセンスに関する出現情報とを、ポップアップ情報として表示画面に表示することとしてもよい。第１のライセンスの出現頻度は、対象命令文に設定されたライセンスの出現頻度であり、たとえば、図１の表示画面１０３の『ライセンス出現率：５０％』に相当する。第２のライセンスの出現頻度は、競合命令文に設定された競合ライセンスの出現頻度であり、たとえば、図１の表示画面１０３の『競合ライセンス出現率：５０％』に相当する。
【００５０】
ライセンス出現率または競合ライセンス出現率をポップアップ情報の一部とすることで、開発者はプログラムリストにおいてライセンスの競合における修正箇所に対して、出現箇所のより少ない箇所を修正するためのヒントを得ることができ、手戻りの少ない修正が可能になる。
【００５１】
また、表示制御部５１８は、第４の検索部５１６によって検索された第３の命令文および第１のライセンスを識別する情報と、第２のライセンスに関する出現情報とを、ポップアップ情報として表示画面に表示することとしてもよい。第３の命令文は、置換可能命令文であり、たとえば、図１の表示画面１０３の『置換可能命令文：ｆｕｎｃＣ２』に相当する。
【００５２】
また、表示制御部５１８は、上述したポップアップ情報を、第１の命令文のプログラムリストへの入力、プログラムリストの保存、または、プログラムリストの再オープンのいずれかのタイミングで、表示画面に表示することとしてもよい。第１の命令文のプログラムリストへの入力タイミングの場合、開発者は、これまでに入力した命令文の中から、今回入力した命令文についてのポップアップ情報を確認することができる。また、命令文の入力によりポップアップ情報が表示されるため、開発者は、ポップアップ情報を表示させるための操作を別途する必要はなく、プログラムリストの作成または編集をおこなうことができる。
【００５３】
また、プログラムリストの保存タイミングの場合、開発者は、保存直前にプログラムリストに含まれるポップアップ情報を確認することができる。また、プログラムリストの再オープンのタイミングの場合、開発者は、編集開始時にプログラムリストに含まれるポップアップ情報を確認することができる。
【００５４】
また、表示制御部５１８は、ポップアップ情報格納テーブル５０６のエントリを読み出すことにより、上述したポップアップ情報を表示画面に表示する。
【００５５】
図１１は、ポップアップ情報格納テーブル５０６の一例を示す説明図である。ポップアップ情報格納テーブル５０６は、命令文１１０１とライセンス１１０２とライセンス類型１１０３と競合ライセンス１１０４と競合出現ファイル１１０５と競合出現行数１１０６と競合出現オフセット１１０７と置換可能命令文１１０８とを有し、ポップアップ情報ごとにエントリを構成する。
【００５６】
命令文１１０１には、第１の検索部５１１によって検索された第１のライセンスに対応する第１の命令文が格納される。ライセンス１１０２には、第１の検索部５１１によって検索された第１のライセンスのライセンス名が格納される。ライセンス類型１１０３には、ライセンス情報格納テーブル５０２において第１の命令文および第１のライセンスに対応するライセンス類型が格納される。
【００５７】
競合ライセンス１１０４、競合出現ファイル１１０５、競合出現行数１１０６、および競合出現オフセット１１０７には、第３の検索部５１４によって検索された第２のライセンスに関する出現情報である競合ライセンス名、競合ファイル名、当該競合ファイル名における行数、当該行数におけるオフセットが格納される。
【００５８】
置換可能命令文１１０８には、第４の検索部５１６によって検索された第１の命令文と置換可能な第３の命令文が格納される。
【００５９】
＜情報表示例＞
図１２は、ライセンスポリシー違反情報の表示例を示す説明図である。図１２において、表示画面１０２は、プログラムリスト１００を作成または編集する表示画面１０１の保存ボタン１２０１を押下した場合に表示される画面である。そして、表示画面１０２の保存ボタン１２０２が押下されると、表示画面１０１に表示されているプログラムリスト１００がファイルＤＢ４２１に保存される。キャンセルボタン１２０３が押下されると、表示画面１０２は消去される。
【００６０】
また、表示画面１０２によるライセンスポリシー違反の警告を行った後に、編集部４１２は、キー入力を一段階元に戻して、開発者がライセンスポリシーに違反するライセンス付きの文字列を入力不可能にしてもよい。
【００６１】
図１３は、ポップアップ情報の表示例１を示す説明図である。ポップアップ情報が表示されている表示画面１０３は、プログラムリスト１００を作成または編集する表示画面１０１において命令文『ｆｕｎｃＣ１』が入力された場合に表示される画面である。符号１３０１はカーソルである。表示制御部５１８は、競合ライセンス出現箇所にリンク１３０２を生成する。これにより、表示画面１０３において、競合ライセンス出現箇所である『競合ライセンス出現箇所：ファイルＦａ（行数ＮＬａ）［バイト数ｏｓ１］』には、当該競合ライセンス出現箇所へのリンク１３０２が張られる。
【００６２】
図１４は、ポップアップ情報の表示例２を示す説明図である。図１４は、図１３の表示例１の次状態である。図１４は、カーソル１４０１によりリンク１３０２が指定された状態を示す。
【００６３】
図１５は、ポップアップ情報の表示例３を示す説明図である。図１５は、図１４の表示例２の次状態である。図１５は、カーソル１４０１によりリンク１３０２が指定されたことにより、表示制御部５１８は、リンク１３０２のリンク先となる競合ライセンス出現箇所をファイルＤＢ４２１から特定する。そして、表示制御部５１８は、表示画面１０１のカーソル１３０１を、命令文『ｆｕｎｃＣ１』の末尾位置から競合ライセンス出現箇所である競合命令文『ｆｕｎｃＡ』の先頭位置に移動させる。これにより、開発者は、どの命令文が競合命令文であるかを容易に特定することができ、修正作業の効率化を図ることができる。
【００６４】
＜情報表示処理例＞
図１６は、情報表示装置２０２による情報表示処理の一例を示すフローチャートである。まず、情報表示装置２０２は、編集部４１２によりファイルＤＢ４２１からファイルを指定してオープンする（ステップＳ１６０１）。つぎに、情報表示装置２０２は、検出部５１０により命令文の入力が検出されたか否かを判断する（ステップＳ１６０２）。命令文の入力が検出されない場合（ステップＳ１６０２：Ｎｏ）、ステップＳ１６０６に移行する。
【００６５】
一方、命令文の入力が検出された場合（ステップＳ１６０２：Ｙｅｓ）、情報表示装置２０２は、表示情報生成処理を実行する（ステップＳ１６０３）表示情報生成処理（ステップＳ１６０３）は、ライセンスポリシー違反情報およびポップアップ情報を生成する処理である。表示情報生成処理（ステップＳ１６０３）の詳細については図１７および図１８で説明する。
【００６６】
表示情報生成処理（ステップＳ１６０３）のあと、情報表示装置２０２は、表示制御部５１８によりポップアップ情報を表示する（ステップＳ１６０５）。このあと、情報表示装置２０２は、ファイルＤＢ４２１への保存指示の有無を判断し（ステップＳ１６０６）、保存指示がない場合（ステップＳ１６０６：Ｎｏ）、ステップＳ１６０２に移行する。一方、保存指示がある場合（ステップＳ１６０６：Ｙｅｓ）、情報表示装置２０２は、保存部４１３によりファイルをファイルＤＢ４２１に保存する（ステップＳ１６０７）。
【００６７】
＜表示情報生成処理例＞
図１７は、図１６に示した表示情報生成処理（ステップＳ１６０３）の一例を示すフローチャート１である。まず、情報表示装置２０２は、第１の検索部５１１により、ステップＳ１６０２での検出命令文をライセンス情報格納テーブル５０２から検索する（ステップＳ１７０１）。つぎに、情報表示装置２０２は、ステップＳ１７０１により検索できたか否かを判断する（ステップＳ１７０２）。すなわち、情報表示装置２０２は、検出命令文でヒットしたエントリがライセンス情報格納テーブル５０２にあるか否かを判断する。
【００６８】
検出できなかった場合（ステップＳ１７０２：Ｎｏ）、表示情報生成処理（ステップＳ１６０３）を終了し、ステップＳ１６０６に移行して保存指示待ちとなる。一方、検索できた場合（ステップＳ１７０２：Ｙｅｓ）、情報表示装置２０２は、格納部５１２により、検出命令文が存在するファイルのファイル名、当該ファイルでの検出命令文が出現する先頭行からの行数、検出命令文が出現する行の先頭からのオフセットを特定し、出現箇所情報格納テーブル５０３に格納する（ステップＳ１７０３）。また、情報表示装置２０２は、第１の検索部５１１により、検出命令文に対応するライセンス名をライセンス情報格納テーブル５０２から特定し、特定したライセンス名と検出命令文とをポップアップ情報格納テーブル５０６に格納する（ステップＳ１７０４）。
【００６９】
また、情報表示装置２０２は、第１の検索部５１１により、検出命令文およびライセンス名の組に対応するライセンス類型をライセンス情報格納テーブル５０２から特定し、特定したライセンス類型を当該組に関連付けてポップアップ情報格納テーブル５０６に格納する（ステップＳ１７０５）。
【００７０】
このあと、情報表示装置２０２は、判断部５１７により、競合ライセンス情報格納テーブル５０４を参照して、検出命令文がライセンスポリシーに違反するか否かを判断する（ステップＳ１７０６）。ライセンスポリシー違反である場合（ステップＳ１７０６：Ｙｅｓ）、情報表示装置２０２は、表示制御部５１８により、図１の（Ｂ）に示したように、ライセンスポリシー違反情報（表示画面１０２）を表示する（ステップＳ１７０７）。このあと、図１８のステップＳ１８０１に移行する。一方、ライセンスポリシーに違反していない場合（ステップＳ１７０６：Ｎｏ）、図１８のステップＳ１８０１に移行する。
【００７１】
図１８は、図１６に示した表示情報生成処理（ステップＳ１６０３）の一例を示すフローチャート２である。まず、情報表示装置２０２は、第２の検索部５１３により、検出命令文に対応する競合ライセンスのライセンス名を競合ライセンス情報格納テーブル５０４から検索する（ステップＳ１８０１）。つぎに、情報表示装置２０２は、ステップＳ１８０１により検索できたか否かを判断する（ステップＳ１８０２）。すなわち、情報表示装置２０２は、検出命令文でヒットしたエントリが競合ライセンス情報格納テーブル５０４にあるか否かを判断する。
【００７２】
検索できなかった場合（ステップＳ１８０２：Ｎｏ）、ステップＳ１８０７に移行する。一方、検索できた場合（ステップＳ１８０２：Ｙｅｓ）、情報表示装置２０２は、第２の検索部５１３により、競合ライセンス名をポップアップ情報格納テーブル５０６に格納する（ステップＳ１８０３）。
【００７３】
つぎに、情報表示装置２０２は、第３の検索部５１４により、競合ライセンスの出現箇所を、出現箇所情報格納テーブル５０３から検索する（ステップＳ１８０４）。情報表示装置２０２は、ステップＳ１８０４により検索できたか否かを判断する（ステップＳ１８０５）。すなわち、情報表示装置２０２は、競合ライセンス名でヒットしたエントリが出現箇所情報格納テーブル５０３にあるか否かを判断する。
【００７４】
検索できなかった場合（ステップＳ１８０５：Ｎｏ）、ステップＳ１８０７に移行する。一方、検索できた場合（ステップＳ１８０５：Ｙｅｓ）、情報表示装置２０２は、検索できたエントリを、ポップアップ情報格納テーブル５０６の競合ライセンスの出現箇所（競合ライセンス１１０４、競合出現ファイル１１０５、競合出現行数１１０６、競合出現オフセット１１０７）に格納する（ステップＳ１８０６）。
【００７５】
そして、情報表示装置２０２は、第４の検索部５１６により、検出命令文と置換可能な命令文を置換可能命令文情報格納テーブル５０５から検索する（ステップＳ１８０７）。検出できなかった場合（ステップＳ１８０８：Ｎｏ）、表示情報生成処理（ステップＳ１６０３）を終了し、ステップＳ１６０４に移行する。一方、検索できた場合（ステップＳ１８０８：Ｙｅｓ）、情報表示装置２０２は、検索された置換可能命令文をポップアップ情報格納テーブル５０６に格納する（ステップＳ１８０９）。そして、表示情報生成処理（ステップＳ１６０３）を終了して、ステップＳ１６０４に移行する。
【００７６】
このように、本実施例によれば、開発者は、プログラムリストの作成または編集において命令文を入力するだけで（別途操作する必要なく）、当該命令文についての競合ライセンスの存在やライセンスポリシー違反を確認することができる。したがって、プログラム開発の手戻りの抑制を図ることができる。
【００７７】
また、入力が検出された検出命令文と、当該検出命令文に設定されたライセンスに競合する競合ライセンスが設定された競合命令文とを表示することにより、開発者は、検出命令文がどの命令文とライセンス競合してしまうかを、命令文を入力するだけで（別途操作する必要なく）、確認することができる。
【００７８】
ライセンス出現率または競合ライセンス出現率をポップアップ情報の一部とすることで、開発者はプログラムリストにおいてライセンスの競合における修正箇所に対して、出現箇所のより少ない箇所を修正するためのヒントを得ることができ、手戻りの少ない修正が可能になる。
【００７９】
また、ライセンス競合する場合に検出命令文について置換可能命令文を表示することにより、ライセンス競合を回避しつつプログラムリストの作成または編集をおこなうことができる。また、検出命令文に設定されたライセンスのライセンスポリシー違反情報を表示することにより、ライセンスポリシー違反を回避したプログラムリストを作成または編集することができる。
【００８０】
このように、本実施例によれば、プログラムリストの作成または編集において命令文を入力するだけで、別途操作する必要なく、ポップアップ情報やライセンスポリシー違反情報を表示することができる。したがって、プログラムリストの作成や編集を効率的におこなうことができ、手戻りの抑制を図ることができる。
【００８１】
なお、上述した実施例では、ポップアップ情報（表示画面１０３）およびライセンスポリシー違反情報（表示画面１０２）を表示する例について説明したが、いずれか一方を表示することとしてもよい。
【００８２】
また、情報表示装置２０２は、置換可能命令文を表示する場合、競合ライセンスと、置換可能命令文に設定されたライセンスとが競合するか否かを、競合ライセンス情報格納テーブル５０４を参照して判断することとしてもよい。具体的には、たとえば、図１（Ｃ）において、情報表示装置２０２は、競合ライセンスＬ１と置換可能命令文ｆｕｎｃＣ２に設定されたライセンスとが競合するか否かを判断する。競合しない場合は、情報表示装置２０２は、置換可能命令文ｆｕｎｃＣ２を表示画面１０３に表示し、競合する場合は、他に競合しない置換可能命令文があれば当該置換可能命令文を表示画面１０３に表示し、他に競合しない置換可能命令文がなければ表示画面１０３に表示しない。これにより、情報表示装置２０２は、代用できる置換可能命令文のみを開発者に提示することができ、修正作業の効率化を図ることができる。
【００８３】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【００８４】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【００８５】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【００８６】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【００８７】
１００  プログラムリスト
２００  情報表示システム
２０１  端末
２０２  情報表示装置
４１１  取得部
４１２  編集部
４１３  保存部
４２０  情報表示部
４２１  ファイルＤＢ
５０１  命令文定義ファイル
５０２  ライセンス情報格納テーブル
５０３  出現箇所情報格納テーブル
５０４  競合ライセンス情報格納テーブル
５０５  置換可能命令文情報格納テーブル
５０６  ポップアップ情報格納テーブル
５１０  検出部
５１１  第１の検索部
５１２  格納部
５１３  第２の検索部
５１４  第３の検索部
５１５  算出部
５１６  第４の検索部
５１７  判断部
５１８  表示制御部
【図１】
2015225513.tif 000003
【図２】
2015225513.tif 000004
【図３】
2015225513.tif 000005
【図４】
2015225513.tif 000006
【図５】
2015225513.tif 000007
【図６】
2015225513.tif 000008
【図７】
2015225513.tif 000009
【図８】
2015225513.tif 000010
【図９】
2015225513.tif 000011
【図１０】
2015225513.tif 000012
【図１１】
2015225513.tif 000013
【図１２】
2015225513.tif 000014
【図１３】
2015225513.tif 000015
【図１４】
2015225513.tif 000016
【図１５】
2015225513.tif 000017
【図１６】
2015225513.tif 000018
【図１７】
2015225513.tif 000019
【図１８】
2015225513.tif 000020