(57)【要約】【課題】プログラムに対するライセンス管理を適切に実現することのできる画像形成装置、ライセンス管理方法、プログラム、及びライセンス管理システムの提供を目的とする。【解決手段】プログラムに関連付けて前記プログラムのライセンスデータと無効化されたライセンスデータの履歴とを管理するライセンスデータ管理手段と、前記ライセンスデータ管理手段に管理されているライセンスデータに基づいて起動対象とされたプログラムの起動の許否を判定する判定手段と、前記判定手段によって起動が許可された場合にプログラムを起動する起動手段と、前記ライセンスデータの無効化の要求の入力に応じ、該ライセンスデータを前記履歴に含めるライセンス無効化手段とを有することにより上記課題を解決する。【選択図】図４
2010067232.tif 000002
【特許請求の範囲】
【請求項１】
プログラムに関連付けて前記プログラムのライセンスデータと無効化されたライセンスデータの履歴とを管理するライセンスデータ管理手段と、
前記ライセンスデータ管理手段に管理されているライセンスデータに基づいて起動対象とされたプログラムの起動の許否を判定する判定手段と、
前記判定手段によって起動が許可された場合にプログラムを起動する起動手段と、
前記ライセンスデータの無効化の要求の入力に応じ、該ライセンスデータを前記履歴に含めるライセンス無効化手段とを有することを特徴とする画像形成装置。
【請求項２】
前記ライセンスデータの入力を受け付け、入力されたライセンスデータをプログラムに関連付けて前記ライセンスデータ管理手段に記録するライセンス導入手段を有し、
前記ライセンス導入手段は、前記入力されたライセンスデータが前記履歴に含まれているときは、当該ライセンスデータを前記ライセンスデータ管理手段に記録しないことを特徴とする請求項１記載の画像形成装置。
【請求項３】
前記判定手段は、起動対象とされたプログラムに関連付けられているライセンスデータが前記履歴に含まれているときは、前記プログラムの起動を許可しないことを特徴とする請求項１又は２記載の画像形成装置。
【請求項４】
画像形成装置が実行するライセンス管理方法であって、
プログラムに関連付けて前記プログラムのライセンスデータと無効化されたライセンスデータの履歴とを管理するライセンスデータ管理手段に管理されているライセンスデータに基づいて起動対象とされたプログラムの起動の許否を判定する判定手順と、
前記判定手順によって起動が許可された場合にプログラムを起動する起動手順と、
前記ライセンスデータの無効化の要求の入力に応じ、該ライセンスデータを前記履歴に含めるライセンス無効化手順とを有することを特徴とするライセンス管理方法。
【請求項５】
前記ライセンスデータの入力を受け付け、入力されたライセンスデータをプログラムに関連付けて前記ライセンスデータ管理手段に記録するライセンス導入手順を有し、
前記ライセンス導入手順は、前記入力されたライセンスデータが前記履歴に含まれているときは、当該ライセンスデータを前記ライセンスデータ管理手段に記録しないことを特徴とする請求項４記載のライセンス管理方法。
【請求項６】
前記判定手順は、起動対象とされたプログラムに関連付けられているライセンスデータが前記履歴に含まれているときは、前記プログラムの起動を許可しないことを特徴とする請求項４又は５記載のライセンス管理方法。
【請求項７】
画像形成装置に、
プログラムに関連付けて前記プログラムのライセンスデータと無効化されたライセンスデータの履歴とを管理するライセンスデータ管理手段に管理されているライセンスデータに基づいて起動対象とされたプログラムの起動の許否を判定する判定手順と、
前記判定手順によって起動が許可された場合にプログラムを起動する起動手順と、
前記ライセンスデータの無効化の要求の入力に応じ、該ライセンスデータを前記履歴に含めるライセンス無効化手順とを実行させるためのプログラム。
【請求項８】
前記ライセンスデータの入力を受け付け、入力されたライセンスデータをプログラムに関連付けて前記ライセンスデータ管理手段に記録するライセンス導入手順を有し、
前記ライセンス導入手順は、前記入力されたライセンスデータが前記履歴に含まれているときは、当該ライセンスデータを前記ライセンスデータ管理手段に記録しないことを特徴とする請求項７記載のプログラム。
【請求項９】
前記判定手順は、起動対象とされたプログラムに関連付けられているライセンスデータが前記履歴に含まれているときは、前記プログラムの起動を許可しないことを特徴とする請求項７又は８記載のプログラム。
【請求項１０】
画像形成装置と、画像形成装置において利用されるプログラムのライセンスデータを生成するライセンス発行装置と、前記ライセンス発行装置より前記ライセンスデータを取得し、前記画像形成装置に送信するライセンス制御装置とを有するライセンス管理システムであって、
前記画像形成装置は、
前記ライセンス制御装置より受信したライセンスデータと無効化されたライセンスデータの履歴とを前記プログラムに関連付けて管理するライセンスデータ管理手段と、
前記ライセンスデータ管理手段に管理されているライセンスデータに基づいて起動対象とされたプログラムの起動の許否を判定する判定手段と、
前記判定手段によって起動が許可された場合にプログラムを起動する起動手段と、
前記ライセンス制御装置からの前記ライセンスデータの無効化の要求の入力に応じ、該ライセンスデータを前記履歴に含めるライセンス無効化手段とを有することを特徴とするライセンス管理システム。
【請求項１１】
前記ライセンス制御装置は、
前記プログラムが購入されるたびに一意に割り当てられる識別子の入力に応じ、前記プログラムのライセンスデータの発行要求を前記識別子とともに前記ライセンス発行装置に送信し、該該発行要求に応じて返信されるライセンスデータを受信するライセンスデータ取得手段と、
前記ライセンスデータ取得手段によって取得されたライセンスデータを前記画像形成装置に送信するライセンス配信手段とを有し、
前記ライセンス発行装置は、
前記ライセンスデータの発行要求に応じ、前記ライセンスデータを生成し、前記ライセンス制御装置に送信するライセンス発行手段と、
前記ライセンスデータの生成に応じ、前記識別子に対して前記ライセンスデータが発行されたことを示すライセンス発行情報を記憶装置に記録するライセンス発行情報記録手段とを有し、
前記ライセンス発行手段は、前記ライセンス発行情報に基づいて前記識別子に対応するライセンス数の前記ライセンスデータが発行されていると判定されるときは、前記ライセンスデータを生成しないことを特徴とする請求項１０記載のライセンス管理システム。
【請求項１２】
前記ライセンス制御装置は、前記画像形成装置への前記ライセンスデータの無効化の要求に続き、前記ライセンスデータが無効化されたことの通知を前記ライセンス発行装置に送信するライセンス無効化通知手段を有し、
前記ライセンス発行装置は、前記通知に応じ、前記ライセンス発行情報を更新することにより前記ライセンスデータの発行を可能とすることを特徴とする請求項１１記載のライセンス管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、ライセンス管理方法、プログラム、及びライセンス管理システムに関し、特に画像形成装置、ライセンス管理方法、プログラム、及びライセンス管理システムに関する。
【背景技術】
【０００２】
近年では、主に複合機又は融合機と呼ばれる画像形成装置において、その出荷後に新たなアプリケーションの開発及びインストールが可能とされているものがある（例えば、特許文献１）。斯かるアプリケーションの利用形態は多様化しており、所定の期間だけ利用できればよいユーザや、アプリケーションの全機能のうち特定の機能のみ利用できればよいユーザもある。それぞれのユーザの利用形態に応じてアプリケーションのライセンスを管理することができれば、ユーザにとって便宜であるばかりでなく、アプリケーションを販売する側にとってもビジネスチャンスの拡大を期待できる。
【０００３】
ところで、画像形成装置のような高価な機器では、リース契約などの年限による入れ替えが発生することが多い。ユーザの観点からすれば、入れ替え時において元の画像形成装置において利用されていたアプリケーションのライセンスが有効である場合には、入れ替え後の画像形成装置においても同等のアプリケーションが利用可能であるべきである。
【０００４】
そこで、特許文献２に記載されているようなライセンスの解除の仕組みによって入れ替え元の画像形成装置のライセンスを解除し、入れ替え後の画像形成装置において改めてライセンスを取得することが考えられる。なお、特許文献２に記載された技術は、ライセンスコードに含まれる照合キー等と、コンピュータ内に保存された照合キー等とを照合することにより、ライセンスの正当性を判定するものである。ライセンスの解除時には、コンピュータ内に保持された照合コードを変更することにより、解除されたライセンスコードに基づくソフトウェアの利用を制限できるとしている。
【特許文献１】特開２００５−２６９６１９号公報
【特許文献２】特開２００７−３４３８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献２に記載された技術では、元の照合キーがコピーされ、保持されていた場合、ライセンスの解除後に元の照合キーが復元される虞がある。特に、当該文献の段落００３４には、照合キーは他のソフトウェア情報と共に記録媒体に記憶されている旨が記載されており、当該記録媒体から復元される可能性も考えられる。
【０００６】
そうすると、解除されたはずのライセンスコードに基づいてソフトウェアの利用が可能となってしまうという問題がある。
【０００７】
本発明は、上記の点に鑑みてなされたものであって、プログラムに対するライセンス管理を適切に実現することのできる画像形成装置、ライセンス管理方法、プログラム、及びライセンス管理システムの提供を目的とする。
【課題を解決するための手段】
【０００８】
そこで上記課題を解決するため、本発明は、プログラムに関連付けて前記プログラムのライセンスデータと無効化されたライセンスデータの履歴とを管理するライセンスデータ管理手段と、前記ライセンスデータ管理手段に管理されているライセンスデータに基づいて起動対象とされたプログラムの起動の許否を判定する判定手段と、前記判定手段によって起動が許可された場合にプログラムを起動する起動手段と、前記ライセンスデータの無効化の要求の入力に応じ、該ライセンスデータを前記履歴に含めるライセンス無効化手段とを有することを特徴とする。
【０００９】
このような画像形成装置では、プログラムに対するライセンス管理を適切に実現することができる。
【発明の効果】
【００１０】
本発明によれば、プログラムに対するライセンス管理を適切に実現することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるライセンス管理システムの構成例を示す図である。図１において、ライセンス管理システムは、ユーザサイトＡ及びライセンス発行サイトＢ等より構成されている。
【００１２】
ユーザサイトＡは、画像形成装置（機器）のユーザ環境であり、当該ユーザのオフィス等が相当する。したがって、ユーザサイトＡは、画像形成装置のユーザに応じて複数存在し得る。ユーザサイトＡでは、ライセンス制御装置２０と、画像形成装置１０ａ、１０ｂ、１０ｃ、及び１０ｄ等の一台以上の画像形成装置（以下、総称する場合「画像形成装置１０」という。）とがＬＡＮ（Local Area Network）等のネットワーク３０（有線又は無線の別は問わない。）を介して接続されている。画像形成装置１０は、一般的に、複合機又は融合機と称される機器であり、コピー機能、プリンタ機能、スキャナ機能、及びファクス機能等、複数の機能を実現するためのハードウェアを一台の筐体内に備える。画像形成装置１０には、これらの機能を利用した各種のアプリケーションのインストールが可能である。但し、本発明を適用対象となる画像形成装置は、複合機に限られず、少なくともアプリケーションのインストール及び実行が可能であればよい。したがって、コピー機、ファクシミリ、プリンタ、又はスキャナ等の単一の機能を実現する画像形成装置であってもよい。
【００１３】
ライセンス制御装置２０は、ユーザサイトＡにおける画像形成装置１０において動作するアプリケーションのライセンス（利用権限）を一括して取得等するためＰＣ（Personal Computer）等のコンピュータである。すなわち、画像形成装置１０にインストールされた各種のアプリケーションは、ライセンス制御装置２０によって取得されるライセンスによって利用可能となる。
【００１４】
ライセンス発行サイトＢは、ユーザサイトＡにおいて利用される画像形成装置１０のアプリケーションに対するライセンスをユーザサイトＡに対して発行する環境である。例えば、ライセンス発行サイトＢは、画像形成装置１０のメーカーによって運用される。ライセンス発行サイトＢには、ライセンスサーバ５０が設置されている。ライセンスサーバ５０は、ライセンスの生成及び発行等を実行するコンピュータである。
【００１５】
なお、ライセンス制御装置２０及びライセンスサーバ５０は、インターネット等の広域ネットワーク７０を介して接続されている。
【００１６】
画像形成装置１０の詳細について説明する。図２は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。図２において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、ネットワークインタフェース１５、及び操作パネル１６等のハードウェアを有する。
【００１７】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、及びＨＤＤ１１４等を含む。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される。
【００１８】
スキャナ１２は、原稿より画像データを読み取るためのハードウェアである。プリンタは１３、画像データを印刷用紙に印刷するためのハードウェアである。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。ネットワークインタフェース１５は、ＬＡＮ（Local Area Network）等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。操作パネル１６は、ユーザからの入力の受け付けや、ユーザに対する情報の通知等を行うめのボタン、液晶パネル等を備えたハードウェアである。
【００１９】
図３は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。同図において、画像形成装置１０は、ＯＳ１２１、コントロールサービス１２２、及びアプリケーション１２３等のソフトウェアを有する。
【００２０】
ＯＳ１２１は、ＵＮＩＸ（登録商標）等のいわゆるＯＳ（Operating System）であり、各種ソフトウェアをプロセス単位で並列的に起動する。
【００２１】
コントロールサービス１２２は、各種のハードウェアリソース等を制御するためのサービスを上位アプリケーション等に対して共通的に提供するソフトウェアモジュール群である。例えば、コントロールサービス１２２は、スキャナ１２又はプリンタ１３を制御するための手段や、モデム１４又はネットワークインタフェース１５を介した通信手段等を提供する。
【００２２】
アプリケーション１２３は、コントロールサービス１２２やＯＳ１２１等を利用して、ユーザより要求された各種のジョブを画像形成装置１０に実行させるプログラムである。アプリケーション１２３は、標準アプリ１３０とＳＤＫアプリ１４０とに大別される。
【００２３】
標準アプリ１３０は、画像形成装置１０に標準的に（出荷時に予め）実装されているアプリケーションをいう。図中では、コピージョブを制御するコピーアプリ１３１、スキャンジョブを制御するスキャンアプリ１３２、ファクス送信ジョブを制御するファクスアプリ１３３、印刷ジョブを制御するプリントアプリ１３４等が例示されている。
【００２４】
ＳＤＫアプリ１４０は、画像形成装置１０に専用のＳＤＫ（ソフトウェア開発キット）を使用して開発されたアプリケーションをいい、ＳＤＫプラットフォーム１５０上で動作する。すなわち、画像形成装置１０には、その出荷後に専用のＳＤＫを使用して新たにアプリケーションを追加することができる。図中では、ＳＤＫアプリ１４１、１４２、及び１４３の三つのＳＤＫアプリ１４０が例示されている。画像形成装置１０におけるＳＤＫアプリ１４０の起動は、それぞれに対するライセンスキーが取得さされていることが前提とされる。ライセンスキーは、ＳＤＫアプリ１４０の利用を特定の画像形成装置１０上において許可するデータである。なお、本実施の形態において、ＳＤＫアプリ１４０は、Ｊａｖａ（登録商標）言語で記述されたプログラムであるとする。但し、本発明の実施に際し、ＳＤＫアプリ１４０は、Ｊａｖａ（登録商標）言語によって記述されたプログラムに限定されない。
【００２５】
ＳＤＫプラットフォーム１５０は、ＳＤＫアプリ１４０の動作環境を提供するソフトウェアであり、例えば、Ｊａｖａ（登録商標）仮想マシンや、Ｊａｖａ（登録商標）ＭＥ（Micro Edition）において標準で提供されているクラス群やコントロールサービス１２２の機能をラッピングしたクラス群等を含む。また、ＳＤＫプラットフォーム１５０は、ＳＤＫアプリ１４０に関するライセンス管理を行う。例えば、ＳＤＫアプリ１４０は、各ＳＤＫアプリ１４０に対するライセンスキーを管理し、当該ライセンスキーに基づいてＳＤＫアプリ１４０の起動制御等を行う。
【００２６】
図４は、ＳＤＫプラットフォームにおけるライセンス管理機能とＳＤＫアプリの構成例とを示す図である。
【００２７】
同図に示されるように、一つのＳＤＫアプリ１４０は、一つ以上の機能モジュール（例えば、ＪＡＲ（Java（登録商標） Archive）等のプログラムモジュール）と機能モジュールごとに付随する（対応する）ライセンス情報ファイルを含む。機能モジュールの中にはライセンス情報ファイルが付随しないものも存在しうる。各機能モジュールは、当該機能モジュールの属するＳＤＫアプリ１４０が実行するジョブを構成する一部の機能を実現する。ライセンス情報ファイルは、対応する機能モジュールに関するライセンスに関する情報（ライセンス情報）を含むファイルである。ライセンス情報は、例えば、機能モジュールが属するＳＤＫアプリ１４０の識別子（アプリＩＤ）、機能モジュールの識別子 (機能モジュールＩＤ)、機能モジュールのファイル名、及び機能モジュールの表示名 (表示文字列)等より構成される。
【００２８】
同図のＳＤＫアプリ１４０には、機能モジュールとして機能モジュール１４０１ａ、１４０１ｂ、及び１４０１ｃ（以下、総称する場合「機能モジュール１４０１」という。）が含まれている。また、ライセンス情報ファイルとしてライセンス情報ファイル１４０２ａ及びライセンス情報ファイル１４０２ｂ（以下、総称する場合「ライセンス情報ファイル１４０２」という。）が含まれている。ライセンス情報ファイル１４０２ａは、機能モジュール１４０１ａに付随するライセンス情報ファイルである。ライセンス情報ファイル１４０２ｂは、機能モジュール１４０１ｂに付随するライセンス情報ファイルである。なお、機能モジュール１４０１ｃにはライセンス情報ファイルは付随していない。これは、機能モジュール１４０１ｃは、ライセンス対象ではないこと（ライセンスチェックが不要（例えば、ライセンスフリー）であること）を示す。
【００２９】
一方、ＳＤＫプラットフォーム１５０は、ライセンス導入部１５１、ライセンス管理部１５２、判定部１５３、起動制御部１５４、ライセンス無効化部１５５、インストール部１５６、及びライセンスリスト１７０等を有する。
【００３０】
ライセンス導入部１５１は、ライセンス制御装置２０よりＳＤＫアプリ１４０（機能モジュール１４０１）に対するライセンスキーを取得し、当該ライセンスキーをライセンスリスト１７０に保存する。ライセンスキーの導入により、当該ライセンスキーに係るＳＤＫアプリ１４０又は機能モジュール１４０１の利用が可能となる。
【００３１】
起動制御部１５４は、ＳＤＫアプリ１４０の起動及び停止を制御する。ＳＤＫアプリ１４０を起動する際、起動制御部１５４は、ライセンス管理部１５２にＳＤＫアプリ１４０のライセンス状況の問い合わせを行うことにより、機能モジュール１４０１単位で起動（ＲＡＭ１１２へのロード）を制御する。
【００３２】
ライセンス管理部１５２は、ライセンスリスト１７０の生成及びライセンスリスト１７０に基づくライセンスチェック処理の制御等を行う。ライセンスリスト１７０は、ＳＤＫアプリ１４０と一対一に対応する。したがって、複数のＳＤＫアプリ１４０がインストールされている場合、複数のライセンスリスト１７０が生成される。一つのライセンスリスト１７０は、対応するＳＤＫアプリ１４０に含まれている機能モジュール１４０１ごとに、対応するライセンス情報ファイル１４０２に含まれているライセンス情報、及びライセンスキー（ライセンスキーが発行されている場合）等を含む。
【００３３】
図５は、ライセンスリストの構成例を示す図である。同図に示されるようにライセンスリスト１７０には、機能モジュールごとに、機能モジュールＩＤ、ライセンスキー、及びディアクティベーションキー等が登録される。ライセンスキーは、機能モジュール１４０１に対して発行されたライセンスキーの実体である。すなわち、本実施の形態では、機能モジュール１４０１単位でライセンスされる。但し、このことは、ライセンスキーと機能モジュール１４０１とが常に一対一に対応することを意味するものではない。一つのライセンスキーによって複数の機能モジュール１４０１の利用が許可されうる。ディアクティベーション済みキーは、無効化されたライセンスキーの実体又はその識別情報である。
【００３４】
なお、図５において機能モジュールＩＤが「Ａ」の機能モジュール（機能モジュールＡ）は、図３の機能モジュール１４０１ａに対応する。また、機能モジュールＢは、機能モジュール１４０１ｂに対応する。上記したように、機能モジュール１４０１ｃにはライセンス情報ファイルが付随していないため、ライセンスリスト１７０には対応する情報は登録されていない。また、図５は、ライセンスキーが発行されていない状態を示す。したがって、いずれの機能モジュール１４０１に対してもライセンスキーは登録されていない。
【００３５】
なお、ライセンスリスト１７０は、例えば、ＳＤＫアプリ１４０のインストール時に、ライセンス管理部１５２によってファイルに格納されて生成され、ＨＤＤ１１４に保存される。ライセンスリスト１７０の生成に伴って、ライセンス管理部１５２は、ライセンスリスト１７０の改竄検知用のデータ（例えば、ライセンスリスト１７０の電子署名）を生成し、ライセンスリスト１７０に関連付けておく。また、不正な編集等を困難とするため、ライセンス管理部１５２は、ライセンスリスト１７０を暗号化して保存する。後述される処理手順における各ステップでは省略するが、ライセンスリスト１７０を参照、更新等する際は、そのたびごとにライセンスリスト１７０の復号や電子署名に基づく改竄検知等が行われる。また、更新された際は、更新した主体（ライセンス管理部１５２又はライセンス無効化部１５５等）によって、改めて更新後のライセンスリスト１７０について電子署名が生成され、暗号化が行われる。
【００３６】
判定部１５３は、ライセンス管理部１５３からの要求に応じ、起動対象とされたＳＤＫアプリ１４０に属する機能モジュール１４０１のうちライセンス対象となる機能モジュール１４０１（同図では、機能モジュール１４０１ａ及び１４０１ｂ）について、ライセンスキーに基づく起動の可否（許否）の判断を行う。判定部１５３は、当該判断結果をライセンス管理部１５２に応答する。
【００３７】
ライセンス無効化部１５５は、ライセンス制御装置２０からの指示に応じ、当該指示において指定されたＳＤＫアプリ１４０のライセンスキーを無効化する。ライセンスキーの無効化により、当該ライセンスキーに係るＳＤＫアプリ１４０又は機能モジュール１４０１は利用不可能となる（当該ＳＤＫアプリ１４０又は機能モジュール１４０１はディアクティベーションされる。）。
【００３８】
更に、ライセンスサーバ５０及びライセンス制御装置２０の詳細について説明する。
【００３９】
図６は、本発明の実施の形態におけるライセンスサーバの機能構成例を示す図である。同図において、ライセンスサーバ５０は、ライセンス発行部５１、ライセンス発行情報更新部５２、及びライセンス発行情報管理テーブル５３等を有する。これら各部は、ライセンスサーバ５０にインストールされたプログラムがライセンスサーバ５０のＣＰＵに実行される処理によって実現される。
【００４０】
ライセンス発行部５１は、ユーザサイトＡより、ライセンスキーの発行が要求された際に、ライセンスキーを発行（生成）する。ライセンス発行情報更新部５２は、プロダクトキーに対するライセンスキーの発行状況等を示す情報をライセンス発行情報管理テーブル５３に記録する。
【００４１】
プロダクトキーとは、製品が購入されるごとに一意に発行される（又は割り当てられる）識別子であり、例えば製品に添付されて購入者に配布される。製品の購入時には、購入対象の製品と共に当該製品に対するライセンス数が購入者によって選択される。ここで、製品とは、ＳＤＫアプリ１４０に含まれる機能モジュール１４０１の構成によって異なる概念である。すなわち、同一種類の（同一名の）ＳＤＫアプリ１４０であっても、基本機能に係る機能モジュール１４０１のみを含むＳＤＫアプリ１４０と拡張機能に係る機能モジュール１４０１をも含むＳＤＫアプリ１４０とでは異なる製品として販売されている。また、機能モジュール１４０１単独でも製品が構成されうる。
【００４２】
図７は、ライセンス発行情報管理テーブルの構成例を示す図である。同図におけるライセンス発行情報管理テーブル５３は、アプリＩＤが「１２３４ＡＢＣ」のＳＤＫアプリ１４０に対するライセンス発行情報管理テーブル５３である。すなわち、ライセンス発行情報管理テーブル５３は製品ごとに作成される。
【００４３】
同図に示されるように、ライセンス発行情報管理テーブル５３は、発行されたプロダクトキーごとに、ライセンス機能、ライセンス数、ライセンス発行数、及びライセンスキー等を管理する。ライセンス機能は、当該プロダクトキーに基づいて発行されるライセンスキーによって利用が許可される機能モジュール１４０１の機能モジュールＩＤである。ライセンス数は、当該プロダクトキーに基づいて発行可能なライセンス（ライセンスキー）の数である。ライセンス発行数は、当該プロダクトキーに基づいて既に発行されたライセンス（ライセンスキー）の数である。ライセンスキーは、現在発行されているライセンスキーの一覧である。
【００４４】
例えば、アプリＩＤが「１２３４ＡＢＣ」のＳＤＫアプリ１４０が、図４に示される構成を有している場合であって、機能モジュール１４０１ａの機能モジュールＩＤは「Ａ」、機能モジュール１４０１ｂの機能モジュールＩＤは「Ｂ」であるとする。この場合、図７のライセンス発行情報管理テーブル５３によれば、プロダクトキー「ＡＡＡ」の製品では、機能モジュール１４０１ａ及び１０４１ｂのライセンスが与えられ、ライセンス数は１であることが示されている。但し、ライセンス発行数は０であるため、未だライセンスキーは発行されていないことが分かる。一方、プロダクトキー「ＢＢＢ」の製品では、機能モジュール１４０１ａのみのライセンスが与えられ、ライセンス数は５であることが示されている。また、ライセンス発行数は３であるため、既に３つのライセンスキーが発行されていることが示されている。なお、ライセンス発行情報管理テーブル５３は、ライセンスサーバ５０の記憶装置に記録されている。
【００４５】
プロダクトキーは、ライセンス発行時の入力情報となる。すなわち、ＳＤＫアプリ１４０の購入時点において、ユーザは、ＳＤＫアプリ１４０とプロダクトキーとを有している。この段階において、ユーザは、ＳＤＫアプリ１４０の画像形成装置１０へのインストールは可能であるが、利用は許可されない。上記したようにＳＤＫアプリ１４０の起動の許否はライセンスキーに基づいて判定されるからである。ＳＤＫアプリ１４０を利用したい場合、ユーザは、プロダクトキーに基づいてライセンスキーを入手する。一つのプロダクトキーに基づいて、ライセンス数分のライセンスキーを入手することができる。また、同一のプロダクトキーに属する機能モジュール１４０１は、同一のライセンスキーによって利用可能となる。なお、プロダクトキーに属する機能モジュール１４０１とは、プロダクトキーに対応する製品に含まれている機能モジュール１４０１をいう。
【００４６】
図８は、本発明の実施の形態におけるライセンス制御装置の機能構成例を示す図である。同図において、ライセンス制御装置２０は、インストール部２１、ライセンス取得部２２、ライセンス配信部２３、及びライセンス無効化制御部２４等を有する。
【００４７】
インストール部２１は、画像形成装置１０へのＳＤＫアプリ１４０のインストールを制御する。ライセンス取得部２２は、ユーザによる指示入力に応じ、ライセンスキーの発行をライセンスサーバ５０より受ける。ライセンス配信部２３は、発行されたライセンスキーを画像形成装置１０へ配信する。ライセンス無効化制御部２４は、ユーザによる指示入力に応じ、画像形成装置１０に対してライセンスキーの無効化を指示する。
【００４８】
以下、ライセンス管理システムの処理手順について説明する。図９は、画像形成装置へのＳＤＫアプリのインストール処理の処理手順を説明するためのシーケンス図である。なお、図９の前提として、ライセンス制御装置２０には、購入済みのＳＤＫアプリ１４０が保存されている。また、操作者（管理者等）による操作は、ライセンス制御装置２０において行われる。
【００４９】
操作者による指示入力に応じ、ライセンス制御装置２０のインストール部２１は、機器情報の取得要求を各画像形成装置１０に送信する（Ｓ１０１、Ｓ１０２）。なお、機器情報の取得要求は、ネットワーク３０に接続されている全ての画像形成装置１０に送信されてもよいし、操作者によってインストール先として指定された画像形成装置１０のみに送信されてもよい。同図では、画像形成装置１０ａ及び１０ｂに送信されている例が示されている。
【００５０】
機器情報の取得要求を受信した各画像形成装置１０のインストール部１５６は、当該画像形成装置１０の機器情報を取得し、ライセンス制御装置２０に返信する（Ｓ１０３、Ｓ１０４）。機器情報を受信したライセンス制御装置２０のインストール部２１は、当該機器情報の一覧をライセンス制御装置２０の表示装置に表示させる。機器情報には、例えば、画像形成装置１０にインストールされているＳＤＫアプリ１４０の一覧情報が含まれている。当該一覧情報は、インストール部１５６が、各ＳＤＫアプリ１４０を検索することにより行われる。したがって、機器情報の一覧を参照することにより、操作者は、各画像形成装置２０にインストールされているＳＤＫアプリ１４０を確認することができる。
【００５１】
続いて、操作者が、ライセンス制御装置２０に保存されているＳＤＫアプリ１４０のうちインストール対象とするＳＤＫアプリ１４０と、インストール先とする画像形成装置２０とを選択すると、インストール部２１は、選択されたＳＤＫアプリ１４０を選択された画像形成装置１０へ送信する（Ｓ１０５、Ｓ１０７）。ここで、各画像形成装置１０へ送信されるＳＤＫアプリ１４０は、同じでもよいし、異なっていてもよい。ＳＤＫアプリ１４０を受信した各画像形成装置１０のインストール部１５６は、当該ＳＤＫアプリ１４０のインストール処理を実行する。また、ライセンス管理部１５２は、インストール部１５６からの要求に応じ、当該ＳＤＫアプリ１４０のライセンスリスト１７０を生成する。インストール部１５６は、これらの処理結果（成否を示す情報）をライセンス制御装置２０に返信する（Ｓ１０６、Ｓ１０８）。
【００５２】
続いて、図１０は、ライセンスキーの発行処理及び画像形成装置へのライセンスキーの導入処理の処理手順を説明するためのシーケンス図である。同図において、操作者（管理者等）による操作は、ライセンス制御装置２０において行われる。
【００５３】
ライセンス制御装置２０においてライセンスキーの導入先の画像形成装置１０が選択されると、ライセンス制御装置２０のライセンス取得部２２は、選択された画像形成装置１０に対して機器情報の取得要求を送信する（Ｓ２０１）。ライセンスキーの導入先の画像形成装置１０の選択は、例えば、ライセンス制御装置２０がネットワーク３０に接続されている画像形成装置１０を自動検索することにより表示される画像形成装置１０の一覧情報の表示画面における操作によって行われる。但し、当該導入先のＩＰアドレスが直接入力されてもよい。
【００５４】
機器情報の取得要求を受信した各画像形成装置１０のライセンス導入部１５１は、当該画像形成装置１０にインストールされているＳＤＫアプリ１４０の一覧情報（各ＳＤＫアプリ１４０のアプリＩＤを含む）と、当該画像形成装置１０の機体番号とを取得し、これらを含む情報を機器情報としてライセンス制御装置２０に返信する（Ｓ２０２）。なお、機体番号とは、工場出荷時において各画像形成装置１０に対して一意に割り当てられている番号であり、例えば、ＲＯＭ１１３に記録されている。したがって、機体番号は変更することはできない。
【００５５】
続いて、ライセンス制御装置２０のライセンス取得部２２は、受信した機器情報に含まれているＳＤＫアプリ１４０の一覧情報を表示装置に表示させ、一覧の中からライセンスキーの取得対象とするＳＤＫアプリ１４０を操作者に選択させる。また、ライセンス取得部２２は、選択されたＳＤＫアプリ１４０に対するプロダクトキーの入力を操作者より受け付ける（Ｓ２０３）。なお、プロダクトキーは、予め操作者が入手しているという前提である。例えば、ＳＤＫアプリ１４０が記録媒体によって配布される場合は、当該記録媒体にプロダクトキーが添付されている。また、ＳＤＫアプリ１４０がネットワークを介して配信される場合は、当該ＳＤＫアプリ１４０と共に配信されるファイル内にプロダクトキーが記録されている。
【００５６】
続いて、ライセンス取得部２２は、入力されたプロダクトキーと、受信した機体番号と、選択されたＳＤＫアプリ１４０のアプリＩＤとを伴ってライセンスキーの発行要求をライセンスサーバ５０に送信する（Ｓ２０４）。
【００５７】
当該要求に応じ、ライセンスサーバ５０のライセンス発行部５１は、当該要求に含まれるプロダクトキーのライセンス発行数がライセンス数に達しているかいないかを当該要求に含まれているアプリＩＤに対応するライセンス発行情報管理テーブル５３に基づいて判定する。当該プロダクトキーのライセンス発行数がライセンス数に達していない場合は、受信された機体番号及びプロダクトキーと、ライセンス発行情報管理テーブル５３とに基づいてライセンスキーを生成する（Ｓ２０５）。
【００５８】
図１１は、ライセンスキーの構成例を示す図である。同図において、一つのライセンスキーは、アプリＩＤ、画像形成装置１０の機体番号、及びライセンス機能（機能モジュール１４０１の識別子の一覧）等によって構成される。当該ライセンスキーによって、「機体番号」によって識別される画像形成装置１０上において、「アプリＩＤ」によって識別されるＳＤＫアプリ１４０に含まれる機能モジュール１４０１のうち、「ライセンス機能」に機能モジュールＩＤが含まれる機能モジュール１４０１の利用が許可される。ライセンス機能は、プロダクトキーに基づいてライセンス発行情報管理テーブル５３より取得された値である。アプリＩＤ及び機体番号は、受信されたライセンスの発行要求に含まれていたものである。なお、ライセンスキーは、アプリＩＤ、の機体番号、及びライセンス機能を単に並べたものではなく、これらの情報がエンコードされ、更に暗号化されたものでもよい。
【００５９】
ライセンスキーが発行された場合、ライセンス発行情報更新部５２は、ライセンス発行情報管理テーブル５３におけるライセンス発行数を更新する。
【００６０】
図１２は、ライセンスキーの発行により更新されたライセンス発行情報管理テーブルの例を示す図である。同図は、プロダクトキー「ＡＡＡ」に対してライセンスキーが発行された例を示す。ライセンスキーの発行により、プロダクトキー「ＡＡＡ」のライセンス発行数が１に更新されている。また、発行されたライセンスキー「ＢＪＰ１３８−ＢＵＱ」が登録されている。なお、「ＢＪＰ１３８−ＢＵＱ」は、エンコード及び暗号化されたライセンスキーを表現している。
【００６１】
続いて、ライセンス発行部５１は、生成されたライセンスキーをライセンス制御装置２０に送信する（Ｓ２０６）。なお、ステップＳ２０５において、プロダクトキーのライセンス発行数がライセンス数に達している場合、ライセンス発行部５１は、ライセンスキーの生成を拒否する。したがって、この場合、ライセンス発行部５１は、ステップＳ２０６において、ライセンスキーは発行されないことを示す情報をライセンス制御装置２０に送信する。
【００６２】
ライセンス制御装置２０のライセンス取得部２２がライセンスキーを受信すると、ライセンス配信部２３は、当該ライセンスキーを画像形成装置１０に転送する（Ｓ２０７）。画像形成装置１０のライセンス導入部１５１は、ライセンスキーを受信すると、当該ライセンスキーをライセンスリスト１７０に書き込む（Ｓ２０８）。なお、書き込み先のライセンスリスト１７０は、ライセンスキーに含まれているアプリＩＤに基づいて判定される。
【００６３】
図１３は、ライセンスキーが書き込まれたライセンスリストの例を示す図である。同図のライセンスリスト１７０では、機能モジュールＡ及びＢの双方に同じライセンスキーが登録されている。これは、図１１に示されるライセンスキーにおいて、機能モジュールＡ及びＢ（機能モジュール１４０１ａ及び１４０１ｂ）の双方の機能モジュールＩＤが「ライセンス機能」に含まれているからである。したがって、ライセンスキーにいずれか一方の機能モジュールＩＤが含まれていない場合は、当該一方のみに対してライセンスキーが登録される。
【００６４】
続いて、ライセンス導入部１５１は、ライセンスキーの導入の成否を示す情報をライセンス制御装置２０に送信する（Ｓ２０９）。以上によってライセンスキーの導入が完了する。なお、ＳＤＫアプリ１４０のインストールライセンスキーの導入は、ライセンス制御装置２０を介さないで行われてもよい。例えば、画像形成装置１０の操作パネル１６を介した操作によって、記録媒体から又はネットワークを介してＳＤＫアプリ１４０のインストールが行われてもよい。また、画像形成装置１０がライセンスサーバ５０より直接的にライセンスキーの発行を受けるようにしてもよい。但し、ライセンス制御装置２０を利用することにより、一度に複数の画像形成装置１０に対してＳＤＫアプリ１４０のインストールやライセンスキーの導入等を行うことができ、管理者等の作業負担が軽減することができる。
【００６５】
ライセンスキーの導入により、当該ライセンスキーに係るＳＤＫアプリ１４０の起動（利用）が可能となる。そこで、ＳＤＫアプリ１４０の起動処理について説明する。図１４は、画像形成装置におけるＳＤＫアプリの起動処理の処理手順を説明するためのシーケンス図である。
【００６６】
例えば、操作対象の画像形成装置１０の操作パネル１６に、インストールされているＳＤＫアプリ１４０の一覧が表示されている。ステップＳ３０１では、当該画像形成装置１０の操作者が、当該一覧の中から所望のＳＤＫアプリ１４０を選択し、当該ＳＤＫアプリ１４０の起動指示を入力する。続いて、起動制御部１５４は、選択されたＳＤＫアプリ１４０のアプリＩＤを指定して、当該ＳＤＫアプリ１４０のライセンスの有無のチェック（以下、単に「ライセンスチェック」という。）をライセン管理部１５２に要求する（Ｓ３０２）。ライセン管理部１５２は、アプリＩＤを指定して、ライセンスチェックを判定部１５３に要求する（Ｓ３０３）。判定部１５３は、アプリＩＤに関連付けられているライセンスリスト１７０に基づいて、当該ＳＤＫアプリ１４０ライセンスチェックを行う（Ｓ３０４）。
【００６７】
具体的には、当該ライセンスリスト１７０に登録されている機能モジュール１４０１ごとに、ライセンスキーが登録されているか否かを判定する。ライセンスキーが登録されている場合、当該ライセンスキーに含まれている「機体番号」が操作対象の画像形成装置１０の機体番号と一致するか、当該ライセンスキーに含まれている「ライセンス機能」に、当該機能モジュール１４０１の機能モジュールＩＤが含まれているか否かを判定する。全ての判定結果が肯定的な場合、判定部１５３は、当該機能モジュール１４０１のライセンスは有ると判定する。
【００６８】
なお、判定部１５３によるライセンスチェックは、ライセンスリスト１７０に登録されている機能モジュール１４０１についてのみ行われる。ここで、ライセンスリスト１７０は、予め（例えば、ＳＤＫアプリ１４０のインストール時に）ライセンス対象の機能モジュール１４０１が登録されたものである。したがって、ライセンスリスト１７０により、ライセンス対象でない機能モジュール（例えば、機能モジュール１４０１ｃ）についてまでライセンスチェックを行う必要はなくなる。よって、ＳＤＫアプリ１４０起動時のライセンスチェック処理を高速化することができ、ひいてはＳＤＫアプリ１４０の起動処理を高速化することができる。
【００６９】
ライセンス対象のすべての機能モジュール１４０１（図４及び図１３の例では、機能モジュール１４０１ａ及び１４０１ｂ）についてライセンスチェックが完了すると、判定部１５３は、機能モジュール１４０１ごとのライセンスチェック結果をライセンス管理部１５２に出力する（Ｓ３０５）。続いて、ライセンス管理部１５３は、当該ライセンスチェック結果を起動制御部１５４に出力する（Ｓ３０６）。続いて、起動制御部１５４は、当該ライセンスチェック結果においてライセンスが有ると判定された機能モジュール１４０１のみを起動する（Ｓ３０７）。但し、当該ライセンスチェック結果に含まれていない機能モジュール１４０１（例えば、機能モジュール１４０１ｃ）については、起動制御部１５４はライセンス対象でないと判定し、起動させる。続いて、ＳＤＫアプリ１４０の起動結果が操作パネル１６に表示される（Ｓ３０８）。例えば、起動されたＳＤＫアプリ１４０のメインの機能モジュール１４０１によって操作画面が表示される。
【００７０】
このように、本実施の形態のライセンス（ライセンスキー）は、機体番号によって画像形成装置１０と紐付いて（関連付いて）いる。したがって、或る画像形成装置１０を導入先として発行されたライセンスキーによって他の画像形成装置１０におけるＳＤＫアプリ１４０を起動することはできない。これによって、ＳＤＫアプリ１４０の不正コピーによる不正利用が防止される。
【００７１】
ところで、ライセンスキーの導入後にＳＤＫアプリ１４０を利用する画像形成装置１０を変更したい場合がある。顕著な例としては、画像形成装置１０をリース契約で利用しており、リース契約の期限切れにより、他の画像形成装置１０に置き換える場合である。この場合、本実施の形態では、ライセンスキーが導入されているＳＤＫアプリ１４０のライセンスキーの無効化（ディアクティベーション）を実行した後、改めて、他の画像形成装置１０に新たなライセンスキーを導入する必要がある。これにより、ＳＤＫアプリ１４０の不正利用が効果的に防止される。その理由については後述する。
【００７２】
図１５は、ディアクティベーション処理を説明するためのシーケンス図である。図１５において、操作者（管理者等）による操作は、ライセンス制御装置２０において行われる。
【００７３】
ライセンス制御装置２０において、操作者が、ディアクティベーションの対象とするＳＤＫアプリ１４０及びその機能モジュール１４０１を選択すると、ライセンス制御装置２０のライセンス無効化制御部２４は、選択されたＳＤＫアプリ１４０のアプリＩＤと機能モジュール１４０１の機能モジュールＩＤとを伴って、ディアクティベーションの要求を画像形成装置１０に送信する（Ｓ４０１）。
【００７４】
画像形成装置１０のライセンス無効化部１５５は、当該要求を受信すると、ディアクティベーション要求に係る機能モジュール１４０１のディアクティベーションを実行する（Ｓ４０２）。なお、当該ステップの詳細については後述する。続いて、ライセンス無効化部１５５は、ディアクティベーションの結果（成否）をライセンス制御装置２０に送信するＳ４０３）。なお、ディアクティベーションに成功した場合、ライセンス無効化部１５５は、無効化されたライセンスキー及び当該ライセンスキーに係るアプリＩＤもライセンス制御装置２０に送信する。
【００７５】
ディアクティベーションに成功した場合、ライセンス制御装置２０のライセンス無効化制御部２４は、画像形成装置１０より受信したライセンスキー及びアプリＩＤを伴って、ディアクティベーションを実行したことの通知をライセンスサーバ５０に送信する（Ｓ４０４）。ディアクティベーションサーバ５０のライセンス発行情報更新部５２は、当該通知に応じ、当該通知と共に受信されたアプリＩＤに対応するライセンス発行情報管理テーブル５３を更新する（Ｓ４０５）。より詳しくは、当該ライセンス発行情報管理テーブル５３において、受信されたプロダクトキーに係るレコードより、当該ライセンスキーを削除すると共に、ライセンス発行数を減少させる。例えば、プロダクトキー「ＡＡＡ」に対するライセンスがディアクティベーションされた場合、その「ライセンス発行数」は、「０」に更新される。
【００７６】
ライセンス発行情報管理テーブル５３の更新が完了すると、ライセンス発行情報更新部５２は、ライセンス制御装置２０に対して応答を行う（Ｓ４０６）。以上によって、ディアクティベーション処理が終了する。
【００７７】
続いて、画像形成装置１０のライセンス無効化部によるステップＳ４０２の処理の詳細について説明する。図１６は、ライセンス無効化部による処理手順を説明するためのフローチャートである。
【００７８】
ライセンス制御装置２０からのディアクティベーション要求の受信に応じ、当該要求に含まれているアプリＩＤに対応するＳＤＫアプリ１４０を停止させる（Ｓ４０１１）。停止に成功した場合、又は元々停止していた場合（Ｓ４０１２でＹｅｓ）、ライセンスリスト１７０を更新することによりライセンスキーを無効化する（Ｓ４０１３）。具体的には、ディアクティベーション要求に係るＳＤＫアプリ１４０のライセンスリスト１７０において、ディアクティベーション要求に係る機能モジュール１４０１のライセンスキーを削除し、ディアクティベート済みキーとする。同一のライセンスキーに係る機能モジュール１４０１についても同様の処理を行う。その結果、ライセンスリスト１７０は、例えば、次のようになる。
【００７９】
図１７は、ディアクティベーションにより更新されたライセンスリストの例を示す図である。同図において、機能モジュールＡのライセンスキーは、「ライセンスキー」の項目から削除され、「ディアクティベーション済みキー」の項目に転記されている。また、同一のライセンスキーに係る機能モジュールＢについても同様である。
【００８０】
続いて、ライセンス制御装置２０にディアクティベーションに成功したことを応答する（Ｓ４０１４）。
【００８１】
一方、ＳＤＫアプリ１４０の停止に失敗した場合（Ｓ４０１２でＮｏ）、ライセンス制御装置２０にディアクティベーションに失敗したことを応答する（Ｓ４０１５）。
【００８２】
なお、ディアクティベーションの指示は、画像形成装置１０の操作パネル１６から入力されてもよい。
【００８３】
ところで、ディアクティベーションにより、ライセンスサーバ５０のライセンス発行情報管理テーブル５３では、プロダクトキーの発行ライセンス数が減少する。例えば、プロダクトキー「ＡＡＡ」に対するライセンスが無効化された場合、その「ライセンス発行数」は、「０」に更新される。このことは、プロダクトキー「ＡＡＡ」に基づいて再度ライセンスキーの発行を受けることが可能な状態となったことを意味する。すなわち、一つのプロダクトキーは、ライセンスキーの発行又はディアクティベーションに応じて、ライセンスキーを発行可能な状態（利用可能状態）、又はライセンスキーを発行不可能な状態（利用不可能状態）に遷移する。これを図示すると図１８のように表せる。
【００８４】
図１８は、プロダクトキーの状態遷移を示す図である。なお、同図では、便宜上、ライセンス数が１のプロダクトキーについて説明する。
【００８５】
プロダクトキーの配布当初において、当該プロダクトキーは利用可能状態にある。この状態で、当該プロダクトキーに基づいてライセンスキーＡが発行されると、当該プロダクトキーは利用不可状態となる。この状態で、ライセンスキーＡがディアクティベーションされると、当該プロダクトキーは再び利用可能状態となる。
【００８６】
このようなサイクルを繰り返すことにより、一つのプロダクトキーに基づいて、ライセンスキーＡ、ライセンスキーＢ、及びライセンスキーＣといったように、複数のライセンスキーが時系列に発行されうる。なお、ライセンスキーＣが発行されている段階において、ライセンスリスト１７０では、当該プロダクトキーに係る機能モジュール１４０１に対してライセンスキーＣが「ライセンスキー」の項目に登録され、ライセンスキーＡ及びＢが「ディアクティベート済みキー」の項目に登録された状態となる。すなわち、「ディアクティベート済みキー」の項目には、過去に無効化されたライセンスキーの履歴が記録される。
【００８７】
ここで、基本的には、新たなライセンスキー（例えば、ライセンスキーＢ）が発行される前に、古いライセンスキー（例えば、ライセンスキーＡ）は無効化されているため、複数のライセンスキーが同時に利用可能になるという不都合は生じない。
【００８８】
しかし、仮に、ライセンスキー発行時等のライセンスキーの流通過程において（例えば、ライセンス制御装置２０において）、ライセンスキーが不正にコピーされ、保持されていたとしたら、一つのプロダクトキーに基づく複数のライセンスキーが存在するという事態が発生する。このような事態が発生した場合でも、本実施の形態の画像形成装置１０は、ＳＤＫアプリ１４０の不正利用を防止することができる。
【００８９】
以下、不正利用を防止するための処理手順について説明する。図１９は、ＳＤＫアプリの不正利用を防止するための第一の処理手順を説明するためのシーケンス図である。
【００９０】
例えば、図１０のステップＳ２０５からＳ２０７の間において、ライセンス制御装置２０のメモリ上に一時的に保持されるライセンスキーがコピーされ、ライセンス制御装置２０のＨＤＤ内に保持されていたとする。その後、画像形成装置１０では、当該ライセンスキーは無効化されていたとする。
【００９１】
ステップＳ５０１において、ライセンス制御装置２０のライセンス配信部２３は、ライセンスキー導入用のプロトコルに基づいて、ＨＤＤ内に保持されているライセンスキーを画像形成装置１０に送信する。画像形成装置１０のライセンスキー導入部１５１は、当該ライセンスキーを受信すると、当該ライセンスキーの正当性のチェックをライセンス管理部１５２に要求する。ライセンス管理部１５２は、ライセンスキーに含まれているアプリＩＤに基づいて対応するライセンスリスト１７０を判定し、当該ライセンスキーが当該ライセンスリスト１７０のディアクティベーション済みキーとして登録されていないか否かを判定する（Ｓ５０２）。ライセンス管理部１５２は、当該ライセンスキーがディアクティベーション済みキーと一致する場合は、当該ライセンスキーのライセンスリスト１７０への書き込みは行わず、当該ライセンスキーの導入（ライセンスリスト１７０への登録）の拒否をライセンス導入部１５１に通知する。当該通知に応じ、ライセンス導入部１５１は、ライセンスキーの導入を拒否することをライセンス制御装置２０に送信する（Ｓ５０３）。なお、ライセンスリスト１７０には、直近のみではなく過去に無効化されたライセンスキーの履歴がディアクティベーション済みキーとして登録されているため、過去に一度でも無効化されたライセンスキーは、導入が拒否される。
【００９２】
一方、当該ライセンスキーが、ディアクティベーション済みキーでない場合は、図１０のステップＳ２０８以降と同様の処理が実行される。
【００９３】
このように、無効化されたライセンスキーの履歴が記録され、当該履歴に基づいてライセンスキーの導入の可否を判断することにより、無効化されたライセンスキーの導入を適切に防止することができる。したがって、ディアクティベーションにより、一つのプロダクトキーに許可されたライセンス数を超えてライセンスキーが存在しうる場合であっても、当該ライセンス数を超えたＳＤＫアプリ１４０の利用を防止することができる。
【００９４】
具体的例として、プロダクトキー「ＡＡＡ」に基づいて画像形成装置１０ａに対して発行されたライセンスキーＡを無効化したとする。その後、プロダクトキー「ＡＡＡ」に基づいて画像形成装置１０ｂに対して新たなライセンスキーＢの発行を受けたとする。この場合、仮に、ライセンスキーＡがライセンス制御装置２０等に保持されていたとしても、図１９の処理により、再度ライセンスキーＡを画像形成装置１０ａに導入することはできない。したがって、画像形成装置１０ａ及び１０ｂの双方において、１ライセンス分のプロダクトキー「ＡＡＡ」に基づいてＳＤＫアプリ１４０を同時に利用することはできない。
【００９５】
図１９の代わりに、又は図１９の処理と共に図２０に示される処理を実行するようにしてもよい。図２０は、ＳＤＫアプリの不正利用を防止するための第二の処理手順を説明するためのシーケンス図である。同図は、ＳＤＫアプリ１４０の起動時に不正利用を防止する例である。
【００９６】
操作者によるＳＤＫアプリ１４０の起動指示の入力に応じ（Ｓ６０１）、起動制御部１５４がライセンス管理部１５２に当該ＳＤＫアプリ１４０のアプリＩＤを指定してライセンスチェックを要求するまで（Ｓ６０２）は図１４（Ｓ３０１、Ｓ３０２）と同様である。
【００９７】
続いて、ライセンス管理部１５２は、アプリＩＤに関連付けられているライセンスリスト１７０に基づいて、当該ＳＤＫアプリ１４０に属する各機能モジュール１４０１のライセンスキーの有効性をチェックする（Ｓ６０３）。具体的には、当該ライセンスリスト１７０の各レコードにおいて「ライセンスキー」と「ディアクティベーション済みキー」とに同一のライセンスキーが登録されていないか否かを確認する。
【００９８】
「ライセンスキー」と「ディアクティベーション済みキー」とに同一のライセンスキーが登録されているといった事態は、無効化されたライセンスキーが、図１９の処理が実行されないことにより、再度導入された場合に発生する。すなわち、ステップＳ６０３のチェックによって、無効化されたライセンスキーの再導入が検知される。
【００９９】
「ライセンスキー」と「ディアクティベーション済みキー」とに同一のライセンスキーが登録されている機能モジュール１４０１が存在した場合、ライセンス管理部１５２は、当該ＳＤＫアプリ１４０の起動は許可しない旨を起動制御部１５４に応答する（Ｓ６０４）。起動制御部１５４は、当該応答に応じ、ＳＤＫアプリ１４０の起動は実行せずに、ＳＤＫアプリ１４０の起動に失敗したことを示すメッセージを操作パネル１６に表示させる（Ｓ６０５）。
【０１００】
なお、ＳＤＫアプリ１４０全体ではなく、無効化されたライセンスキーの再導入が検知された機能モジュール１４０１のみの起動を禁止するようにしてもよい。但し、ステップＳ６０３においてライセンスキーが無効化されていないことが判定された機能モジュール１４０１については、図１４のステップＳ３０３以降の処理（ライセンスキーに基づくライセンスチェック）が実行される必要がある。
【０１０１】
このように、無効化されたライセンスキーの履歴が記録され、当該履歴に基づいてライセンスキーの有効性を判断することにより、無効化されたライセンスキーに基づくＳＤＫアプリ１４０（機能モジュール１４０１）の起動を適切に防止することができる。したがって、ディアクティベーションにより、一つのプロダクトキーに許可されたライセンス数を超えてライセンスキーが存在しうる場合であっても、当該ライセンス数を超えたＳＤＫアプリ１４０の利用を防止することができる。
【０１０２】
なお、無効化されたライセンスキーに基づく不正利用の防止が実現されることにより、リース契約のように画像形成装置１０が永続的に一つのユーザ環境に固定されない場合あっても適切にＳＤＫアプリ１４０のライセンス違反を防止することができる。したがって、リース契約による画像形成装置１０におけるＳＤＫアプリ１４０の展開を安心して行うことが可能となる。
【０１０３】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【０１０４】
【図１】本発明の実施の形態におけるライセンス管理システムの構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図４】ＳＤＫプラットフォームにおけるライセンス管理機能とＳＤＫアプリの構成例とを示す図である。
【図５】ライセンスリストの構成例を示す図である。
【図６】本発明の実施の形態におけるライセンスサーバの機能構成例を示す図である。
【図７】ライセンス発行情報管理テーブルの構成例を示す図である。
【図８】本発明の実施の形態におけるライセンス制御装置の機能構成例を示す図である。
【図９】画像形成装置へのＳＤＫアプリのインストール処理の処理手順を説明するためのシーケンス図である。
【図１０】ライセンスキーの発行処理及び画像形成装置へのライセンスキーの導入処理の処理手順を説明するためのシーケンス図である。
【図１１】ライセンスキーの構成例を示す図である。
【図１２】ライセンスキーの発行により更新されたライセンス発行情報管理テーブルの例を示す図である。
【図１３】ライセンスキーが書き込まれたライセンスリストの例を示す図である。
【図１４】画像形成装置におけるＳＤＫアプリの起動処理の処理手順を説明するためのシーケンス図である。
【図１５】ディアクティベーション処理を説明するためのシーケンス図である。
【図１６】ライセンス無効化部による処理手順を説明するためのフローチャートである。
【図１７】ディアクティベーションにより更新されたライセンスリストの例を示す図である。
【図１８】プロダクトキーの状態遷移を示す図である。
【図１９】ＳＤＫアプリの不正利用を防止するための第一の処理手順を説明するためのシーケンス図である。
【図２０】ＳＤＫアプリの不正利用を防止するための第二の処理手順を説明するためのシーケンス図である。
【符号の説明】
【０１０５】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          ネットワークインタフェース
１６          操作パネル
２０          ライセンス制御装置
２１          インストール部
２２          ライセンス取得部
２３          ライセンス配信部
２４          ライセンス無効化制御部
３０          ネットワーク
５０          ライセンスサーバ
５１          ライセンス発行部
５２          ライセンス発行情報更新部
５３          ライセンス発行情報管理テーブル
７０          広域ネットワーク
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１２１        ＯＳ
１２２        コントロールサービス
１２３        アプリケーション
１３０        標準アプリ
１５０        ＳＤＫプラットフォーム
１３１        コピーアプリ
１３２        スキャンアプリ
１３３        ファクスアプリ
１３４        プリントアプリ
１４０、１４１、１４２、１４３        ＳＤＫアプリ
１５１        ライセンス導入部
１５２        ライセンス管理部
１５３        判定部
１５４        起動制御部
１５５        ライセンス無効化部
１５６        インストール部
１７０        ライセンスリスト
１４０１ａ、１４０１ｂ、１４０１ｃ    機能モジュール
１４０２ａ、１４０２ｂ    ライセンス情報ファイル１４０２ａ
【図１】
2010067232.tif 000003
【図２】
2010067232.tif 000004
【図３】
2010067232.tif 000005
【図４】
2010067232.tif 000006
【図５】
2010067232.tif 000007
【図６】
2010067232.tif 000008
【図７】
2010067232.tif 000009
【図８】
2010067232.tif 000010
【図９】
2010067232.tif 000011
【図１０】
2010067232.tif 000012
【図１１】
2010067232.tif 000013
【図１２】
2010067232.tif 000014
【図１３】
2010067232.tif 000015
【図１４】
2010067232.tif 000016
【図１５】
2010067232.tif 000017
【図１６】
2010067232.tif 000018
【図１７】
2010067232.tif 000019
【図１８】
2010067232.tif 000020
【図１９】
2010067232.tif 000021
【図２０】
2010067232.tif 000022