(57)【要約】【課題】  シリアル番号に紐づいた全てのライセンスを返却し、シリアル番号とコンピュータの紐づけを解除しない限り、他のコンピュータでシリアル番号を使用できない。【解決手段】  保持しているライセンスの状態に応じて、ライセンス認証実行時と同時にライセンス返却を実施し、ライセンス返却を実施して効果のあるライセンスのみを返却する。また、１つのシリアル番号に複数のライセンスが紐づいている場合、複数のライセンスをまとめて返却する。【選択図】  図８
2017021538.tif 000002
【特許請求の範囲】
【請求項１】
発行されたライセンスに基づきソフトウェアの動作を制御する情報処理装置であって、
前記ソフトウェアの動作を制御するための第１のライセンスを発行するために入力されたシリアル番号を保持する保持手段と、
バージョンが異なる前記ソフトウェアの動作を制御するための第２のライセンスを発行するために必要なシリアル番号の入力を受け付ける受付手段と、
前記保持手段により保持された前記第１のライセンスに対応するシリアル番号と前記受付手段により受け付けられたシリアル番号とが異なるか否かを確認する確認手段と、
前記確認手段によって異なることが確認された場合、第１のライセンスをライセンスサーバへ返却するとともに、前記受付手段により受け付けられたシリアル番号を基に前記ライセンスサーバが発行した前記第２のライセンスに基づき前記ソフトウェアの制御を行う制御手段と、を有する情報処理装置。
【請求項２】
前記制御手段は、前記確認手段によって同一であることが確認された場合、前記第１のライセンスを前記ライセンスサーバへ返却しないことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記確認手段によって異なることが確認された場合、前記保持手段が保持する前記第１のライセンス以外のライセンスであって、前記第１のライセンスと同じく前記受付手段により受け付けられたシリアル番号と同一のシリアル番号を基に前記ライセンスサーバが発行し既に前記保持手段に保持されているライセンスを、前記第１のライセンスとともにライセンスサーバへ返却することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記確認手段は、前記第１のライセンスに対応するシリアル番号と前記受付手段により受け付けられたシリアル番号とが異なることを確認した場合、さらに、前記第１のライセンスに含まれる種類情報と前記第２のライセンスによって動作が制御されるソフトウェアの種類情報とが異なるか否かを確認し、
前記制御手段は、前記確認手段によって前記第１のライセンスに含まれる種類情報と前記第２のライセンスによって動作が制御されるソフトウェアの種類情報とが同一であることが確認された場合、前記第１のライセンスを前記ライセンスサーバへ返却し、
前記確認手段によって前記第１のライセンスに含まれる種類情報と前記第２のライセンスによって動作が制御されるソフトウェアの種類情報とが異なることが確認された場合、前記第１のライセンスを前記ライセンスサーバへ返却しないことを特徴とし、
前記種類情報とは、バージョンが異なる同一のソフトウェアに共通して割り当てられる情報であることを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記確認手段は、前記第１のライセンスに含まれる種類情報と前記第２のライセンスによって動作が制御されるソフトウェアの種類情報とが異なることを確認した場合、さらに、前記第２のライセンスによって動作が制御されるソフトウェアが前記第１のライセンスによって動作が制御されるソフトウェアをサポートしているか否かを確認し、
前記制御手段は、前記確認手段によって前記第２のライセンスによって動作が制御されるソフトウェアが前記第１のライセンスによって動作が制御されるソフトウェアをサポートしていないことが確認された場合、前記第１のライセンスを前記ライセンスサーバへ返却し、
前記確認手段によって前記第２のライセンスによって動作が制御されるソフトウェアが前記第１のライセンスによって動作が制御されるソフトウェアをサポートしていることが確認された場合、前記第１のライセンスを前記ライセンスサーバへ返却しないことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記確認手段は、前記第１のライセンスに含まれる種類情報と前記第２のライセンスによって動作が制御されるソフトウェアの種類情報とが同一であることを確認した場合、前記第１のライセンスと同一のシリアル番号を基に発行されかつ前記第１のライセンスの種類情報と異なる種類情報を含む第３のライセンスによって動作が制御されるソフトウェアを前記第２のライセンスによって動作が制御されるソフトウェアがサポートしていないことが確認された場合、前記第１のライセンスを返却し、
前記第３のライセンスによって動作が制御されるソフトウェアを前記第２のライセンスによって動作が制御されるソフトウェアがサポートしていることが確認された場合、前記第１のライセンスを返却しないことを特徴とする請求項４または５に記載の情報処理装置。
【請求項７】
前記第２のライセンスによって動作が制御されるソフトウェアは、前記第１のライセンスによって動作が制御されるソフトウェアの機能を拡張するためのアドインソフトであることを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
発行されたライセンスに基づきソフトウェアの動作を制御する情報処理装置で実行される方法であって、
前記ソフトウェアの動作を制御するための第１のライセンスを発行するために入力されたシリアル番号を保持する保持ステップと、
バージョンが異なる前記ソフトウェアの動作を制御するための第２のライセンスを発行するために必要なシリアル番号の入力を受け付ける受付ステップと、
前記保持ステップにおいて保持された前記第１のライセンスに対応するシリアル番号と前記受付ステップにおいて受け付けられたシリアル番号とが異なるか否かを確認する確認ステップと、
前記確認ステップにおいて異なることが確認された場合、第１のライセンスをライセンスサーバへ返却するとともに、前記受付ステップにおいて受け付けられたシリアル番号を基に前記ライセンスサーバが発行した前記第２のライセンスに基づき前記ソフトウェアの制御を行う制御ステップを含むことを特徴とする方法。
【請求項９】
発行されたライセンスに基づきソフトウェアの動作を制御する情報処理装置で実行されるプログラムであって、
前記ソフトウェアの動作を制御するための第１のライセンスを発行するために入力されたシリアル番号を保持する保持ステップと、
バージョンが異なる前記ソフトウェアの動作を制御するための第２のライセンスを発行するために必要なシリアル番号の入力を受け付ける受付ステップと、
前記保持ステップにおいて保持された前記第１のライセンスに対応するシリアル番号と前記受付ステップにおいて受け付けられたシリアル番号とが異なるか否かを確認する確認ステップと、
前記確認ステップにおいて異なることが確認された場合、第１のライセンスをライセンスサーバへ返却するとともに、前記受付ステップにおいて受け付けられたシリアル番号を基に前記ライセンスサーバが発行した前記第２のライセンスに基づき前記ソフトウェアの制御を行う制御ステップを含むことを特徴とするプログラム。
【請求項１０】
発行されたライセンスに基づきソフトウェアの動作を制御する情報処理装置で実行されるプログラムを記憶した記憶媒体であって、
前記ソフトウェアの動作を制御するための第１のライセンスを発行するために入力されたシリアル番号を保持する保持ステップと、
バージョンが異なる前記ソフトウェアの動作を制御するための第２のライセンスを発行するために必要なシリアル番号の入力を受け付ける受付ステップと、
前記保持ステップにおいて保持された前記第１のライセンスに対応するシリアル番号と前記受付ステップにおいて受け付けられたシリアル番号とが異なるか否かを確認する確認ステップと、
前記確認ステップにおいて異なることが確認された場合、第１のライセンスをライセンスサーバへ返却するとともに、前記受付ステップにおいて受け付けられたシリアル番号を基に前記ライセンスサーバが発行した前記第２のライセンスに基づき前記ソフトウェアの制御を行う制御ステップを含むプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライセンスに基づきソフトウェアの動作を制御する情報処理装置、方法、プログラムおよび記憶媒体
【背景技術】
【０００２】
有償ソフトウェアを使用許諾する方法として、ノードロック方式がある。ノードロック方式の認証フローについて具体的に説明する。まず、ユーザがシリアル番号を入力し、ソフトウェアの識別情報、コンピュータの機器情報を併せてライセンスサーバへ送信する。次にライセンスサーバは、ユーザから送信された情報をライセンス管理用のデータベースと照合することによって、ライセンス認証の可否を判断する。ライセンスサーバによってライセンス認証がされると、前記コンピュータ専用のライセンスが発行される。また、ライセンスサーバは、ライセンス認証に使用した前記複数の情報をライセンス認証情報としてシリアル番号と紐づけ、前記データベース上で管理を行う。この紐づけ管理により、ノードロック方式では、ライセンスサーバで紐づけの管理がされているシリアル番号を他のコンピュータで使用できないようになる。最後に、コンピュータはライセンスサーバが発行したライセンスを取得し、コンピュータ上のライセンス保存用のデータベースに保存する。ソフトウェアはライセンスの有無を判断し、ソフトウェア起動の可否を判断する。
【０００３】
また、ソフトウェアのアンイストール時に未使用となるライセンスを返却する技術が特許文献１にて提案されている。特許文献１には、ソフトウェアをアンインストールする際に、アンインストールするソフトウェアのライセンスが存在するかを検知し、存在すればアンイストールと同時にライセンスを返却するという技術が記載されている。この技術によれば、未使用になるライセンスはアンイストール時に返却されるため、ライセンスサーバによってライセンスに紐づいていた情報（シリアル番号、ソフトウェアの識別情報、コンピュータの機器情報）を解除される。結果、ライセンス認証情報の紐づけが解除されたシリアル番号が他のコンピュータで使用できるようになる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１３８３３５
【発明の概要】
【発明が解決しようとする課題】
【０００５】
１つのシリアル番号に複数のライセンスが紐づいているライセンスを発行する形態をライセンスシステムに導入した場合、特許文献１に開示されるライセンス返却技術を適用すると問題がある。それは、１つのシリアル番号に複数のライセンスが紐づいている場合、シリアル番号に紐づいた全てのライセンスを返却し、ライセンス情報の紐づけを解除しない限り、他のコンピュータでシリアル番号を使用できない問題である。本願発明の目的は、ライセンス返却を実施することで効果のあるライセンスのみを返却することにより上述した課題を解決することにある。
【課題を解決するための手段】
【０００６】
本発明の一実施形に係る情報処理装置は、発行されたライセンスに基づきソフトウェアの動作を制御する情報処理装置であって、前記ソフトウェアの動作を制御するための第１のライセンスを発行するために入力されたシリアル番号を保持する保持手段と、バージョンが異なる前記ソフトウェアの動作を制御するための第２のライセンスを発行するために必要なシリアル番号の入力を受け付ける受付手段と、前記保持手段により保持された前記第１のライセンスに対応するシリアル番号と前記受付手段により受け付けられたシリアル番号とが異なるか否かを確認する確認手段と、前記確認手段によって異なることが確認された場合、第１のライセンスをライセンスサーバへ返却するとともに、前記受付手段により受け付けられたシリアル番号を基に前記ライセンスサーバが発行した前記第２のライセンスに基づき前記ソフトウェアの制御を行うことを特徴とする。
【発明の効果】
【０００７】
情報処理装置は、ライセンス返却を実施して効果のあるライセンスのみを返却する。
【図面の簡単な説明】
【０００８】
【図１】システムの構成を示す図
【図２】クライアント、ライセンスサーバのハードウェア構成を示す図
【図３】クライアント、ライセンスサーバのソフトウェア構成を示す図
【図４】ライセンス認証ソフトウェアのＵＩ画面を示す図
【図５】ライセンス保存部が保有するライセンステーブルを示す図
【図６】ライセンス管理部が保有するライセンステーブルを示す図
【図７】ソフトウェアのレジストリ情報を示す図
【図８】本実施例の処理のフロー図
【図９】本実施例の処理のフロー図
【図１０】本実施例の処理のフロー図
【図１１】本実施例の処理のフロー図
【発明を実施するための形態】
【０００９】
始めに、本願発明の前提について説明する。本願発明においては、１つのシリアル番号でバージョンの異なるソフトウェア夫々に対応するライセンスを発行することが可能になる。具体的には次に説明する流れでライセンスが発行される。ユーザが有効期限３年のシリアル番号を入力しライセンスを取得しようとした場合、ライセンスサーバは前記シリアル番号が有効期限内であるかを判断する。有効期限内であると判断した場合、シリアル番号の有効期間内にリリースされたソフトウェアは、全て同一のシリアル番号を用いて無償でライセンスを取得できる。つまり、３年以内に複数バージョンのソフトウェアがリリースされた場合、その間にリリースされたソフトウェアのライセンスは全て取得することができる。また、本技術による１つのシリアル番号で取得できるライセンスの範囲は、同一ソフトウェアに限らず、ソフトウェアに付属する追加機能（例えばＰｌｕｇｉｎ）や全く別のソフトウェアも対象となる。また、シリアル番号によって取得できるライセンスのソフトェア及びバージョンは、ライセンスサーバによって管理される。
【００１０】
また、ソフトウェアの識別情報は、ソフトウェアの起動可否の判断やソフトウェアのバージョン管理に利用される。例えば、ソフトウェアの起動可否の判断に関しては、取得したライセンスにソフトウェアと同じ識別情報が定義されていた場合、ソフトウェアの起動を許可する。また、例えば、ソフトウェアのバージョン管理に関しては、「ソフトウェアの大幅な改訂（メジャーバージョンアップ）である場合は識別情報を変更し、小幅な改訂（マイナーバージョンアップ）である場合、識別情報を変更しない。」という形態で識別情報を運用する。この運用では、ライセンスを取得した後にマイナーバージョンアップしたソフトウェアは識別情報が変更されない為、アップグレード前にライセンスサーバから取得したライセンスで新版ソフトウェアを継続使用できる。つまり、旧版ソフトウェアを使用していたユーザは無償で新版ソフトウェアを利用できる。一方でソフトウェアの識別情報を変更した場合、コンピュータのライセンスデータベース内には新版ソフトウェアと同じ識別情報を持つライセンスが存在しない為、ユーザは再びシリアル番号を入力し、ライセンスサーバからライセンスを取得する必要がある。この状態で再びライセンスサーバからライセンスを取得した場合、コンピュータには旧版ソフトウェア、新版ソフトウェアの２つのライセンスが紐づくことになる。
【００１１】
ここで、アップグレード後のソフトウェアは新しいバージョンのライセンスを利用するため、古いバージョンのライセンスは不要となる。つまり、ソフトウェアをアップグレードすると未使用になるライセンスがコンピュータに残る場合がある。
【００１２】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【実施例１】
【００１３】
［システム構成］
図１は、本発明の一実施形態におけるデータ処理システムの構成を示す図である。本実施形態は、後述するクライアントとライセンスサーバとがネットワークを介して通信可能なシステムである。
【００１４】
本実施形態において、１１０はクライアントであって、ライセンスサーバ１２０に対してライセンスの要求を指示するユーザの使用するコンピュータである。クライアント１１０は、ライセンスサーバ１２０によって、ノードロック方式のライセンスで管理されているものとする。クライアント１１０は、クライアントにインストールされたソフトウェア３００又はソフトウェア拡張機能３０４が利用するライセンスをライセンスサーバ１２０から取得し、このソフトウェア３００又はソフトウェア拡張機能３０４の動作を制御する。ライセンスサーバ１２０は、クライアント１１０にインストールされたソフトウェア３００又はソフトウェア拡張機能３０４が利用するライセンスを管理（ライセンス管理）する管理装置である。ライセンスは、ソフトウェア３００又はソフトウェア拡張機能３０４の利用に関する特定情報の一つである。また、クライアント１１０は、ライセンスサーバ１２０からライセンスを取得することでソフトウェア３００又はソフトウェア拡張機能３０４を利用することができる。
【００１５】
１００はクライアント１１０とライセンスサーバ１２０が接続されているＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であって、ＬＡＮ１００を介して各コンピュータは情報の相互通信を行っている。なお、本実施形態のシステムが備えるクライアント１１０とライセンスサーバ１２０とが、ＬＡＮ以外の任意のネットワークで接続されるようにしてもよい。
【００１６】
［ハードウェア構成（クライアント、ライセンスサーバ）］
図２は、クライアント１１０、及びライセンスサーバ１２０のハードウェアの構成を示す図である。クライアント１１０及びライセンスサーバ１２０は、ユーザ操作入力を受信する入力デバイスであるキーボード２０５とポインティングデバイス２０６が設けられている。キーボード２０５は、クライアント及びライセンスサーバ１２０に対して文字や数字などの情報を入力する装置である。キーボードは、例えば、仮名や英文字などを入力するキーや数字を入力するためのテンキー、各種機能キー、カーソルキー及びその他のキーを備える。キーボードは、ユーザの操作に従って、例えば、サーバに送信されるシリアル番号を入力する。
【００１７】
ポインティングデバイス２０６は、例えばマウスなどを備える。ユーザが、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）などを用いてクライアント１１０を操作する場合、表示装置上に表示されたボタンやアイコンなどをマウスでクリックすることにより、所定の情報の入力を行うことができる。例えば、クライアント１１０が、インストールされたソフトウェアを表すアイコンを表示部２０２上に表示し、ユーザがアイコンをマウスでクリックすることに応じて、ＣＰＵ２０１がソフトウェアを起動する。さらに、ユーザに視覚的な出力情報フィードバックを与える表示部２０２を備える。
【００１８】
表示部２０２は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ、液晶ディスプレイ、又はプラズマディスプレイを備える画面上に各種情報を表示する。表示部２０２は、キーボードやマウスの入力結果や、ソフトウェアが提供する画面（例えばユーザインターフェース）等を表示する。
【００１９】
さらに、クライアント１１０及びライセンスサーバ１２０は動作を制御するための手段であるＣＰＵ２０１、ＲＡＭ２０３、ＲＯＭ２０４、ＨＤＤ２０７を備える。本実施形態に特有の動作として、ＣＰＵ２０１は、クライアント１１０上では図３に示すソフトウェア３００、ライセンス認証ソフトウェア３０１、ライセンス管理モジュール３０２、ソフトウェア拡張機能３０４の機能を実現する。また、ライセンスサーバ１２０上では図３に示すライセンス管理ソフトウェア３１０の機能を実現する。ＣＰＵ２０１は、クライアント１１０及びライセンスサーバ１２０にインストールによりメモリに保存された各ソフトウェアを実行し、所定のプログラムに従って、各種の演算、情報処理、クライアント１１０及びライセンスサーバ１２０全体の制御処理を行う。
【００２０】
ＲＡＭ２０３、ＲＯＭ２０４、ＨＤＤ２０７は本実施形態における各種プログラムや実行情報を保管する。また、ＣＤに記録されたデータを読み出すためのＣＤ−ＲＯＭドライバ２０８も設ける。ＲＡＭ２０３は、ＣＰＵ２０１によりＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や本発明を実現するための制御プログラムを含むその他の制御プログラムがロードされ実行される。また、制御プログラムを実行するために用いられる各種作業領域、一時待避領域として機能する。本実施形態では、ＲＡＭ２０３には、ＣＰＵ２０１がライセンスの取得やソフトウェアの起動などを行うためのエリアが確保される。ＲＯＭ２０４は、ＣＰＵ２０１の各種制御を実行する各種制御プログラム、データ及びパラメータ等を記憶する記憶装置である。
【００２１】
ＨＤＤ２０７は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータを読み書きするための駆動装置を備える。本実施形態では、ＨＤＤ２０７は、ハードディスクを備えるローカルディスクである。なお、ＨＤＤ２０７が備える記憶媒体が、光磁気ディスク、磁気ディスク、半導体メモリ等であってもよい。ＨＤＤ２０７には、図３に示すソフトウェア３００、ライセンス認証ソフトウェア３０１、ライセンス管理モジュール３０２、ライセンス保存部３０３、ソフトウェア拡張機能３０４、ライセンス管理ソフトウェア３１０、ライセンス管理部３１１が記憶されている。また、ＨＤＤ２０７には、インターフェイスデバイスＩ／Ｏ２０９を制御し、ネットワークを介した通信を維持する通信プログラムが記憶されている。また、ＨＤＤ２０７には、メモリ管理やファイル入出力管理などのクライアントを動作させるための基本ソフトウェアであるＯＳなどが記憶されている。
【００２２】
さらに、外部機器との通信を行うインターフェイスデバイスＩ／Ｏ２０９を備え、プログラム実行を行うＣＰＵ２０１を備える。なお、周辺機器との接続形態は有線／無線を問わない。インターフェイスデバイスＩ／Ｏ２０９は、ネットワーク（例えば、ＬＡＮ１００やインターネット）を介してクライアントと各種サーバ装置（Ｗｅｂサーバ、メールサーバなど）に接続する。インターネットを介した通信を行う場合には、例えば、ＴＣＰ／ＩＰ等のプロトコルが用いられる。インターフェイスデバイスＩ／Ｏ２０９は、クライアント１１０とライセンスサーバ１２０との通信を確立・維持し、ソフトウェア３００が利用するライセンスをライセンスサーバ１２０から受信する。本実施形態では、クライアント１１０は、このインターフェイスデバイスＩ／Ｏ２０９を介してライセンスサーバ１２０と通信を行う。なお、本実施例で説明される処理は、ＲＯＭ２０４、またはＨＤＤ２０７に保存されたプログラムがＲＡＭ２０３にロードされ、ＣＰＵ２０１が実行することによって実現される。
【００２３】
［ソフトウェア構成（クライアント、ライセンスサーバ）］
図３は、クライアント、サーバのソフトウェア構成の一例を示す図である。図３には、クライアント１１０、ライセンスサーバ１２０が備える、ライセンスの管理処理に関する処理部を示す。
【００２４】
はじめにクライアント１１０が備える各構成について説明する。クライアント１１０は、ソフトウェア３００、ライセンス認証ソフトウェア３０１、ライセンス管理モジュール３０２、ライセンス保存部３０３、ソフトウェア拡張機能３０４を備える。図３では、クライアント１１０にはソフトウェアインストーラによってソフトウェア３００、ライセンス認証ソフトウェア３０１、ライセンス管理モジュール３０２、ライセンス保存部３０３がインストールされるものとする。また、クライアント１１０にはるソフトウェア拡張機能インストーラによってソフトウェア拡張機能３０４がインストールされるものとする。
【００２５】
ソフトウェア３００は、例えば、ワードプロセッサソフト、表計算ソフト、データベースソフト、画像編集ソフト、エディタソフト等の任意のソフトウェアである。ライセンス認証ソフトウェア３０１は、例えば、シリアル番号の入力を受け付ける図４のライセンス認証画面等のソフトウェアである。
【００２６】
ライセンス管理モジュール３０２は、クライアント１１０内でのライセンスに関する処理全般の機能を備える。図１に示すライセンスサーバ１２０からソフトウェア３００の利用に関する特定情報（ライセンス情報）を要求・取得して、ソフトウェアの利用管理を行う利用管理手段として機能する。ライセンス管理モジュール３０２は、実行対象のライセンス認証ソフトウェア３０１から依頼を受けて、ライセンス処理用のリクエストデータを作成し、前記リクエストデータへライセンス認証に必要な情報を追加する。ライセンス認証に必要な情報は、ソフトウェア３００の識別情報、クライアント１１０の機器情報、シリアル番号である。これら情報をライセンス認証用のデータとして追加した後、リクエストデータをライセンスサーバ１２０へ送信する。リクエストデータは、クライアント１１０とライセンスサーバ１２０におけるライセンスに関する処理の情報を送受信するためのデータである。リクエストデータ内には、例えば前述したソフトウェア３００の識別情報、クライアント１１０の機器情報、シリアル番号等の情報が含まれる。機器情報は、クライアントのコンピュータを一意に特定するための情報であり、例えば、ＭＡＣアドレスなどが該当する。シリアル番号は、ソフトウェアのパッケージに一意に付与された番号であり、ライセンスサーバ１２０にライセンスの発行を要求する際に必要となる番号である。また、ライセンス管理モジュール３０２は、ライセンスサーバ１２０が発行したライセンスを受信し、ライセンス保存部３０３に前記ライセンスを保存する。
【００２７】
ライセンス保存部３０３は、ライセンス管理ソフトウェア３１０から取得したライセンスに関する情報（ライセンステーブル、詳細については図５で後述する）を保存するデータベースである。ライセンス保存部３０３には、ライセンスに紐づいた情報が管理され、ソフトウェアの名称、ソフトウェアのバージョン、ソフトウェアの識別情報、クライアントの機器情報、シリアル番号、ソフトウェアのアップグレードコードなどが該当する。これら情報は、ソフトウェア３００の起動可否の判断やライセンス認証時のライセンス返却の判断処理に使用される。また、ライセンスを返却した場合、ライセンス管理モジュール３０２によってライセンス保存部３０３から返却したライセンスに紐づいた情報が削除される。
【００２８】
ソフトウェア拡張機能３０４は、例えば、ソフトウェア３００に追加可能なプラグインのようなオプション機能を指す。一般的に拡張機能は単体では動作せず、本体であるソフトウェア３００が存在しなければ機能しない。また、本実施例では、ソフトウェア拡張機能３０４は、ソフトウェア拡張機能用のライセンスを取得しないと機能しないものとする。ソフトウェア拡張機能３０４はライセンス管理モジュール３０２を介し、ソフトウェア３００と同様のライセンスに関する処理を実施するため、同様の処理及び機能に関する説明は割愛する。
【００２９】
次にライセンスサーバ１２０が備える各構成について説明する。ライセンスサーバ１２０は、ライセンス管理ソフトウェア３１０、ライセンス管理部３１１を備える。図３に示す例では、ライセンスサーバ１２０にはライセンス管理ソフトウェアインストーラによってライセンス管理ソフトウェア３１０、ライセンス管理部３１１がインストールされているものとする。
【００３０】
ライセンス管理ソフトウェア３１０は、ライセンス管理に関する統合的な機能を備える。ライセンス管理ソフトウェア３１０は、クライアント１１０とライセンスに関する情報の送受信を行う。また、クライアント１１０から受け付けた情報（リクエストデータ）を基にライセンスの発行やライセンスの認証状態を変更し、ソフトウェア３００又はソフトウェア拡張機能３０４のライセンスの管理を行うライセンス管理手段として機能する。また、ライセンス管理ソフトウェア３１０は、発行したライセンスをクライアント１１０に送信に送信する。
【００３１】
ライセンス管理部３１１は、ライセンス管理ソフトウェア３１０が管理しているライセンスに関する情報（ライセンステーブル、詳細については図６で後述する）を保存するデータベースである。ライセンス管理部３１１には、ライセンス保存部３０３と同じ情報に加え、ライセンスの認証状態が管理される。
【００３２】
また、ライセンス管理ソフトウェア３１０によってライセンス認証又はライセンス返却がされると、ライセンス管理部３１１が管理しているライセンス情報を更新する。ライセンス認証によるライセンス情報の更新の場合、リクエストデータ内に含まれる情報をライセンスに紐づける。ライセンス認証によるライセンス情報の更新は、クライアント１１０における前記ライセンス対象のソフトウェア３００又はライセンス管理ソフトウェア３１０についてのライセンスを使用状態にすることである。一方、ライセンス返却によるライセンス情報の更新の場合、ライセンスに紐づいている情報を削除する。ライセンス返却によるライセンス情報の更新は、ライセンスに紐づいていたシリアル番号及びクライアント１１０の機器情報の情報が解除されるため、他のコンピュータ上で前記返却したライセンスに紐づいたシリアル番号を使用してライセンス認証が可能となる。
【００３３】
なお、本実施例で説明される処理を実行する図３に示す各部は、ＲＯＭ２０４、またはＨＤＤ２０７に保存されたプログラムをＲＡＭ２０３にロードし、ＣＰＵ２０１で実行することによって実現される。
【００３４】
［ライセンス認証ソフトウェアのＵＩ画面］
図４は、ライセンス認証ソフトウェア３０１のＧＵＩを示している。ライセンス認証画面４００は、ユーザがシリアル番号４０１を入力するためのテキストボックスを備えており、ライセンス認証ソフトウェア３０１は入力されたシリアル番号を受け付ける。シリアル番号４０１はライセンスサーバ１２０からライセンスを取得する際に使用する。
【００３５】
［ライセンス保存部が保有するライセンステーブル］
図５は、ライセンス保存部３０３が管理するライセンステーブルを示している。ライセンステーブル５００は、ライセンス管理モジュール３０２が取得したライセンスに紐づく情報を管理する。シリアル番号５０１は、ライセンス認証ソフトウェア３０１で指定されたシリアル番号４０１と同じである。図５では、ソフトウェア１００、ソフトウェア４００の２つのソフトウェアに対して、１つのシリアル番号４０１（１１１１−１１１１−１１１１−０００１）と紐づいている。これは、１つのシリアル番号で２つのソフトウェア３００のライセンス認証を行ったということである。
【００３６】
５０２〜５０６は、ライセンス情報内に含まれるソフトウェア３００（またはソフトウェア拡張機能３０４）の情報を指す。ソフトウェア名５０２は、ソフトウェアの名称であり、バージョン５０３は、ソフトウェアのバージョンである。ソフトウェアの識別情報５０４は、ソフトウェア３００をライセンスのバージョンを管理するために用いられる。例えば、ソフトウェア３００がバージョン１、２、３、４と順にリリースされている際に、バージョン１を購入したユーザにはバージョン２、３を無償で提供するライセンスのバージョン管理を行うとする。
【００３７】
このバージョン管理を実現するには、バージョン１で定義したソフトウェアの識別情報５０４（Ｃ１００）と同じ識別情報を、バージョン２、３にも同様に定義する。このライセンスの定義はライセンス管理ソフトウェア３１０によって行われる。ライセンスの定義の詳細については図６で後述する。ソフトウェア３００の起動可否は、ライセンス保存部３０３のライセンス情報内に、ソフトウェアに組み込まれたソフトウェアの識別情報５０４が存在するかによって判断する。換言すると、ライセンス管理モジュール３０２は、ライセンス保存部３０３にソフトウェアの識別情報５０４（Ｃ１００）と紐づいたライセンス情報が存在するかを判断し、バージョン２，３のソフトウェア起動可否を決定する。従って、図５で示すように、バージョン１のソフトウェア３００でソフトウェアの識別情報５０４（Ｃ１００）と紐づいたライセンスをライセンスサーバ１２０から取得してれば、バージョン２、３のソフトウェア３００はライセンス認証を行わなくても起動できる。
【００３８】
ソフトウェアのアップグレードコード５０５は、ソフトウェア３００のＵＣであり、後述する実施例２〜４でライセンス処理に関する判断に使用する。クライアント機器情報６０６は、クライアント１１０の機器情報である。図５では、クライアント機器情報６０６をクライアント１１０のＭＡＣアドレスとして定義している。なお、本実施例では、ライセンステーブル５００の構成として５０１〜５０６を項目の例に挙げたが、ライセンステーブルの構成は前述の項目に限ったものとしない。
【００３９】
［ライセンス管理部が保有するライセンステーブル］
図６は、ライセンス管理部３１１が保有するライセンステーブルを示している。ライセンステーブル６００は、ライセンス管理ソフトウェア３１０が発行したライセンスを管理する。
【００４０】
図６の６０１〜６０６は、図５の５０１〜５０６にそれぞれ対応している。本項の図６では、図５と重複した部分についての説明を割愛する。クライアント機器情報６０６は、クライアント１１０の機器情報である。この機器情報は、クライアント１１０がライセンスを取得する際に保存され、ライセンスを返却する際に削除される。また、クライアント機器情報６０６が保存されている場合、この情報に紐づいているシリアル番号６０１は使用中の状態であるため、他のコンピュータで使用することができない。一方、クライアント機器情報６０６が保存されていない場合、この情報に紐づいているシリアル番号は未使用の状態であるため、他のコンピュータで使用することができる。ただし、同じシリアル番号６０１に対して複数のクライアント機器情報６０６が紐づいている場合、シリアル番号６０１に紐づいている全てのクライアント機器情報６０６が削除されない限り、他のコンピュータで使用することができない。また、クライアント機器情報６０６は、ライセンス管理モジュール３０２がライセンス管理ソフトウェア３１０に送受信するリクエストデータの中にライセンス処理用の情報の１つとして含まれる。
【００４１】
ソフトウェアリリース日６０７は、ソフトウェア３００がリリースされた日である。保守期間６０８は、シリアル番号６０１の保守期間である。保守期間６０８には保守期間の開始日、終了日が格納されており、この期間内にリリースされたソフトウェアは１つのシリアル番号で複数のソフトウェア３００のライセンスを取得することができる。図６では、例えば、シリアル番号１１１１−１１１１−１１１１−０００１の保守期間は２０１２／１／１から２０１４／１２／３１と定義されている。つまり、この保守期間内にリリースされたソフトウェア１００、ソフトウェア４００は、１つのシリアル番号でライセンスを取得することができる。また、ソフトウェア５００は、ソフトウェアリリース日６０７が２０１５／１／１と定義されており、保守期間外にリリースされたソフトウェアとなるため、シリアル番号１１１１−１１１１−１１１１−０００１ではライセンスが取得することができない。
【００４２】
上記のように１台のクライアント１１０（機器情報００００ＡＡＡＡ２２２２）で１つのシリアル番号６０１（１１１１−１１１１−１１１１−０００１）を使用し、複数のソフトウェア（ソフトウェア１００、ソフトウェア４００）のライセンスを取得している場合について説明をする。例えば、この状態でソフトウェア１００のライセンスを返却すると、ソフトウェア１００に紐づいたクライアント機器情報６０６（００００ＡＡＡＡ２２２２）が削除される。ここで、ソフトウェア１００に紐づいたクライアント機器情報６０６は空であるが、同じシリアル番号６０１（１１１１−１１１１−１１１１−０００１）に紐づいたソフトウェア４００のクライアント機器情報６０６には００００ＡＡＡＡ２２２２が保存されている。シリアル番号６０１が他のコンピュータで有効になる条件は、シリアル番号６０１に紐づいている全てのクライアント機器情報６０６が削除されることである。そのため、シリアル番号６０１（１１１１−１１１１−１１１１−０００１）を他のコンピュータで使用するためには、更にソフトウェア４００のライセンスを返却し、ソフトウェア４００に紐づいたクライアント機器情報６０６（００００ＡＡＡＡ２２２２）を削除する必要がある。なお、本実施例では、ライセンステーブル６００の構成として６０１〜６０８を項目の例に挙げたが、ライセンステーブルの構成は前述の項目に限ったものとしない。
【００４３】
［ソフトウェアのレジストリ情報］
図７は、クライアント１１０のレジストリ情報７００を示す。レジストリ情報７００は、クライアント１１０のレジストリ情報一覧を示し、クライアント１１０にインストールされているソフトウェア３００（ソフトウェア拡張機能３０４）の情報を保持する。例えば、レジストリ情報７００は、ソフトウェア名７０１、バージョン７０２やサポートプラグインバージョン７０３、アップグレードコード７０４等を保持する。本実施形態では、これらレジストリ情報７００は、ソフトウェア３００のインストール時にＯＳのレジストリに書き込まれるものとする。
【００４４】
ソフトウェア名７０１は、ソフトウェア３００の名称を示す。バージョン７０２は、ソフトウェア３００のバージョンを示す。サポートプラグインバージョン７０３は、ソフトウェア３００がサポートするソフトウェア拡張機能３０４のバージョンを示す。また、サポートプラグインバージョン７０３は、ソフトウェア３００専用の項目であるため、ソフトウェア拡張機能３０４に本項は存在しない。アップグレードコード７０４（以下ＵＣ）は、ソフトウェアに一意に設定された情報であり、同一ソフトウェアであればバージョンが異なる場合でも同じ情報が利用される。つまり、ＵＣ７０４が同じソフトウェアであれば、バージョン違いの同一ソフトウェアであり、ＵＣ７０４が異なるソフトウェアであれば、別ソフトウェアということになる。ＵＣのように、ソフトウェアの種類を特定するために用いる情報を種類情報と呼称する。複数のソフトウェアは、共通の種類情報が割り当てられることで同一のソフトウェアとなる。
【００４５】
本実施例では、図７の各情報を例に挙げたが、レジストリ情報７００の記載表現は、この記載に限ったものではない、また、記述される情報、及びこれら情報を備える箇所もこれに限ったものではない。
【００４６】
［実施例１におけるソフトウェアの処理］
クライアントに１つのバージョンしかインストールできないソフトウェア３００では、新版ソフトウェアのライセンスを保持していれば、旧版ソフトウェア３００のライセンスは不要である。また、旧版ソフトウェア３００、新版ソフトウェア３００でそれぞれ別のシリアル番号を利用してライセンス認証を実施した場合、不要となる旧版ソフトウェア３００のライセンスは、他のコンピュータに移動させることで再利可能である。他のコンピュータでライセンスを利用する場合、旧版ライセンスを返却する必要がある。
【００４７】
ライセンスの返却について具体的に説明する。ライセンスの返却とは、ライセンス管理モジュール３０２がライセンス管理ソフトウェア３１０にライセンス返却用のリクエストデータを送信することを指す。リクエストデータの中には、ライセンス保存部３０３が管理するライセンステーブルの情報が含まれる。ライセンス管理ソフトウェア３１０は、この情報を基に返却されたライセンスを照合し、ライセンス管理部３１１で管理しているライセンステーブル６００から該当するクライアント機器情報６０６を削除することでシリアル番号との紐づけを解除する。なお、ライセンス保存部３０３が管理するライセンステーブルの情報は削除されるものとし、これにより、旧版ソフトウェ３００は、起動時にライセンステーブルの情報が存在しないため起動ができないようになる。
【００４８】
ここで、１つのシリアル番号で複数バージョンのライセンスを取得していた場合、シリアル番号に紐づいた全てのライセンスを返却する必要がある。これにより、ライセンスサーバで管理されているシリアル番号６０１、ソフトウェアの識別情報６０４、クライアントの機器情報６０６の紐づけが解除できるため、シリアル番号を他のコンピュータで使用できるようになる。
【００４９】
ここでは、クライアントが保持している複数の不要なライセンスを返却できるように、保持しているライセンスの状態に応じてライセンス認証を実施する際にライセンス返却を同時に実施する例を示す。
【００５０】
図８は、ソフトウェア３００の処理のフロー図である。図１のクライアント１１０上で動作するソフトウェア３００を例に処理の流れを説明する。本フローでは、ソフトウェア３００をアップグレードした際にクライアントに残る不要なライセンスを効率的に返却する手段を示す。各判断ステップを実行することによりライセンスの状態を確認し、確認の結果、ライセンスの返却を行うことが特徴である。
【００５１】
ソフトウェア３００の起動処理が開始されると、Ｓ１００１にて、ライセンス管理モジュール３０２はライセンス保存部３０３からライセンス情報の一覧を取得する。次に、Ｓ１００２にて、ライセンス管理モジュール３０２はＳ１００１にて取得したライセンス情報内にソフトウェアを起動するために有効なライセンスが存在するかを判断する。ここで、有効なライセンスとは、起動するソフトウェアの識別情報とライセンスに紐づいたソフトウェアの識別情報６０４が一致したライセンスを指す。Ｙｅｓ（存在する）の場合、処理を終了し、Ｎｏ（存在しない）の場合、Ｓ１００３へ進む。ここで、ソフトウェアの識別情報６０４とは、ソフトウェア起動可否を判断するための情報であり、この情報はソフトウェア３００が保持している。例えば、ソフトウェア３００がソフトウェアの識別情報「Ｃ１００」を保持し、ライセンスに紐づいたソフトウェアの識別情報６０４が「Ｃ１００」であった場合、ソフトウェアの識別情報が一致したと判断する。
【００５２】
次に、Ｓ１００３にて、ライセンス管理モジュール３０２はライセンス認証ソフトウェア３０１（ライセンス認証画面４００）を表示する。次に、Ｓ１００４にて、ライセンス管理モジュール３０２はライセンス認証ソフトウェアからシリアル番号入力及びライセンス認証指示を受け付けたことに応じて、ライセンス処理用のリクエストデータを作成する。
【００５３】
次に、Ｓ１００５にて、ライセンス管理モジュール３０２はＳ１００４で作成したリクエストデータに対し、シリアル番号、ソフトウェアの識別情報、クライアントの機器情報をライセンス処理用リクエストとして追加する。次に、Ｓ１００６にて、ライセンス管理モジュール３０２はＳ１００１にて取得したライセンス情報内のライセンスに紐づくシリアル番号５０１とＳ１００４で受け付けたシリアル番号が異なるかを判断する。Ｙｅｓ（異なる）の場合、Ｓ１００７へ進み、Ｎｏ（異ならない）場合、Ｓ１００８へ進む。
【００５４】
次に、Ｓ１００７にて、ライセンス管理モジュール３０２はＳ１００４で作成したリクエストデータに対し、Ｓ１００６で異なるシリアル番号と判断したライセンスの情報をライセンス返却用リクエストとして追加する。ここでライセンスの情報とは、ライセンスに紐づいた情報を指し、具体的には、シリアル番号５０１、ソフトウェアの識別情報５０４、クライアントの機器情報５０６が該当する。ライセンス返却用リクエストがライセンスサーバに送信されことを上述した通り返却と称し、ライセンスサーバにてシリアル番号６０１と機器情報６０８の紐付けが解除されることになる。なお、返却の際に送信されるライセンス返却用リクエストに含まれるライセンスの情報は、実施例１に限られるものではない。
【００５５】
Ｓ１００７において、リクエストデータ内には新版ソフトウェア３００用のシリアル番号を用いたライセンス認証用の情報と旧版ソフトウェア３００をライセンス認証した際に使用したシリアル番号５０１を用いたライセンス返却用の情報が含まれる。また、リクエストデータに追加するライセンス返却用の情報は、Ｓ１００６で異なるシリアル番号と判断した全てのライセンスを含む。
【００５６】
次に、Ｓ１００８にて、ライセンス管理モジュール３０２はＳ１００６で処理していないライセンスが存在するかを判断する。Ｙｅｓ（存在する）の場合、Ｓ１００７へ進み、Ｎｏ（存在しない）場合、Ｓ１００８へ進む。Ｓ１００６からＳ１００８の処理を繰り返すことで、既に返却対象となったライセンス以外のライセンスであって、異なるシリアル番号に対応するライセンスを返却することが可能になる。結果、返却したライセンスを別のＰＣが使えるようになる。
【００５７】
Ｓ１００６〜Ｓ１００８のフローについて、具体的に説明する。例えば、図５においてクライアント１１０（００００ＡＡＡＡ２２２２）は、シリアル番号５０１（１１１１−１１１１−１１１１−０００１）を使用して２つのソフトウェア名５０２（ソフトウェア１００、ソフトウェア４００）のライセンスを取得している。これは、まずソフトウェア１００をインストール後にシリアル番号５０１（１１１１−１１１１−１１１１−０００１）を使用して、ソフトウェア１００のライセンスを取得している。次にソフトウェア１００をソフトウェア４００にアップグレード後に、先と同じシリアル番号５０１（１１１１−１１１１−１１１１−０００１）を使用して、ソフトウェア４００のライセンスを取得している。ソフトウェア４００のライセンスを取得する際、Ｓ１００６にて２つのシリアル番号は異ならないと判断されるため、Ｓ１００７を実施しない。その結果、ソフトウェア１００のライセンス情報は返却用リクエストとリクエストデータに追加されない。
【００５８】
更に、この状態からソフトウェア５００にアップグレードし、ライセンスを取得する際に、シリアル番号５０１（１１１１−１１１１−１１１１−０００１）を使用した場合、１つシリアル番号で３つのライセンスが取得できる。一方、別のシリアル番号５０１（５５５５−５５５５−５５５５−０００１）を使用した場合、Ｓ１００６にて異なるシリアル番号と判断されるため、Ｓ１００６〜Ｓ１００８のループ処理によって、ソフトウェア１００、ソフトウェア４００のライセンス情報が返却用リクエストとしてリクエストデータに追加される。尚、ライセンステーブル５００には、ソフトウェアの識別情報「Ｃ１００Ｐ（ソフトウエア拡張機能１００）」のライセンス情報が保存されているが、実施例１では存在しないものとして扱う。
【００５９】
次に、Ｓ１００９にて、ライセンス管理モジュール３０２はＳ１００７の処理を実行したかを判断する。Ｙｅｓ（実行した）の場合、Ｓ１０１０へ進み、Ｎｏ（実行していない）場合、Ｓ１０１１へ進む。
【００６０】
Ｓ１０１０にて、ライセンス管理モジュール３０２は本フローで作成したリクエストデータを用いて、ライセンス認証、ライセンス返却の処理を同時に実施する。前記処理を受け付けたライセンスサーバ１２０上のライセンス管理ソフトウェア３１０は、受信したリクエストデータを基にデータベース（ライセンス管理部３１１）を更新する。具体的には、ライセンス認証であれば、クライアント１１０に発行するライセンスに対して、リクエストデータに含まれるライセンス認証用の情報（シリアル番号６０１、ソフトウェアの識別情報６０４、クライアントの機器情報６０６）の紐づけを行う。また、ライセンス返却であれば、データベース内に登録されているライセンス情報に対して、リクエストデータに含まれるライセンス返却用の情報（シリアル番号６０１、ソフトウェアの識別情報６０４、クライアントの機器情報６０６）の紐づけの解除を行う。即ち、データベースから該当するライセンス情報の削除を行う。また、ライセンス管理モジュール３０２は取得したライセンスをライセンス保存部３０３に保存し、返却したライセンスをライセンス保存部３０３から削除する。
【００６１】
Ｓ１０１１にて、ライセンス管理モジュール３０２は本フローで作成したリクエストデータを用いて、ライセンス認証の処理を実施する。Ｓ１０１１における動作は、Ｓ１０１０のライセンス認証に関する動作と同様であるので、説明を省略する。
【００６２】
以上により、保持しているライセンスの状態に応じて、不要となった複数のライセンスを一連のライセンス認証処理で同時に返却することができる。また、従来ライセンスを返却する際は返却するライセンスの回数分の返却操作が必要であったが、ライセンス認証時に複数のライセンス返却を実施するため、返却操作そのものが不要となる。
【実施例２】
【００６３】
［実施例２におけるソフトウェアの処理］
前述した実施例１では、クライアントが保持する不要なライセンスをライセンス認証と同時に返却する手法について説明を行った。しかしながら、前述の実施例１だけではライセンスを返却すべきでない場合にも、ライセンスを返却してしまうという問題が未だ残る。
【００６４】
その問題について具体的に説明する。ソフトウェア拡張機能３０４を有するアドインソフトのライセンス認証を実施する際に、ソフトウェア３００のライセンス認証で使用したシリアル番号と別のシリアル番号を使用した場合、実施例１においてはソフトウェア３００のライセンスが返却されてしまう。つまり、クライアント１１０にはソフトウェア３００がインストールされているにも拘らず、ライセンス保存部３０３にはソフトウェア拡張機能３０４のライセンスしか存在しない状態になるため、ソフトウェア３００が起動できなくなるという問題がある。
【００６５】
そこで実施例２では、実施例１に加え、ソフトウェア拡張機能３０４のライセンス認証が行われた場合に、本体ソフトウェア３００のライセンス返却を実施しない手法について説明する。本実施例において、システム構成やアプリケーションのＵＩなど、実施例１と同様の説明は割愛する。
【００６６】
図９は、ソフトウェア拡張機能３０４の処理のフロー図である。図１のクライアント１１０上で動作するソフトウェア拡張機能３０４を例に処理の流れを説明する。本フローでは、ソフトウェア３００のライセンスを取得済みの状態で、ソフトウェア拡張機能３０４のライセンス認証を実施した際に、ライセンスの返却が不要なライセンスを判断し、返却しない手段を示す。各判断ステップを実行することによりライセンスの状態を確認し、確認の結果、ライセンスの返却を行うことが特徴である。
【００６７】
本項の図９では、図８と重複した部分についての説明を割愛する。
【００６８】
Ｓ１１０１にて、ライセンス管理モジュール３０２はＳ１００１にて取得したライセンス情報内に、ライセンス認証を実施しようとしたソフトウェア３００のアップグレードコードが存在するかを判断する。Ｙｅｓ（存在する）の場合、Ｓ１００７へ進み、Ｎｏ（存在しない）の場合、Ｓ１００８へ進む。
【００６９】
Ｓ１１０１について具体的に説明する。ここでＳ１００１にて取得したライセンス情報とは、例えば、ライセンステーブル５００におけるライセンス取得済みの本体ソフトウェア３００のソフトウェアの識別情報５０４「Ｃ１００」のライセンス情報を指す。ライセンステーブル５００には、ソフトウェアの識別情報「Ｃ４００（ソフトウェア４００）、Ｃ１００Ｐ（ソフトウェア拡張機能１００）」のライセンス情報が保存されているが、実施例２では存在しないものとして扱う。また、ライセンス認証を実施しようとしたソフトウェア３００とは、例えば、本体ソフトウェア３００に対するソフトウェア拡張機能３０４を指す。ライセンス情報内に含まれるＵＣ５０５（｛１１１１１１１１−ＦＦＦＦ−ＦＦＦＦ−ＦＦＦＦ−ＦＦＦＦ１１１１１１１１｝）は、ライセンス管理ソフトウェア３１０によってライセンス発行時にライセンスに対して紐づけられた情報であり、ライセンス管理モジュール３０２が本実施例の判断処理に利用する。ここで、ライセンス情報内には、ソフトウェアの識別情報５０４（Ｃ１００）、クライアントの機器情報５０６（００００ＡＡＡＡ２２２２）、シリアル番号５０１（１１１１−１１１１−１１１１−０００１）、ソフトウェアのＵＣ５０５（｛１１１１１１１１−ＦＦＦＦ−ＦＦＦＦ−ＦＦＦＦ−ＦＦＦＦ１１１１１１１１｝）が含まれる。
【００７０】
Ｓ１００７では、返却用リクエストとしてリクエストデータに追加するライセンス情報をＳ１００６、Ｓ１１０１の判断によって次のように決定する。Ｓ１００６によって、返却対象となるライセンステーブル５００内のライセンス情報は、ライセンス認証を実施しようとしたソフトウェア３００のシリアル番号と異なるシリアル番号に紐づいていると判断できる。具体的には、「Ｃ１００」と紐づいているライセンスに、認証を実施しようとしたソフトウェア拡張機能３０４のシリアル番号５０１（１１１１−１１１１−１１１１−０００１）が存在しなれば異なるシリアル番号に紐づいたライセンス情報であると判断できる。
【００７１】
Ｓ１１０１によって、返却対象となるライセンステーブル５００内のライセンス情報は、ライセンス認証を実施しようとしたソフトウェア３００のＵＣと異なるシリアル番号に紐づいていると判断できる。具体的には、「Ｃ１００」と紐づいているライセンス情報内に、認証を実施しようとしたソフトウェア拡張機能３０４のＵＣ５０５（｛７７７７７７７７−ＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ−ＡＡＡＡ７７７７７７７７｝）が存在しなれば、ライセンス情報は認証を実施しようとしたソフトウェア３００と別種のソフトウェアであると判断できる。換言すると、ソフトウェア拡張機能３０４のライセンス認証を行おうとしている場合、ライセンス情報はソフトウェア３００のライセンス情報（Ｃ１００）であると判断できる。
【００７２】
これら判断により、比較した２つのシリアル番号が異なったとしても、ライセンス情報の中にライセンス認証を行うソフトウェアと同一のアップグレードコードが存在しなければ、同一のシリアル番号に基づき発行されたライセンス返却は実施しないようになる。
【００７３】
以上により、複数のライセンスで機能する統合的なソフトウェア３００において、意図しないライセンス返却を防ぐことが可能となる。実施例２では、ライセンス認証しようとしているソフトウェア３００とライセンス情報内の比較情報としてソフトウェアのＵＣ５０５を例に挙げたが、比較情報は前述のＵＣ５０５に限ったものとしない。
【実施例３】
【００７４】
［実施例３におけるソフトウェアの処理］
前述した実施例２では、複数のライセンスで機能する統合的なソフトウェア３００におけるライセンス返却の実施可否の判定を行う手法について説明を行った。しかしながら、前述の実施例２だけではインストールされているソフトウェア拡張機能３０４が動作しない場合に、不要なライセンスがクライアントに残るという問題がある。
【００７５】
その問題について具体的に説明する。一般的にソフトウェア３００に追加可能なソフトウェア拡張機能３０４は、どのバージョンのソフトウェア３００をサポートするか定義されている。また、同様にソフトウェア３００も、どのバージョンのソフトウェア拡張機能３０４をサポートするか定義されている。例えば、ライセンス保存部３０３にソフトウェア３００、ソフトウェア拡張機能３０４の各ライセンスが存在する状態でソフトウェアのアップグレードを実施した場合、新版ソフトウェア３００、旧版ソフトウェア拡張機能３０４のライセンスが存在することになる。ここで、新版ソフトウェア３００が旧版ソフトウェア拡張機能３０４をサポートしていない場合、ライセンス保存部３０３に存在する旧版ソフトウェア拡張機能３０４のライセンスはクライアント１１０上で不要とある。しかしながら、実施例２では、ライセンス情報内に認証しようとしているソフトウェア３００のＵＣが存在しない場合、ライセンス返却をしないという判断を行うため、ライセンス認証を実施しても不要なライセンスが返却されないといった問題がある。
【００７６】
そこで実施例３では、実施例２に加え、認証を実施するソフトウェア３００がサポートしていない機能のライセンスの返却する手法について説明する。本実施例において、システム構成やアプリケーションのＵＩなど、実施例２と同様の説明は割愛する。
【００７７】
図１０は、ソフトウェア３００の処理のフロー図である。図１のクライアント１１０上で動作するソフトウェア３００を例に処理の流れを説明する。本フローでは、ライセンス認証を実施した際、ソフトウェア３００がサポートしていないソフトウェア拡張機能３０４のライセンスが存在した場合、不要なソフトウェア拡張機能３０４のライセンスを返却する手段を示す。各判断ステップを実行することによりライセンスの状態を確認し、確認の結果、ライセンスの返却を行うことが特徴である。
【００７８】
本項の図１０では、図９と重複した部分についての説明を割愛する。Ｓ１２０１にて、ライセンス管理モジュール３０２は、ライセンス認証を行おうとしたソフトウェア３００が、Ｓ１１０１のライセンスのソフトウェアが提供する機能をサポートしているかを判断する。Ｙｅｓ（サポートする）の場合、Ｓ１００８へ進み、Ｎｏ（サポートしない）の場合、Ｓ１００７へ進む。
【００７９】
Ｓ１２０１について具体的に説明する。ここでＳ１１０１のライセンスに関連した機能とは、例えば、ソフトウェア拡張機能３０４の機能を指す。また、サポートしているかの判断は、ソフトウェア３００がサポートしているソフトウェア拡張機能３０４のバージョン（サポートプラグインバージョン７０３）とライセンス情報内に含まれるソフトウェア拡張機能３０４のバージョン５０３を比較して行う。また、サポートプラグインバージョン７０３は、ライセンス管理モジュール３０２によって、現在インストールされているソフトウェアのレジストリ情報７００から取得する。バージョンが一致した場合、ソフトウェア３００はソフトウェア拡張機能３０４をサポートしていると判断し、Ｓ１００７にてソフトウェア拡張機能３０４のライセンスを返却用対象のライセンスとして指定しない。一方、バージョンが一致しなかった場合、ソフトウェア３００はソフトウェア拡張機能３０４をサポートしていないと判断し、ソフトウェア拡張機能３０４のライセンスは返却用のライセンスとして指定する。例えば、図７では、サポートプラグインバージョン７０３は「５」と定義されており、ソフトウェア拡張機能３０４のバージョン７０２が「１」である。そのため、ソフトウェア３００は、インストールされているソフトウェア拡張機能３０４をサポートしておらず、ソフトウェア拡張機能３０４は動作しない。一方、ソフトウェア拡張機能３０４のバージョン７０２が「５」である場合、ソフトウェア３００はインストールされているソフトウェア拡張機能３０４をサポートしているため、ソフトウェア拡張機能３０４は動作する。
【００８０】
以上により、複数のライセンスで機能する統合的なソフトウェア３００において、ソフトウェア３００がサポートしていない不要なライセンスを返却することが可能となる。
【実施例４】
【００８１】
前述した実施例３では、複数のライセンスで機能する統合的なソフトウェア３００における不要なライセンス返却の実施可否の判定を行う手法について説明を行った。しかしながら、実施例３だけでは、本来返却する必要のないライセンスを返却する場合があるという問題が未だある。
【００８２】
その問題について具体的に説明する。例えば、ライセンス保存部３０３にソフトウェア３００、ソフトウェア拡張機能３０４の各ライセンスが存在する状態でソフトウェア３００をアップグレードし、新版ソフトウェア３００のライセンス認証を実施した場合、以下の問題がおきる。
【００８３】
前述の場合、Ｓ１１０１にて、旧版ソフトウェア３００と新版ソフトウェア３００でライセンス認証に使用したシリアル番号が異なる場合、旧版ソフトウェア３００のライセンスは返却される。また、Ｓ１２０１にて、新版ソフトウェア３００が旧版ソフトウェア拡張機能３０４をサポートする場合、旧版ソフトウェア３００のライセンスは返却されない。この２つの処理は、旧版ソフトウェア３００と旧版ソフトウェア拡張機能３０４のライセンス情報内に含まれるシリアル番号が異ならない場合においても実施される。
【００８４】
実施例１で説明した通り、１つのシリアル番号で複数ライセンスを取得している場合、同じシリアル番号のライセンス情報を持つライセンスを全て返却しない限り、前記シリアル番号は他のコンピュータで使用できない。つまり、旧版ソフトウェア拡張機能３０４のライセンス返却を行わない場合、旧版ソフトウェア３００のライセンス返却も行う必要はない。しかしながら、実施例３は、旧版ソフトウェア３００のライセンス返却を行う必要がないにも拘らず、ライセンス返却を行うという問題がある。
【００８５】
そこで実施例４では、実施例３に加え、ライセンス認証を実施するソフトウェア３００がサポートしていない機能のライセンスの返却を考慮しつつ、返却しても意味のないライセンスは返却しない手法について説明する。本実施例において、システム構成やアプリケーションのＵＩなど、実施例３と同様の説明は割愛する。
【００８６】
図１１は、ソフトウェア３００の処理のフロー図である。図１のクライアント１１０上で動作するソフトウェア３００を例に処理の流れを説明する。本フローでは、ライセンス認証を実施した際、ライセンス保存部３０３のライセンス情報を考慮しつつ、返却対象のライセンスを精査し、ライセンス返却を行う手段を示す。各判断ステップを実行することによりライセンスの状態を確認し、確認の結果、ライセンスの返却を行うことが特徴である。
【００８７】
本項の図１１では、図１０と重複した部分についての説明を割愛する。Ｓ１３０１にて、ライセンス管理モジュール３０２は、Ｓ１００１にて取得したライセンス情報が１つかどうかを判断する。Ｙｅｓ（１つ）の場合、Ｓ１００７へ進み、Ｎｏ（２つ以上）の場合、Ｓ１３０２へ進む。
【００８８】
Ｓ１３０２にて、ライセンス管理モジュール３０２は、Ｓ１００１にて取得したライセンス情報の比較処理を実施する。ここで、Ｓ１００６の判断で使用したライセンスを（Ａ）と定義し、Ｓ１３０２の比較処理で使用するライセンスを（Ｂ）と定義する。Ｓ１３０２にて、ライセンス管理モジュール３０２は、ライセンス（Ａ）情報内のシリアル番号５０１とライセンス（Ｂ）情報内のシリアル番号５０１が異なるかを判断する。Ｙｅｓ（異なる）の場合、Ｓ１３０５へ進み、Ｎｏ（異ならない）の場合、Ｓ１３０３へ進む。
【００８９】
Ｓ１３０２について具体的に説明する。ここでＳ１３０２では、２つのシリアル番号を比較することでライセンス返却を実施して効果のあるライセンスであるかどうかを判断する。Ｓ１１０１により、ライセンス（Ａ）はソフトウェアのＵＣ５０５を保持しているため、ライセンス（Ａ）は旧版ソフトウェア３００のライセンスであることが判断できる。そして、Ｓ１３０２によって、ライセンス（Ｂ）とシリアル番号５０１が異なれば、旧版ソフトウェア３００のライセンスは他のコンピュータで利用できるため、ライセンス返却を実施して効果のあるライセンスということが判断できる。ただし、ライセンス（Ａ）と比較するライセンス（Ｂ）は、Ｓ１００１にて取得した全てのライセンスが該当するため、一つでもシリアル番号が一致した場合、更にＳ１３０３以降の判断が必要となる。
【００９０】
Ｓ１３０３にて、ライセンス管理モジュール３０２は、ライセンス（Ｂ）情報内にライセンス認証を行おうとしたソフトウェアのＵＣ５０５が存在するかを判断する。Ｙｅｓ（存在する）の場合、Ｓ１３０５へ進み、Ｎｏ（存在しない）の場合、Ｓ１３０４へ進む。
【００９１】
Ｓ１３０３について具体的に説明する。ここでＳ１３０３は、ライセンス（Ｂ）が旧版ソフトウェア３００のライセンス、旧版ソフトウェア拡張機能３０４のライセンスのどちらかを判断する。ソフトウェア３００のアップグレードが存在すれば、ライセンス（Ｂ）は旧版ソフトウェア３００のライセンスであり、存在しなければ、ライセンス（Ｂ）は旧版ソフトウェア拡張機能３０４のライセンスであると判断できる。
【００９２】
Ｓ１３０４にて、ライセンス管理モジュール３０２は、ライセンス認証を行おうとしたソフトウェア３００が、ライセンス（Ｂ）の機能をサポートしているかを判断する。Ｙｅｓ（サポートする）の場合、Ｓ１００８へ進み、Ｎｏ（サポートしない）の場合、Ｓ１３０５へ進む。ここで、ライセンス（Ｂ）の機能をサポートしているかを判断する手法については、Ｓ１２０１と同様であるため説明を割愛する。
【００９３】
Ｓ１３０４について具体的に説明する。ここでＳ１３０４は、新版ソフトウェア３００が旧版ソフトウェア拡張機能３０４をサポートしているかを判断する。サポートしている場合、旧版ソフトウェア拡張機能３０４と同一のシリアル番号を持つライセンスは、ライセンス返却を実施しても効果のないライセンスと判断できる。
【００９４】
次に、Ｓ１３０５にて、ライセンス管理モジュール３０２は、Ｓ１３０２で処理していないライセンス（Ｂ）が存在するかを判断する。Ｙｅｓ（存在する）の場合、Ｓ１３０２へ進み、Ｎｏ（存在しない）場合、Ｓ１００７へ進む。
【００９５】
以上により、複数のライセンスで機能する統合的なソフトウェアにおいて、クライアントが保持しているライセンスの状態に応じて、ライセンスを返却して効果のあるライセンスのみを判断して返却することが可能になる。
【００９６】
〔その他の実施例〕
本願発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。さらに、本願発明には、上述した実施形態の適宜組み合わせることにより構成されたシステムやその機能も含まれるものとする。
【符号の説明】
【００９７】
１１０  クライアント
１２０  ライセンスサーバ
３００  ソフトウェア
３０１  ライセンス認証ソフトウェア
３０２  ライセンス管理モジュール
３０３  ライセンス保持部
３０４  ソフトウェア拡張機能
３１０  ライセンス管理ソフトウェア
３１１  ライセンス管理部
【図１】
2017021538.tif 000003
【図２】
2017021538.tif 000004
【図３】
2017021538.tif 000005
【図４】
2017021538.tif 000006
【図５】
2017021538.tif 000007
【図６】
2017021538.tif 000008
【図７】
2017021538.tif 000009
【図８】
2017021538.tif 000010
【図９】
2017021538.tif 000011
【図１０】
2017021538.tif 000012
【図１１】
2017021538.tif 000013