(57)【特許請求の範囲】
【請求項１】
複数のプログラムモジュールより構成されるアプリケーションを実行可能な情報処理装置であって、
前記プログラムモジュールごとに、当該プログラムモジュールが構成するアプリケーションの識別情報と当該プログラムモジュールに対するライセンスの識別情報とを対応付けて記憶する記憶手段と、
前記ライセンスの識別情報に基づいて、前記プログラムモジュールの起動を制御する起動制御手段とを有し、
前記ライセンスの識別情報は、前記複数のプログラムモジュール間の従属関係を示す情報を含み、
前記起動制御手段は、他のプログラムモジュールに従属するプログラムモジュールについては、前記他のプログラムモジュールに対するライセンスの識別情報に基づいて、起動を制御することを特徴とする情報処理装置。
【請求項２】
前記起動制御手段は、前記従属関係において最上位のプログラムモジュールの起動を許可しないときは、他の全てのプログラムモジュールの起動を行わないことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記記憶手段が記憶する情報は、前記プログラムモジュールごとに関連付けられたファイルに格納され、
前記起動制御手段は、前記ファイルが関連付けられていないプログラムモジュールについては前記ライセンスの識別情報に基づく起動の制御は行わないことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記ライセンスは、前記プログラムモジュールを利用可能とするものであることを特徴とする請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
前記従属関係において最上位のプログラムモジュールは、前記アプリケーションの起動に必須であることを特徴とする請求項１乃至４いずれか一項記載の情報処理装置。
【請求項６】
複数のプログラムモジュールより構成されるアプリケーションを実行可能な情報処理装置が実行するライセンス判定方法であって、
前記プログラムモジュールごとに、当該プログラムモジュールが構成するアプリケーションの識別情報に対応付けて記憶手段が記憶する当該プログラムモジュールに対するライセンスの識別情報に基づいて、前記プログラムモジュールの起動を制御する起動制御手順を有し、
前記ライセンスの識別情報は、前記複数のプログラムモジュール間の従属関係を示す情報を含み、
前記起動制御手順は、他のプログラムモジュールに従属するプログラムモジュールについては、前記他のプログラムモジュールに対するライセンスの識別情報に基づいて、起動を制御することを特徴とするライセンス判定方法。
【請求項７】
複数のプログラムモジュールより構成されるアプリケーションを実行可能な情報処理装置に、
前記プログラムモジュールごとに、当該プログラムモジュールが構成するアプリケーションの識別情報に対応付けて記憶手段が記憶する当該プログラムモジュールに対するライセンスの識別情報に基づいて、前記プログラムモジュールの起動を制御する起動制御手順を実行させ、
前記ライセンスの識別情報は、前記複数のプログラムモジュール間の従属関係を示す情報を含み、
前記起動制御手順は、他のプログラムモジュールに従属するプログラムモジュールについては、前記他のプログラムモジュールに対するライセンスの識別情報に基づいて、起動を制御するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ライセンス判定方法、及びプログラムに関し、特に複数のプログラムモジュールより構成されるアプリケーションを実行可能な情報処理装置、ライセンス判定方法、及びプログラムに関する。
【背景技術】
【０００２】
近年では、主に複合機又は融合機と呼ばれる画像形成装置において、その出荷後に新たなアプリケーションの開発及びインストールが可能とされているものがある（例えば、特許文献１）。このような構成を有する画像形成装置によれば、その機能の拡張性やカスタマイズの容易性等を著しく向上させることができるという利益がある。
【０００３】
一方で、単独で流通可能なアプリケーションについては、不正コピー等による不正利用の虞がある。そこで、特許文献１では、アプリケーションのライセンス管理を行うことにより、不正利用の防止が図られている。
【０００４】
ところで、アプリケーションの構成は柔軟化しており、いわゆるプラグインと呼ばれる機能モジュールによって機能拡張が可能とされているものもある。また、ユーザの利用形態は多様化しており、アプリケーションが提供可能な全機能のうち特定の機能のみ利用できればよいユーザもある。それぞれのユーザの利用形態に応じてアプリケーションのライセンスを管理することができれば、ユーザにとって便宜であるばかりでなく、アプリケーションを販売する側にとってもビジネスチャンスの拡大を期待できる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来は、アプリケーションごとにライセンスが付与されていたため、一部の機能しか利用しないユーザであっても全機能分について課金されるという不都合があった。
【０００６】
また、アプリケーションのライセンスによってプラグインのライセンスも与えられていたため、プラグインの開発者は正当な対価を得る機会を逸する可能性があるという問題があった。
【０００７】
本発明は、上記の点に鑑みてなされたものであって、プログラムに対するライセンスの柔軟性を向上させることのできる情報処理装置、ライセンス判定方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【０００８】
そこで上記課題を解決するため、本発明は、複数のプログラムモジュールより構成されるアプリケーションを実行可能な情報処理装置であって、前記プログラムモジュールごとに、当該プログラムモジュールが構成するアプリケーションの識別情報と当該プログラムモジュールに対するライセンスの識別情報とを対応付けて記憶する記憶手段と、前記ライセンスの識別情報に基づいて、前記プログラムモジュールの起動を制御する起動制御手段とを有し、前記ライセンスの識別情報は、前記複数のプログラムモジュール間の従属関係を示す情報を含み、前記起動制御手段は、他のプログラムモジュールに従属するプログラムモジュールについては、前記他のプログラムモジュールに対するライセンスの識別情報に基づいて、起動を制御することを特徴とする。
【０００９】
このような情報処理装置では、プログラムに対するライセンスの柔軟性を向上させることができる。
【発明の効果】
【００１０】
本発明によれば、プログラムに対するライセンスの柔軟性を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態におけるライセンス管理システムの構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図４】ＳＤＫプラットフォームにおけるライセンス管理機能とＳＤＫアプリの構成例とを示す図である。
【図５】本実施の形態における各機能モジュールのライセンス情報ファイルの第一の定義例を示す図である。
【図６】ライセンス情報ファイルの第一の定義例により可能となるライセンスの構成を示す図である。
【図７】本発明の実施の形態におけるライセンスサーバの機能構成例を示す図である。
【図８】ライセンス発行情報管理テーブルの構成例を示す図である。
【図９】本発明の実施の形態におけるライセンス制御装置の機能構成例を示す図である。
【図１０】ライセンスキーの発行処理及び画像形成装置へのライセンスキーの導入処理の処理手順を説明するための図である。
【図１１】ライセンスキーの構成例を示す図である。
【図１２】ライセンスキーの発行により更新されたライセンス発行情報管理テーブルの例を示す図である。
【図１３】画像形成装置におけるＳＤＫアプリの起動処理の処理手順を説明するための図である。
【図１４】本実施の形態における各機能モジュールのライセンス情報ファイルの第二の定義例を示す図である。
【図１５】ライセンス情報ファイルの第二の定義例により可能となるライセンスの構成を示す図である。
【図１６】本実施の形態における各機能モジュールのライセンス情報ファイルの第三の定義例を示す図である。
【図１７】ライセンス情報ファイルの第三の定義例により可能となるライセンスの構成を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるライセンス管理システムの構成例を示す図である。図１において、ライセンス管理システムは、ユーザサイトＡ及びライセンス発行サイトＢ等より構成されている。
【００１３】
ユーザサイトＡは、画像形成装置（機器）のユーザ環境であり、当該ユーザのオフィス等が相当する。したがって、ユーザサイトＡは、画像形成装置のユーザに応じて複数存在し得る。ユーザサイトＡでは、ライセンス制御装置２０と、画像形成装置１０ａ、１０ｂ、１０ｃ、及び１０ｄ等の一台以上の画像形成装置（以下、総称する場合「画像形成装置１０」という。）とがＬＡＮ（Local Area Network）等のネットワーク３０（有線又は無線の別は問わない。）を介して接続されている。画像形成装置１０は、一般的に、複合機又は融合機と称される機器であり、コピー機能、プリンタ機能、スキャナ機能、及びファクス機能等、複数の機能を実現するためのハードウェアを一台の筐体内に備える。画像形成装置１０には、これらの機能を利用した各種のアプリケーションのインストールが可能である。但し、本発明の適用対象となりうる画像形成装置は、複合機に限られず、少なくともアプリケーションのインストール及び実行が可能であればよい。したがって、コピー機、ファクシミリ、プリンタ、又はスキャナ等の単一の機能を実現する画像形成装置であってもよい。
【００１４】
ライセンス制御装置２０は、ユーザサイトＡにおける画像形成装置１０において動作するアプリケーションのライセンス（利用権限）を一括して取得等するためのＰＣ（Personal Computer）等のコンピュータである。すなわち、画像形成装置１０にインストールされた各種のアプリケーションは、ライセンス制御装置２０によって取得されるライセンスによって利用可能となる。
【００１５】
ライセンス発行サイトＢは、ユーザサイトＡにおいて利用される画像形成装置１０のアプリケーションに対するライセンスをユーザサイトＡに対して発行する環境である。例えば、ライセンス発行サイトＢは、画像形成装置１０のメーカーによって運用される。ライセンス発行サイトＢには、ライセンスサーバ５０が設置されている。ライセンスサーバ５０は、ライセンスの生成及び発行等を実行するコンピュータである。
【００１６】
なお、ライセンス制御装置２０及びライセンスサーバ５０は、インターネット等の広域ネットワーク７０を介して接続されている。
【００１７】
画像形成装置１０の詳細について説明する。図２は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。図２において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、ネットワークインタフェース１５、及び操作パネル１６等のハードウェアを有する。
【００１８】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、及びＨＤＤ１１４等を含む。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される。
【００１９】
スキャナ１２は、原稿より画像データを読み取るためのハードウェアである。プリンタは１３、画像データを印刷用紙に印刷するためのハードウェアである。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。ネットワークインタフェース１５は、ＬＡＮ（Local Area Network）等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。操作パネル１６は、ユーザからの入力の受け付けや、ユーザに対する情報の通知等を行うめのボタン、液晶パネル等を備えたハードウェアである。
【００２０】
図３は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。同図において、画像形成装置１０は、ＯＳ１２１、コントロールサービス１２２、及びアプリケーション１２３等のソフトウェアを有する。
【００２１】
ＯＳ１２１は、ＵＮＩＸ（登録商標）等のいわゆるＯＳ（Operating System）であり、各種ソフトウェアをプロセス単位で並列的に起動する。
【００２２】
コントロールサービス１２２は、各種のハードウェアリソース等を制御するためのサービスを上位アプリケーション等に対して共通的に提供するソフトウェアモジュール群である。例えば、コントロールサービス１２２は、スキャナ１２又はプリンタ１３を制御するための手段や、モデム１４又はネットワークインタフェース１５を介した通信手段等を提供する。
【００２３】
アプリケーション１２３は、コントロールサービス１２２やＯＳ１２１等を利用して、ユーザより要求された各種のジョブを画像形成装置１０に実行させるプログラムである。アプリケーション１２３は、標準アプリ１３０とＳＤＫアプリ１４０とに大別される。
【００２４】
標準アプリ１３０は、画像形成装置１０に標準的に（出荷時に予め）実装されているアプリケーションをいう。図中では、コピージョブを制御するコピーアプリ１３１、スキャンジョブを制御するスキャンアプリ１３２、ファクス送信ジョブを制御するファクスアプリ１３３、印刷ジョブを制御するプリントアプリ１３４等が例示されている。
【００２５】
ＳＤＫアプリ１４０は、画像形成装置１０に専用のＳＤＫ（ソフトウェア開発キット）を使用して開発されたアプリケーションをいい、ＳＤＫプラットフォーム１５０上で動作する。すなわち、画像形成装置１０には、その出荷後に専用のＳＤＫを使用して新たにアプリケーションを追加することができる。図中では、ＳＤＫアプリ１４１、１４２、及び１４３の三つのＳＤＫアプリ１４０が例示されている。画像形成装置１０におけるＳＤＫアプリ１４０の起動は、それぞれに対するライセンスキーが取得さされていることが前提とされる。ライセンスキーは、ＳＤＫアプリ１４０の利用を特定の画像形成装置１０上において許可するデータである。なお、本実施の形態において、ＳＤＫアプリ１４０は、Ｊａｖａ（登録商標）言語で記述されたプログラムであるとする。但し、本発明の実施に際し、ＳＤＫアプリ１４０は、Ｊａｖａ（登録商標）言語によって記述されたプログラムに限定されない。
【００２６】
ＳＤＫプラットフォーム１５０は、ＳＤＫアプリ１４０の動作環境を提供するソフトウェアであり、例えば、Ｊａｖａ（登録商標）仮想マシンや、Ｊａｖａ（登録商標）ＭＥ（Micro Edition）において標準で提供されているクラス群やコントロールサービス１２２の機能をラッピングしたクラス群等を含む。また、ＳＤＫプラットフォーム１５０は、ＳＤＫアプリ１４０に関するライセンス管理を行う。例えば、ＳＤＫアプリ１４０は、各ＳＤＫアプリ１４０に対するライセンスキーを管理し、当該ライセンスキーに基づいてＳＤＫアプリ１４０の起動制御等を行う。
【００２７】
図４は、ＳＤＫプラットフォームにおけるライセンス管理機能とＳＤＫアプリの構成例とを示す図である。
【００２８】
同図に示されるように、一つのＳＤＫアプリ１４０は、一つ以上の機能モジュール（例えば、ＪＡＲ（Java（登録商標） Archive）ファイル等のプログラムモジュール）と機能モジュールごとに付随する（対応する）ライセンス情報ファイルを含む。機能モジュールの中にはライセンス情報ファイルが付随しないものも存在しうる。各機能モジュールは、当該機能モジュールの属するＳＤＫアプリ１４０が実行するジョブを構成する一部の機能を実現する。ライセンス情報ファイルは、対応する機能モジュールのライセンスに関する情報（ライセンス情報）を含むファイルである。例えば、各ライセンス情報ファイルには、それぞれが関連付けられている機能モジュールに対応するライセンスキーの識別子（後述されるライセンス識別番号）が格納されている。なお、ライセンス情報ファイルは、ＨＤＤ１１４に保存されている。ライセンス情報ファイルが記憶されたＨＤＤ１１４によって対応情報記憶手段が構成される。なお、機能モジュール１４０１とライセンス情報ファイル１４０２との関連付けは、任意の方法で行えばよい。例えば、機能モジュール１４０１とライセンス情報ファイル１４０２とをｚｉｐ形式等の同一の書庫ファイル内に格納してもよい。または、それぞれのファイル名に関連付けを識別するための文字列を含めるようにしてもよい。
【００２９】
同図のＳＤＫアプリ１４０には、機能モジュールとして機能モジュール１４０１ａ、１４０１ｂ、１４０１ｃ、及び１４０１ｄ（以下、総称する場合「機能モジュール１４０１」という。）が含まれている。また、ライセンス情報ファイルとしてライセンス情報ファイル１４０２ａ、１４０２ｃ、１４０２ｄ（以下、総称する場合「ライセンス情報ファイル１４０２」という。）が含まれている。ライセンス情報ファイル１４０２ａは、機能モジュール１４０１ａに付随するライセンス情報ファイルである。ライセンス情報ファイル１４０２ｃは、機能モジュール１４０１ｃに付随するライセンス情報ファイルである。ライセンス情報ファイル１４０２ｄは、機能モジュール１４０１ｂに付随するライセンス情報ファイルである。なお、機能モジュール１４０１ｂにはライセンス情報ファイルは付随していない。これは、機能モジュール１４０１ｂは、ライセンス対象ではないこと（ライセンスチェックが不要（例えば、ライセンスフリー）であること）を示す。
【００３０】
また、各機能モジュール１４０１間には、親子関係（従属関係又は依存関係）が存在する。同図では、機能モジュール１４０１ａが親であり、他の機能モジュール１４０１ｂ、１４０１ｃ、及び１４０１ｄは子である。親となる機能モジュール１４０１ａは、ＳＤＫアプリ１４０においていわゆるメインとなる処理を行う機能モジュール１４０１であり、以下、「メイン機能モジュール１４０１」ともいう。ＳＤＫアプリ１４０の起動には、メイン機能モジュール１４０１の存在が必須とされる。
【００３１】
一方、子となる機能モジュール１４０１は、プラグインとして提供され、ＳＤＫアプリ１４０に対して機能拡張を行う。子となる機能モジュール１４０１を以下、「プラグイン機能モジュール１４０１」ともいう。プラグイン機能モジュール１４０１は、メイン機能モジュール１４０１と共に一つのパッケージに同梱されて配布されてもよいし、別個に配布されてもよい。また、各プラグイン機能モジュール１４０１の利用権限は、メインプラグイン機能モジュール１４０１と同一のライセンスキーに対応付けることも可能であるし、別個のライセンスキーに対応付けることも可能である。また、プラグイン機能モジュール１４０１間においても、その利用権限を同一のライセンスキーに対応付けることも可能であるし、別個のライセンスキーに対応付けることも可能である。
【００３２】
このようなライセンスの従属関係は、ライセンス情報ファイル１４０２に定義されている。図５は、本実施の形態における各機能モジュールのライセンス情報ファイルの第一の定義例を示す図である。図５中、図４と同一物には同一符号を付している。
【００３３】
同図において、各ライセンスファイル１４０２は、アプリＩＤ、ライセンス識別サブ番号、及びライセンス表示名等を含む。アプリＩＤは、機能モジュール１４０１が属するＳＤＫアプリ１４０の識別子である。すなわち、各ＳＤＫアプリ１４０には、それぞれに一意なアプリＩＤが割り当てられている。ライセンス識別サブ番号は、ＳＤＫアプリ１４０の利用権限（ライセンス）の構成を識別するための番号（以下「ライセンス識別番号」という。）の枝番号である。ライセンス識別番号は、＜アプリＩＤ＞−＜ライセンス識別サブ番号＞という形式によって構成される。ライセンス識別番号が同じ機能モジュール１４０１は、同一のライセンスキーによって利用可能となる。また、複数のライセンス識別サブ番号が登録されている機能モジュール１４０１については、各ライセンス識別番号に係るライセンスキーによって利用可能となる。すなわち、一つのＳＤＫアプリ１４０に対して、利用可能となる機能モジュール１４０１の構成に応じて複数種類のライセンスを設定することが可能である。ライセンス表示名は、ライセンス識別サブ番号ごと（ライセンス識別番号ごと）に定義され、ライセンスキーの導入時等にライセンスを選択させる際等の表示用文字列として用いられる。
【００３４】
同図において、各ライセンス情報ファイル１４０２のアプリＩＤは「１２３４５６７８９」であり、同じである。これにより、各ライセンス情報ファイル１４０２に関連付いている各機能モジュール１４０１が同一のＳＤＫアプリ１４０に属することが識別される。
【００３５】
ライセンス情報ファイル１４０２ａのライセンス識別サブ番号は「００」と「０１」である。これにより、機能モジュール１４０１ａは、ライセンス識別番号が「１２３４５６７８９−００」又は「１２３４５６７８９−０１」に係るライセンスキーによって利用可能となることが識別される。また、ライセンス識別サブ番号に「００」が含まれていることにより、機能モジュール１４０１ａは、メイン機能モジュール１４０１であることが識別される。また、ライセンス情報ファイル１４０２ａのライセンス表示名は、「ＡＡＡ＿ｍａｉｎ」と「ＡＡＡ＿ｂａｓｉｃ」である。「ＡＡＡ＿ｍａｉｎ」は、ライセンス識別番号「１２３４５６７８９−００」に対するライセンス表示名であり、「ＡＡＡ＿ｂａｓｉｃ」は、ライセンス識別番号「１２３４５６７８９−０１」に対するライセンス表示名である。
【００３６】
一方、ライセンス情報ファイル１４０２ｃ及び１４０２ｄのライセンス識別サブ番号は「０１」である。したがって、機能モジュール１４０１ｃ及び機能モジュール１４０１ｄは、ライセンス識別番号が「１２３４５６７８９−０１」に係るライセンスキーによって利用可能となることが識別される。また、ライセンス情報ファイル１４０２ｃ及び１４０２ｄのそれぞれには、ライセンス識別番号「１２３４５６７８９−０１」に対するライセンス表示名として、ライセンスファイル１４０２ａと同様に「ＡＡＡ＿ｂａｓｉｃ」が登録されている。なお、機能モジュール１４０１ｃ及び１４０１ｄは、それぞれ独立した機能モジュール１４０１であるが、同一のライセンス識別番号が割り当てられている。このような具体例としては、機能モジュール１４０１ｃ及び１４０１ｄがセット販売されるプラグインである場合が挙げられる。
【００３７】
同図におけるライセンス情報ファイル１４０２の第一の定義例により可能となるライセンスの構成を図６に示す。図６において、機能モジュールＡ、Ｃ、Ｄは、それぞれ、機能モジュール１４０１ａ、１４０１ｃ、１４０１ｄを示す。
【００３８】
図６に示されるように、ライセンス識別番号「１２３４５６７８９−００」（ＡＡＡ＿ｍａｉｎ）に係るライセンスキーでは、機能モジュール１４０１ａに対してのみ利用権限が与えられる。一方、ライセンス識別番号「１２３４５６７８９−０１」（ＡＡＡ＿ｂａｓｉｃ）に係るライセンスキーでは、機能モジュール１４０１ａ、１４０１ｃ、及び１４０１ｄに対して利用権限が与えられる。
【００３９】
図４に戻る。ＳＤＫプラットフォーム１５０は、ライセンス導入部１５１、判定部１５３、及び起動制御部１５４等を有する。
【００４０】
ライセンス導入部１５１は、ライセンス制御装置２０よりＳＤＫアプリ１４０（機能モジュール１４０１）に対するライセンスキーを取得し、当該ライセンスキーをライセンスファイル１７０に格納してＨＤＤ１１４に保存する。ライセンスキーの導入により、当該ライセンスキーに係るＳＤＫアプリ１４０又は機能モジュール１４０１の利用が可能となる。
【００４１】
起動制御部１５４は、ＳＤＫアプリ１４０の起動及び停止を制御する。ＳＤＫアプリ１４０を起動する際、起動制御部１５４は、判定部１５３にＳＤＫアプリ１４０のライセンス状況の問い合わせを行うことにより、機能モジュール１４０１単位で起動（ＲＡＭ１１２へのロード）を制御する。
【００４２】
判定部１５３は、起動対象とされたＳＤＫアプリ１４０に属する機能モジュール１４０１のうちライセンス対象となる機能モジュール１４０１（図４では、機能モジュール１４０１ａ、１４０１ｂ、１４０１ｃ）について、ライセンスキーに基づく起動の可否（許否）の判定を行う。
【００４３】
更に、ライセンスサーバ５０及びライセンス制御装置２０の詳細について説明する。図７は、本発明の実施の形態におけるライセンスサーバの機能構成例を示す図である。同図において、ライセンスサーバ５０は、ライセンス発行部５１、ライセンス発行情報更新部５２、及びライセンス発行情報管理テーブル５３等を有する。これら各部は、ライセンスサーバ５０にインストールされたプログラムがライセンスサーバ５０のＣＰＵに実行される処理によって実現される。
【００４４】
ライセンス発行部５１は、ユーザサイトＡよりライセンスキーの発行が要求された際にライセンスキーを発行（生成）する。ライセンス発行情報更新部５２は、プロダクトキーに対するライセンスキーの発行状況等を示す情報をライセンス発行情報管理テーブル５３に記録する。
【００４５】
プロダクトキーとは、製品が購入されるごとに一意に発行される（又は割り当てられる）識別子であり、例えば製品に添付されて購入者に配布される。ここで、製品とは、ＳＤＫアプリ１４０やプラグイン機能モジュール１４０１をいう。プラグイン機能モジュール１４０１単独でも製品が構成されうる。
【００４６】
製品の購入時には、購入対象の製品に対するライセンスの種類（ライセンス識別番号に対応する種類）と当該製品に対するライセンス数が購入者によって選択される。すなわち、製品を購入するということは、当該製品に関するライセンスを購入するということにもなる。したがって、製品の購入に伴って配布されるプロダクトキーによってライセンスを受けることが可能な（ライセンスキーを入手することが可能な）機能モジュール１４０１が決まる。
【００４７】
図８は、ライセンス発行情報管理テーブルの構成例を示す図である。同図におけるライセンス発行情報管理テーブル５３は、アプリＩＤが「１２３４５６７８９」のＳＤＫアプリ１４０に対するライセンス発行情報管理テーブル５３である。すなわち、ライセンス発行情報管理テーブル５３は製品ごとに作成される。
【００４８】
同図に示されるように、ライセンス発行情報管理テーブル５３は、発行されたプロダクトキーごとに、ライセンス識別番号、ライセンス数、ライセンス発行数、及びライセンスキー等を管理する。ライセンス識別番号及びライセンス数は、当該ＳＤＫアプリ１４０の購入時に指定されたものである。ライセンス発行数は、当該プロダクトキーに基づいて既に発行されたライセンス（ライセンスキー）の数である。ライセンスキーは、現在発行されているライセンスキーの一覧である。
【００４９】
例えば、アプリＩＤが「１２３４５６７８９」のＳＤＫアプリ１４０が、図４及び図５に示される構成を有している場合、図８のライセンス発行情報管理テーブル５３によれば、プロダクトキー「ＡＡＡ」は、ライセンス識別番号「１２３４５６７８９−０１」に対応するため、機能モジュール１４０１ａ、１０４１ｃ、及び１４０１ｄを利用可能なライセンスが１つ購入されたときに発行されたものであることが分かる。また、プロダクトキー「ＢＢＢ」は、ライセンス識別番号「１２３４５６７８９−００」に対応するため、機能モジュール１４０１ａを利用可能なライセンスが５つ購入されたときに発行されたものであることが分かる。また、各プロダクトキーに対応するライセンス発行数は０であるため、いずれについても未だライセンスキーは発行されていないことが分かる。なお、ライセンス発行情報管理テーブル５３は、ライセンスサーバ５０の記憶装置に記録されている。
【００５０】
プロダクトキーは、ライセンス発行時の入力情報となる。ＳＤＫアプリ１４０の購入時点において、ユーザは、ＳＤＫアプリ１４０とプロダクトキーとを有している。この段階において、ユーザは、ＳＤＫアプリ１４０の画像形成装置１０へのインストールは可能であるが、利用は許可されない。上記したようにＳＤＫアプリ１４０の起動の許否はライセンスキーに基づいて判定されるからである。ＳＤＫアプリ１４０を利用したい場合、ユーザは、プロダクトキーに基づいてライセンスキーを入手する。一つのプロダクトキーに基づいて、ライセンス数分のライセンスキーを入手することができる。また、同一のプロダクトキーに属する機能モジュール１４０１は、同一のライセンスキーによって利用可能となる。なお、プロダクトキーに属する機能モジュール１４０１とは、プロダクトキーに対応する製品に含まれている機能モジュール１４０１をいう。
【００５１】
図９は、本発明の実施の形態におけるライセンス制御装置の機能構成例を示す図である。同図において、ライセンス制御装置２０は、ライセンス取得部２２及びライセンス配信部２３等を有する。
【００５２】
ライセンス取得部２２は、ユーザによる指示入力に応じ、ライセンスキーの発行をライセンスサーバ５０より受ける。ライセンス配信部２３は、発行されたライセンスキーを画像形成装置１０へ配信する。
【００５３】
以下、ライセンス管理システムの処理手順について説明する。図１０は、ライセンスキーの発行処理及び画像形成装置へのライセンスキーの導入処理の処理手順を説明するための図である。同図の前提として、画像形成装置１０には購入されたＳＤＫアプリ１４０が少なくとも一つインストールされている。また、操作者（管理者等）による操作は、ライセンス制御装置２０において行われる。
【００５４】
ライセンス制御装置２０においてライセンスキーの導入先の画像形成装置１０が操作者によって選択されると、ライセンス制御装置２０のライセンス取得部２２は、選択された画像形成装置１０に対して機器情報の取得要求を送信する（Ｓ１０１）。ライセンスキーの導入先の画像形成装置１０の選択は、例えば、ライセンス制御装置２０がネットワーク３０に接続されている画像形成装置１０を自動検索することにより表示される画像形成装置１０の一覧情報の表示画面における操作によって行われる。但し、当該導入先の画像形成装置１０のＩＰアドレスが直接入力されてもよい。
【００５５】
機器情報の取得要求を受信した各画像形成装置１０のライセンス導入部１５１は、機器情報の取得処理として以下を実行する（Ｓ１０２）。まず、当該画像形成装置１０にインストールされている各ＳＤＫアプリ１４０に含まれている各ライセンス情報ファイル１４０２より、ライセンス識別番号とライセンス識別番号に対応するライセンス表示名とを取得する（Ｓ１０２−１、Ｓ１０２−２）。続いて、当該画像形成装置１０の機体コードの生成処理を実行する（Ｓ１０２−３）。まず、当該画像形成装置１０の機体番号を例えばＲＯＭ１１３より取得する（Ｓ１０２−３１）。続いて、取得された機体番号を暗号化することにより機体コードを生成する（Ｓ１０２−３２）。すなわち、機体コードとは、機体番号が暗号化されたものをいう。
【００５６】
続いて、ライセンス導入部１５１は、各ライセンス識別番号、各ライセンス表示名、及び機体番号を機器情報としてライセンス制御装置２０に返信する（Ｓ１０３）。なお、一つのＳＤＫアプリ１４０の各ライセンス情報ファイル１４０１より取得されるライセンス機別番号及びライセンス表示名は重複している場合がある。例えば、図５では、ライセンス識別番号「１２３４５６７８９−０１」及びライセンス表示名「ＡＡＡ＿ｂａｓｉｃ」は、三つのライセンス情報から取得される。したがって、ライセンス導入部１５１は、斯かる重複を排除したものを機器情報に含めて返信する。
【００５７】
続いて、ライセンス制御装置２０のライセンス取得部２２は、受信した機器情報に含まれているライセンス表示名の一覧を表示装置に表示させ、当該一覧の中からライセンスキーの取得対象とするライセンス（ライセンス識別番号）を操作者に選択させる（Ｓ１０４）。続いて、ライセンス取得部２２は、選択されたライセンスに係るＳＤＫアプリ１４０に対するプロダクトキーの入力を操作者より受け付ける（Ｓ１０５）。なお、プロダクトキーは、予め操作者が入手しているという前提である。例えば、ＳＤＫアプリ１４０が記録媒体によって配布される場合は、当該記録媒体にプロダクトキーが添付されている。また、ＳＤＫアプリ１４０がネットワークを介して配信される場合は、当該ＳＤＫアプリ１４０と共に配信されるファイル内にプロダクトキーが記録されている。
【００５８】
続いて、ライセンス取得部２２は、入力されたプロダクトキーと、受信した機体コードと、選択されたライセンス識別番号とを伴ってライセンスキーの発行要求をライセンスサーバ５０に送信する（Ｓ１０６）。
【００５９】
当該要求に応じ、ライセンスサーバ５０のライセンス発行部５１は、当該要求に含まれるプロダクトキーのライセンス発行数がライセンス数に達しているかいないかをライセンス識別番号に含まれているアプリＩＤに対応するライセンス発行情報管理テーブル５３に基づいて判定する。当該プロダクトキーのライセンス発行数がライセンス数に達していない場合、ライセンス発行部５１は、受信された機体コード及びプロダクトキーと、ライセンス発行情報管理テーブル５３とに基づいてライセンスキーを生成する（Ｓ１０７）。
【００６０】
図１１は、ライセンスキーの構成例を示す図である。同図において、一つのライセンスキーは、ライセンス識別番号及び機体コード等を含むデータとして構成される。当該ライセンスキーによって、「機体コード（機体番号）」によって識別される画像形成装置１０上において、「ライセンス識別番号」に対応するＳＤＫアプリ１４０の機能モジュール１４０１の利用が許可される。ライセンス識別番号及び機体コードは、受信されたライセンスの発行要求に含まれていたものである。なお、ライセンスキーは、ライセンス識別番号及び機体コードの単なる羅列ではなく、これらの情報がエンコードされ、更に暗号化されたものでもよい。
【００６１】
ライセンスキーが発行された場合、ライセンス発行情報更新部５２は、また、ライセンス発行情報管理テーブル５３におけるライセンス発行数を更新する。
【００６２】
図１２は、ライセンスキーの発行により更新されたライセンス発行情報管理テーブルの例を示す図である。同図は、プロダクトキー「ＡＡＡ」に対してライセンスキーが発行された例を示す。ライセンスキーの発行により、プロダクトキー「ＡＡＡ」のライセンス発行数が１に更新されている。また、発行されたライセンスキー「ＢＪＰ１３８−ＢＵＱ」が登録されている。なお、「ＢＪＰ１３８−ＢＵＱ」は、エンコード及び暗号化されたライセンスキーを表現している。
【００６３】
続いて、ライセンス発行部５１は、生成されたライセンスキーをライセンス制御装置２０に送信する（Ｓ１０８）。なお、ステップＳ１０７において、プロダクトキーのライセンス発行数がライセンス数に達している場合、ライセンス発行部５１は、ライセンスキーの生成を拒否する。したがって、この場合、ライセンス発行部５１は、ステップＳ１０８において、ライセンスキーは発行されないことを示す情報をライセンス制御装置２０に送信する。
【００６４】
ライセンス制御装置２０のライセンス取得部２２がライセンスキーを受信すると、ライセンス配信部２３は、当該ライセンスキーを画像形成装置１０に転送する（Ｓ１０８）。画像形成装置１０のライセンス導入部１５１は、ライセンスキーを受信すると、当該ライセンスキーをライセンスファイル１７０に格納して保存する（Ｓ１０９）。なお、ライセンスファイル１７０は、そのファイル名又はその保存場所（フォルダ）の名前等によってＳＤＫアプリ１４０と関連付けられる。但し、当該関連付けは他の方法によって行われてもよい。
【００６５】
ライセンスキーの導入により、当該ライセンスキーに係るＳＤＫアプリ１４０の起動（利用）が可能となる。続いて、ＳＤＫアプリ１４０の起動処理について説明する。図１３は、画像形成装置におけるＳＤＫアプリの起動処理の処理手順を説明するための図である。
【００６６】
例えば、操作対象の画像形成装置１０にインストールされているＳＤＫアプリ１４０の一覧が操作パネル１６に表示されている。当該画像形成装置１０の操作者が、当該一覧の中から所望のＳＤＫアプリ１４０を選択し、当該ＳＤＫアプリ１４０の起動指示を入力する。当該起動指示に応じ、起動制御部１５４が、起動対象とされたＳＤＫアプリ１４０のアプリＩＤを指定して、当該ＳＤＫアプリ１４０のライセンスの有無のチェック（以下、単に「ライセンスチェック」という。）を判定部１５３に要求すると図１３の処理が開始される。
【００６７】
判定部１５３は、指定されたアプリＩＤに係るＳＤＫアプリ１４０に含まれている各機能モジュール１４０１についてｌｏｏｐ１に係るループ処理を実行する。すなわち、判定部１５３は、各機能モジュール１４０１がライセンスチェック対象であるか否かを判定する（Ｓ２０１）。この判定は、機能モジュール１４０１にライセンス情報ファイル１４０２が関連付けられているか否か（機能モジュール１４０１に付随するライセンス情報ファイル１４０２が存在するか否か）に基づいて行われる。例えば、図４の機能モジュール１４０１ａ、１４０１ｃ、又は１４０１ｄのように付随するライセンス情報ファイル１４０２が存在する機能モジュール１４０１については（Ｓ２０１でＹＥＳ）、判定部１５３は、ライセンスチェックを実行する（Ｓ２０２）。
【００６８】
具体的には、機能モジュール１４０１に付随するライセンス情報ファイル１４０２に基づいて、当該機能モジュール１４０１に対応付けられているライセンス識別情報を判定する。続いて、起動対象とされているＳＤＫアプリ１４０に対応する一つ又は複数のライセンスファイル１７０に、当該ライセンス識別情報を含むライセンスキーが格納されているか判定する。続いて、当該ライセンスキーに含まれている機体コードを復号した値（機体番号）が、操作対象の画像形成装置１０の機体番号と一致するかを判定する。全ての判定結果が肯定的な場合、判定部１５３は、当該機能モジュール１４０１のライセンスは有る（有効である）と判定する。一つでも否定的な判定結果がある場合、判定部１５３は、当該機能モジュール１４０１のライセンスは無い（無効である）と判定する。
【００６９】
判定部１５３は、ライセンスは有効であると判定された機能モジュール１４０１については（Ｓ２０３でＹＥＳ）、起動有効ＦｌａｇをＯＮに設定する（Ｓ２０４）。また、判定部１５３は、ライセンスは無効であると判定された機能モジュール１４０１については（Ｓ２０３でＮＯ）、起動有効ＦｌａｇをＯＦＦに設定する（Ｓ２０５）。なお、起動有効Ｆｌａｇとは、ライセンスの有効又は無効を記録しておくために機能モジュール１４０１ごとにＲＡＭ１１２内に生成されるフラグ変数である。
【００７０】
一方、機能モジュール１４０１ｂのように付随するライセンス情報ファイル１４０２が存在しない機能モジュール１４０１については（Ｓ２０１でＮＯ）、判定部１５３は、ライセンスチェックを行うことなく対応する起動有効ＦｌａｇをＯＮに設定する（Ｓ２０４）。
【００７１】
ｌｏｏｐ１の処理が完了すると、判定部１５３は、起動対象とされたＳＤＫアプリ１４０に含まれる全ての機能モジュール１４０１についてｌｏｏｐ２に係るループ処理を実行する。すなわち、判定部１５３は、各機能モジュール１４０１について対応する起動有効Ｆｌａｇの値をチェックする（Ｓ２０６）。起動有効Ｆｌａｇの値がＯＮである機能モジュール１４０１については、その実体を起動ディレクトリに移動又はコピーする（Ｓ２０７）。なお、起動ディレクトリとは、ファイルシステム上における所定のディレクトリ（フォルダ）である。
【００７２】
ｌｏｏｐ２の処理が完了すると、起動制御部１５４は、起動ディレクトリ内におけるメイン機能モジュール１４０１（図４の例における機能モジュール１４０１ａ）の存否（すなわち、機能モジュール１４０１の従属関係において最上位に位置する機能モジュール１４０１の存否）を判定する（Ｓ２０８）。メイン機能モジュール１４０１の有無は、起動ディレクトリ内の各機能モジュール１４０１に付随するライセンス情報ファイル１４０２に基づいて判定すればよい。すなわち、ライセンス識別サブ番号に「００」を含むライセンス情報ファイル１４０２が有れば、当該ライセンス情報ファイル１４０２に関連付いている機能モジュール１４０１がメイン機能モジュール１４０１である。
【００７３】
起動ディレクトリ内にメイン機能モジュール１４０１が存在する場合、起動制御部１５４は、起動ディレクトリ内の起動モジュール１４０１をＲＡＭ１０２にロードし、ＳＤＫアプリ１４０を実行させる（Ｓ２０９）。一方、起動ディレクトリ内にメイン機能モジュール１４０１が存在しない場合、起動制御部１５４は、いずれの機能モジュール１４０１をもロードすることなく処理を終了させる。したがって、この場合、ＳＤＫアプリ１４０は実行されない。
【００７４】
上述したように、本実施の形態における画像形成装置１０によれば、ＳＤＫアプリ１４０を構成する機能モジュール１４０１単位（すなわち、機能単位で）でライセンス管理を行うことができる。したがって、アプリケーションごとにライセンス管理を行う場合に比べて、プログラムのライセンス管理の柔軟性を著しく向上させることができる。
【００７５】
また、同じ構成のＳＤＫアプリ１４０に対して、ライセンス情報ファイルの定義に応じて各種のライセンス構成を構築することができる。斯かる観点においてもライセンス管理の柔軟性を向上させることができる。
【００７６】
なお、図４の構成を有するＳＤＫアプリ１４０について、ライセンス情報ファイル１４０２の他の定義例及び当該他の定義例に応じたライセンスの構成例を以下に示す。
【００７７】
図１４は、本実施の形態における各機能モジュールのライセンス情報ファイルの第二の定義例を示す図である。
【００７８】
同図の例では、ライセンス情報ファイル１４０２ａのライセンス識別サブ番号は「００」と「０１」である。また、ライセンス情報ファイル１４０２ｃ及び１４０２ｄのライセンス識別サブ番号は「０１」と「８１」である。なお、ライセンス識別番号「１２３４５６７８９−８１」に対するライセンス表示名は「ＰｌｕｇｉｎＣＤ」である。
【００７９】
同図におけるライセンス情報ファイル１４０２の定義例により可能となるライセンスの構成を図１５に示す。同図において、機能モジュールＡ、Ｃ、Ｄは、それぞれ、機能モジュール１４０１ａ、１４０１ｃ、１４０１ｄを示す。
【００８０】
図１５に示されるように、ライセンス識別番号「１２３４５６７８９−００」（ＡＡＡ＿ｍａｉｎ）に係るライセンスキーでは、機能モジュール１４０１ａに対してのみ利用権限が与えられる。また、ライセンス識別番号「１２３４５６７８９−０１」（ＡＡＡ＿ｂａｓｉｃ）に係るライセンスキーでは、機能モジュール１４０１ａ、１４０１ｃ、及び１４０１ｄに対して利用権限が与えられる。また、ライセンス識別番号「１２３４５６７８９−８１」（ＰｌｕｇｉｎＣＤ）に係るライセンスキーでは、機能モジュール１４０１ｃ及び１４０１ｄに対して利用権限が与えられる。本実施の形態では、プラグイン機能モジュール１４０１（機能モジュール１４０１ｃ及び１４０１ｄ）を起動するには、従属関係において最上位のメイン機能モジュール１４０１である（機能モジュール１４０１ａ）の起動が必要とされるため、全ての機能モジュール１４０１を利用するには、「１２３４５６７８９−０１」に係るライセンスキーを一つ入手するか、「１２３４５６７８９−００」に係るライセンスキーと「１２３４５６７８９−８１」に係るライセンスキーを入手すればよい。
【００８１】
また、図１６は、本実施の形態における各機能モジュールのライセンス情報ファイルの第三の定義例を示す図である。
【００８２】
同図の例では、ライセンス情報ファイル１４０２ａのライセンス識別サブ番号は「００」と「０１」と「０３」である。また、ライセンス情報ファイル１４０２ｃのライセンス識別サブ番号は「０１」と「０２」である。また、ライセンス情報ファイル１４０２ｄのライセンス識別サブ番号は「０３」と「０４」である。
【００８３】
同図におけるライセンス情報ファイル１４０２の定義例により可能となるライセンスの構成を図１７に示す。同図において、機能モジュールＡ、Ｃ、Ｄは、それぞれ、機能モジュール１４０１ａ、１４０１ｃ、１４０１ｄを示す。
【００８４】
図１７に示されるように、ライセンス識別番号「１２３４５６７８９−００」（ＡＡＡ＿ｍａｉｎ）に係るライセンスキーでは、機能モジュール１４０１ａに対してのみ利用権限が与えられる。また、ライセンス識別番号「１２３４５６７８９−０１」（ＡＡＡ＿ｂａｓｉｃＣ）に係るライセンスキーでは、機能モジュール１４０１ａ及び１４０１ｃに対して利用権限が与えられる。また、ライセンス識別番号「１２３４５６７８９−０２」（ＰｌｕｇｉｎＣ）に係るライセンスキーでは、機能モジュール１４０１ｃに対してのみ利用権限が与えられる。また、ライセンス識別番号「１２３４５６７８９−０３」（ＡＡＡ＿ｂａｓｉｃＤ）に係るライセンスキーでは、機能モジュール１４０１ａ及び１４０１ｄに対して利用権限が与えられる。また、ライセンス識別番号「１２３４５６７８９−０２」（ＰｌｕｇｉｎＤ）に係るライセンスキーでは、機能モジュール１４０１ｄに対してのみ利用権限が与えられる。したがって、全ての機能モジュール１４０１を利用するには、「１２３４５６７８９−０１」、「１２３４５６７８９−０２」、及び「１２３４５６７８９−０３」に係る三つライセンスキーを入手すればよい。
【００８５】
なお、ＳＤＫアプリ１４０の構成としては、図４以外にも様々なものが採用可能である。当該構成に応じて、更に多様なライセンス構成を構築することができる。
【００８６】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００８７】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          ネットワークインタフェース
１６          操作パネル
２０          ライセンス制御装置
２２          ライセンス取得部
２３          ライセンス配信部
３０          ネットワーク
５０          ライセンスサーバ
５１          ライセンス発行部
５２          ライセンス発行情報更新部
５３          ライセンス発行情報管理テーブル
７０          広域ネットワーク
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１２１        ＯＳ
１２２        コントロールサービス
１２３        アプリケーション
１３０        標準アプリ
１５０        ＳＤＫプラットフォーム
１３１        コピーアプリ
１３２        スキャンアプリ
１３３        ファクスアプリ
１３４        プリントアプリ
１４０、１４１、１４２、１４３        ＳＤＫアプリ
１５１        ライセンス導入部
１５３        判定部
１５４        起動制御部
１７０        ライセンスファイル
１４０１ａ、１４０１ｂ、１４０１ｄ    機能モジュール
１４０２ａ、１４０２ｂ    ライセンス情報ファイル１４０２ａ
【先行技術文献】
【特許文献】
【００８８】
【特許文献１】特開２００４−１１８２３７号公報
【図１】
0005482920.tif 000002
【図２】
0005482920.tif 000003
【図３】
0005482920.tif 000004
【図４】
0005482920.tif 000005
【図５】
0005482920.tif 000006
【図６】
0005482920.tif 000007
【図７】
0005482920.tif 000008
【図８】
0005482920.tif 000009
【図９】
0005482920.tif 000010
【図１０】
0005482920.tif 000011
【図１１】
0005482920.tif 000012
【図１２】
0005482920.tif 000013
【図１３】
0005482920.tif 000014
【図１４】
0005482920.tif 000015
【図１５】
0005482920.tif 000016
【図１６】
0005482920.tif 000017
【図１７】
0005482920.tif 000018