Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020194604 - LICENSE TRANSFER TOOL, PROGRAM, AND LICENSE TRANSFER SYSTEM

Document

明 細 書

発明の名称 ライセンス移行ツール、プログラム、及びライセンス移行システム

技術分野

0001  

背景技術

0002   0003   0004  

先行技術文献

特許文献

0005  

発明の概要

発明が解決しようとする課題

0006   0007  

課題を解決するための手段

0008  

発明の効果

0009  

図面の簡単な説明

0010  

発明を実施するための形態

0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126  

符号の説明

0127  

請求の範囲

1   2   3   4   5   6   7   8   9   10  

図面

1   2   3   4   5   6   7   8   9   10   11A   11B   11C   12   13   14   15A   15B   15C   16A   16B  

明 細 書

発明の名称 : ライセンス移行ツール、プログラム、及びライセンス移行システム

技術分野

[0001]
 本発明は、ライセンス移行ツール、プログラム、及びライセンス移行システムに関する。

背景技術

[0002]
 市場で製品として販売されているアプリケーションプログラムの不正利用を防止するため、アプリケーションプログラムの販売元が管理するライセンス管理サーバとアプリケーションプログラムがインストールされた装置とがネットワークを介して通信し、ライセンス管理サーバがライセンス認証を行うことがある。
[0003]
 また、装置からアンインストールしたアプリケーションプログラムを、他の装置にインストールすることがある。この場合、アプリケーションプログラムのライセンスを移行する必要がある。
[0004]
 例えば、特許文献1には、次のようにライセンスを移行することが記載されている。ライセンスの移行元である装置は、アプリケーションプログラムがアンインストールされると、アンインストール証明コードを生成し、ライセンス管理サーバにアンインストール証明コードを送信する。ライセンスの移行先の装置は、固有識別コードを生成し、ライセンス管理サーバに固有識別コードを送信する。ライセンス管理サーバは、受信したアンインストール証明コードと固有識別コードとが正当か否かを判別し、正当である場合にライセンス移行を許可する。ライセンス移行を許可する場合、ライセンス管理サーバは、インストール許可通知をライセンスの移行先の装置に送信する。

先行技術文献

特許文献

[0005]
特許文献1 : 特開2009-245169号公報

発明の概要

発明が解決しようとする課題

[0006]
 特許文献1に記載された構成では、ライセンスの移行元の装置とライセンスの移行先の装置とが、ネットワークを介してライセンス管理サーバと通信可能であることが必要である。しかし、ライセンスの移行元の装置とライセンスの移行先の装置とが、ネットワークを介してライセンス管理サーバと通信することができない場合もある。例えば、ファクトリーオートメーションの分野で使用されるコントローラは、セキュリティの観点から、外部のネットワークに接続されていないことがある。このように、ライセンスの移行元の装置とライセンスの移行先の装置とが、ネットワークを介してライセンス管理サーバと通信することが不可能である場合には、ライセンス管理サーバを介したライセンス移行を実行することができない。
[0007]
 本発明は上記実情に鑑みなされたものであり、ライセンス管理サーバと通信することができないスタンドアロンの装置間でライセンスを移行することを目的とする。

課題を解決するための手段

[0008]
 上記目的を達成するため、本発明に係るライセンス移行ツールは、アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを、外部ネットワークに接続されていない2以上の装置の間で移行する。ライセンスキーは、ライセンスキーが登録されている装置を識別する識別子を含む。ライセンス移行ツールが備えるキー取得手段は、ライセンスの移行元の装置である第1装置から、ライセンスキーを取得する。ライセンス移行ツールが備える識別子取得手段は、ライセンスの移行先の装置である第2装置から、第2装置を識別する第2識別子を取得する。ライセンス移行ツールが備える再生成手段は、第1装置から取得したライセンスキーから、第1装置を識別する第1識別子を削除して、第2装置の第2識別子を識別子として追加して、新しいライセンスキーを生成し、第2装置に新しいライセンスキーを供給する。

発明の効果

[0009]
 本発明に係るライセンス移行ツールは、ライセンスの移行元の装置である第1装置から、ライセンスキーを取得し、ライセンスの移行先の装置である第2装置から、第2装置を識別する第2識別子を取得する。ライセンス移行ツールは、第1装置から取得したライセンスキーから、第1装置を識別する第1識別子を削除して、第2装置の第2識別子を識別子として追加して、新しいライセンスキーを生成し、第2装置に新しいライセンスキーを供給する。このような構成を備えることで、ライセンス管理サーバと通信することができないスタンドアロンの装置間でライセンスを移行することができる。

図面の簡単な説明

[0010]
[図1] 本発明の実施の形態に係るライセンス管理システムの機能構成を示すブロック図
[図2] 実施の形態に係るライセンス管理システムのハードウェア構成を示す図
[図3] 実施の形態に係るPLCのプログラム記憶部の構成を示す図
[図4] 実施の形態に係るPLCのライセンスキー記憶部の構成を示す図
[図5] 実施の形態に係るライセンスキーの構成を示す図
[図6] 実施の形態に係るアプリケーション適合テーブルに格納されるデータの一例を示す図
[図7] 実施の形態に係る購入ライセンステーブルに格納されるデータの一例を示す図
[図8] 実施の形態に係るライセンス登録テーブルに格納されるデータの一例を示す図
[図9] 実施の形態に係るライセンス管理ツールのメニュー画面の一例を示す図
[図10] 実施の形態に係るライセンス管理ツールのライセンス発行要求処理のフローチャート
[図11A] 実施の形態に係るライセンスキーの登録の対象を選択する選択画面の一例を示す図
[図11B] 実施の形態に係るライセンスキーの登録完了画面の一例を示す図
[図11C] 実施の形態に係るライセンスキーの登録の失敗を通知する画面の一例を示す図
[図12] 実施の形態に係るライセンス管理サーバのライセンス発行処理のフローチャート
[図13] 実施の形態に係るライセンス管理ツールのライセンス移行処理のフローチャート(前半)
[図14] 実施の形態に係るライセンス管理ツールのライセンス移行処理のフローチャート(後半)
[図15A] 実施の形態に係るライセンスキーの移行の対象を選択する選択画面の一例を示す図
[図15B] 実施の形態に係るライセンスキーの移行の際のPLCの接続の切り替え指示画面の一例を示す図
[図15C] 実施の形態に係るライセンスキーの移行完了画面の一例を示す図
[図16A] 実施の形態に係るライセンス管理ツールのライセンス情報更新処理のフローチャート
[図16B] 実施の形態に係るライセンス管理サーバのライセンス情報更新処理のフローチャート

発明を実施するための形態

[0011]
(実施の形態)
 以下、本発明の実施の形態に係るライセンス管理システムについて、図面を参照しつつ詳細に説明する。
[0012]
 図1に示すライセンス管理システム1は、プログラマブルロジックコントローラ101及び102が実行するアプリケーションプログラムのライセンスを管理する。ライセンス管理システム1は、工場内の生産ラインで使用されるプログラマブルロジックコントローラのライセンスの登録を管理するライセンス管理ツール500と、ライセンスを発行するライセンス管理サーバ600とを含む。
[0013]
 プログラマブルロジックコントローラ101及び102は、工場内の生産ラインで使用される機械装置(不図示)を制御する制御装置である。以下、プログラマブルロジックコントローラ101及び102をひとまとめにしてプログラマブルロジックコントローラ100(PLC100)と称することがある。
[0014]
 ライセンス管理ツール500として、例えば、プログラマブルロジックコントローラ100と同じ工場内にあり、専用のプログラムをインストールしたパーソナルコンピュータが使用される。ライセンス管理サーバ600は、例えば、アプリケーションプログラムを開発・販売するメーカの管理下にあるサーバである。
[0015]
 PLC100は、製品として販売されているアプリケーションプログラムを実行することにより、例えば、工場内の内部ネットワーク(不図示)を介して接続されている機械装置を制御する。PLC100は、アプリケーションプログラムを実行するため、アプリケーションプログラムの使用が許諾されていることを示すライセンスを有している必要がある。実施の形態においては、PLC100は、アプリケーションプログラムのライセンスキー有している場合に、そのアプリケーションプログラムを実行することができる。ライセンスキーは、PLC100がライセンスを有していることを示すコードである。ライセンス管理サーバ600がライセンスキーを発行する。
[0016]
 PLC100は、外部ネットワークに接続されておらず、ライセンス管理サーバ600と通信することができない。外部ネットワークは、インターネットのようなオープンなネットワークである。一方、ライセンス管理ツール500は、外部ネットワークを介してライセンス管理サーバ600と通信できる。このため、ライセンス管理ツール500が、PLC100に代わり、ライセンス管理サーバ600からライセンスキーを取得し、取得したライセンスキーをPLC100に供給する。
[0017]
 さらに、実施の形態に特徴的な構成として、ライセンス管理ツール500は、ライセンスキーの移行に係る処理を行う。ライセンスキーの移行とは、あるアプリケーションプログラムについてのライセンスキーを有しているPLC100から、他のPLC100にライセンスキーを移すことである。ライセンスキーを有するようになったPLC100は、そのアプリケーションプログラムを実行できるようになる。一方、ライセンスキーを有しなくなったPLC100は、そのアプリケーションプログラムを実行できなくなる。
[0018]
 図2に示すように、PLC100はハードウェア構成として、各種プログラム及びデータを記憶するメモリ11と、通信ケーブル701を介してライセンス管理ツール500との間でデータを授受する入出力インタフェース12と、PLC100全体を制御するMPU(Micro Processing Unit)13と、を有する。メモリ11と入出力インタフェース12とは、バス19を介してMPU13に接続されており、MPU13と通信する。
[0019]
 メモリ11は、揮発性メモリと不揮発性メモリとを含む。メモリ11は、PLC100の各種機能を実現するためのプログラムを記憶する。メモリ11は、ライセンスキーの格納、取り出し等の処理をMPU13に実行させるプログラムであるライセンス管理プログラム111を記憶する。さらに、メモリ11はMPU13のワークメモリとして用いられる。メモリ11は、PLC100を一意に識別するための識別子を記憶する。実施の形態では、PLC100に割り当てられた識別子として、PLC100の製造時にPLC100に割り当てられたシリアルコードを使用するものとする。さらに、メモリ11は、ユーザを識別する情報であるユーザIDを記憶する。PLC100のユーザは、例えば、PLC100の管理者である。
[0020]
 入出力インタフェース12は、例えば、USBコントローラを含み、MPU13から供給されたデータを電気信号に変換し、通信ケーブル701を介して変換した信号をライセンス管理ツール500に出力する。通信ケーブル701は、例えば、USBケーブルである。また、入出力インタフェース12は、通信ケーブル701を介して、ライセンス管理ツール500が出力した電気信号を受け付け、受け付けた電気信号をデータに復元してMPU13に出力する。
[0021]
 MPU13は、メモリ11に記憶されている各種プログラムを実行して、PLC100の各種機能を実現する。例えば、ライセンス管理プログラム111を実行することにより、ライセンスキーの格納、取り出し等の処理を実行する。
[0022]
 ライセンス管理ツール500は、ハードウェア構成として、各種のプログラム及びデータを記憶するメモリ51と、通信ケーブル701を介してPLC100との間でデータを授受する入出力インタフェース52と、ネットワーク702を介してライセンス管理サーバ600と通信する通信インタフェース53と、ユーザの入力操作を検出する入力装置54と、画像を出力する表示装置55と、ライセンス管理ツール500全体を制御するCPU(Central Processing Unit)56とを有する。メモリ51と入出力インタフェース52と通信インタフェース53と入力装置54と表示装置55とは、バス59を介してCPU56に接続されており、それぞれCPU56と通信する。
[0023]
 メモリ51は、揮発性メモリと不揮発性メモリとを含む。メモリ51は、ライセンス管理ツール500の各種機能を実現するためのプログラムを格納する。具体的には、メモリ51は、ライセンス管理プログラム511を記憶する。さらに、メモリ51はCPU56のワークメモリとして用いられる。
[0024]
 ライセンス管理プログラム511は、ライセンスキーの登録処理と、ライセンスキーの移行処理とをCPU56に実行させるプログラムである。
[0025]
 入出力インタフェース52は、例えば、USBコントローラを含み、CPU56から供給されたデータを電気信号に変換し、通信ケーブル701を介して変換した信号をPLC100に出力する。また、入出力インタフェース52は、通信ケーブル701を介して、PLC100が出力した電気信号を受け付け、受け付けた電気信号をデータに復元してCPU56に出力する。
[0026]
 通信インタフェース53は、ネットワークインタフェース回路を含み、CPU56の制御の下、ネットワーク702を介して、ライセンス管理サーバ600と通信する。ネットワーク702は、例えば、インターネットである。
[0027]
 入力装置54は、マウス、操作キー等を含み、ユーザからの操作入力を受け付け、ユーザの操作入力を示す信号をCPU56に出力する。
[0028]
 表示装置55は、ディスプレイを含み、CPU56から供給される信号に基づく画像をディスプレイに表示する。
[0029]
 CPU56は、メモリ51に記憶されている各種プログラムを実行して、ライセンス管理ツール500の各種機能を実現する。具体的には、CPU56は、ライセンス管理プログラム511を実行することにより、PLC101及び102にアプリケーションプログラムのライセンスキーを登録する。さらに、CPU56は、ライセンス管理プログラム511を実行することにより、例えば、PLC101が有しているライセンスキーをPLC102に移行する。
[0030]
 ライセンス管理サーバ600は、ハードウェア構成として、各種のプログラム及びデータを記憶するメモリ61と、ネットワーク702を介してライセンス管理ツール500と通信する通信インタフェース62と、ライセンス管理サーバ600全体を制御するCPU63とを有する。メモリ61と通信インタフェース62とは、バス69を介してCPU63に接続されており、それぞれCPU63と通信する。
[0031]
 メモリ61は、揮発性メモリと不揮発性メモリとを含む。メモリ61は、ライセンス管理サーバ600の各種機能を実現するためのプログラムを格納する。具体的には、メモリ61は、ライセンス管理プログラム611を記憶する。さらに、メモリ51はCPU56のワークメモリとして用いられる。
[0032]
 ライセンス管理プログラム611は、ライセンスキーを発行する処理と、ライセンスの登録に関する情報を管理する処理とをCPU63に実行させるプログラムである。
[0033]
 通信インタフェース62は、ネットワークインタフェース回路を含み、CPU63の制御の下、ネットワーク702を介して、ライセンス管理サーバ600と通信する。
[0034]
 CPU63は、メモリ61に記憶されている各種プログラムを実行して、ライセンス管理サーバ600の各種機能を実現する。具体的には、CPU63は、ライセンス管理プログラム611を実行することによりライセンスキーを発行する。
[0035]
 次に、図1を参照して、PLC100の機能構成を説明する。PLC100は、機能的には、アプリケーションプログラムを記憶するプログラム記憶部110と、ライセンスキーを記憶するライセンスキー記憶部120と、無効化キーを記憶する無効化キー記憶部130と、PLC100がアプリケーションプログラムを実行する前にライセンスキーが正当なものであるか否かを判別するライセンス確認部140と、ライセンス管理ツール500との間でライセンスキーを授受するライセンス送受信部150と、アプリケーションプログラムを実行するプログラム実行部160とを含む。
[0036]
 プログラム記憶部110は、PLC100が実行するアプリケーションプログラムを記憶する。アプリケーションプログラムは、製品として販売されているプログラムを含む。図3に示すように、プログラム記憶部110は、ユーザが購入したアプリケーションプログラム1101~1103を記憶しているとする。PLC100は、アプリケーションプログラム1101~1103を実行するためには、それぞれのアプリケーションキーを有している必要がある。以下、アプリケーションプログラム1101~1103をまとめてアプリケーションプログラム1100と称することがある。プログラム記憶部110の機能は、図2に示すメモリ11により実現される。
[0037]
 図1に示すライセンスキー記憶部120は、PLC100が実行するアプリケーションプログラム1100それぞれに対応するライセンスキーを記憶する。図3に示すように、プログラム記憶部110がアプリケーションプログラム1101~1103を記憶しているとする。この場合、図4に示すように、ライセンスキー記憶部120は、アプリケーションプログラム1101~1103にそれぞれ対応するライセンスキー1201~1203を記憶する。以下、ライセンスキー1201~1203をまとめてライセンスキー1200と称することがある。ライセンスキー記憶部120は、本発明のライセンスキー記憶手段の一例である。
[0038]
 ライセンスキー1200は、図1に示すライセンス管理ツール500から供給される。後述のライセンス送受信部150は、ライセンス管理ツール500から供給されたライセンスキー1200をライセンスキー記憶部120に格納する。ライセンスキー記憶部120の機能は、図2に示すメモリ11により実現される。ライセンスキー記憶部120は、メモリ11の、ユーザが参照することができない領域に設けられることが望ましい。ライセンス送受信部150は、本発明の格納手段の一例である。
[0039]
 図4に示すように、ライセンスキー記憶部120は、ライセンスキー1200と、アプリケーションプログラム1100を特定するアプリケーションIDとを記憶する。図5に示すように、ライセンスキー1200は、ライセンスコード1200aと、装置ID1200bと、移行カウンタ1200cと、無効化フラグ1200dとを含む。
[0040]
 ライセンスコード1200aは、アプリケーションプログラム1100の1ライセンス毎に割り振られた識別コードである。実施の形態では、1ライセンスで、1つのPLC100がアプリケーションプログラム1100を実行できるものとする。
[0041]
 装置ID1200bは、アプリケーションプログラム1100がインストールされているPLC100を一意に識別するための識別子である。装置ID1200bには、ライセンスキー1200が登録されているPLC100の識別子がセットされている。
[0042]
 PLC100は、アプリケーションプログラム1100の実行時に、ライセンスキー1200の装置ID1200bが自機の識別子と一致するか否かを判別する。PLC100は、ライセンスキー1200の装置ID1200bが自機の識別子と一致すると判別すると、アプリケーションプログラム1100を実行する。一方、PLC100は、ライセンスキー1200の装置ID1200bが自機の識別子と一致しないと判別すると、アプリケーションプログラム1100を実行しない。このような構成によりアプリケーションプログラム1100を実行するべきでないPLC100がアプリケーションプログラム1100を実行することがないよう制御することができる。
[0043]
 ライセンスキー1200の初回発行時には、ライセンス管理サーバ600がライセンスキー1200を生成する。このため、ライセンス管理サーバ600には、ライセンス管理ツール500からPLC100の識別子が供給される。ライセンス管理サーバ600は、装置ID1200bとしてPLC100の識別子をライセンスキー1200にセットする。ライセンスキー1200の移行時には、ライセンス管理ツール500がライセンスキー1200を再生成する。この場合、ライセンス管理ツール500が、装置ID1200bとして移行先のPLC100の識別子をライセンスキー1200にセットする。
[0044]
 移行カウンタ1200cには、アプリケーションプログラム1100のライセンスが移行された回数である移行回数を示す値が格納される。移行カウンタ1200cの値は、ライセンスキー1200が初回に生成されたときは初期値、例えば、“0”である。移行カウンタ1200cの値は、ライセンスキー1200が再生成されるタイミングで、“1”加算される。
[0045]
 ライセンス管理サーバ600は、ライセンスキー1200の生成時に、移行カウンタ1200cの値に初期値をセットする。ライセンス管理ツール500は、移行処理において、ライセンスキー1200の移行カウンタ1200cの値を決められた数だけ、例えば、“1”を、加算する。
[0046]
 例えば、PLC100の管理者がアプリケーションプログラム1101を1ライセンス購入したとする。管理者が、最初にPLC101にアプリケーションプログラム1101をインストールし、ライセンス管理ツール500を介して、PLC101にアプリケーションプログラム1101に対応するライセンスキー1200を登録したとする。このとき、移行カウンタ1200cの値は初期値、例えば、“0”である。その後、PLC101の動作不良といった何らかの事情により、PLC101がアプリケーションプログラム1101を実行することができなくなったとする。PLC100の管理者が、PLC102にアプリケーションプログラム1101をインストールし、ライセンス管理ツール500を使用して、アプリケーションプログラム1101のライセンスキー1200をPLC102に移行したとする。このときの移行カウンタ1200cの値は、初期値に“1”が加算された値、即ち、“1”である。
[0047]
 無効化フラグ1200dは、ライセンスキー1200が無効化キーであるか否かを示す値を持つ。無効化キーは、ライセンスキー1200の不正使用を防止するために使用される。無効化キーは、ライセンスキー1200を他のPLC100に移行したときに、移行元のPLC100に保存される。
[0048]
 ライセンスキー1200が有効なキーであることを示す値として、例えば、無効化フラグ1200dに“0”がセットされる。無効化フラグ1200dの値が、例えば、“1”であることは、そのキーが無効化キーであることを示す。
[0049]
 ライセンス管理ツール500は、ライセンスキー1200を移行する際に、移行するライセンスキー1200をコピーし、コピーしたキーの無効化フラグ1200dに“1”をセットして、無効化キーを生成し、移行元のPLC100に無効化キーを保存する。
[0050]
 PLC100は、ライセンス管理ツール500から、ライセンスキー1200の無効化フラグ1200dを除く部分が一致する無効化キーが供給された場合、供給されたライセンスキー1200を受け付けない。
[0051]
 図1に示す無効化キー記憶部130は、無効化キーを記憶する。前述のように、ライセンス管理ツール500は、ライセンスキー1200の移行時に無効化キーを移行元のPLC100に発行する。このため、無効化キー記憶部130は、ライセンス管理ツール500から無効化キーが供給された場合のみ無効化キーを記憶する。無効化キー記憶部130の機能は、図2に示すメモリ11により実現される。無効化キー記憶部130は、メモリ11の、ユーザが参照することができない領域に設けられることが望ましい。
[0052]
 無効化キーを利用することでライセンスキー1200の不正使用を防止することができる。以下に、無効化キーを使用しない場合に想定される不正使用の例を説明する。
[0053]
 例えば、ライセンスキー1200の初回の発行時には、ライセンス管理サーバ600がライセンスキー1200の装置ID1200bとしてPLC101の識別子を含むライセンスキー1200を生成し、ライセンス管理ツール500にライセンスキー1200を送信する。このとき、ユーザあるいは他の者が、ライセンス管理ツール500に保存されたPLC101用のライセンスキー1200をメモリ51内のある領域にコピーしたとする。PLC101にライセンスキー1200が登録された後、ユーザあるいは他の者が、ライセンス管理ツール500を操作して、ライセンスキー1200をPLC102に移行したとする。さらに、ユーザあるいは他の者が、コピーしておいたPLC101用のライセンスキー1200をPLC101に再び登録したとする。この場合、PLC101用のライセンスキー1200をPLC101に登録することができてしまい、1ライセンスのみの購入で2つのPLC100でアプリケーションプログラム1100を実行することが可能となってしまう。
[0054]
 また、例えば、ユーザあるいは他の者が、ライセンス管理ツール500を操作して、PLC101に登録されているライセンスキー1200をPLC101からPLC102に移行する処理の最中に、PLC101から取得したライセンスキー1200を、例えば、メモリ51内のある領域にコピーしたとする。ライセンス管理ツール500により再生成されたライセンスキー1200が移行先のPLC102に登録された後、ユーザあるいは他の者が、コピーしておいたPLC101用のライセンスキー1200をPLC101に再び登録したとする。この場合も、PLC101用のライセンスキー1200をPLC101に登録することができてしまい、1ライセンスのみの購入で2つのPLC100でアプリケーションプログラム1100を実行できてしまう。
[0055]
 このような不正利用を防止するため、ライセンスキー1200を移行する場合に、ライセンス管理ツール500は、移行元のPLC100が有していたライセンスキー1200から無効化キーを生成し、無効化キーを移行元のPLC101に登録する。
[0056]
 図1に示すライセンス確認部140は、PLC100が、アプリケーションプログラム1100の実行に必要なライセンスキー1200を有しているか否かを確認する。
[0057]
 具体的には、ライセンス確認部140は、図4に示すライセンスキー記憶部120にアプリケーションプログラム1100に対応するライセンスキー1200が存在するか否かを判別する。ライセンス確認部140は、ライセンスキー記憶部120にライセンスキー1200が存在する場合、ライセンスキー1200の装置ID1200bの値が、メモリ11に格納されているPLC100の識別子と一致するか否かに応じて、ライセンスキー1200が有効であるか否かを判別する。ライセンス確認部140は、ライセンスキー1200が有効に存在するか否かをプログラム実行部160に通知する。ライセンス確認部140の機能は、図2に示すMPU13により実現される。
[0058]
 図1に示すライセンス送受信部150は、ライセンス管理ツール500からライセンスキー1200を受信し、そのライセンスキー1200が登録可能か判別する。ライセンス送受信部150は、供給されたライセンスキー1200が登録可能であると判別した場合、そのライセンスキー1200をライセンスキー記憶部120に格納する。
[0059]
 具体的には、ライセンス送受信部150は、受信したライセンスキー1200の無効化フラグ1200dを除く部分が一致する無効化キーが、無効化キー記憶部130に格納されているか否かを判別する。ライセンス送受信部150は、無効化フラグ1200dを除く部分が一致する無効化キーを有していない場合には、ライセンスキー1200をライセンスキー記憶部120に格納する。一方、ライセンス送受信部150は、無効化フラグ1200dを除く部分が一致する無効化キーを有している場合には、ライセンスキー1200をライセンスキー記憶部120に格納しない。
[0060]
 さらに、ライセンス送受信部150は、ライセンスキー1200の新規発行時及び移行時に、ライセンス管理ツール500からPLC100の識別子を要求されると、PLC100の識別子をライセンス管理ツール500に送信する。ライセンスキー1200の初回発行時には、ライセンス管理サーバ600が装置ID1200bとしてPLC100の識別子をライセンスキー1200にセットする。また、ライセンスキー1200の移行時には、ライセンス管理ツール500が装置ID1200bとしてPLC100の識別子をライセンスキー1200にセットする。ライセンス送受信部150は、本発明の識別子送信手段の一例である。
[0061]
 ライセンス送受信部150は、ライセンスキー1200の移行時にライセンス管理ツール500から保有するライセンスに関するデータを要求されると、ライセンスキー記憶部120に格納されているライセンスキー1200の値の一覧をライセンス管理ツール500に送信する。
[0062]
 さらに、ライセンス送受信部150は、ライセンス管理ツール500からライセンスキー1200の取り出しを要求されると、指定されたライセンスキー1200をライセンスキー記憶部120から取り出して、そのライセンスキー1200をライセンス管理ツール500に送信する。よって、取り出されたライセンスキー1200は、ライセンスキー記憶部120内に記憶されなくなる。
[0063]
 ライセンス送受信部150は、ライセンスキー1200の移行時に、ライセンス管理ツール500から無効化キーが供給されると、無効化キーを無効化キー記憶部130に格納する。ライセンス送受信部150の機能は、図2に示すMPU13がライセンス管理プログラム111を実行することにより実現される。
[0064]
 図1に示すプログラム実行部160は、アプリケーションプログラム1100を実行する。プログラム実行部160は、アプリケーションプログラム1100を実行するのに先だって、アプリケーションプログラム1100に対応するライセンスキー1200が有効に存在するか否かをライセンス確認部140に問い合わせる。プログラム実行部160は、ライセンス確認部140からの応答に基づいてライセンスキー1200が有効に存在すると判別した場合に、プログラム記憶部110に格納されているアプリケーションプログラム1100を実行する。プログラム実行部160の機能は図2に示すMPU13により実現される。
[0065]
 続いて、図1に示すライセンス管理ツール500の機能構成を説明する。ライセンス管理ツール500は、機能的には、購入済みのアプリケーションプログラム1100に関するデータを記憶する購入データ記憶部510と、新規のライセンスキー1200をPLC100に登録するライセンス登録部520と、ライセンスキー1200を移行するライセンス移行部530とを含む。
[0066]
 購入データ記憶部510は、ユーザが購入済みのアプリケーションプログラム1100を特定するため、購入済みアプリケーションプログラム1100を特定するアプリケ-ションIDとアプリケーション名とを記憶する。購入データ記憶部510の機能は、図2に示すメモリ51により実現される。
[0067]
 図1に示すライセンス登録部520は、ユーザからライセンスキー1200の新規発行の指示を受け付けると、ライセンス管理サーバ600にライセンスキー1200の発行を要求する発行要求を送信する。ライセンス登録部520は、ライセンス管理サーバ600からライセンスキー1200が発行されると、ライセンスキー1200をPLC100に送信する。
[0068]
 具体的には、まず、ライセンス登録部520は、購入データ記憶部510に格納されている購入済みのアプリケーションプログラム1100のアプリケーション名の一覧を図2に示す表示装置55に表示する。ユーザがアプリケーションを選択すると、ライセンス登録部520は、接続されているPLC100にその識別子を要求し、PLC100から識別子を取得する。ライセンス登録部520は、ライセンス発行要求をライセンス管理サーバ600に送信する。ライセンス発行要求には、PLC100のユーザを識別するユーザIDと、PLC100から受信したPLC100の識別子と、ユーザが指定するアプリケーションプログラム1100を特定するアプリケーションIDと、が含まれている。ライセンス登録部520は、ライセンス管理サーバ600からライセンスキー1200を受信すると、受信したライセンスキー1200をPLC100に送信する。
[0069]
 一方、ライセンス登録部520は、ライセンス管理サーバ600からライセンスキー1200を発行ができない旨の通知を受けると、ライセンスキー1200の登録に失敗したことをユーザに通知する。例えば、ライセンス登録部520は、図2に示す表示装置55にライセンスキー1200の登録に失敗した旨のメッセージを表示する。ライセンス登録部520の機能は、図2に示すCPU56が、ライセンス管理プログラム511を実行することにより実現される。
[0070]
 図1に示すライセンス移行部530は、ユーザからライセンスキー1200の移行の指示を受け付けると、接続されている移行元のPLC100からライセンスキー1200を取得する。ライセンス移行部530は、移行先のPLC100に接続されると、移行先のPLC100から識別子を取得し、その識別子を含む新たなライセンスキー1200を再生成し、移行先のPLC100に新たなライセンスキー1200を供給する。ライセンス移行部530の機能は、図2に示すCPU56が、ライセンス管理プログラム511を実行することにより実現される
[0071]
 ライセンス移行部530は、キー取得部531と、識別子取得部532と、再生成部533と、無効化キー生成部534とを含む。
[0072]
 キー取得部531は、ユーザが、ライセンス管理ツール500と移行元のPLC100とを接続し、ライセンスキー1200の移行の指示を出すと、まず、移行元のPLC100が保有するライセンスキー1200についての情報を移行元のPLC100に要求する。キー取得部531は、移行元のPLCから受信したライセンスキー1200についての情報をユーザに提示する。キー取得部531は、ユーザから指定されたライセンスキー1200の取り出しを移行元のPLC100に要求する。キー取得部531は、移行元のPLC100からライセンスキー1200を取得すると、ライセンスキー1200を再生成部533に供給する。キー取得部531は、本発明のキー取得手段の一例である。
[0073]
 識別子取得部532は、ユーザがライセンス管理ツール500と移行先のPLC100とを接続すると、移行先のPLC100に識別子を要求する。識別子取得部532は、移行先のPLC100から識別子を取得すると、識別子を再生成部533に供給する。識別子取得部532は、本発明の識別子取得手段の一例である。
[0074]
 再生成部533は、キー取得部531が移行元のPLC100からライセンスキー1200を取得すると、ライセンスキー1200を再生成する前に、無効化キーの生成を無効化キー生成部534に指示する。再生成部533は、無効化キー生成部534が無効化キーを生成した後、ライセンスキー1200を再生成する。再生成部533は、本発明の再生成手段の一例である。
[0075]
 再生成部533は、キー取得部531が移行元のPLC100から取得したライセンスキー1200から、装置ID1200bとしてセットされている移行元のPLC100の識別子を削除する。再生成部533はそのライセンスキー1200の装置ID1200bとして、移行先のPLC100の識別子をセットする。さらに、再生成部533は、ライセンスキー1200の移行カウンタ1200cの値を1つ増やす。このようにして、再生成部533はライセンスキー1200を再生成する。再生成部533は、再生成したライセンスキー1200を移行先のPLC100に送信する。
[0076]
 その後、再生成部533は、移行したライセンスキーの情報をライセンス管理サーバ600に送信する。移行したライセンスキーの情報は、PLC100のユーザを識別するユーザIDと、移行先のPLC100に送信したライセンスキー1200と、移行先のPLC100の識別子とを含む。
[0077]
 無効化キー生成部534は、再生成部533から指示されると無効化キーを生成する。まず、無効化キー生成部534は、移行元のライセンスキー1200を複製し、複製したキーの無効化フラグ1200dに“1”をセットして、無効化キーを生成する。無効化キー生成部534が生成した無効化キーは、移行元のPLC100が有していたライセンスキー1200と、無効化フラグ1200dの値だけが異なる。無効化キー生成部534は無効化キーを移行元のPLC100に送信する。無効化キー生成部534は、本発明の無効化キー生成手段の一例である。
[0078]
 PLC101が有するライセンスキー1200をPLC102に移行する場合には、移行元のPLC101は、本発明の第1装置の一例であり、移行先のPLC102は、本発明の第2装置の一例である。移行元のPLC101の識別子は、本発明の第1識別子の一例であり、移行先のPLC102の識別子は、本発明の第2識別子の一例である。
[0079]
 続いて、ライセンス管理サーバ600の機能構成を説明する。ライセンス管理サーバ600は、機能的には、アプリケーションプログラムに関するデータを記憶するアプリケーションデータ記憶部610と、ライセンスに関するデータを記憶するライセンスデータ記憶部620と、ライセンスキー1200を発行するライセンス管理部630とを含む。
[0080]
 アプリケーションデータ記憶部610は、図6に示すようなアプリケーション適合テーブル610aを格納する。アプリケーション適合テーブル610aは、PLC100の機種毎の各アプリケーションプログラム1100の実行可否の対応を示すデータを記憶する。図示する例では、アプリケーション適合テーブル610aは、PLC100の機種に応じて各アプリケーションプログラム1100の実行が可能(OK)であるか、実行が不可(NG)であるかを示す値を記憶する。例えば、“TYPE2”のPLC100は、“アプリケーション1001”と“アプリケーション1004”とを実行することができ、その他のアプリケーションプログラム1100を実行することができない。例えば、アプリケーションプログラムを開発・販売するメーカにおいてライセンス管理サーバ600を管理する管理者が、アプリケーション適合テーブル610aをアプリケーションデータ記憶部610に格納する。アプリケーションデータ記憶部610の機能は、図2に示すメモリ61により実現される。
[0081]
 図1に示すライセンスデータ記憶部620は、図7に示すような購入ライセンステーブル620aを格納する。購入ライセンステーブル620aは、ユーザ毎の、ライセンスの購入数及び使用数を示すデータを記憶する。図示する例では、購入ライセンステーブル620aは、ユーザを特定する識別子であるユーザIDと、アプリケーションプログラム1100を特定するアプリケーションIDと、ユーザが購入したライセンス数を示す購入ライセンスと、PLC100に登録されたライセンス数を示す使用ライセンスとを含む。
[0082]
 例えば、ユーザIDが“2019002”であるユーザは、“アプリケーション1001”の3ライセンス購入しているが、購入した全てのライセンス分のアプリケーションプログラム1100を使用していない。さらに、このユーザは、“アプリケーション1002”を1ライセンス、“アプリケーション1003”を4ライセンス購入しており、購入した全てのライセンス分のアプリケーションプログラム1100を使用している。
[0083]
 さらに、図1に示すライセンスデータ記憶部620は、図8に示すようなライセンス登録テーブル620bを格納する。ライセンス登録テーブル620bは、PLC100に発行されたライセンスキー1200に関するデータを記憶する。ライセンス登録テーブル620bは、ユーザとアプリケーションプログラム1100との組み合わせ毎に、PLC100に発行されたライセンスキー1200を特定するデータを記憶する。
[0084]
 図示する例では、ライセンス登録テーブル620bは、ユーザを特定する識別子であるユーザIDと、アプリケーションプログラム1100を特定するアプリケーションIDと、発行されたライセンスキーと、PLC100の識別子とを含む。
[0085]
 例えば、アプリケーションプログラムを開発・販売するメーカにおいてライセンス管理サーバ600を管理する管理者が、購入ライセンステーブル620a及びライセンス登録テーブル620bをライセンスデータ記憶部620に格納する。ライセンスデータ記憶部620の機能は、図2に示すメモリ61により実現される。
[0086]
 図1に示すライセンス管理部630は、ライセンス管理ツール500からライセンス発行要求を受信すると、ライセンスキー1200を発行する。
[0087]
 まず、ライセンス管理部630は、ライセンス発行の可否を判別する。具体的には、ライセンス管理部630は、アプリケーション適合テーブル610aを参照して、受信したライセンス発行要求に含まれているPLC100の識別子から特定されるPLC100の機種が、指定されたアプリケーションプログラム1100を実行できるか否かを判別する。PLC100の機種を示す情報は、PLC100の識別子であるシリアルコードに含まれており、この情報からライセンス管理部630はPLC100の機種を特定することができる。
[0088]
 続いて、ライセンス管理部630は、購入ライセンステーブル620aを参照して、ライセンス発行要求に含まれるユーザIDを有するユーザが、指定されたアプリケーションプログラム1100のライセンスを購入済みであるか否かを判別する。ユーザがライセンスを購入済みである場合、ライセンス管理部630は、未使用のライセンスがあるか否かを判別する。
[0089]
 ライセンス管理部630は、ユーザがライセンスを購入済み、かつ、未使用のライセンスがある場合、ライセンスキー1200の発行が可能であると判別する。よって、ライセンス管理部630は、図5に示すようなライセンスキー1200を生成する。
[0090]
 ライセンス管理部630は、例えば、ユーザIDをシードとして乱数を生成し、生成した乱数にアプリケーションIDを付加した値を、ライセンスコード1200aにセットする。ライセンス管理部630は、装置ID1200bに、ライセンス発行要求に含まれているPLC100の識別子をセットする。ライセンス管理部630は、移行カウンタ1200cには、初期値、例えば、“0”をセットする。ライセンス管理部630は、無効化フラグ1200dに、ライセンスキー1200が有効なキーであることを示す値として、“0”をセットする。ライセンス管理部630は、このようにして生成したライセンスキー1200をライセンス管理ツール500に送信する。
[0091]
 その後、ライセンス管理部630は、ライセンス登録テーブル620bに、ライセンス発行要求に含まれていたユーザID、アプリケーションID、及びPLC100の識別子と、発行したライセンスキー1200とを登録する。
[0092]
 一方、ライセンス管理部630は、PLC100の機種が、指定されたアプリケーションプログラム1100を実行できない、あるいは、ユーザがライセンスを購入済みでない、あるいは、未使用のライセンスがない場合、ライセンスキー1200の発行が不可能であると判別する。この場合、ライセンス管理部630は、ライセンス管理ツール500にライセンスキー1200を発行できない旨を通知する。ライセンス管理部630の機能は、図2に示すCPU63がライセンス管理プログラム611を実行することにより実現される。
[0093]
 また、ライセンス管理部630は、ライセンス管理ツール500から、PLC100のユーザを識別するユーザIDと、移行先のPLC100に登録されたライセンスキー1200と、移行先のPLC100の識別子とを受信すると、ライセンス登録テーブル620bを更新する。具体的には、ライセンス管理部630は、ライセンス登録テーブル620bのデータのうち、受信したライセンスキー1200と識別子により特定されるデータを、受信したライセンスキー1200とPLC100の識別子とで更新する。その後、ライセンス管理部630は、ライセンス管理ツール500にライセンス登録テーブル620bの更新が完了した旨を示す更新完了通知を送信する。
[0094]
(ライセンスキーの初回の登録)
 続いて、ライセンスキー1200の初回の登録処理を説明する。まず、ユーザは、通信ケーブル701により、ライセンス管理ツール500とPLC101とを接続する。ユーザは、ライセンス管理ツール500の入力装置54を操作してメニュー画面を開く。ユーザの操作に応答して、CPU56は、表示装置55に図9に示すようなメニュー画面を表示する。ここで、ユーザが「ライセンスキーの登録」を選択したとする。
[0095]
 CPU56はライセンス管理プログラム511を実行することにより、ライセンス登録部520として機能する。図10に示すように、まず、ライセンス登録部520は、PLC101に識別子を要求する(ステップS11)。これに応答して、PLC101のライセンス送受信部150が識別子をライセンス管理ツール500に送信したとする。ライセンス登録部520は、PLC101から識別子を受信すると(ステップS12)、図11Aに示すようなアプリケーションプログラムの選択画面を表示する。ここで、ライセンス登録部520は、図1に示す購入データ記憶部510に格納されている購入済みのアプリケーションプログラム1100のうちいずれかをユーザが選択することができる画面を表示する。ここで、ユーザが所望のアプリケーションプログラムを選択し、「登録」ボタンを押したとする。
[0096]
 よって、図10に示すように、ライセンス登録部520は、アプリケーションプログラムの選択を受け付け(ステップS13)、ライセンス発行要求をライセンス管理サーバ600に送信する(ステップS14)。ライセンス発行要求には、PLC100のユーザのユーザIDと、PLC100の識別子と、アプリケーションプログラム1100を特定するアプリケーションIDと、が含まれている。
[0097]
 その後、ライセンス登録部520は、ライセンス管理サーバ600から、ライセンスキー1200を受信した場合、ライセンス発行が成功したと判別する(ステップS15;Yes)。ライセンス登録部520は、ライセンスキー1200をPLC101に送信し(ステップS16)、図11Bに示すような、登録完了画面を表示する。
[0098]
 一方、ライセンス登録部520は、ライセンス管理サーバ600からライセンスキー1200を発行できない旨の通知を受信した場合、ライセンス発行が失敗したと判別し(ステップS15;No)、例えば、図11Cに示すような画面を表示してライセンス発行が失敗した旨を通知する(ステップS17)。
[0099]
 ライセンスキー1200の発行に関するライセンス管理サーバ600側の処理は以下の通りである。図2に示すCPU63は、ライセンス管理プログラム611を実行することにより、図1に示すライセンス管理部630として機能する。
[0100]
 図12に示すように、ライセンス管理部630は、ライセンス管理ツール500からライセンス発行要求を受信すると(ステップS21;Yes)、アプリケーション適合テーブル610aを参照して、PLC100が、指定されたアプリケーションプログラム1100を実行することができるか否かを判別する(ステップS22)。ライセンス管理部630は、PLC100が指定されたアプリケーションプログラム1100を実行することができると判別すると(ステップS22;Yes)、ステップS23の処理を実行する。
[0101]
 一方、ライセンス管理部630は、PLC100が指定されたアプリケーションプログラム1100を実行することができないと判別すると(ステップS22;No)、ライセンス発行が失敗した旨をライセンス管理ツール500に通知する(ステップS27)。
[0102]
 ステップS23では、ライセンス管理部630は、購入ライセンステーブル620aを参照して、PLC100のユーザが、そのアプリケーションプログラム1100の使用可能なライセンスを有しているか否かを判別する(ステップS23)。ライセンス管理部630は、PLC100のユーザが、そのアプリケーションプログラム1100の使用可能なライセンスを有していると判別すると(ステップS23;Yes)、ライセンスキー1200を生成する(ステップS24)。
[0103]
 ライセンス管理部630は、生成したライセンスキー1200をライセンス管理ツール500に送信する(ステップS25)。その後、ライセンス管理部630は、ライセンスキー1200の情報を、図8に示すライセンス登録テーブル620bに登録する(ステップS26)。
[0104]
 一方、ライセンス管理部630は、PLC100のユーザが、アプリケーションプログラム1100を購入していない、あるいは、購入しているものの、全てのライセンスを使用中である場合には(ステップS23;No)、ライセンス発行が失敗した旨をライセンス管理ツール500に通知する(ステップS27)。以上が、ライセンスの初回の登録時におけるライセンス管理サーバ600側の処理である。
[0105]
(ライセンスキーの移行)
 続いて、ライセンスキー1200の移行処理を説明する。以下の説明においては、PLC101が有するライセンスキー1200をPLC102に移行する例を説明する。ユーザは、通信ケーブル701により、ライセンス管理ツール500と移行元のPLC101とを接続する。なお、ライセンス管理ツール500は、ネットワーク702を介して、ライセンス管理サーバ600に接続されている必要はない。
[0106]
 ユーザは、ライセンス管理ツール500の入力装置54を操作してメニュー画面を開く。ユーザの操作に応答して、CPU56は、表示装置55に図9に示すようなメニュー画面を表示する。ここで、ユーザが「ライセンスキーの移行」を選択したとする。CPU56は、ライセンス管理プログラム511を実行することにより、図1に示すライセンス移行部530として機能する。
[0107]
 図13に示すように、ライセンス移行部530は、移行元のPLC101にライセンス登録についての情報を要求する(ステップS31)。これに応答して、PLC101のライセンス送受信部150は、ライセンス登録の情報として、ライセンスキー記憶部120に格納されているライセンスキー1200の値の一覧と、PLC101の識別子とをライセンス管理ツール500に送信する。ライセンス移行部530は、ライセンス登録についての情報を受信すると(ステップS32)、受信したデータに基づいて、図15Aに示すような、移行するアプリケーションプログラムの選択画面を表示する。
[0108]
 ユーザがライセンスを移行するアプリケーションプログラム1100を選択すると(ステップS33;Yes)、ライセンス移行部530は、選択されたアプリケーションプログラム1100のライセンスキー1200の取り出しを移行元のPLC101に要求する(ステップS34)。これに応答して、PLC101のライセンス送受信部150が、指定されたライセンスキー1200を取り出して、ライセンスキー1200をライセンス管理ツール500に送信したとする。
[0109]
 ライセンス移行部530は、移行元のPLC101からライセンスキー1200を受信すると(ステップS35;Yes)、受信したライセンスキー1200をコピーし、コピーしたライセンスキー1200の無効化フラグ1200dに“1”をセットして、無効化キーを生成する。(ステップS36)。
[0110]
 ライセンス移行部530は、無効化キーを移行元のPLC101に送信する(ステップS37)。これに応答して、PLC101のライセンス送受信部150は、受信した無効化キーを無効化キー記憶部130に格納する。その後、ライセンス移行部530は、ステップS38の処理を実行する。
[0111]
 図14に示すように、ライセンス移行部530は、ユーザに接続の切り替えを指示する(ステップS38)。ライセンス移行部530は、図15Bに示すような画面を表示して、移行先のPLC102に接続することを指示する。ユーザが、移行元のPLC101から通信ケーブル701を取り外し、ライセンス管理ツール500とPLC101との接続を切り、その後、通信ケーブル701を移行先のPLC102に接続したものとする。よって、ライセンス管理ツール500は、移行先のPLC102と通信可能となる。
[0112]
 図14に示すように、ライセンス移行部530は、移行先のPLC102に識別子を要求する(ステップS39)。これに応答して、PLC102のライセンス送受信部150は、識別子をライセンス管理ツール500に送信する。
[0113]
 ライセンス移行部530は、移行先のPLC102から識別子を受信すると(ステップS40)、移行元のPLC101から受信したライセンスキー1200から新しいライセンスキー1200を再生成する(ステップS41)。具体的には、ライセンス送受信部150は、図5に示すような、ライセンスキー1200の装置ID1200bとしてセットされている移行元のPLC101の識別子を削除し、移行先のPLC102から取得した識別子を新たな装置ID1200bとしてライセンスキー1200にセットする。さらに、ライセンス移行部530は、ライセンスキー1200の移行カウンタ1200cの値を1つ増やす。
[0114]
 図14に示すように、ライセンス移行部530は、再生成したライセンスキー1200を移行先のPLC102に送信する(ステップS42)。これに応答して、PLC102のライセンス送受信部150は、受信したライセンスキー1200をライセンスキー記憶部120に記憶する。
[0115]
 ライセンスキー1200の移行が完了すると、図16Aに示すように、ライセンス移行部530は、ライセンスキーの情報をライセンス管理サーバ600に送信する(ステップS51)。ライセンスキーの情報は、PLC100のユーザを識別するユーザIDと、移行先のPLC102に送信したライセンスキー1200と、PLC102の識別子と、を含む。ライセンス移行部530は、ライセンス管理サーバ600から、更新完了報告を受信すると(ステップS52)、図15Cに示すような移行完了画面を表示する。
[0116]
 図16Bに示すように、ライセンス管理サーバ600のライセンス管理部630は、ライセンス管理ツール500からライセンスキーの情報を受信すると(ステップS61)、ライセンス登録テーブル620bのデータを更新する(ステップS62)。具体的には、ライセンス管理部630は、ライセンス登録テーブル620bのデータのうち、受信したユーザIDにより特定されるデータを、受信したライセンスキー1200と識別子とで更新する。その後、ライセンス管理部630は、ライセンス管理ツール500にライセンス登録テーブル620bの更新が完了した旨を示す更新完了通知を送信する(ステップS63)。
[0117]
 以上説明したように、実施の形態に係る構成においては、ライセンス管理ツール500が、外部ネットワークに接続されていない2以上のPLC100の間でライセンスキー1200を移行する。ライセンス管理ツール500は、移行元のPLC101から取得したライセンスキー1200からPLC101の識別子を削除して、移行先のPLC102の識別子をライセンスキー1200にセットすることにより、ライセンスキー1200を再生成し、新しいライセンスキー1200を移行先のPLC102に供給する。このような構成を備えることで、ライセンス管理ツール500は、ライセンス管理サーバと通信することができないスタンドアロンの装置間でライセンスを移行することができる。
[0118]
 実施の形態においては、ライセンス送受信部150が、受信したライセンスキー1200の無効化フラグ1200dを除く部分が一致する無効化キーが、無効化キー記憶部130に格納されている場合に、ライセンスキー1200を受け付けない例を説明した。しかし、これに限られない。
[0119]
 例えば、ライセンス管理ツール500は、PLC100が無効化キーを有している場合には、PLC100にライセンスキー1200を送信しないようにしてもよい。具体的には、ライセンス管理ツール500の再生成部533が、再生成したライセンスキー1200を移行先のPLC100に送信する前に、PLC100にPLC100が有している無効化キーを要求してもよい。これに応答して、PLC100は、無効化キー記憶部130に格納されているか無効化キーの値の一覧をライセンス管理ツール500に送信するものとする。再生成部553は、PLC100から受信した無効化キーのうちに、再生成したライセンスキー1200の無効化フラグ1200dを除く部分が一致する無効化キーが存在する場合には、再生成したライセンスキー1200を、移行先のPLC100に送信しないようにしてもよい。
[0120]
 実施の形態においては、ライセンス管理ツール500は、移行先のPLC100に新しいライセンスキー1200を供給する前に、移行元のPLC100に無効化キーを送信する例を説明したが、これに限られない。
[0121]
 例えば、ライセンス管理ツール500は、移行元のPLC100からライセンスキー1200を取得し、ライセンスキー1200をコピーする、あるいは、ライセンスキー1200から無効化キーを生成する。ライセンス管理ツール500は、PLC100の接続の切り替えが行われた後、新しいライセンスキー1200を生成し、移行先のPLC100に新しいライセンスキー1200を送信する。その後、ユーザにより、再度、ライセンス管理ツール500と移行先のPLC100とが接続されると、ライセンス管理ツール500は、無効化キーを移行元のPLC100に送信する。この場合、移行先のPLC100へのライセンスキー1200の登録が完了した後に、移行元のPLC100に無効化キーを提供するので、仮に、新しいライセンスキー1200の移行先のPLC100への登録が失敗した場合には、移行元のPLC100に再度ライセンスキー1200を戻すことも可能である。
[0122]
 実施の形態では、移行元のPLC101の識別子が第1識別子として、ライセンスキー1200に含まれており、新たにライセンスキー1200を生成する場合には、ライセンスキー1200から移行元のPLC101の識別子を取り出し、その後、移行先のPLC102の識別子が第2識別子としてライセンスキー1200に追加する例を説明した。しかし、第1識別子、第2識別子として、移行元のPLC100の識別子、移行先のPLC100の識別子以外を使用してもよい。例えば、PLC101の識別子から生成したハッシュ値を第1識別子としてもよく、PLC102の識別子から生成したハッシュ値を第2識別子としてもよい。
[0123]
 実施の形態においては、ライセンス管理ツール500は、ライセンスキー1200の移行の処理に続けて、図16Aに示すライセンス情報更新処理を実行したが、これに限られない。例えば、ライセンス管理ツール500は、ライセンス情報更新処理を、ライセンスキー1200の移行の処理とは別個に実行してもよい。例えば、ライセンス管理ツール500が、ネットワーク702に常時接続されていないことがある。このような場合には、ライセンス管理ツール500は、ネットワーク702に接続されると、図16Aに示すライセンス情報更新処理を実行するようにしてもよい。
[0124]
 実施の形態においては、ライセンス管理ツール500が、通信ケーブル701を介してPLC100と通信する例を説明したが、ライセンス管理ツール500とPLC100とは無線通信を行ってもよい。
[0125]
 上記のプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
[0126]
 本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。

符号の説明

[0127]
1 ライセンス管理システム、11,51,61 メモリ、12,52 入出力インタフェース、13 MPU、19,59,69 バス、53,62 通信インタフェース、54 入力装置、55 表示装置、56,63 CPU、101,102(100) プログラマブルロジックコントローラ(PLC)、110 プログラム記憶部、111,511 ライセンス管理プログラム、120 ライセンスキー記憶部、130 無効化キー記憶部、140 ライセンス確認部、150 ライセンス送受信部、160 プログラム実行部、500 ライセンス管理ツール、510 購入データ記憶部、511 ライセンス管理プログラム、520 ライセンス登録部、530 ライセンス移行部、531 キー取得部、532 識別子取得部、533 再生成部、534 無効化キー生成部、600 ライセンス管理サーバ、610 アプリケーションデータ記憶部、610a アプリケーション適合テーブル、611 ライセンス管理プログラム、620 ライセンスデータ記憶部、620a 購入ライセンステーブル、620b ライセンス登録テーブル、630 ライセンス管理部、701 通信ケーブル、702 ネットワーク、1101~1103(1100) アプリケーションプログラム、1201~1203(1200) ライセンスキー、1200a ライセンスコード、1200b 装置ID、1200c 移行カウンタ、1200d 無効化フラグ

請求の範囲

[請求項1]
 アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを、外部ネットワークに接続されていない2以上の装置の間で移行するライセンス移行ツールであって、
 前記ライセンスキーは、前記ライセンスキーが登録されている装置を識別する識別子を含み、
 ライセンスの移行元の前記装置である第1装置から、前記ライセンスキーを取得するキー取得手段と、
 ライセンスの移行先の前記装置である第2装置から、前記第2装置を識別する第2識別子を取得する識別子取得手段と、
 前記第1装置から取得した前記ライセンスキーから、前記第1装置を識別する第1識別子を削除して、前記第2装置の前記第2識別子を前記識別子として追加して、新しい前記ライセンスキーを生成し、前記第2装置に新しい前記ライセンスキーを供給する再生成手段と、
 を備えるライセンス移行ツール。
[請求項2]
 前記ライセンスキーは、前記アプリケーションプログラムの1ライセンス毎に割り振られた識別コードと、前記ライセンスキーが登録されている前記装置を識別する前記識別子と、前記ライセンスキーの移行回数を示す情報と、を含む、
 請求項1に記載のライセンス移行ツール。
[請求項3]
 前記ライセンスキーを有する前記第2装置は、前記ライセンスキーに含まれる前記識別子が、前記第2装置を識別する前記第2識別子と一致する場合に、前記アプリケーションプログラムを実行する、
 請求項1または2に記載のライセンス移行ツール。
[請求項4]
 前記再生成手段が、新しい前記ライセンスキーを前記第2装置に供給した後に、前記第1装置に前記ライセンスキーを再度登録することができないことを示す無効化キーを生成し、前記第1装置に前記無効化キーを供給する無効化キー生成手段、
 を備える請求項1または3に記載のライセンス移行ツール。
[請求項5]
 前記無効化キー生成手段は、前記第1装置から取得した前記ライセンスキーを複製し、複製したキーに、そのキーが無効であることを示す値を設定して、前記無効化キーを生成する、
 請求項4に記載のライセンス移行ツール。
[請求項6]
 前記第2装置は、前記無効化キーを有している場合、前記無効化キーと対応する前記ライセンスキーを受け付けない、
 請求項4または5に記載のライセンス移行ツール。
[請求項7]
 前記再生成手段は、前記第2装置が新しい前記ライセンスキーに対応する前記無効化キーを有している場合、新しい前記ライセンスキーを前記第2装置に供給しない、
 請求項4または5に記載のライセンス移行ツール。
[請求項8]
 前記装置は、プログラマブルロジックコントローラである、
 請求項1から7のいずれか1項に記載のライセンス移行ツール。
[請求項9]
 アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを、外部ネットワークに接続されていない2以上の装置の間で移行するコンピュータに、
 ライセンスの移行元の前記装置である第1装置から、前記ライセンスキーを取得させ、
 ライセンスの移行先の前記装置である第2装置から、前記第2装置を識別する第2識別子を取得させ、
 前記第1装置から取得した前記ライセンスキーから、前記第1装置を識別する第1識別子を削除して、前記第2装置の前記第2識別子を追加して、新しい前記ライセンスキーを生成させ、
 前記第2装置に新しい前記ライセンスキーを供給させる、
 プログラム。
[請求項10]
 アプリケーションプログラムの使用が許諾されていることを示すライセンスキーを移行ツールが第1装置から第2装置へ移行するライセンス移行システムであって、
 前記ライセンスキーは、前記ライセンスキーが登録されている装置を識別する識別子を含み、
 前記移行ツールは、
 ライセンスの移行元の前記第1装置から、前記ライセンスキーを取得するキー取得手段と、
 ライセンスの移行先の前記第2装置から、前記第2装置を識別する第2識別子を取得する識別子取得手段と、
 前記第1装置から取得した前記ライセンスキーから、前記第1装置を識別する第1識別子を削除して、前記第2装置の前記第2識別子を前記識別子として追加して、新しい前記ライセンスキーを生成し、前記第2装置に新しい前記ライセンスキーを供給する再生成手段と、
 を備え、
 前記第1装置は、
 前記ライセンスキーを記憶するライセンスキー記憶手段と、
 前記移行ツールから前記ライセンスキーを要求されると、前記移行ツールに前記ライセンスキー記憶手段が記憶する前記ライセンスキーを送信する送信手段と、
 を備え、
 前記第2装置は、
 前記移行ツールから前記識別子を要求されると、前記移行ツールに前記識別子を送信する識別子送信手段と、
 前記移行ツールから供給された前記ライセンスキーを前記第2装置が有する前記ライセンスキー記憶手段に格納する格納手段と、
 を備える、
 ライセンス移行システム。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11A]

[ 図 11B]

[ 図 11C]

[ 図 12]

[ 図 13]

[ 図 14]

[ 図 15A]

[ 図 15B]

[ 図 15C]

[ 図 16A]

[ 図 16B]