(57)【要約】【課題】簡易な構成でライセンス管理を実現する。【解決手段】複数のマシン１〜３それぞれで実行され得るソフトウェアのライセンスを管理するライセンス管理システムにおいて、第１のマシン２が、ライセンスの管理を行うモードにモード遷移する。次に第１のマシン２が、複数のマシン１〜３それぞれのソフトウェアの実行の有無を示す実行情報５を収集する。次に第２のマシン３が、ソフトウェアの実行許否を、第１のマシン２に問い合わせる。次に第１のマシン２が、ライセンスの管理を行うモードにおいて、第２のマシン３からの問い合わせに応じ、ソフトウェアを同時に実行できるマシン数を示すライセンス情報４と実行情報５とに基づいて、第２のマシン３によるソフトウェアの実行の許否を判断する。そして第２のマシン３が、第１のマシン２よりソフトウェアの実行を許可すると判断された場合、ソフトウェアを実行する。【選択図】図１
2017004044.tif 000002
【特許請求の範囲】
【請求項１】
複数のマシンそれぞれで実行され得るソフトウェアのライセンスを管理するライセンス管理プログラムであって、
前記複数のマシンに含まれる第１のマシンに、
ライセンスの管理を行うモードにモード遷移し、
前記複数のマシンそれぞれの前記ソフトウェアの実行の有無を示す実行情報を収集し、
前記ライセンスの管理を行うモードにおいて、前記複数のマシンに含まれる第２のマシンからの、前記ソフトウェアの実行許否の問い合わせに応じ、前記ソフトウェアを同時に実行できるマシン数を示すライセンス情報と前記実行情報とに基づいて、前記第２のマシンによる前記ソフトウェアの実行の許否を判断する、
処理を実行させるライセンス管理プログラム。
【請求項２】
前記実行情報の収集では、前記ソフトウェアを実行しているマシン間のピアツーピア通信によって、前記実行情報を収集する、
請求項１記載のライセンス管理プログラム。
【請求項３】
前記ライセンスの管理を行うモードへのモード遷移では、
前記ソフトウェアのライセンスキーから代表機器の識別情報を取得し、
前記識別情報を有する前記代表機器に接続できるか否かを判断し、
前記代表機器に接続できたときに、前記ライセンスの管理を行うモードにモード遷移する、
請求項１または２記載のライセンス管理プログラム。
【請求項４】
前記ライセンスの管理を行うモードへのモード遷移では、前記ソフトウェアの起動時に、前記複数のマシンのいずれも前記ライセンスの管理を行うモードでないときに、前記ライセンスの管理を行うモードにモード遷移する、
請求項１乃至３のいずれかに記載のライセンス管理プログラム。
【請求項５】
前記第１のマシンに、さらに、
前記ライセンスの管理を行うモードへのモード遷移後に前記ソフトウェアの実行を停止する場合、前記ライセンスの管理を行うモードを解除し、前記複数のマシンのうちの前記ソフトウェアを実行中のマシンに、前記ライセンスの管理を行うモードへのモード遷移依頼を送信する、
処理を実行させる請求項１乃至４のいずれかに記載のライセンス管理プログラム。
【請求項６】
複数のマシンそれぞれで実行され得るソフトウェアのライセンスを管理するライセンス管理方法であって、
前記複数のマシンに含まれる第１のマシンが、ライセンスの管理を行うモードにモード遷移し、
前記第１のマシンが、前記複数のマシンそれぞれの前記ソフトウェアの実行の有無を示す実行情報を収集し、
前記複数のマシンに含まれる、前記第１のマシン以外の第２のマシンが、前記ソフトウェアの実行許否を、前記第１のマシンに問い合わせ、
前記第１のマシンが、前記ライセンスの管理を行うモードにおいて、前記第２のマシンからの前記問い合わせに応じ、前記ソフトウェアを同時に実行できるマシン数を示すライセンス情報と前記実行情報とに基づいて、前記第２のマシンによる前記ソフトウェアの実行の許否を判断し、
前記第２のマシンが、前記第１のマシンより前記ソフトウェアの実行を許可すると判断された場合、前記ソフトウェアを実行する、
ライセンス管理方法。
【請求項７】
複数のマシンそれぞれで実行され得るソフトウェアのライセンスを管理するライセンス管理システムであって、
ライセンスの管理を行うモードにモード遷移し、前記複数のマシンそれぞれの前記ソフトウェアの実行の有無を示す実行情報を収集し、前記ライセンスの管理を行うモードにおいて、前記ソフトウェアの実行許否の問い合わせに応じ、前記ソフトウェアを同時に実行できるマシン数を示すライセンス情報と前記実行情報とに基づいて、前記ソフトウェアの実行の許否を判断する、複数のマシンに含まれる第１のマシンと、
前記ソフトウェアの実行許否を前記第１のマシンに問い合わせ、前記第１のマシンにより前記ソフトウェアの実行を許可すると判断された場合、前記ソフトウェアを実行する、前記複数のマシンに含まれる第２のマシンと、
を有するライセンス管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライセンス管理プログラム、ライセンス管理方法、およびライセンス管理システムに関する。
【背景技術】
【０００２】
複数のマシンを有するコンピュータシステムでは、そのコンピュータシステムに予め与えられたライセンスの範囲内で、各マシンにソフトウェアを実行させることができる。ソフトウェアのライセンスの中には、フローティングライセンスと呼ばれるものがある。フローティングライセンスでは、ソフトウェアを同時に実行するマシン数が制限される。
【０００３】
フローティングライセンスによりソフトウェアの同時実行マシン数を管理する場合、ソフトウェアを使用しようとするマシンは、ソフトウェアの起動時に、契約したライセンス数を超えない状態の使用となるかを確認する。ライセンスの同時使用数の確認のために、例えば、ライセンス管理サーバが設置される。この場合、ソフトウェアの起動指示を受けたマシンは、ソフトウェアの使用開始前に、ソフトウェアの実行の許否をライセンス管理サーバに確認する。
【０００４】
ライセンス管理技術としては、例えば、一定のライセンス数の範囲内において各デバイス間で柔軟に所定プログラムを実行できるようにするライセンス数管理装置が考えられている。また、ある装置に故障等が発生した場合でも、代替動作させる装置でデータやアプリケーションやライセンス情報等の情報を迅速かつ簡単に利用することを可能とする技術も考えられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−３０１１８８号公報
【特許文献２】特開２００９−２７８２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
フローティングライセンスは、ライセンス数より多くのマシンにソフトウェアをインストールしておき適宜利用できる点で便利であるが、その一方でライセンス管理サーバの増設を強いられる。ライセンス管理サーバの用途は、同時実行マシン数が契約ライセンス数を上回らないように、各マシンへのライセンスの割り当てを管理することのみであり、ライセンス対象のソフトウェアの実行自体には、ライセンス管理サーバは用いられない。そのためライセンス管理サーバは、ソフトウェアを利用するための利便性の向上には寄与していない。すなわち、ライセンス管理サーバを用いずにフローティングライセンスを管理できれば、ソフトウェア利用の利便性を低下させずに、システム規模を縮小できる。
【０００７】
１つの側面では、本件は、簡易な構成でライセンス管理を実現することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、複数のマシンそれぞれで実行され得るソフトウェアのライセンスを管理するためのライセンス管理プログラムが提供される。複数のマシンに含まれる第１のマシンは、当該ライセンス管理プログラムに基づいて、ライセンスの管理を行うモードにモード遷移する。次に第１のマシンは、複数のマシンそれぞれのソフトウェアの実行の有無を示す実行情報を収集する。次に第１のマシンは、ライセンスの管理を行うモードにおいて、複数のマシンに含まれる第２のマシンからの、ソフトウェアの実行許否の問い合わせに応じ、ソフトウェアを同時に実行できるマシン数を示すライセンス情報と実行情報とに基づいて、第２のマシンによるソフトウェアの実行の許否を判断する。
【発明の効果】
【０００９】
１態様によれば、簡易な構成でライセンス管理を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係るシステムによるライセンス管理例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】マシンのハードウェアの一構成例を示す図である。
【図４】マシンの機能を示すブロック図である。
【図５】ライセンスキーの発行状況の一例を示す図である。
【図６】ライセンスキーの登録状況の一例を示す図である。
【図７】管理ロールを有するマシンによるライセンス管理の一例を示す図である。
【図８】ライセンスキー入力処理の手順の一例を示すフローチャートである。
【図９】ソフトウェア起動時の処理の一例を示すフローチャートである。
【図１０】ソフトウェアの起動に伴う情報更新の一例を示すシーケンス図である。
【図１１】ソフトウェア停止時の処理の手順の一例を示すフローチャートである。
【図１２】管理ロール移管の第１のケースについての手順の一例を示すフローチャートである。
【図１３】ソフトウェアの停止に伴う情報更新の一例を示す図である。
【図１４】管理ロール移管の第２のケースについての手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず、第１の実施の形態について説明する。第１の実施の形態は、ライセンス管理サーバを用いずに、フローティングライセンスの管理を可能としたものである。
【００１２】
図１は、第１の実施の形態に係るシステムによるライセンス管理例を示す図である。複数のマシン１〜３がネットワークで接続されている。マシン１〜３は、例えばコンピュータである。
【００１３】
複数のマシン１〜３それぞれで実行され得るソフトウェアについて、ライセンスが発行されている。例えば複数のマシン１〜３には、ライセンス対象のソフトウェアが予めインストールされている。以下の説明で「ソフトウェア」と呼んだ場合、特に断らない限りライセンス対象のソフトウェアを指すものとする。
【００１４】
ライセンスの内容は、ライセンス情報４，６として１以上のマシンに格納される。ライセンス情報４，６には、ソフトウェアを同時に実行できるマシン数（ライセンス数）が示されている。図１の例では、２台のマシンにおいてソフトウェアを同時実行できるライセンスが発行されている。
【００１５】
複数のマシン１〜３のうちの１台は、ライセンスの管理を行う権限を示す管理ロールを取得する。管理ロールを取得したマシンは、ライセンスの管理を行うモードにモード遷移する。例えば各マシンは、ライセンス対象のソフトウェアの実行を開始するとき、またはそのソフトウェアの実行中に、複数のマシン１〜３のいずれもがライセンスの管理を行うモードでなければ、管理ロールを取得し、ライセンス管理を行うモードにモード遷移する。図１の例では、マシン２でソフトウェアが起動され、ソフトウェアの実行を開始するときに、マシン２が管理ロールを取得し、モード遷移をしている。
【００１６】
ライセンス管理を行うモードとなったマシン２は、複数のマシン１〜３それぞれのソフトウェアの実行の有無を示す実行情報５を収集する。例えば各マシンで実行されるソフトウェアは、Ｐ２Ｐ（Peer to Peer）で接続される。ライセンス管理を行うモードとなったマシン２は、例えばソフトウェア間のＰ２Ｐ通信により、ソフトウェアを実行している他のマシンの情報を取得することで、実行情報５を収集できる。またＰ２Ｐの情報共有機能を用いて、ソフトウェアを実行しているマシン間で、実行情報５を共有することもできる。図１の例では、マシン２が管理ロールを取得した時点では、マシン２のみが、ライセンス対象のソフトウェアを実行している。
【００１７】
その後、複数のマシン１〜３のうちに、管理ロールを有するマシン２以外のマシンが、例えばソフトウェアを起動する際に、ソフトウェアの実行許否を、マシン２に問い合わせる。図１の例では、マシン３が実行許否を問い合わせている。
【００１８】
ライセンス管理を行うモードにおいて、マシン２は、他のマシン３からのソフトウェアの実行許否の問い合わせに応じ、ライセンス情報４と実行情報５とに基づいて、問い合わせ元のマシン３によるソフトウェアの実行の許否を判断する。例えば実行情報５にソフトウェアを実行中であると示されているマシンの台数が、ライセンス情報４に示されるライセンス数より少なければ、実行を許可するものと判断される。図１の例では、マシン３からの問い合わせ時点では、ライセンス数が「２」であり、ソフトウェアを実行しているマシン数が「１」であるため、実行が許可される。
【００１９】
マシン２は、実行を許可すると判断した場合、実行を許可することを、問い合わせ元のマシン３に通知する。実行の許可の通知を受けたマシン３は、ソフトウェアを実行する。また、マシン２は、マシン３がソフトウェアの実行中であることを、実行情報５に設定する。
【００２０】
ここで、マシン２，３がソフトウェアを実行中に、マシン１においてソフトウェアを実行しようとする場合もある。この場合、マシン１は、マシン２に、ソフトウェアの実行の許否を問い合わせる。マシン１からの問い合わせ時点では、ライセンス数が「２」であり、ソフトウェアを実行しているマシン数が「２」である。そのため、マシン２は、実行を許可しない。実行を許可しない場合、マシン２は、問い合わせたマシン１に対して、実行不許可の通知を送信する。するとマシン１は、ソフトウェアを起動できずに、エラー終了する。
【００２１】
その後、管理ロールを有するマシン２でソフトウェアを停止させる場合、マシン２は、ライセンスの管理を行うモードを解除し、管理ロールを放棄する。そしてマシン２は、ソフトウェアを実行中の別のマシン３に、管理ロールの移管依頼を送信する。移管依頼を受信したマシン３は、管理ロールを取得する。そしてマシン３は、最新の実行情報７を収集し、予め保持しているライセンス情報６と実行情報７とを用いて、ライセンス管理を開始する。
【００２２】
このように第１の実施の形態では、ソフトウェアの実行し得る複数のマシン１〜３のうちの１台が管理ロールを有し、そのソフトウェアのライセンス管理を行うため、ライセンス管理サーバを別で設けずに済む。その結果、システム全体の規模を縮小することができる。
【００２３】
また、実行情報の収集をＰ２Ｐ通信で行うため、データ収集のためのサーバも用意せずに済む。その結果、マシン間の多対多の通信を実現するために、システムの規模が拡大することが抑止される。
【００２４】
また、各マシン１〜３は、複数のマシン１〜３のいずれもが管理ロールを有していないときに、管理ロールを取得するようにしたため、複数のマシンが管理ロールを取得することを抑止できる。もし、複数のマシンが管理ロールを有してしまうと、複数のマシンでライセンス管理が行われてしまう。すると、ライセンス管理を行う複数のマシンそれぞれが、個別のマシンに同時にソフトウェアの実行許可を与えた結果、全体としてライセンス数を超えた数のマシンでソフトウェアが同時実行されてしまう可能性がある。管理ロールを有するマシンを１台に制限することで、このようなライセンス違反の状態になることを抑止できる。
【００２５】
また、各マシン１〜３は、ソフトウェアの実行を開始するとき、またはソフトウェアの実行中に管理ロールを取得するため、ソフトウェアを実行していないマシンが管理ロールを有することはない。これにより、ソフトウェアを実行するマシンが存在しない場合には、ライセンス管理を行うマシンも存在せず、無駄なライセンス管理処理の発生が抑止される。
【００２６】
また、管理ロールを有するマシンは、ソフトウェアの実行を停止する場合、管理ロールを放棄し、他にソフトウェアを実行中のマシンがあれば、そのマシンに管理ロールを移管することができる。これにより、ソフトウェア実行中のマシンが存在するにも拘わらず管理ロールを有するマシンが存在しなくなることを、抑止できる。
【００２７】
なお、ライセンス管理対象のソフトウェアを実行しているマシン間では、Ｐ２Ｐ通信により、ソフトウェアの実行の有無を示す実行情報を、常に共有することができる。実行情報を共有しておけば、管理ロールを有するマシンが故障などで停止し、管理ロールの正常な移管依頼が出されなかった場合でも、他のマシンが管理ロールを引き継ぐことができる。
【００２８】
また、各マシン１〜３は、予め入力されたソフトウェアのライセンスキーから、ライセンス情報４，６を取得することができる。この際、ライセンスキーに、複数のマシン１〜３と同じＬＡＮ（Local Area Network）上の任意の通信機器（代表機器）の識別情報を含めておくことができる。この場合、各マシン１〜３が管理ロールを取得する際に、ソフトウェアのライセンスキーから代表機器の識別情報を取得する。そして各マシン１〜３は、識別情報を有する代表機器に接続できるか否かを判断し、代表機器に接続できたときに、管理ロールを取得したと判断し、ライセンスの管理を行うモードにモード遷移する。このように、代表機器に接続できることを、管理ロールの取得条件とすることで、特定のＬＡＮに対して発行されたライセンスキーの、他のＬＡＮでの不正使用が抑止できる。
【００２９】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、Ｐ２Ｐによるライセンス管理と、ネットワーク内の通信機器の固有情報を用いたライセンスキー発行とを行うものである。
【００３０】
図２は、第２の実施の形態のシステム構成例を示す図である。会社α内のＬＡＮ６０には、複数のセグメント６１〜６４それぞれに、複数のマシン１００，１００ａ〜１００ｏが接続されている。セグメント６１〜６４間は、複数のルータ５１〜５５で接続されている。複数のマシン１００，１００ａ〜１００ｏは、例えばコンピュータである。複数のマシン１００，１００ａ〜１００ｏ間は、Ｐ２Ｐで接続されている。
【００３１】
図３は、マシンのハードウェアの一構成例を示す図である。マシン１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３２】
メモリ１０２は、マシン１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に利用する各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３３】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３４】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、マシン１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。
【００３５】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３６】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３７】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３８】
機器接続インタフェース１０７は、マシン１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３９】
ネットワークインタフェース１０８は、ＬＡＮ６０に接続されている。ネットワークインタフェース１０８は、ＬＡＮ６０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４０】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。他のマシン１００ａ〜１００ｏも、図３に示したマシン１００と同様のハードウェアで実現できる。なお、第１の実施の形態に示した装置も、図３に示したマシン１００と同様のハードウェアにより実現できる。
【００４１】
マシン１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。マシン１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、マシン１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またマシン１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４２】
図４は、マシンの機能を示すブロック図である。マシン１００は、記憶部１１０、代表機器確認部１２０、管理ロール受け渡し部１３０、ライセンス管理部１４０、ライセンス取得部１５０、およびソフトウェア実行部１６０を有する。
【００４３】
記憶部１１０は、ライセンスキー１１１、ライセンス使用状況情報１１２、管理ロールマシン情報１１３、およびソフトウェア１１４（例えばアプリケーションソフトウェア）を記憶する。ライセンスキー１１１は、ライセンスキーは、ソフトウェア１１４の正規の使用者であることを示すコードである。ライセンス使用状況情報１１２は、ライセンスを適用してソフトウェア１１４を実行しているマシンに関する情報である。管理ロールマシン情報１１３は、管理ロールを有しているマシンを示す情報である。ソフトウェア１１４は、ライセンスの対象となっているソフトウェアである。
【００４４】
代表機器確認部１２０は、ＬＡＮ６０内に代表機器が存在することを確認する。代表機器は、ソフトウェア１１４の実行ライセンスが与えられた会社α内のＬＡＮ６０を代表する機器である。例えばＬＡＮ６０内のルータ５１が、代表機器となる。ライセンスキー１１１は、代表機器の識別情報を用いて生成される。例えばライセンスキー１１１が符号化されている場合、ライセンスキー１１１を復号すると、復号されたコードには代表機器の識別情報が含まれる。代表機器の識別情報は、例えばＭＡＣ（Media Access Control）アドレスやＩＰ（Internet Protocol）アドレスである。代表機器確認部１２０は、マシン１００が管理ロールを取得する際に、ライセンスキー１１１から抽出した識別情報を有する代表機器がＬＡＮ６０内に存在することを確認する。
【００４５】
管理ロール受け渡し部１３０は、マシン間での管理ロールの受け渡しを行う。例えば管理ロール受け渡し部１３０は、システム内で最初にソフトウェアを実行する際に、マシン１００自身に管理ロールを付与する。また管理ロール受け渡し部１３０は、他のマシンから管理ロールの依頼に基づいて、そのマシンから管理ロールを取得する。また管理ロール受け渡し部１３０は、マシン１００が管理ロールを有しているとき、ソフトウェア１１４の実行が終了すると、管理ロールを他のマシンに依頼する。
【００４６】
ライセンス管理部１４０は、マシン１００が管理ロールを有しているときに、ソフトウェア１１４のライセンス管理を行う。例えばライセンス管理部１４０は、他のマシンからのライセンス取得依頼に応じて、そのマシンにおいてソフトウェア１１４を実行させた場合に、同時実行マシン数がライセンスで許容されたマシン数を超えるかどうかを判断する。ライセンスで許容されたマシン数を超えなければ、ライセンス管理部１４０は、ライセンス取得依頼を発信したマシンへのライセンスの割り当てを行い、そのマシンに起動可能を示すメッセージを応答する。
【００４７】
なお複数のマシンから同時にライセンス取得依頼を受信した場合、ライセンス管理部１４０は、各ライセンス取得依頼をキューイングして、逐次処理を行う。これにより、誤ってライセンス数以上のマシンにソフトウェアの使用許可を与えることがなくなる。
【００４８】
またライセンス管理部１４０は、ライセンスキーの登録管理も行う。例えばライセンス管理部１４０は、ユーザ操作によりソフトウェアのライセンスキーが入力されると、そのライセンスキーを、記憶部１１０に格納する。なおライセンス管理部１４０は、ライセンスキーが入力された際には、代表機器確認部１２０を介して、そのライセンスキーに含まれる識別情報で示される代表機器が存在することを確認する。そしてライセンス管理部１４０は、代表機器が存在する場合にのみ、そのライセンスキーを記憶部１１０に格納する。
【００４９】
ライセンス取得部１５０は、マシン１００でソフトウェア１１４を起動する際に、管理ロールを有しているマシンからライセンスを取得する。例えばライセンス取得部１５０は、管理ロールを有しているマシンに対してライセンス取得依頼を送信する。そのマシンから起動可能の応答を受信した場合、ライセンス取得部１５０は、ソフトウェア実行部１６０にソフトウェア１１４の実行を許可する。
【００５０】
ソフトウェア実行部１６０は、ライセンス取得部１５０から許可が得られると、ソフトウェア１１４を実行する。
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００５１】
マシン１００以外のマシン１００ａ〜１００ｏも、マシン１００と同様の機能を有している。その結果、マシン１００，１００ａ〜１００ｏが対等の関係で、管理ロールの受け渡しが行われる。そして管理ロールを有しているマシンにより、ライセンス管理が行われる。なお会社αがソフトウェア１１４を実行するライセンスを有していることは、例えばライセンスキー１１１によって証明される。ライセンスキーは、ソフトウェアの販売元で発行される。
【００５２】
ライセンスキーは、ソフトウェア１１４の使用を許諾した会社α以外では使用できないように、会社α内の機器の識別情報が含められる。ここで、ライセンスキーの不正流用防止のために、例えば会社αのＬＡＮ６０内のすべてのマシン１００，１００ａ〜１００ｏの識別情報を含むライセンスキーを生成することが考えられる。しかしその場合、ライセンスキー発行時の各マシンの識別情報の入力の手間が過大となる。しかも、ソフトウェア１１４を使用するすべてのマシンの識別情報を用いてライセンスキーを発行する場合、マシンの入れ替えごとにライセンスキーを再発行することとなり、運用コストが増大する。さらに、すべてのマシンの識別情報を用いてライセンスキーを生成すると、ライセンスキーのサイズが大きくなりすぎ、マシンへのライセンスキーの入力作業の手間も増大する。
【００５３】
そこで第２の実施の形態では、代表機器の識別情報のみをライセンスキーに含め、マシンがライセンスの有無の確認する際には、そのマシンは、代表機器にアクセスしてライセンスキーの正当性を判断する。
【００５４】
図５は、ライセンスキーの発行状況の一例を示す図である。例えば会社αは、ルータ５１の識別情報８１を、ソフトウェア販売元企業７０に送信する。ソフトウェア販売元企業７０では、ルータ５１の識別情報８１を用いてライセンスキー８２を生成する。例えばソフトウェア販売元企業７０では、ルータ５１の識別情報を含む文字列を、所定のアルゴリズムで符号化し、ライセンスキー８２とする。符号化する文字列には、例えばライセンスによって許容される同時実行マシン数を含めることもできる。ソフトウェア販売元企業７０は、生成したライセンスキー８２を、会社αに送信する。
【００５５】
会社αでは、ライセンスキー８２を、各マシンに登録する。例えば１台のマシンにライセンスキーを設定したとき、そのマシンからの他のマシンにライセンスキーを配布してもよい。
【００５６】
図６は、ライセンスキーの登録状況の一例を示す図である。ライセンスキー８２は、例えばソフトウェアをマシン１００にインストールする際に、マシン１００に登録される。ライセンスキー８２が文字コードの場合、例えば、マシン１００を使用するユーザが、入力装置を用いて、ライセンスキー８２をマシン１００に入力する。
【００５７】
マシン１００は、ライセンスキー８２が入力されると、符号化されているライセンスキー８２を復号し、ルータ５１のＩＰアドレスやＭＡＣアドレスを抽出する。そしてマシン１００は、抽出したＩＰアドレスを用いてルータ５１にアクセスし、ルータ５１からＭＡＣアドレスを取得する。マシン１００は、ルータ５１へのアクセスが成功し、かつルータ５１のＭＡＣアドレスが、ライセンスキー８２から抽出したＭＡＣアドレスと一致した場合、ライセンスキー８２が正当であると判断する。ライセンスキー８２が正当であれば、マシン１００において、ソフトウェアが使用可能となる。
【００５８】
なお、ライセンスキー８２は、会社α内のＬＡＮ６０以外では使用できない。例えば会社βに、ルータ９０と複数のマシン９１〜９４とを有するＬＡＮがある。ここで、会社βのＬＡＮ内のマシン９１にライセンスキー８２を登録しようとした場合を想定する。
【００５９】
ライセンスキー８２の入力を受け付けたマシン９１は、ライセンスキー８２からＩＰアドレスとＭＡＣアドレスとを抽出する。そして、マシン９１は、抽出したＩＰアドレスに対応する機器にアクセスし、ＭＡＣアドレスを取得する。このとき、抽出したＩＰアドレスに対応する機器が会社βのＬＡＮ内に存在しなければ、アクセスがエラーとなり、ライセンスキー８２は不正であると判断される。抽出したＩＰアドレスに対応する機器が会社βのＬＡＮ内に存在する場合、その機器から取得したＭＡＣアドレスとライセンスキー８２から抽出したＭＡＣアドレスとが比較される。ライセンスキー８２に含まれるＭＡＣアドレスは、会社αのＬＡＮ６０に含まれるルータ５１のものであるため、会社β内の機器から抽出されたＭＡＣアドレスと一致することはない。そのため、マシン９１では、ＭＡＣアドレスの不一致により、ライセンスキー８２が不正であると判断される。
【００６０】
このように、ルータ５１の識別情報（ＩＰアドレスやＭＡＣアドレス）を用いてライセンスキー８２を生成し、その識別情報の照合によりライセンスキー８２の正当性を判断できるようにすることで、ライセンスキー８２の不正使用が抑止される。
【００６１】
しかも、ライセンスキー８２の生成に使用するのは、１台のルータ５１の識別情報だけであるため、ライセンスキー８２の発行の手間が少なくて済む。すなわち、１台の機器（例えばルータ５１）の識別情報のみでライセンスキー８２を発行できれば、その機器の入れ替えがない限り、ライセンスキー８２を使用し続けることができる。しかもライセンスキー８２のサイズも小さくて済む。その結果、ライセンスキー８２の管理が容易となり、運用コストを削減することができる。
【００６２】
なお、第２の実施の形態では、ＬＡＮ６０内の１台のマシンにライセンスキー８２を登録すると、Ｐ２Ｐで接続された他のマシンにそのライセンスキー８２が配布される。これにより、ライセンスキー８２の登録の手間が簡略化される。また各マシンは、自身が管理ロールを取得する際には、代表機器であるルータ５１に接続できることを確認する。これにより、会社αのＬＡＮ６０から切り離されたマシンによる管理ロールの取得を抑止できる。
【００６３】
会社αのＬＡＮ６０内では、複数のマシン１００，１００ａ〜１００ｏのうちの１台が、管理ロールを有する。そして管理ロールを有するマシンは、ソフトウェアの同時使用マシン数が、ライセンスに許容された数以内となるように、他のマシンへのライセンスの割り当てを管理する。
【００６４】
図７は、管理ロールを有するマシンによるライセンス管理の一例を示す図である。図７の例では、マシン１００，１００ａ〜１００ｃのうち、マシン１００ａが管理ロールを有している。またマシン１００ａと１００ｂとにおいて、ソフトウェアが使用中であるものとする。なおマシン１００のノード名を「Ａ」、マシン１００ａのノード名を「Ｂ」、マシン１００ｃのノード名を「Ｃ」、マシン１００ｄのノード名を「Ｄ」とする。このとき、マシン１００ａ，１００ｂのライセンス使用状況情報３２，３３には、ノード名「Ｂ」、「Ｃ」の各マシンがアプリケーションを使用中であることが示されている。また、ライセンスにより許容されている同時実行マシン数が「３」であるものとする。
【００６５】
このような状態において、ノード名「Ａ」のマシン１００でソフトウェアを使用しようとすると、そのマシン１００から、管理ロールを有しているマシン１００ａへ、ライセンス取得依頼が送信される。マシン１００ａでは、ライセンス取得依頼に応じて、ライセンスで許容される同時実行マシン数の範囲内で、マシン１００に対するライセンスの割り当てを行う。図７の例では、マシン１００がソフトウェアの使用を開始しても、同時に実行するマシン数が、ライセンスで許容されている数以下となる。そのためマシン１００に対してライセンスが割り当てられ、マシン１００ａからマシン１００へ、ソフトウェアの起動を許可する通知（起動可能通知）が送信される。
【００６６】
マシン１００ａは、マシン１００に対してソフトウェアの使用を許可すると、ライセンス使用状況情報３２の内容が更新される。またマシン１００ａは、更新後のライセンス使用状況情報３２を、マシン１００に通知する。マシン１００では、通知内容に従って、ライセンス使用状況情報３１が新たに記憶される。
【００６７】
さらにマシン１００ａは、ノード名「Ａ」のマシン１００がソフトウェアの使用を開始したことを、すでにソフトウェアを使用しているマシン１００ｂに通知する。マシン１００ｂは、マシン１００ａからの通知に応じて、自身が有しているライセンス使用状況情報３３を更新する。
【００６８】
このようにして、ソフトウェアを使用中の各マシン１００〜１００ｂでライセンス使用状況情報３１，３２，３３が共通の内容に更新される。更新後のライセンス使用状況情報３１，３２，３３には、ノード名「Ａ」、「Ｂ」、「Ｃ」の各マシンがアプリケーションを使用中であることが示されている。
【００６９】
その後、マシン１００ｃにおいてソフトウェアを使用しようとすると、そのマシン１００ｃから、管理ロールを有しているマシン１００ａへ、ライセンス取得依頼が送信される。このとき、マシン１００ｃにソフトウェアの使用を許可すると、同時使用マシン数が、ライセンスで許容されている数を超えてしまう。そこでマシン１００ａは、マシン１００ｃからのライセンス取得要求に対して、使用不可の応答を返す。
【００７０】
このように、管理ロールを有するマシン１００ａがライセンス管理を行うことで、管理ロールを有していないマシンに対して、適切にライセンスを割り当てることができる。管理ロールは、マシン間で受け渡すことができる。例えばマシン１００ａにおいてソフトウェアの使用を停止する際には、マシン１００ａから他のマシンに管理ロールが渡される。各マシンが同じ内容のライセンス使用状況情報を有しているため、管理ロールを有しているマシンが変更された際にも、新たに管理ロールを有することとなったマシンが、すぐにライセンス管理を引き継ぐことができる。また、管理ロールを有するマシンが故障などで停止した場合でも、他のマシンが管理ロールを取得し、ライセンス管理を引き継ぐことができる。
【００７１】
なお、図７に示したライセンス使用状況情報のマシン間での同期は、例えばＰ２Ｐ通信における情報共有機能を用いて実現することができる。
以下、各マシンによるライセンス管理の処理について詳細に説明する。まず、ライセンスキー入力時の処理について説明する。
【００７２】
図８は、ライセンスキー入力処理の手順の一例を示すフローチャートである。以下、マシン１００にライセンスキーを入力する場合を想定し、図８に示す処理を説明する。なおライセンスキー入力処理は、例えばマシン１００にソフトウェアをインストールする際に実行される。
【００７３】
［ステップＳ１０１］ライセンス管理部１４０は、ライセンスキーの入力を受け付け、入力されたライセンスキーから代表機器の識別情報を取得する。例えばライセンス管理部１４０は、符号化されているライセンスキーを、所定のアルゴリズムで復号する。そしてライセンス管理部１４０は、復号によって得られた文字列から、代表機器の識別情報を抽出する。
【００７４】
［ステップＳ１０２］代表機器確認部１２０は、代表機器がＬＡＮ６０上に存在するか否かを判断する。例えば代表機器確認部１２０は、ライセンス管理部１４０から、代表機器の識別情報を取得する。識別情報がＩＰアドレスとＭＡＣアドレスとの組の場合、代表機器確認部１２０は、取得したＩＰアドレスにより代表機器にアクセスし、その代表機器からＭＡＣアドレスを取得する。代表機器確認部１２０は、代表機器からＭＡＣアドレスが取得でき、取得したＭＡＣアドレスがライセンスキーから抽出したＭＡＣアドレスと同一であれば、代表機器がＬＡＮ６０上に存在すると判断する。代表機器がＬＡＮ６０上に存在する場合、処理がステップＳ１０３に進められる。代表機器がＬＡＮ６０上に存在しない場合、処理がステップＳ１０４に進められる。
【００７５】
［ステップＳ１０３］ライセンス管理部１４０は、代表機器確認部１２０から代表機器が存在するとの通知を受け取り、記憶部１１０にライセンスキー１１１を格納する。またライセンス管理部１４０は、入力されたライセンスキーを、Ｐ２Ｐで接続されている他のマシンに送信する。他のマシンは、受信したライセンスキーを、メモリなどに格納する。その後、ライセンスキー入力処理が終了する。
【００７６】
［ステップＳ１０４］ライセンス管理部１４０は、代表機器確認部１２０から代表機器が存在しないとの通知を受け取り、ライセンスキー登録エラーをモニタ２１に表示する。その後、ライセンスキー入力処理が終了する。
【００７７】
このようにして、各マシンにライセンスキーが登録される。そして複数のマシンのうちの１台が管理ロールを有し、ライセンス管理を行う。他のマシンは、ソフトウェアの起動時に、管理ロールを有するマシンからライセンスの割り当てを受ける。
【００７８】
図９は、ソフトウェア起動時の処理の一例を示すフローチャートである。以下、マシン１００ａが管理ロールを有しているときに、マシン１００を起動する場合を想定し、図９の処理を説明する。
【００７９】
［ステップＳ１１１］マシン１００は、ソフトウェアの起動要求が入力されると、他のマシンから管理ロールマシン情報を収集する。例えばマシン１００は、Ｐ２Ｐ接続により、他のマシン１００ａ〜１００ｏに接続されている。そこでマシン１００は、他のマシン１００ａ〜１００ｏのすべてに対して、管理ロールマシン情報の取得要求を送信する。すると、ソフトウェアを使用しているマシンからマシン１００へ、管理ロールマシン情報が送信される。図９の例では、取得した管理ロールマシン情報には、マシン１００ａが管理ロールを有していることが示されているものとする。
【００８０】
［ステップＳ１１２］マシン１００は、管理ロールを有するマシン１００ａに対して、ライセンス取得依頼を送信する。
［ステップＳ１１３］マシン１００ａは、ライセンス取得依頼を受信すると、ライセンスで許容されている同時使用マシン数（ライセンス数）よりも、現在ソフトウェアを使用中のマシン数が少ないかどうかを判断する。ライセンス数よりも使用中のマシン数が少なければ、処理がステップＳ１１７に進められる。使用中のマシン数がライセンス数に達していれば、処理がステップＳ１１４に進められる。
【００８１】
［ステップＳ１１４］マシン１００ａは、ライセンスを付与したマシンの状態を確認する。例えばマシン１００ａは、ライセンス使用状況情報３２を参照し、ライセンスを付与したマシンを認識する。そしてマシン１００ａは、ライセンスを付与したマシンに対して、ソフトウェア使用状態の確認メッセージを送信する。確認メッセージを受信したマシンは、ソフトウェアが使用されていれば、使用中である旨の応答を返す。確認メッセージを受信したマシンにおいてソフトウェアが使用されていなければ、そのマシンは、該当ソフトウェアを実行していない旨の応答を返す。マシン１００ａは、各マシンからの応答に基づいて、ライセンスを付与したマシンにおけるソフトウェアの使用状態を認識する。
【００８２】
［ステップＳ１１５］マシン１００ａは、ライセンスを付与したマシンの中に、現在ソフトウェア不使用のマシンがあるか否かを判断する。例えばマシン１００ａは、少なくとも１台のマシンから、ソフトウェアを実行していない旨の応答を受信した場合、ソフトウェア不使用のマシンが存在すると判断する。ソフトウェア不使用のマシンが存在する場合、処理がステップＳ１１６に進められる。ソフトウェア不使用のマシンが存在しなければ、処理がステップＳ１２１に進められる。
【００８３】
［ステップＳ１１６］マシン１００ａは、ソフトウェア不使用のマシンにおけるソフトウェアの停止情報を、該当マシンの代替で、他の各マシンに送信する。停止情報を受信したマシンは、該当マシンによるソフトウェアの使用が停止したことを、ライセンス使用状況情報３２に反映させる。
【００８４】
［ステップＳ１１７］マシン１００ａは、ライセンス使用状況情報３２を更新する。例えばマシン１００ａは、ライセンス取得依頼を送信したマシン１００のノード名を、使用中のマシンとしてライセンス使用状況情報３２に追加する。またマシン１００ａは、ライセンスを付与しているがソフトウェアを不使用のマシンが存在した場合、そのマシンのノード名を、ライセンス使用状況情報３２から削除する。
【００８５】
［ステップＳ１１８］マシン１００ａは、マシン１００に対して、起動可能通知を送信する。その後、ステップＳ１１９とステップＳ１２０との処理が並行して実行される。
［ステップＳ１１９］マシン１００ａは、最新のライセンス使用状況情報３２を、マシン１００とソフトウェアを現在使用しているマシンとに送信する。
【００８６】
［ステップＳ１２０］マシン１００は、起動可能通知を受信するとソフトウェアを起動する。これにより、ソフトウェアが正常に起動完了する。
他方、ライセンス数が不足している場合、以下の処理が行われる。
【００８７】
［ステップＳ１２１］マシン１００ａは、ライセンス数の上限エラーをマシン１００に通知する。
［ステップＳ１２２］マシン１００は、ライセンス数上限エラーをモニタに表示し、ソフトウェアの起動処理をエラー終了する。
【００８８】
このようにして、ＬＡＮ６０内のいずれかのマシンのソフトウェアの起動時に、管理ロールを有するマシンにより、ライセンス数内でのライセンス割り当てが適切に行われる。またソフトウェアを使用するマシンが増加したことにより、ソフトウェアを実行中の各マシンにおいて、ライセンス使用状況情報や管理ロールマシン情報が更新される。
【００８９】
図１０は、ソフトウェアの起動に伴う情報更新の一例を示すシーケンス図である。図１０の例は、ノード名「Ｂ」のマシン１００ａが管理ロールを有し、ノード名「Ｃ」のマシン１００ｂがソフトウェアを使用中のときに、ノード名「Ａ」のマシン１００を起動した場合を想定している。なお、管理ロールを有しているマシン１００ａも、ソフトウェア使用中である。この場合、ソフトウェア使用中である２台のマシン１００ａ，１００ｂのライセンス使用状況情報として、ノード名「Ｂ」、「Ｃ」のマシンがソフトウェアを使用中であることが登録されている。なお図１０の例では、ライセンス数は「３」であるものとする。そのため、ライセンス使用状況情報には、ライセンスの使用状況が「２／３（同時使用マシン数／ライセンス数）」であると示されている。
【００９０】
マシン１００においてソフトウェアの起動が開始されると、例えばマシン１００は、マシン１００ｂに対して管理ロールマシン情報の取得要求を送信する（ステップＳ１３１）。マシン１００ｂは、管理ロールマシン情報の取得要求に応じて、自身が保持する管理ロールマシン情報をマシン１００に送信する（ステップＳ１３２）。この管理ロールマシン情報には、ノード名「Ｂ」のマシン１００ａが管理ロールを有していることが示されている。マシン１００は、受信した管理ロールマシン情報をメモリに格納する。
【００９１】
マシン１００は、取得した管理ロールマシン情報により、マシン１００ａが管理ロールを有していることを認識する。そこでマシン１００は、管理ロールを有するマシン１００ａに、ライセンス取得依頼を送信する（ステップＳ１３３）。マシン１００にソフトウェアを使用させても、同時使用マシン数がライセンス数以下となる。そこでマシン１００ａは、ライセンス使用状況情報にマシン１００のノード名「Ａ」を使用中のマシンリストに追記し、ライセンス使用状況情報における使用中のライセンス数を「３／３」に更新する。
【００９２】
そしてマシン１００ａは、マシン１００に対して、ソフトウェア使用許可と最新のライセンス使用状況情報とを送信する（ステップＳ１３４）。マシン１００は、マシン１００ａから受信したライセンス使用状況情報をメモリに格納し、ソフトウェアの使用を開始する。またマシン１００ａは、すでにソフトウェア使用中のマシン１００ｂに対しても、最新のライセンス使用状況情報を送信する（ステップＳ１３５）。マシン１００ｂは、受信したライセンス使用状況情報に従って、自身が保持しているライセンス使用状況情報を更新する。
【００９３】
このようにして、ソフトウェアを使用しているすべてのマシン１００，１００ａ，１００ｂにおけるライセンス使用状況情報が、最新に更新される。
ライセンスの割り当てを受けたマシンにおいて、ソフトウェアの使用が終了した場合、そのマシンに割り当てられたライセンスが解放される。この場合にも、ソフトウェアを使用しているすべてのマシンにおいて、ライセンス使用状況情報が更新される。
【００９４】
図１１は、ソフトウェア停止時の処理の手順の一例を示すフローチャートである。以下、マシン１００ａが管理ロールを有しているときに、マシン１００がソフトウェアの使用を停止する場合を想定し、図１１の処理を説明する。
【００９５】
［ステップＳ１４１］マシン１００は、ソフトウェアの停止処理を開始すると、管理ロールを有するマシン１００ａに、停止情報を送信する。
［ステップＳ１４２］マシン１００ａは、停止情報を受信すると、自身のライセンス使用状況情報における使用中のマシンのリストから、マシン１００のノード名を削除する。またマシン１００ａは、ライセンス使用状況情報における同時使用マシン数の値を１だけ減算する。そしてマシン１００ａは、ソフトウェアを使用中のすべてのマシンに、最新のライセンス使用状況情報を通知する。最新のライセンス使用状況情報を受信した各マシンは、自身のライセンス使用状況情報を更新する。
【００９６】
［ステップＳ１４３］ライセンス使用状況情報の更新後、マシン１００は、ソフトウェアの実行を停止する。
このようにして、ソフトウェアの停止時にも、ソフトウェア使用中の他のすべてのマシンにおいて、ライセンス使用状況情報が更新される。各マシンのライセンス使用状況情報が同期して更新されることで、マシン間で管理ロールを容易に移管することができる。管理ロールが移管される主なケースとして、管理ロールを有するマシンでソフトウェアが停止するケース（第１のケース）がある。また、管理ロールを有するマシンが存在しない状態で、いずれかのマシンが管理ロールを有するようになるケース（第２のケース）もある。
【００９７】
図１２は、管理ロール移管の第１のケースについての手順の一例を示すフローチャートである。以下、マシン１００ａが管理ロールを有し、その管理ロールをマシン１００ｂに移管する場合を想定し、図１２の処理を説明する。なお、図１２の例では、起動時刻が早いマシンに優先的に管理ロールを持たせている。
【００９８】
［ステップＳ１５１］マシン１００ａがソフトウェアの停止処理を開始すると、マシン１００ａは、マシン１００ａ以外のソフトウェア使用中のマシンのうち、起動時刻が最も早いマシンを特定する。図１２の例では、マシン１００ｂが特定される。そして、マシン１００ａは、特定したマシン１００ｂに管理ロールを依頼する。
【００９９】
［ステップＳ１５２］管理ロールの依頼を受けたマシン１００ｂは、代表機器に接続可能か否かを判断する。例えばマシン１００ｂは、ライセンスキーを復号することで、ライセンスキーからＩＰアドレスとＭＡＣアドレスとを抽出する。そしてマシン１００ｂは、抽出したＩＰアドレスに対応する機器から、その機器のＭＡＣアドレスを取得する。マシン１００ｂは、取得したＭＡＣアドレスが、ライセンスキーから抽出したＭＡＣアドレスと同一であれば、代表機器に接続可能であると判断する。代表機器に接続可能であれば、処理がステップＳ１５３に進められる。代表機器に接続できない場合、処理がステップＳ１５７に進められる。
【０１００】
［ステップＳ１５３］マシン１００ｂは、ライセンスを有効化する。例えばマシン１００ｂは、メモリ内において、保持しているライセンスキーに関連付けて、ライセンスが有効であることを示すフラグを設定する。
【０１０１】
［ステップＳ１５４］マシン１００ｂは、管理ロールの受諾通知を、マシン１００ａに送信する。その後、ステップＳ１５５とステップＳ１５６との処理が並行して実行される。
【０１０２】
［ステップＳ１５５］マシン１００ｂは、ソフトウェアを使用している各マシンに、マシン１００ｂが管理ロールを有していることを示す情報を送信する。
［ステップＳ１５６］管理ロールの受諾通知を受信したマシン１００ａは、ソフトウェアの実行を停止する。
【０１０３】
［ステップＳ１５７］マシン１００ｂは、代表機器に接続できない場合、ライセンスキーを無効化する。例えばマシン１００ｂは、メモリ内において、保持しているライセンスキーに関連付けて、ライセンスが無効であることを示すフラグを設定する。
【０１０４】
このようにして、管理ロールを有するマシン１００ａにおいてソフトウェアを停止する際に、代表機器に接続可能な他のマシン１００ｂに管理ロールが移管される。なお図１２の例では、マシン１００ｂが代表機器に接続できない場合、システム内に管理ロールを有するマシンが不在となる。その場合、新たにソフトウェアを使用するマシンが発生したときに、いずれかのマシンに管理ロールが依頼される。
【０１０５】
図１３は、ソフトウェアの停止に伴う情報更新の一例を示す図である。図１３の例は、ノード名「Ｂ」のマシン１００ａが管理ロールを有し、ノード名「Ａ」、「Ｂ」、「Ｃ」のマシン１００，１００ａ，１００ｂがソフトウェアを使用中のときに、ノード名「Ｂ」のマシン１００ａでソフトウェアの使用を停止した場合を想定している。この場合、ソフトウェア使用中である３台のマシン１００，１００ａ，１００ｂのライセンス使用状況情報として、ノード名「Ａ」、「Ｂ」、「Ｃ」のマシンがソフトウェアを使用中であることが登録されている。なお図１３の例では、ライセンス数は「３」であるものとする。そのため、ライセンス使用状況情報には、ライセンスの使用状況が「３／３」であると示されている。また、３台のマシン１００，１００ａ，１００ｂのソフトウェアの起動時刻は、管理ロールを有するマシン１００ａが最も早く、マシン１００ｂが２番目に早いものとする。
【０１０６】
このような状況において、管理ロールを有するマシン１００ａのソフトウェアの停止処理が開始されると、マシン１００ａからソフトウェアの起動時刻が２番目に早いマシン１００ｂに対して、管理ロール依頼が送信される（ステップＳ１６１）。マシン１００ｂは、管理ロールを保持することを受諾し、管理ロール受諾の応答をマシン１００ａに送信する（ステップＳ１６２）。
【０１０７】
管理ロール受諾の応答を受信したマシン１００ａは、ソフトウェアの停止処理を完了する。新たに管理ロールを有することとなったマシン１００ｂは、マシン１００ａにおいてソフトウェアが停止したことにより、ライセンス使用状況情報を更新する。すなわち、ソフトウェアを使用中のマシンのリストからマシン１００ａのノード名「Ｂ」を削除し、使用しているライセンス数を「２／３」に変更する。またマシン１００ｂは、管理ロールマシン情報として、自身のノード名「Ｃ」を設定する。そしてマシン１００ｂは、ライセンス使用状況情報と管理ロールマシン情報とに関する最新情報を、ソフトウェア使用中のマシン１００に送信する（ステップＳ１６３）。これにより、ソフトウェア使用中のマシンの情報が最新の状態に更新される。
【０１０８】
次に、ＬＡＮ内に管理ロールを有するマシンが存在しない場合の管理ロール移管処理について、図１４を参照して説明する。なお、図１４に示す処理は、図９に示す「ソフトウェアを使用するマシン」のソフトウェア起動時の処理を詳細化したものである。
【０１０９】
図１４は、管理ロール移管の第２のケースについての手順の一例を示すフローチャートである。以下、マシン１００ａでソフトウェアが起動された場合を想定して、図１３の処理を説明する。
【０１１０】
［ステップＳ１７１］マシン１００ａは、ソフトウェアの起動要求が入力されると、Ｐ２Ｐで接続されたＬＡＮ内の、ソフトウェアを使用している他のマシンの情報を取得する。例えばマシン１００ａは、ソフトウェアを使用しているマシンとＰ２Ｐ接続で通信する。
【０１１１】
［ステップＳ１７２］マシン１００ａは、ソフトウェアを使用している他のマシンが存在するか否かを判断する。他のマシンが存在する場合、処理がステップＳ１７７に進められる。他のマシンが存在しない場合、処理がステップＳ１７３に進められる。
【０１１２】
［ステップＳ１７３］マシン１００ａは、代表機器に接続可能か否かを判断する。代表機器に接続可能か否かを判断する。代表機器に接続可能であれば、処理がステップＳ１７５に進められる。代表機器に接続できなければ、処理がステップＳ１７４に進められる。
【０１１３】
［ステップＳ１７４］マシン１００ａは、ライセンスキーを無効化し、ソフトウェアを起動せずに処理を終了する。
［ステップＳ１７５］マシン１００ａは、ライセンスキーを有効化する。
【０１１４】
［ステップＳ１７６］マシン１００ａは、自身が管理ロールを有するマシンとなる。例えばマシン１００ａは、管理ロールマシン情報に、マシン１００ａのノード名を設定する。その後、処理がステップＳ１８２に進められる。
【０１１５】
［ステップＳ１７７］マシン１００ａは、ソフトウェアを使用している他のマシンから管理ロールマシン情報を収集する。マシン１００ａは、収集した管理ロールマシン情報に基づいて、現在管理ロールを有するマシンを認識する。
【０１１６】
［ステップＳ１７８］マシン１００ａは、管理ロールを有するマシンにアクセス可能か否かを判断する。例えばマシン１００ａは、管理ロールを有するマシンに所定のメッセージを送信し、そのメッセージに対する応答の有無により、アクセス可能かどうかを判断する。管理ロールを有するマシンにアクセス可能であれば、処理がステップＳ１８０に進められる。管理ロールをするマシンにアクセスできなければ、処理がステップＳ１７９に進められる。
【０１１７】
［ステップＳ１７９］マシン１００ａは、ソフトウェアの起動時刻が最も早いマシンに管理ロールを依頼する。マシン１００ａは、管理ロールを依頼したマシンから、管理ロール受諾の応答を受信すると、次のステップＳ１８０に処理を進める。なお、管理ロールを受諾したマシンは、図１２に示す「起動時刻が２番目に早いマシン」と同様の処理を行う。
【０１１８】
［ステップＳ１８０］マシン１００ａは、管理ロールを有するマシンにライセンス取得依頼を送信する。
［ステップＳ１８１］マシン１００ａは、管理ロールを有するマシンから起動可能の通知を受信したか否かを判断する。起動可能の通知を受信した場合、処理がステップＳ１８２に進められる。起動可能の通知を受信できなかった場合、処理がステップＳ１８３に進められる。
【０１１９】
［ステップＳ１８２］マシン１００ａは、ソフトウェアを起動し、処理を終了する。
［ステップＳ１８３］マシン１００ａは、エラー表示を行い、ソフトウェアを起動せずに処理を終了する。
【０１２０】
このようにして、管理ロールを有するマシンが不在の場合、ソフトウェアの起動時刻が最も早いマシンが管理ロールを保持する。例えば、管理ロールを有していたマシンの異常により、そのマシンで正しくソフトウェアを終了させることができなかった場合でも、他のマシンが図１４に示す処理を実行することで、管理ロールの移管が可能となる。
【０１２１】
以上説明したように、第２の実施の形態では、複数のマシンの内の１台が管理ロールを有し、そのマシンがフローティングライセンスを管理するため、ソフトウェアを実行しないライセンス管理サーバを別途設けずに済む。しかも、管理ロールを有するマシンは、ソフトウェアを実行しているマシンのいずれかに動的に変更できる。そのため、管理ロールを有しているマシンでソフトウェアが停止しても、他のマシンに管理ロールを移管し、ライセンス管理処理を引き継がせることができる。その結果、ライセンス管理サーバを用いなくても、信頼性の高いライセンス管理が可能となっている。
【０１２２】
さらに、代表機器の識別情報をライセンスキーに含め、代表機器に接続できないマシンは管理ロールを有することができないようにしている。これにより、ライセンス対象のＬＡＮ以外のＬＡＮでライセンスキーを使用することはできず、ライセンスの不正使用が抑止される。
【０１２３】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１２４】
１〜３  マシン
４，６  ライセンス情報
５，７  実行情報
【図１】
2017004044.tif 000003
【図２】
2017004044.tif 000004
【図３】
2017004044.tif 000005
【図４】
2017004044.tif 000006
【図５】
2017004044.tif 000007
【図６】
2017004044.tif 000008
【図７】
2017004044.tif 000009
【図８】
2017004044.tif 000010
【図９】
2017004044.tif 000011
【図１０】
2017004044.tif 000012
【図１１】
2017004044.tif 000013
【図１２】
2017004044.tif 000014
【図１３】
2017004044.tif 000015
【図１４】
2017004044.tif 000016