(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを、外部ネットワークに接続されていない２以上の装置の間で移行するライセンス移行ツールであって、
前記ライセンスキーは、前記ライセンスキーが登録されている装置を識別する識別子を含み、
ライセンスの移行元の前記装置である第１装置から、前記ライセンスキーを取得するキー取得手段と、
ライセンスの移行先の前記装置である第２装置から、前記第２装置を識別する第２識別子を取得する識別子取得手段と、
前記第１装置から取得した前記ライセンスキーから、前記第１装置を識別する第１識別子を削除して、前記第２装置の前記第２識別子を前記識別子として追加して、新しい前記ライセンスキーを生成し、前記第２装置に新しい前記ライセンスキーを供給する再生成手段と、
を備えるライセンス移行ツール。
【請求項２】
前記ライセンスキーは、前記アプリケーションプログラムの１ライセンス毎に割り振られた識別コードと、前記ライセンスキーが登録されている前記装置を識別する前記識別子と、前記ライセンスキーの移行回数を示す情報と、を含む、
請求項１に記載のライセンス移行ツール。
【請求項３】
前記ライセンスキーを有する前記第２装置は、前記ライセンスキーに含まれる前記識別子が、前記第２装置を識別する前記第２識別子と一致する場合に、前記アプリケーションプログラムを実行する、
請求項１または２に記載のライセンス移行ツール。
【請求項４】
前記再生成手段が、新しい前記ライセンスキーを前記第２装置に供給した後に、前記第１装置に前記ライセンスキーを再度登録することができないことを示す無効化キーを生成し、前記第１装置に前記無効化キーを供給する無効化キー生成手段、
を備える請求項１または３に記載のライセンス移行ツール。
【請求項５】
前記無効化キー生成手段は、前記第１装置から取得した前記ライセンスキーを複製し、複製したキーに、そのキーが無効であることを示す値を設定して、前記無効化キーを生成する、
請求項４に記載のライセンス移行ツール。
【請求項６】
前記第２装置は、前記無効化キーを有している場合、前記無効化キーと対応する前記ライセンスキーを受け付けない、
請求項４または５に記載のライセンス移行ツール。
【請求項７】
前記再生成手段は、前記第２装置が新しい前記ライセンスキーに対応する前記無効化キーを有している場合、新しい前記ライセンスキーを前記第２装置に供給しない、
請求項４または５に記載のライセンス移行ツール。
【請求項８】
前記装置は、プログラマブルロジックコントローラである、
請求項１から７のいずれか１項に記載のライセンス移行ツール。
【請求項９】
アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを、外部ネットワークに接続されていない２以上の装置の間で移行するコンピュータに、
ライセンスの移行元の前記装置である第１装置から、前記ライセンスキーを取得させ、
ライセンスの移行先の前記装置である第２装置から、前記第２装置を識別する第２識別子を取得させ、
前記第１装置から取得した前記ライセンスキーから、前記第１装置を識別する第１識別子を削除して、前記第２装置の前記第２識別子を追加して、新しい前記ライセンスキーを生成させ、
前記第２装置に新しい前記ライセンスキーを供給させる、
プログラム。
【請求項１０】
アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを移行ツールが第１装置から第２装置へ移行するライセンス移行システムであって、
前記第１装置および前記第２装置は、外部ネットワークに接続されておらず、
前記ライセンスキーは、前記ライセンスキーが登録されている装置を識別する識別子を含み、
前記移行ツールは、
ライセンスの移行元の前記第１装置から、前記ライセンスキーを取得するキー取得手段と、
ライセンスの移行先の前記第２装置から、前記第２装置を識別する第２識別子を取得する識別子取得手段と、
前記第１装置から取得した前記ライセンスキーから、前記第１装置を識別する第１識別子を削除して、前記第２装置の前記第２識別子を前記識別子として追加して、新しい前記ライセンスキーを生成し、前記第２装置に新しい前記ライセンスキーを供給する再生成手段と、
を備え、
前記第１装置は、
前記ライセンスキーを記憶するライセンスキー記憶手段と、
前記移行ツールから前記ライセンスキーを要求されると、前記移行ツールに前記ライセンスキー記憶手段が記憶する前記ライセンスキーを送信する送信手段と、
を備え、
前記第２装置は、
前記移行ツールから前記識別子を要求されると、前記移行ツールに前記識別子を送信する識別子送信手段と、
前記移行ツールから供給された前記ライセンスキーを前記第２装置が有する前記ライセンスキー記憶手段に格納する格納手段と、
を備える、
ライセンス移行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライセンス移行ツール、プログラム、及びライセンス移行システムに関する。
【背景技術】
【０００２】
市場で製品として販売されているアプリケーションプログラムの不正利用を防止するため、アプリケーションプログラムの販売元が管理するライセンス管理サーバとアプリケーションプログラムがインストールされた装置とがネットワークを介して通信し、ライセンス管理サーバがライセンス認証を行うことがある。【０００３】
また、装置からアンインストールしたアプリケーションプログラムを、他の装置にインストールすることがある。この場合、アプリケーションプログラムのライセンスを移行する必要がある。【０００４】
例えば、特許文献１には、次のようにライセンスを移行することが記載されている。ライセンスの移行元である装置は、アプリケーションプログラムがアンインストールされると、アンインストール証明コードを生成し、ライセンス管理サーバにアンインストール証明コードを送信する。ライセンスの移行先の装置は、固有識別コードを生成し、ライセンス管理サーバに固有識別コードを送信する。ライセンス管理サーバは、受信したアンインストール証明コードと固有識別コードとが正当か否かを判別し、正当である場合にライセンス移行を許可する。ライセンス移行を許可する場合、ライセンス管理サーバは、インストール許可通知をライセンスの移行先の装置に送信する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２４５１６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載された構成では、ライセンスの移行元の装置とライセンスの移行先の装置とが、ネットワークを介してライセンス管理サーバと通信可能であることが必要である。しかし、ライセンスの移行元の装置とライセンスの移行先の装置とが、ネットワークを介してライセンス管理サーバと通信することができない場合もある。例えば、ファクトリーオートメーションの分野で使用されるコントローラは、セキュリティの観点から、外部のネットワークに接続されていないことがある。このように、ライセンスの移行元の装置とライセンスの移行先の装置とが、ネットワークを介してライセンス管理サーバと通信することが不可能である場合には、ライセンス管理サーバを介したライセンス移行を実行することができない。【０００７】
本発明は上記実情に鑑みなされたものであり、ライセンス管理サーバと通信することができないスタンドアロンの装置間でライセンスを移行することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係るライセンス移行ツールは、アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを、外部ネットワークに接続されていない２以上の装置の間で移行する。ライセンスキーは、ライセンスキーが登録されている装置を識別する識別子を含む。ライセンス移行ツールが備えるキー取得手段は、ライセンスの移行元の装置である第１装置から、ライセンスキーを取得する。ライセンス移行ツールが備える識別子取得手段は、ライセンスの移行先の装置である第２装置から、第２装置を識別する第２識別子を取得する。ライセンス移行ツールが備える再生成手段は、第１装置から取得したライセンスキーから、第１装置を識別する第１識別子を削除して、第２装置の第２識別子を識別子として追加して、新しいライセンスキーを生成し、第２装置に新しいライセンスキーを供給する。
【発明の効果】
【０００９】
本発明に係るライセンス移行ツールは、ライセンスの移行元の装置である第１装置から、ライセンスキーを取得し、ライセンスの移行先の装置である第２装置から、第２装置を識別する第２識別子を取得する。ライセンス移行ツールは、第１装置から取得したライセンスキーから、第１装置を識別する第１識別子を削除して、第２装置の第２識別子を識別子として追加して、新しいライセンスキーを生成し、第２装置に新しいライセンスキーを供給する。このような構成を備えることで、ライセンス管理サーバと通信することができないスタンドアロンの装置間でライセンスを移行することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係るライセンス管理システムの機能構成を示すブロック図
【図２】実施の形態に係るライセンス管理システムのハードウェア構成を示す図
【図３】実施の形態に係るＰＬＣのプログラム記憶部の構成を示す図
【図４】実施の形態に係るＰＬＣのライセンスキー記憶部の構成を示す図
【図５】実施の形態に係るライセンスキーの構成を示す図
【図６】実施の形態に係るアプリケーション適合テーブルに格納されるデータの一例を示す図
【図７】実施の形態に係る購入ライセンステーブルに格納されるデータの一例を示す図
【図８】実施の形態に係るライセンス登録テーブルに格納されるデータの一例を示す図
【図９】実施の形態に係るライセンス管理ツールのメニュー画面の一例を示す図
【図１０】実施の形態に係るライセンス管理ツールのライセンス発行要求処理のフローチャート
【図１１Ａ】実施の形態に係るライセンスキーの登録の対象を選択する選択画面の一例を示す図
【図１１Ｂ】実施の形態に係るライセンスキーの登録完了画面の一例を示す図
【図１１Ｃ】実施の形態に係るライセンスキーの登録の失敗を通知する画面の一例を示す図
【図１２】実施の形態に係るライセンス管理サーバのライセンス発行処理のフローチャート
【図１３】実施の形態に係るライセンス管理ツールのライセンス移行処理のフローチャート（前半）
【図１４】実施の形態に係るライセンス管理ツールのライセンス移行処理のフローチャート（後半）
【図１５Ａ】実施の形態に係るライセンスキーの移行の対象を選択する選択画面の一例を示す図
【図１５Ｂ】実施の形態に係るライセンスキーの移行の際のＰＬＣの接続の切り替え指示画面の一例を示す図
【図１５Ｃ】実施の形態に係るライセンスキーの移行完了画面の一例を示す図
【図１６Ａ】実施の形態に係るライセンス管理ツールのライセンス情報更新処理のフローチャート
【図１６Ｂ】実施の形態に係るライセンス管理サーバのライセンス情報更新処理のフローチャート
【発明を実施するための形態】
【００１１】
（実施の形態）
以下、本発明の実施の形態に係るライセンス管理システムについて、図面を参照しつつ詳細に説明する。
【００１２】
図１に示すライセンス管理システム１は、プログラマブルロジックコントローラ１０１及び１０２が実行するアプリケーションプログラムのライセンスを管理する。ライセンス管理システム１は、工場内の生産ラインで使用されるプログラマブルロジックコントローラのライセンスの登録を管理するライセンス管理ツール５００と、ライセンスを発行するライセンス管理サーバ６００とを含む。
【００１３】
プログラマブルロジックコントローラ１０１及び１０２は、工場内の生産ラインで使用される機械装置（不図示）を制御する制御装置である。以下、プログラマブルロジックコントローラ１０１及び１０２をひとまとめにしてプログラマブルロジックコントローラ１００（ＰＬＣ１００）と称することがある。
【００１４】
ライセンス管理ツール５００として、例えば、プログラマブルロジックコントローラ１００と同じ工場内にあり、専用のプログラムをインストールしたパーソナルコンピュータが使用される。ライセンス管理サーバ６００は、例えば、アプリケーションプログラムを開発・販売するメーカの管理下にあるサーバである。
【００１５】
ＰＬＣ１００は、製品として販売されているアプリケーションプログラムを実行することにより、例えば、工場内の内部ネットワーク（不図示）を介して接続されている機械装置を制御する。ＰＬＣ１００は、アプリケーションプログラムを実行するため、アプリケーションプログラムの使用が許諾されていることを示すライセンスを有している必要がある。実施の形態においては、ＰＬＣ１００は、アプリケーションプログラムのライセンスキー有している場合に、そのアプリケーションプログラムを実行することができる。ライセンスキーは、ＰＬＣ１００がライセンスを有していることを示すコードである。ライセンス管理サーバ６００がライセンスキーを発行する。
【００１６】
ＰＬＣ１００は、外部ネットワークに接続されておらず、ライセンス管理サーバ６００と通信することができない。外部ネットワークは、インターネットのようなオープンなネットワークである。一方、ライセンス管理ツール５００は、外部ネットワークを介してライセンス管理サーバ６００と通信できる。このため、ライセンス管理ツール５００が、ＰＬＣ１００に代わり、ライセンス管理サーバ６００からライセンスキーを取得し、取得したライセンスキーをＰＬＣ１００に供給する。
【００１７】
さらに、実施の形態に特徴的な構成として、ライセンス管理ツール５００は、ライセンスキーの移行に係る処理を行う。ライセンスキーの移行とは、あるアプリケーションプログラムについてのライセンスキーを有しているＰＬＣ１００から、他のＰＬＣ１００にライセンスキーを移すことである。ライセンスキーを有するようになったＰＬＣ１００は、そのアプリケーションプログラムを実行できるようになる。一方、ライセンスキーを有しなくなったＰＬＣ１００は、そのアプリケーションプログラムを実行できなくなる。
【００１８】
図２に示すように、ＰＬＣ１００はハードウェア構成として、各種プログラム及びデータを記憶するメモリ１１と、通信ケーブル７０１を介してライセンス管理ツール５００との間でデータを授受する入出力インタフェース１２と、ＰＬＣ１００全体を制御するＭＰＵ（Micro Processing Unit）１３と、を有する。メモリ１１と入出力インタフェース１２とは、バス１９を介してＭＰＵ１３に接続されており、ＭＰＵ１３と通信する。
【００１９】
メモリ１１は、揮発性メモリと不揮発性メモリとを含む。メモリ１１は、ＰＬＣ１００の各種機能を実現するためのプログラムを記憶する。メモリ１１は、ライセンスキーの格納、取り出し等の処理をＭＰＵ１３に実行させるプログラムであるライセンス管理プログラム１１１を記憶する。さらに、メモリ１１はＭＰＵ１３のワークメモリとして用いられる。メモリ１１は、ＰＬＣ１００を一意に識別するための識別子を記憶する。実施の形態では、ＰＬＣ１００に割り当てられた識別子として、ＰＬＣ１００の製造時にＰＬＣ１００に割り当てられたシリアルコードを使用するものとする。さらに、メモリ１１は、ユーザを識別する情報であるユーザＩＤを記憶する。ＰＬＣ１００のユーザは、例えば、ＰＬＣ１００の管理者である。
【００２０】
入出力インタフェース１２は、例えば、ＵＳＢコントローラを含み、ＭＰＵ１３から供給されたデータを電気信号に変換し、通信ケーブル７０１を介して変換した信号をライセンス管理ツール５００に出力する。通信ケーブル７０１は、例えば、ＵＳＢケーブルである。また、入出力インタフェース１２は、通信ケーブル７０１を介して、ライセンス管理ツール５００が出力した電気信号を受け付け、受け付けた電気信号をデータに復元してＭＰＵ１３に出力する。
【００２１】
ＭＰＵ１３は、メモリ１１に記憶されている各種プログラムを実行して、ＰＬＣ１００の各種機能を実現する。例えば、ライセンス管理プログラム１１１を実行することにより、ライセンスキーの格納、取り出し等の処理を実行する。
【００２２】
ライセンス管理ツール５００は、ハードウェア構成として、各種のプログラム及びデータを記憶するメモリ５１と、通信ケーブル７０１を介してＰＬＣ１００との間でデータを授受する入出力インタフェース５２と、ネットワーク７０２を介してライセンス管理サーバ６００と通信する通信インタフェース５３と、ユーザの入力操作を検出する入力装置５４と、画像を出力する表示装置５５と、ライセンス管理ツール５００全体を制御するＣＰＵ（Central Processing Unit）５６とを有する。メモリ５１と入出力インタフェース５２と通信インタフェース５３と入力装置５４と表示装置５５とは、バス５９を介してＣＰＵ５６に接続されており、それぞれＣＰＵ５６と通信する。
【００２３】
メモリ５１は、揮発性メモリと不揮発性メモリとを含む。メモリ５１は、ライセンス管理ツール５００の各種機能を実現するためのプログラムを格納する。具体的には、メモリ５１は、ライセンス管理プログラム５１１を記憶する。さらに、メモリ５１はＣＰＵ５６のワークメモリとして用いられる。
【００２４】
ライセンス管理プログラム５１１は、ライセンスキーの登録処理と、ライセンスキーの移行処理とをＣＰＵ５６に実行させるプログラムである。
【００２５】
入出力インタフェース５２は、例えば、ＵＳＢコントローラを含み、ＣＰＵ５６から供給されたデータを電気信号に変換し、通信ケーブル７０１を介して変換した信号をＰＬＣ１００に出力する。また、入出力インタフェース５２は、通信ケーブル７０１を介して、ＰＬＣ１００が出力した電気信号を受け付け、受け付けた電気信号をデータに復元してＣＰＵ５６に出力する。
【００２６】
通信インタフェース５３は、ネットワークインタフェース回路を含み、ＣＰＵ５６の制御の下、ネットワーク７０２を介して、ライセンス管理サーバ６００と通信する。ネットワーク７０２は、例えば、インターネットである。
【００２７】
入力装置５４は、マウス、操作キー等を含み、ユーザからの操作入力を受け付け、ユーザの操作入力を示す信号をＣＰＵ５６に出力する。
【００２８】
表示装置５５は、ディスプレイを含み、ＣＰＵ５６から供給される信号に基づく画像をディスプレイに表示する。
【００２９】
ＣＰＵ５６は、メモリ５１に記憶されている各種プログラムを実行して、ライセンス管理ツール５００の各種機能を実現する。具体的には、ＣＰＵ５６は、ライセンス管理プログラム５１１を実行することにより、ＰＬＣ１０１及び１０２にアプリケーションプログラムのライセンスキーを登録する。さらに、ＣＰＵ５６は、ライセンス管理プログラム５１１を実行することにより、例えば、ＰＬＣ１０１が有しているライセンスキーをＰＬＣ１０２に移行する。
【００３０】
ライセンス管理サーバ６００は、ハードウェア構成として、各種のプログラム及びデータを記憶するメモリ６１と、ネットワーク７０２を介してライセンス管理ツール５００と通信する通信インタフェース６２と、ライセンス管理サーバ６００全体を制御するＣＰＵ６３とを有する。メモリ６１と通信インタフェース６２とは、バス６９を介してＣＰＵ６３に接続されており、それぞれＣＰＵ６３と通信する。
【００３１】
メモリ６１は、揮発性メモリと不揮発性メモリとを含む。メモリ６１は、ライセンス管理サーバ６００の各種機能を実現するためのプログラムを格納する。具体的には、メモリ６１は、ライセンス管理プログラム６１１を記憶する。さらに、メモリ５１はＣＰＵ５６のワークメモリとして用いられる。
【００３２】
ライセンス管理プログラム６１１は、ライセンスキーを発行する処理と、ライセンスの登録に関する情報を管理する処理とをＣＰＵ６３に実行させるプログラムである。
【００３３】
通信インタフェース６２は、ネットワークインタフェース回路を含み、ＣＰＵ６３の制御の下、ネットワーク７０２を介して、ライセンス管理サーバ６００と通信する。
【００３４】
ＣＰＵ６３は、メモリ６１に記憶されている各種プログラムを実行して、ライセンス管理サーバ６００の各種機能を実現する。具体的には、ＣＰＵ６３は、ライセンス管理プログラム６１１を実行することによりライセンスキーを発行する。
【００３５】
次に、図１を参照して、ＰＬＣ１００の機能構成を説明する。ＰＬＣ１００は、機能的には、アプリケーションプログラムを記憶するプログラム記憶部１１０と、ライセンスキーを記憶するライセンスキー記憶部１２０と、無効化キーを記憶する無効化キー記憶部１３０と、ＰＬＣ１００がアプリケーションプログラムを実行する前にライセンスキーが正当なものであるか否かを判別するライセンス確認部１４０と、ライセンス管理ツール５００との間でライセンスキーを授受するライセンス送受信部１５０と、アプリケーションプログラムを実行するプログラム実行部１６０とを含む。
【００３６】
プログラム記憶部１１０は、ＰＬＣ１００が実行するアプリケーションプログラムを記憶する。アプリケーションプログラムは、製品として販売されているプログラムを含む。図３に示すように、プログラム記憶部１１０は、ユーザが購入したアプリケーションプログラム１１０１〜１１０３を記憶しているとする。ＰＬＣ１００は、アプリケーションプログラム１１０１〜１１０３を実行するためには、それぞれのアプリケーションキーを有している必要がある。以下、アプリケーションプログラム１１０１〜１１０３をまとめてアプリケーションプログラム１１００と称することがある。プログラム記憶部１１０の機能は、図２に示すメモリ１１により実現される。
【００３７】
図１に示すライセンスキー記憶部１２０は、ＰＬＣ１００が実行するアプリケーションプログラム１１００それぞれに対応するライセンスキーを記憶する。図３に示すように、プログラム記憶部１１０がアプリケーションプログラム１１０１〜１１０３を記憶しているとする。この場合、図４に示すように、ライセンスキー記憶部１２０は、アプリケーションプログラム１１０１〜１１０３にそれぞれ対応するライセンスキー１２０１〜１２０３を記憶する。以下、ライセンスキー１２０１〜１２０３をまとめてライセンスキー１２００と称することがある。ライセンスキー記憶部１２０は、本発明のライセンスキー記憶手段の一例である。
【００３８】
ライセンスキー１２００は、図１に示すライセンス管理ツール５００から供給される。後述のライセンス送受信部１５０は、ライセンス管理ツール５００から供給されたライセンスキー１２００をライセンスキー記憶部１２０に格納する。ライセンスキー記憶部１２０の機能は、図２に示すメモリ１１により実現される。ライセンスキー記憶部１２０は、メモリ１１の、ユーザが参照することができない領域に設けられることが望ましい。ライセンス送受信部１５０は、本発明の格納手段の一例である。
【００３９】
図４に示すように、ライセンスキー記憶部１２０は、ライセンスキー１２００と、アプリケーションプログラム１１００を特定するアプリケーションＩＤとを記憶する。図５に示すように、ライセンスキー１２００は、ライセンスコード１２００ａと、装置ＩＤ１２００ｂと、移行カウンタ１２００ｃと、無効化フラグ１２００ｄとを含む。
【００４０】
ライセンスコード１２００ａは、アプリケーションプログラム１１００の１ライセンス毎に割り振られた識別コードである。実施の形態では、１ライセンスで、１つのＰＬＣ１００がアプリケーションプログラム１１００を実行できるものとする。
【００４１】
装置ＩＤ１２００ｂは、アプリケーションプログラム１１００がインストールされているＰＬＣ１００を一意に識別するための識別子である。装置ＩＤ１２００ｂには、ライセンスキー１２００が登録されているＰＬＣ１００の識別子がセットされている。
【００４２】
ＰＬＣ１００は、アプリケーションプログラム１１００の実行時に、ライセンスキー１２００の装置ＩＤ１２００ｂが自機の識別子と一致するか否かを判別する。ＰＬＣ１００は、ライセンスキー１２００の装置ＩＤ１２００ｂが自機の識別子と一致すると判別すると、アプリケーションプログラム１１００を実行する。一方、ＰＬＣ１００は、ライセンスキー１２００の装置ＩＤ１２００ｂが自機の識別子と一致しないと判別すると、アプリケーションプログラム１１００を実行しない。このような構成によりアプリケーションプログラム１１００を実行するべきでないＰＬＣ１００がアプリケーションプログラム１１００を実行することがないよう制御することができる。
【００４３】
ライセンスキー１２００の初回発行時には、ライセンス管理サーバ６００がライセンスキー１２００を生成する。このため、ライセンス管理サーバ６００には、ライセンス管理ツール５００からＰＬＣ１００の識別子が供給される。ライセンス管理サーバ６００は、装置ＩＤ１２００ｂとしてＰＬＣ１００の識別子をライセンスキー１２００にセットする。ライセンスキー１２００の移行時には、ライセンス管理ツール５００がライセンスキー１２００を再生成する。この場合、ライセンス管理ツール５００が、装置ＩＤ１２００ｂとして移行先のＰＬＣ１００の識別子をライセンスキー１２００にセットする。
【００４４】
移行カウンタ１２００ｃには、アプリケーションプログラム１１００のライセンスが移行された回数である移行回数を示す値が格納される。移行カウンタ１２００ｃの値は、ライセンスキー１２００が初回に生成されたときは初期値、例えば、“０”である。移行カウンタ１２００ｃの値は、ライセンスキー１２００が再生成されるタイミングで、“１”加算される。
【００４５】
ライセンス管理サーバ６００は、ライセンスキー１２００の生成時に、移行カウンタ１２００ｃの値に初期値をセットする。ライセンス管理ツール５００は、移行処理において、ライセンスキー１２００の移行カウンタ１２００ｃの値を決められた数だけ、例えば、“１”を、加算する。
【００４６】
例えば、ＰＬＣ１００の管理者がアプリケーションプログラム１１０１を１ライセンス購入したとする。管理者が、最初にＰＬＣ１０１にアプリケーションプログラム１１０１をインストールし、ライセンス管理ツール５００を介して、ＰＬＣ１０１にアプリケーションプログラム１１０１に対応するライセンスキー１２００を登録したとする。このとき、移行カウンタ１２００ｃの値は初期値、例えば、“０”である。その後、ＰＬＣ１０１の動作不良といった何らかの事情により、ＰＬＣ１０１がアプリケーションプログラム１１０１を実行することができなくなったとする。ＰＬＣ１００の管理者が、ＰＬＣ１０２にアプリケーションプログラム１１０１をインストールし、ライセンス管理ツール５００を使用して、アプリケーションプログラム１１０１のライセンスキー１２００をＰＬＣ１０２に移行したとする。このときの移行カウンタ１２００ｃの値は、初期値に“１”が加算された値、即ち、“１”である。
【００４７】
無効化フラグ１２００ｄは、ライセンスキー１２００が無効化キーであるか否かを示す値を持つ。無効化キーは、ライセンスキー１２００の不正使用を防止するために使用される。無効化キーは、ライセンスキー１２００を他のＰＬＣ１００に移行したときに、移行元のＰＬＣ１００に保存される。
【００４８】
ライセンスキー１２００が有効なキーであることを示す値として、例えば、無効化フラグ１２００ｄに“０”がセットされる。無効化フラグ１２００ｄの値が、例えば、“１”であることは、そのキーが無効化キーであることを示す。
【００４９】
ライセンス管理ツール５００は、ライセンスキー１２００を移行する際に、移行するライセンスキー１２００をコピーし、コピーしたキーの無効化フラグ１２００ｄに“１”をセットして、無効化キーを生成し、移行元のＰＬＣ１００に無効化キーを保存する。
【００５０】
ＰＬＣ１００は、ライセンス管理ツール５００から、ライセンスキー１２００の無効化フラグ１２００ｄを除く部分が一致する無効化キーが供給された場合、供給されたライセンスキー１２００を受け付けない。
【００５１】
図１に示す無効化キー記憶部１３０は、無効化キーを記憶する。前述のように、ライセンス管理ツール５００は、ライセンスキー１２００の移行時に無効化キーを移行元のＰＬＣ１００に発行する。このため、無効化キー記憶部１３０は、ライセンス管理ツール５００から無効化キーが供給された場合のみ無効化キーを記憶する。無効化キー記憶部１３０の機能は、図２に示すメモリ１１により実現される。無効化キー記憶部１３０は、メモリ１１の、ユーザが参照することができない領域に設けられることが望ましい。
【００５２】
無効化キーを利用することでライセンスキー１２００の不正使用を防止することができる。以下に、無効化キーを使用しない場合に想定される不正使用の例を説明する。
【００５３】
例えば、ライセンスキー１２００の初回の発行時には、ライセンス管理サーバ６００がライセンスキー１２００の装置ＩＤ１２００ｂとしてＰＬＣ１０１の識別子を含むライセンスキー１２００を生成し、ライセンス管理ツール５００にライセンスキー１２００を送信する。このとき、ユーザあるいは他の者が、ライセンス管理ツール５００に保存されたＰＬＣ１０１用のライセンスキー１２００をメモリ５１内のある領域にコピーしたとする。ＰＬＣ１０１にライセンスキー１２００が登録された後、ユーザあるいは他の者が、ライセンス管理ツール５００を操作して、ライセンスキー１２００をＰＬＣ１０２に移行したとする。さらに、ユーザあるいは他の者が、コピーしておいたＰＬＣ１０１用のライセンスキー１２００をＰＬＣ１０１に再び登録したとする。この場合、ＰＬＣ１０１用のライセンスキー１２００をＰＬＣ１０１に登録することができてしまい、１ライセンスのみの購入で２つのＰＬＣ１００でアプリケーションプログラム１１００を実行することが可能となってしまう。
【００５４】
また、例えば、ユーザあるいは他の者が、ライセンス管理ツール５００を操作して、ＰＬＣ１０１に登録されているライセンスキー１２００をＰＬＣ１０１からＰＬＣ１０２に移行する処理の最中に、ＰＬＣ１０１から取得したライセンスキー１２００を、例えば、メモリ５１内のある領域にコピーしたとする。ライセンス管理ツール５００により再生成されたライセンスキー１２００が移行先のＰＬＣ１０２に登録された後、ユーザあるいは他の者が、コピーしておいたＰＬＣ１０１用のライセンスキー１２００をＰＬＣ１０１に再び登録したとする。この場合も、ＰＬＣ１０１用のライセンスキー１２００をＰＬＣ１０１に登録することができてしまい、１ライセンスのみの購入で２つのＰＬＣ１００でアプリケーションプログラム１１００を実行できてしまう。
【００５５】
このような不正利用を防止するため、ライセンスキー１２００を移行する場合に、ライセンス管理ツール５００は、移行元のＰＬＣ１００が有していたライセンスキー１２００から無効化キーを生成し、無効化キーを移行元のＰＬＣ１０１に登録する。
【００５６】
図１に示すライセンス確認部１４０は、ＰＬＣ１００が、アプリケーションプログラム１１００の実行に必要なライセンスキー１２００を有しているか否かを確認する。
【００５７】
具体的には、ライセンス確認部１４０は、図４に示すライセンスキー記憶部１２０にアプリケーションプログラム１１００に対応するライセンスキー１２００が存在するか否かを判別する。ライセンス確認部１４０は、ライセンスキー記憶部１２０にライセンスキー１２００が存在する場合、ライセンスキー１２００の装置ＩＤ１２００ｂの値が、メモリ１１に格納されているＰＬＣ１００の識別子と一致するか否かに応じて、ライセンスキー１２００が有効であるか否かを判別する。ライセンス確認部１４０は、ライセンスキー１２００が有効に存在するか否かをプログラム実行部１６０に通知する。ライセンス確認部１４０の機能は、図２に示すＭＰＵ１３により実現される。
【００５８】
図１に示すライセンス送受信部１５０は、ライセンス管理ツール５００からライセンスキー１２００を受信し、そのライセンスキー１２００が登録可能か判別する。ライセンス送受信部１５０は、供給されたライセンスキー１２００が登録可能であると判別した場合、そのライセンスキー１２００をライセンスキー記憶部１２０に格納する。
【００５９】
具体的には、ライセンス送受信部１５０は、受信したライセンスキー１２００の無効化フラグ１２００ｄを除く部分が一致する無効化キーが、無効化キー記憶部１３０に格納されているか否かを判別する。ライセンス送受信部１５０は、無効化フラグ１２００ｄを除く部分が一致する無効化キーを有していない場合には、ライセンスキー１２００をライセンスキー記憶部１２０に格納する。一方、ライセンス送受信部１５０は、無効化フラグ１２００ｄを除く部分が一致する無効化キーを有している場合には、ライセンスキー１２００をライセンスキー記憶部１２０に格納しない。
【００６０】
さらに、ライセンス送受信部１５０は、ライセンスキー１２００の新規発行時及び移行時に、ライセンス管理ツール５００からＰＬＣ１００の識別子を要求されると、ＰＬＣ１００の識別子をライセンス管理ツール５００に送信する。ライセンスキー１２００の初回発行時には、ライセンス管理サーバ６００が装置ＩＤ１２００ｂとしてＰＬＣ１００の識別子をライセンスキー１２００にセットする。また、ライセンスキー１２００の移行時には、ライセンス管理ツール５００が装置ＩＤ１２００ｂとしてＰＬＣ１００の識別子をライセンスキー１２００にセットする。ライセンス送受信部１５０は、本発明の識別子送信手段の一例である。
【００６１】
ライセンス送受信部１５０は、ライセンスキー１２００の移行時にライセンス管理ツール５００から保有するライセンスに関するデータを要求されると、ライセンスキー記憶部１２０に格納されているライセンスキー１２００の値の一覧をライセンス管理ツール５００に送信する。
【００６２】
さらに、ライセンス送受信部１５０は、ライセンス管理ツール５００からライセンスキー１２００の取り出しを要求されると、指定されたライセンスキー１２００をライセンスキー記憶部１２０から取り出して、そのライセンスキー１２００をライセンス管理ツール５００に送信する。よって、取り出されたライセンスキー１２００は、ライセンスキー記憶部１２０内に記憶されなくなる。
【００６３】
ライセンス送受信部１５０は、ライセンスキー１２００の移行時に、ライセンス管理ツール５００から無効化キーが供給されると、無効化キーを無効化キー記憶部１３０に格納する。ライセンス送受信部１５０の機能は、図２に示すＭＰＵ１３がライセンス管理プログラム１１１を実行することにより実現される。
【００６４】
図１に示すプログラム実行部１６０は、アプリケーションプログラム１１００を実行する。プログラム実行部１６０は、アプリケーションプログラム１１００を実行するのに先だって、アプリケーションプログラム１１００に対応するライセンスキー１２００が有効に存在するか否かをライセンス確認部１４０に問い合わせる。プログラム実行部１６０は、ライセンス確認部１４０からの応答に基づいてライセンスキー１２００が有効に存在すると判別した場合に、プログラム記憶部１１０に格納されているアプリケーションプログラム１１００を実行する。プログラム実行部１６０の機能は図２に示すＭＰＵ１３により実現される。
【００６５】
続いて、図１に示すライセンス管理ツール５００の機能構成を説明する。ライセンス管理ツール５００は、機能的には、購入済みのアプリケーションプログラム１１００に関するデータを記憶する購入データ記憶部５１０と、新規のライセンスキー１２００をＰＬＣ１００に登録するライセンス登録部５２０と、ライセンスキー１２００を移行するライセンス移行部５３０とを含む。
【００６６】
購入データ記憶部５１０は、ユーザが購入済みのアプリケーションプログラム１１００を特定するため、購入済みアプリケーションプログラム１１００を特定するアプリケ−ションＩＤとアプリケーション名とを記憶する。購入データ記憶部５１０の機能は、図２に示すメモリ５１により実現される。
【００６７】
図１に示すライセンス登録部５２０は、ユーザからライセンスキー１２００の新規発行の指示を受け付けると、ライセンス管理サーバ６００にライセンスキー１２００の発行を要求する発行要求を送信する。ライセンス登録部５２０は、ライセンス管理サーバ６００からライセンスキー１２００が発行されると、ライセンスキー１２００をＰＬＣ１００に送信する。
【００６８】
具体的には、まず、ライセンス登録部５２０は、購入データ記憶部５１０に格納されている購入済みのアプリケーションプログラム１１００のアプリケーション名の一覧を図２に示す表示装置５５に表示する。ユーザがアプリケーションを選択すると、ライセンス登録部５２０は、接続されているＰＬＣ１００にその識別子を要求し、ＰＬＣ１００から識別子を取得する。ライセンス登録部５２０は、ライセンス発行要求をライセンス管理サーバ６００に送信する。ライセンス発行要求には、ＰＬＣ１００のユーザを識別するユーザＩＤと、ＰＬＣ１００から受信したＰＬＣ１００の識別子と、ユーザが指定するアプリケーションプログラム１１００を特定するアプリケーションＩＤと、が含まれている。ライセンス登録部５２０は、ライセンス管理サーバ６００からライセンスキー１２００を受信すると、受信したライセンスキー１２００をＰＬＣ１００に送信する。
【００６９】
一方、ライセンス登録部５２０は、ライセンス管理サーバ６００からライセンスキー１２００を発行ができない旨の通知を受けると、ライセンスキー１２００の登録に失敗したことをユーザに通知する。例えば、ライセンス登録部５２０は、図２に示す表示装置５５にライセンスキー１２００の登録に失敗した旨のメッセージを表示する。ライセンス登録部５２０の機能は、図２に示すＣＰＵ５６が、ライセンス管理プログラム５１１を実行することにより実現される。
【００７０】
図１に示すライセンス移行部５３０は、ユーザからライセンスキー１２００の移行の指示を受け付けると、接続されている移行元のＰＬＣ１００からライセンスキー１２００を取得する。ライセンス移行部５３０は、移行先のＰＬＣ１００に接続されると、移行先のＰＬＣ１００から識別子を取得し、その識別子を含む新たなライセンスキー１２００を再生成し、移行先のＰＬＣ１００に新たなライセンスキー１２００を供給する。ライセンス移行部５３０の機能は、図２に示すＣＰＵ５６が、ライセンス管理プログラム５１１を実行することにより実現される
【００７１】
ライセンス移行部５３０は、キー取得部５３１と、識別子取得部５３２と、再生成部５３３と、無効化キー生成部５３４とを含む。
【００７２】
キー取得部５３１は、ユーザが、ライセンス管理ツール５００と移行元のＰＬＣ１００とを接続し、ライセンスキー１２００の移行の指示を出すと、まず、移行元のＰＬＣ１００が保有するライセンスキー１２００についての情報を移行元のＰＬＣ１００に要求する。キー取得部５３１は、移行元のＰＬＣから受信したライセンスキー１２００についての情報をユーザに提示する。キー取得部５３１は、ユーザから指定されたライセンスキー１２００の取り出しを移行元のＰＬＣ１００に要求する。キー取得部５３１は、移行元のＰＬＣ１００からライセンスキー１２００を取得すると、ライセンスキー１２００を再生成部５３３に供給する。キー取得部５３１は、本発明のキー取得手段の一例である。
【００７３】
識別子取得部５３２は、ユーザがライセンス管理ツール５００と移行先のＰＬＣ１００とを接続すると、移行先のＰＬＣ１００に識別子を要求する。識別子取得部５３２は、移行先のＰＬＣ１００から識別子を取得すると、識別子を再生成部５３３に供給する。識別子取得部５３２は、本発明の識別子取得手段の一例である。
【００７４】
再生成部５３３は、キー取得部５３１が移行元のＰＬＣ１００からライセンスキー１２００を取得すると、ライセンスキー１２００を再生成する前に、無効化キーの生成を無効化キー生成部５３４に指示する。再生成部５３３は、無効化キー生成部５３４が無効化キーを生成した後、ライセンスキー１２００を再生成する。再生成部５３３は、本発明の再生成手段の一例である。
【００７５】
再生成部５３３は、キー取得部５３１が移行元のＰＬＣ１００から取得したライセンスキー１２００から、装置ＩＤ１２００ｂとしてセットされている移行元のＰＬＣ１００の識別子を削除する。再生成部５３３はそのライセンスキー１２００の装置ＩＤ１２００ｂとして、移行先のＰＬＣ１００の識別子をセットする。さらに、再生成部５３３は、ライセンスキー１２００の移行カウンタ１２００ｃの値を１つ増やす。このようにして、再生成部５３３はライセンスキー１２００を再生成する。再生成部５３３は、再生成したライセンスキー１２００を移行先のＰＬＣ１００に送信する。
【００７６】
その後、再生成部５３３は、移行したライセンスキーの情報をライセンス管理サーバ６００に送信する。移行したライセンスキーの情報は、ＰＬＣ１００のユーザを識別するユーザＩＤと、移行先のＰＬＣ１００に送信したライセンスキー１２００と、移行先のＰＬＣ１００の識別子とを含む。
【００７７】
無効化キー生成部５３４は、再生成部５３３から指示されると無効化キーを生成する。まず、無効化キー生成部５３４は、移行元のライセンスキー１２００を複製し、複製したキーの無効化フラグ１２００ｄに“１”をセットして、無効化キーを生成する。無効化キー生成部５３４が生成した無効化キーは、移行元のＰＬＣ１００が有していたライセンスキー１２００と、無効化フラグ１２００ｄの値だけが異なる。無効化キー生成部５３４は無効化キーを移行元のＰＬＣ１００に送信する。無効化キー生成部５３４は、本発明の無効化キー生成手段の一例である。
【００７８】
ＰＬＣ１０１が有するライセンスキー１２００をＰＬＣ１０２に移行する場合には、移行元のＰＬＣ１０１は、本発明の第１装置の一例であり、移行先のＰＬＣ１０２は、本発明の第２装置の一例である。移行元のＰＬＣ１０１の識別子は、本発明の第１識別子の一例であり、移行先のＰＬＣ１０２の識別子は、本発明の第２識別子の一例である。
【００７９】
続いて、ライセンス管理サーバ６００の機能構成を説明する。ライセンス管理サーバ６００は、機能的には、アプリケーションプログラムに関するデータを記憶するアプリケーションデータ記憶部６１０と、ライセンスに関するデータを記憶するライセンスデータ記憶部６２０と、ライセンスキー１２００を発行するライセンス管理部６３０とを含む。
【００８０】
アプリケーションデータ記憶部６１０は、図６に示すようなアプリケーション適合テーブル６１０ａを格納する。アプリケーション適合テーブル６１０ａは、ＰＬＣ１００の機種毎の各アプリケーションプログラム１１００の実行可否の対応を示すデータを記憶する。図示する例では、アプリケーション適合テーブル６１０ａは、ＰＬＣ１００の機種に応じて各アプリケーションプログラム１１００の実行が可能（ＯＫ）であるか、実行が不可（ＮＧ）であるかを示す値を記憶する。例えば、“ＴＹＰＥ２”のＰＬＣ１００は、“アプリケーション１００１”と“アプリケーション１００４”とを実行することができ、その他のアプリケーションプログラム１１００を実行することができない。例えば、アプリケーションプログラムを開発・販売するメーカにおいてライセンス管理サーバ６００を管理する管理者が、アプリケーション適合テーブル６１０ａをアプリケーションデータ記憶部６１０に格納する。アプリケーションデータ記憶部６１０の機能は、図２に示すメモリ６１により実現される。
【００８１】
図１に示すライセンスデータ記憶部６２０は、図７に示すような購入ライセンステーブル６２０ａを格納する。購入ライセンステーブル６２０ａは、ユーザ毎の、ライセンスの購入数及び使用数を示すデータを記憶する。図示する例では、購入ライセンステーブル６２０ａは、ユーザを特定する識別子であるユーザＩＤと、アプリケーションプログラム１１００を特定するアプリケーションＩＤと、ユーザが購入したライセンス数を示す購入ライセンスと、ＰＬＣ１００に登録されたライセンス数を示す使用ライセンスとを含む。
【００８２】
例えば、ユーザＩＤが“２０１９００２”であるユーザは、“アプリケーション１００１”の３ライセンス購入しているが、購入した全てのライセンス分のアプリケーションプログラム１１００を使用していない。さらに、このユーザは、“アプリケーション１００２”を１ライセンス、“アプリケーション１００３”を４ライセンス購入しており、購入した全てのライセンス分のアプリケーションプログラム１１００を使用している。
【００８３】
さらに、図１に示すライセンスデータ記憶部６２０は、図８に示すようなライセンス登録テーブル６２０ｂを格納する。ライセンス登録テーブル６２０ｂは、ＰＬＣ１００に発行されたライセンスキー１２００に関するデータを記憶する。ライセンス登録テーブル６２０ｂは、ユーザとアプリケーションプログラム１１００との組み合わせ毎に、ＰＬＣ１００に発行されたライセンスキー１２００を特定するデータを記憶する。
【００８４】
図示する例では、ライセンス登録テーブル６２０ｂは、ユーザを特定する識別子であるユーザＩＤと、アプリケーションプログラム１１００を特定するアプリケーションＩＤと、発行されたライセンスキーと、ＰＬＣ１００の識別子とを含む。
【００８５】
例えば、アプリケーションプログラムを開発・販売するメーカにおいてライセンス管理サーバ６００を管理する管理者が、購入ライセンステーブル６２０ａ及びライセンス登録テーブル６２０ｂをライセンスデータ記憶部６２０に格納する。ライセンスデータ記憶部６２０の機能は、図２に示すメモリ６１により実現される。
【００８６】
図１に示すライセンス管理部６３０は、ライセンス管理ツール５００からライセンス発行要求を受信すると、ライセンスキー１２００を発行する。
【００８７】
まず、ライセンス管理部６３０は、ライセンス発行の可否を判別する。具体的には、ライセンス管理部６３０は、アプリケーション適合テーブル６１０ａを参照して、受信したライセンス発行要求に含まれているＰＬＣ１００の識別子から特定されるＰＬＣ１００の機種が、指定されたアプリケーションプログラム１１００を実行できるか否かを判別する。ＰＬＣ１００の機種を示す情報は、ＰＬＣ１００の識別子であるシリアルコードに含まれており、この情報からライセンス管理部６３０はＰＬＣ１００の機種を特定することができる。
【００８８】
続いて、ライセンス管理部６３０は、購入ライセンステーブル６２０ａを参照して、ライセンス発行要求に含まれるユーザＩＤを有するユーザが、指定されたアプリケーションプログラム１１００のライセンスを購入済みであるか否かを判別する。ユーザがライセンスを購入済みである場合、ライセンス管理部６３０は、未使用のライセンスがあるか否かを判別する。
【００８９】
ライセンス管理部６３０は、ユーザがライセンスを購入済み、かつ、未使用のライセンスがある場合、ライセンスキー１２００の発行が可能であると判別する。よって、ライセンス管理部６３０は、図５に示すようなライセンスキー１２００を生成する。
【００９０】
ライセンス管理部６３０は、例えば、ユーザＩＤをシードとして乱数を生成し、生成した乱数にアプリケーションＩＤを付加した値を、ライセンスコード１２００ａにセットする。ライセンス管理部６３０は、装置ＩＤ１２００ｂに、ライセンス発行要求に含まれているＰＬＣ１００の識別子をセットする。ライセンス管理部６３０は、移行カウンタ１２００ｃには、初期値、例えば、“０”をセットする。ライセンス管理部６３０は、無効化フラグ１２００ｄに、ライセンスキー１２００が有効なキーであることを示す値として、“０”をセットする。ライセンス管理部６３０は、このようにして生成したライセンスキー１２００をライセンス管理ツール５００に送信する。
【００９１】
その後、ライセンス管理部６３０は、ライセンス登録テーブル６２０ｂに、ライセンス発行要求に含まれていたユーザＩＤ、アプリケーションＩＤ、及びＰＬＣ１００の識別子と、発行したライセンスキー１２００とを登録する。
【００９２】
一方、ライセンス管理部６３０は、ＰＬＣ１００の機種が、指定されたアプリケーションプログラム１１００を実行できない、あるいは、ユーザがライセンスを購入済みでない、あるいは、未使用のライセンスがない場合、ライセンスキー１２００の発行が不可能であると判別する。この場合、ライセンス管理部６３０は、ライセンス管理ツール５００にライセンスキー１２００を発行できない旨を通知する。ライセンス管理部６３０の機能は、図２に示すＣＰＵ６３がライセンス管理プログラム６１１を実行することにより実現される。
【００９３】
また、ライセンス管理部６３０は、ライセンス管理ツール５００から、ＰＬＣ１００のユーザを識別するユーザＩＤと、移行先のＰＬＣ１００に登録されたライセンスキー１２００と、移行先のＰＬＣ１００の識別子とを受信すると、ライセンス登録テーブル６２０ｂを更新する。具体的には、ライセンス管理部６３０は、ライセンス登録テーブル６２０ｂのデータのうち、受信したライセンスキー１２００と識別子により特定されるデータを、受信したライセンスキー１２００とＰＬＣ１００の識別子とで更新する。その後、ライセンス管理部６３０は、ライセンス管理ツール５００にライセンス登録テーブル６２０ｂの更新が完了した旨を示す更新完了通知を送信する。
【００９４】
（ライセンスキーの初回の登録）
続いて、ライセンスキー１２００の初回の登録処理を説明する。まず、ユーザは、通信ケーブル７０１により、ライセンス管理ツール５００とＰＬＣ１０１とを接続する。ユーザは、ライセンス管理ツール５００の入力装置５４を操作してメニュー画面を開く。ユーザの操作に応答して、ＣＰＵ５６は、表示装置５５に図９に示すようなメニュー画面を表示する。ここで、ユーザが「ライセンスキーの登録」を選択したとする。
【００９５】
ＣＰＵ５６はライセンス管理プログラム５１１を実行することにより、ライセンス登録部５２０として機能する。図１０に示すように、まず、ライセンス登録部５２０は、ＰＬＣ１０１に識別子を要求する（ステップＳ１１）。これに応答して、ＰＬＣ１０１のライセンス送受信部１５０が識別子をライセンス管理ツール５００に送信したとする。ライセンス登録部５２０は、ＰＬＣ１０１から識別子を受信すると（ステップＳ１２）、図１１Ａに示すようなアプリケーションプログラムの選択画面を表示する。ここで、ライセンス登録部５２０は、図１に示す購入データ記憶部５１０に格納されている購入済みのアプリケーションプログラム１１００のうちいずれかをユーザが選択することができる画面を表示する。ここで、ユーザが所望のアプリケーションプログラムを選択し、「登録」ボタンを押したとする。
【００９６】
よって、図１０に示すように、ライセンス登録部５２０は、アプリケーションプログラムの選択を受け付け（ステップＳ１３）、ライセンス発行要求をライセンス管理サーバ６００に送信する（ステップＳ１４）。ライセンス発行要求には、ＰＬＣ１００のユーザのユーザＩＤと、ＰＬＣ１００の識別子と、アプリケーションプログラム１１００を特定するアプリケーションＩＤと、が含まれている。
【００９７】
その後、ライセンス登録部５２０は、ライセンス管理サーバ６００から、ライセンスキー１２００を受信した場合、ライセンス発行が成功したと判別する（ステップＳ１５；Ｙｅｓ）。ライセンス登録部５２０は、ライセンスキー１２００をＰＬＣ１０１に送信し（ステップＳ１６）、図１１Ｂに示すような、登録完了画面を表示する。
【００９８】
一方、ライセンス登録部５２０は、ライセンス管理サーバ６００からライセンスキー１２００を発行できない旨の通知を受信した場合、ライセンス発行が失敗したと判別し（ステップＳ１５；Ｎｏ）、例えば、図１１Ｃに示すような画面を表示してライセンス発行が失敗した旨を通知する（ステップＳ１７）。
【００９９】
ライセンスキー１２００の発行に関するライセンス管理サーバ６００側の処理は以下の通りである。図２に示すＣＰＵ６３は、ライセンス管理プログラム６１１を実行することにより、図１に示すライセンス管理部６３０として機能する。
【０１００】
図１２に示すように、ライセンス管理部６３０は、ライセンス管理ツール５００からライセンス発行要求を受信すると（ステップＳ２１；Ｙｅｓ）、アプリケーション適合テーブル６１０ａを参照して、ＰＬＣ１００が、指定されたアプリケーションプログラム１１００を実行することができるか否かを判別する（ステップＳ２２）。ライセンス管理部６３０は、ＰＬＣ１００が指定されたアプリケーションプログラム１１００を実行することができると判別すると（ステップＳ２２；Ｙｅｓ）、ステップＳ２３の処理を実行する。
【０１０１】
一方、ライセンス管理部６３０は、ＰＬＣ１００が指定されたアプリケーションプログラム１１００を実行することができないと判別すると（ステップＳ２２；Ｎｏ）、ライセンス発行が失敗した旨をライセンス管理ツール５００に通知する（ステップＳ２７）。
【０１０２】
ステップＳ２３では、ライセンス管理部６３０は、購入ライセンステーブル６２０ａを参照して、ＰＬＣ１００のユーザが、そのアプリケーションプログラム１１００の使用可能なライセンスを有しているか否かを判別する（ステップＳ２３）。ライセンス管理部６３０は、ＰＬＣ１００のユーザが、そのアプリケーションプログラム１１００の使用可能なライセンスを有していると判別すると（ステップＳ２３；Ｙｅｓ）、ライセンスキー１２００を生成する（ステップＳ２４）。
【０１０３】
ライセンス管理部６３０は、生成したライセンスキー１２００をライセンス管理ツール５００に送信する（ステップＳ２５）。その後、ライセンス管理部６３０は、ライセンスキー１２００の情報を、図８に示すライセンス登録テーブル６２０ｂに登録する（ステップＳ２６）。
【０１０４】
一方、ライセンス管理部６３０は、ＰＬＣ１００のユーザが、アプリケーションプログラム１１００を購入していない、あるいは、購入しているものの、全てのライセンスを使用中である場合には（ステップＳ２３；Ｎｏ）、ライセンス発行が失敗した旨をライセンス管理ツール５００に通知する（ステップＳ２７）。以上が、ライセンスの初回の登録時におけるライセンス管理サーバ６００側の処理である。
【０１０５】
（ライセンスキーの移行）
続いて、ライセンスキー１２００の移行処理を説明する。以下の説明においては、ＰＬＣ１０１が有するライセンスキー１２００をＰＬＣ１０２に移行する例を説明する。ユーザは、通信ケーブル７０１により、ライセンス管理ツール５００と移行元のＰＬＣ１０１とを接続する。なお、ライセンス管理ツール５００は、ネットワーク７０２を介して、ライセンス管理サーバ６００に接続されている必要はない。
【０１０６】
ユーザは、ライセンス管理ツール５００の入力装置５４を操作してメニュー画面を開く。ユーザの操作に応答して、ＣＰＵ５６は、表示装置５５に図９に示すようなメニュー画面を表示する。ここで、ユーザが「ライセンスキーの移行」を選択したとする。ＣＰＵ５６は、ライセンス管理プログラム５１１を実行することにより、図１に示すライセンス移行部５３０として機能する。
【０１０７】
図１３に示すように、ライセンス移行部５３０は、移行元のＰＬＣ１０１にライセンス登録についての情報を要求する（ステップＳ３１）。これに応答して、ＰＬＣ１０１のライセンス送受信部１５０は、ライセンス登録の情報として、ライセンスキー記憶部１２０に格納されているライセンスキー１２００の値の一覧と、ＰＬＣ１０１の識別子とをライセンス管理ツール５００に送信する。ライセンス移行部５３０は、ライセンス登録についての情報を受信すると（ステップＳ３２）、受信したデータに基づいて、図１５Ａに示すような、移行するアプリケーションプログラムの選択画面を表示する。
【０１０８】
ユーザがライセンスを移行するアプリケーションプログラム１１００を選択すると（ステップＳ３３；Ｙｅｓ）、ライセンス移行部５３０は、選択されたアプリケーションプログラム１１００のライセンスキー１２００の取り出しを移行元のＰＬＣ１０１に要求する（ステップＳ３４）。これに応答して、ＰＬＣ１０１のライセンス送受信部１５０が、指定されたライセンスキー１２００を取り出して、ライセンスキー１２００をライセンス管理ツール５００に送信したとする。
【０１０９】
ライセンス移行部５３０は、移行元のＰＬＣ１０１からライセンスキー１２００を受信すると（ステップＳ３５；Ｙｅｓ）、受信したライセンスキー１２００をコピーし、コピーしたライセンスキー１２００の無効化フラグ１２００ｄに“１”をセットして、無効化キーを生成する。（ステップＳ３６）。
【０１１０】
ライセンス移行部５３０は、無効化キーを移行元のＰＬＣ１０１に送信する（ステップＳ３７）。これに応答して、ＰＬＣ１０１のライセンス送受信部１５０は、受信した無効化キーを無効化キー記憶部１３０に格納する。その後、ライセンス移行部５３０は、ステップＳ３８の処理を実行する。
【０１１１】
図１４に示すように、ライセンス移行部５３０は、ユーザに接続の切り替えを指示する（ステップＳ３８）。ライセンス移行部５３０は、図１５Ｂに示すような画面を表示して、移行先のＰＬＣ１０２に接続することを指示する。ユーザが、移行元のＰＬＣ１０１から通信ケーブル７０１を取り外し、ライセンス管理ツール５００とＰＬＣ１０１との接続を切り、その後、通信ケーブル７０１を移行先のＰＬＣ１０２に接続したものとする。よって、ライセンス管理ツール５００は、移行先のＰＬＣ１０２と通信可能となる。
【０１１２】
図１４に示すように、ライセンス移行部５３０は、移行先のＰＬＣ１０２に識別子を要求する（ステップＳ３９）。これに応答して、ＰＬＣ１０２のライセンス送受信部１５０は、識別子をライセンス管理ツール５００に送信する。
【０１１３】
ライセンス移行部５３０は、移行先のＰＬＣ１０２から識別子を受信すると（ステップＳ４０）、移行元のＰＬＣ１０１から受信したライセンスキー１２００から新しいライセンスキー１２００を再生成する（ステップＳ４１）。具体的には、ライセンス送受信部１５０は、図５に示すような、ライセンスキー１２００の装置ＩＤ１２００ｂとしてセットされている移行元のＰＬＣ１０１の識別子を削除し、移行先のＰＬＣ１０２から取得した識別子を新たな装置ＩＤ１２００ｂとしてライセンスキー１２００にセットする。さらに、ライセンス移行部５３０は、ライセンスキー１２００の移行カウンタ１２００ｃの値を１つ増やす。
【０１１４】
図１４に示すように、ライセンス移行部５３０は、再生成したライセンスキー１２００を移行先のＰＬＣ１０２に送信する（ステップＳ４２）。これに応答して、ＰＬＣ１０２のライセンス送受信部１５０は、受信したライセンスキー１２００をライセンスキー記憶部１２０に記憶する。
【０１１５】
ライセンスキー１２００の移行が完了すると、図１６Ａに示すように、ライセンス移行部５３０は、ライセンスキーの情報をライセンス管理サーバ６００に送信する（ステップＳ５１）。ライセンスキーの情報は、ＰＬＣ１００のユーザを識別するユーザＩＤと、移行先のＰＬＣ１０２に送信したライセンスキー１２００と、ＰＬＣ１０２の識別子と、を含む。ライセンス移行部５３０は、ライセンス管理サーバ６００から、更新完了報告を受信すると（ステップＳ５２）、図１５Ｃに示すような移行完了画面を表示する。
【０１１６】
図１６Ｂに示すように、ライセンス管理サーバ６００のライセンス管理部６３０は、ライセンス管理ツール５００からライセンスキーの情報を受信すると（ステップＳ６１）、ライセンス登録テーブル６２０ｂのデータを更新する（ステップＳ６２）。具体的には、ライセンス管理部６３０は、ライセンス登録テーブル６２０ｂのデータのうち、受信したユーザＩＤにより特定されるデータを、受信したライセンスキー１２００と識別子とで更新する。その後、ライセンス管理部６３０は、ライセンス管理ツール５００にライセンス登録テーブル６２０ｂの更新が完了した旨を示す更新完了通知を送信する（ステップＳ６３）。
【０１１７】
以上説明したように、実施の形態に係る構成においては、ライセンス管理ツール５００が、外部ネットワークに接続されていない２以上のＰＬＣ１００の間でライセンスキー１２００を移行する。ライセンス管理ツール５００は、移行元のＰＬＣ１０１から取得したライセンスキー１２００からＰＬＣ１０１の識別子を削除して、移行先のＰＬＣ１０２の識別子をライセンスキー１２００にセットすることにより、ライセンスキー１２００を再生成し、新しいライセンスキー１２００を移行先のＰＬＣ１０２に供給する。このような構成を備えることで、ライセンス管理ツール５００は、ライセンス管理サーバと通信することができないスタンドアロンの装置間でライセンスを移行することができる。
【０１１８】
実施の形態においては、ライセンス送受信部１５０が、受信したライセンスキー１２００の無効化フラグ１２００ｄを除く部分が一致する無効化キーが、無効化キー記憶部１３０に格納されている場合に、ライセンスキー１２００を受け付けない例を説明した。しかし、これに限られない。
【０１１９】
例えば、ライセンス管理ツール５００は、ＰＬＣ１００が無効化キーを有している場合には、ＰＬＣ１００にライセンスキー１２００を送信しないようにしてもよい。具体的には、ライセンス管理ツール５００の再生成部５３３が、再生成したライセンスキー１２００を移行先のＰＬＣ１００に送信する前に、ＰＬＣ１００にＰＬＣ１００が有している無効化キーを要求してもよい。これに応答して、ＰＬＣ１００は、無効化キー記憶部１３０に格納されているか無効化キーの値の一覧をライセンス管理ツール５００に送信するものとする。再生成部５５３は、ＰＬＣ１００から受信した無効化キーのうちに、再生成したライセンスキー１２００の無効化フラグ１２００ｄを除く部分が一致する無効化キーが存在する場合には、再生成したライセンスキー１２００を、移行先のＰＬＣ１００に送信しないようにしてもよい。
【０１２０】
実施の形態においては、ライセンス管理ツール５００は、移行先のＰＬＣ１００に新しいライセンスキー１２００を供給する前に、移行元のＰＬＣ１００に無効化キーを送信する例を説明したが、これに限られない。
【０１２１】
例えば、ライセンス管理ツール５００は、移行元のＰＬＣ１００からライセンスキー１２００を取得し、ライセンスキー１２００をコピーする、あるいは、ライセンスキー１２００から無効化キーを生成する。ライセンス管理ツール５００は、ＰＬＣ１００の接続の切り替えが行われた後、新しいライセンスキー１２００を生成し、移行先のＰＬＣ１００に新しいライセンスキー１２００を送信する。その後、ユーザにより、再度、ライセンス管理ツール５００と移行先のＰＬＣ１００とが接続されると、ライセンス管理ツール５００は、無効化キーを移行元のＰＬＣ１００に送信する。この場合、移行先のＰＬＣ１００へのライセンスキー１２００の登録が完了した後に、移行元のＰＬＣ１００に無効化キーを提供するので、仮に、新しいライセンスキー１２００の移行先のＰＬＣ１００への登録が失敗した場合には、移行元のＰＬＣ１００に再度ライセンスキー１２００を戻すことも可能である。
【０１２２】
実施の形態では、移行元のＰＬＣ１０１の識別子が第１識別子として、ライセンスキー１２００に含まれており、新たにライセンスキー１２００を生成する場合には、ライセンスキー１２００から移行元のＰＬＣ１０１の識別子を取り出し、その後、移行先のＰＬＣ１０２の識別子が第２識別子としてライセンスキー１２００に追加する例を説明した。しかし、第１識別子、第２識別子として、移行元のＰＬＣ１００の識別子、移行先のＰＬＣ１００の識別子以外を使用してもよい。例えば、ＰＬＣ１０１の識別子から生成したハッシュ値を第１識別子としてもよく、ＰＬＣ１０２の識別子から生成したハッシュ値を第２識別子としてもよい。
【０１２３】
実施の形態においては、ライセンス管理ツール５００は、ライセンスキー１２００の移行の処理に続けて、図１６Ａに示すライセンス情報更新処理を実行したが、これに限られない。例えば、ライセンス管理ツール５００は、ライセンス情報更新処理を、ライセンスキー１２００の移行の処理とは別個に実行してもよい。例えば、ライセンス管理ツール５００が、ネットワーク７０２に常時接続されていないことがある。このような場合には、ライセンス管理ツール５００は、ネットワーク７０２に接続されると、図１６Ａに示すライセンス情報更新処理を実行するようにしてもよい。
【０１２４】
実施の形態においては、ライセンス管理ツール５００が、通信ケーブル７０１を介してＰＬＣ１００と通信する例を説明したが、ライセンス管理ツール５００とＰＬＣ１００とは無線通信を行ってもよい。
【０１２５】
上記のプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
【０１２６】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【０１２７】
１  ライセンス管理システム、１１，５１，６１  メモリ、１２，５２  入出力インタフェース、１３  ＭＰＵ、１９，５９，６９  バス、５３，６２  通信インタフェース、５４  入力装置、５５  表示装置、５６，６３  ＣＰＵ、１０１，１０２（１００）  プログラマブルロジックコントローラ（ＰＬＣ）、１１０  プログラム記憶部、１１１，５１１  ライセンス管理プログラム、１２０  ライセンスキー記憶部、１３０  無効化キー記憶部、１４０  ライセンス確認部、１５０  ライセンス送受信部、１６０  プログラム実行部、５００  ライセンス管理ツール、５１０  購入データ記憶部、５１１  ライセンス管理プログラム、５２０  ライセンス登録部、５３０  ライセンス移行部、５３１  キー取得部、５３２  識別子取得部、５３３  再生成部、５３４  無効化キー生成部、６００  ライセンス管理サーバ、６１０  アプリケーションデータ記憶部、６１０ａ  アプリケーション適合テーブル、６１１  ライセンス管理プログラム、６２０  ライセンスデータ記憶部、６２０ａ  購入ライセンステーブル、６２０ｂ  ライセンス登録テーブル、６３０  ライセンス管理部、７０１  通信ケーブル、７０２  ネットワーク、１１０１〜１１０３（１１００）  アプリケーションプログラム、１２０１〜１２０３（１２００）  ライセンスキー、１２００ａ  ライセンスコード、１２００ｂ  装置ＩＤ、１２００ｃ  移行カウンタ、１２００ｄ  無効化フラグ
【要約】
ライセンス管理ツール（５００）は、アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを、外部ネットワークに接続されていない２以上のＰＬＣ（１０１）とＰＬＣ（１０２）との間で移行する。ライセンスキーは、ライセンスキーが登録されている装置を識別する識別子を含む。ライセンス移行部（５３０）は、ライセンスの移行元のＰＬＣ（１０１）から、ライセンスキーを取得する。ライセンス移行部（５３０）は、ライセンスの移行先のＰＬＣ（１０２）から、ＰＬＣ（１０２）の第２識別子を取得する。ライセンス移行部（５３０）は、ＰＬＣ（１０１）から取得したライセンスキーから、ＰＬＣ（１０１）の第１識別子を削除して、ＰＬＣ（１０２）の第２識別子を追加して、新しいライセンスキーを生成し、ＰＬＣ（１０２）に新しいライセンスキーを送信する。【図１】
0006701463.tif 000002
【図２】
0006701463.tif 000003
【図３】
0006701463.tif 000004
【図４】
0006701463.tif 000005
【図５】
0006701463.tif 000006
【図６】
0006701463.tif 000007
【図７】
0006701463.tif 000008
【図８】
0006701463.tif 000009
【図９】
0006701463.tif 000010
【図１０】
0006701463.tif 000011
【図１１Ａ】
0006701463.tif 000012
【図１１Ｂ】
0006701463.tif 000013
【図１１Ｃ】
0006701463.tif 000014
【図１２】
0006701463.tif 000015
【図１３】
0006701463.tif 000016
【図１４】
0006701463.tif 000017
【図１５Ａ】
0006701463.tif 000018
【図１５Ｂ】
0006701463.tif 000019
【図１５Ｃ】
0006701463.tif 000020
【図１６Ａ】
0006701463.tif 000021
【図１６Ｂ】
0006701463.tif 000022