(57)【特許請求の範囲】
【請求項１】
複数のプログラムモジュールより構成されるアプリケーションを起動可能な情報処理装置であって、
前記プログラムモジュールごとに関連付けられている当該プログラムモジュールがライセンス管理の対象であるか否かを示す情報に基づいて、前記複数のプログラムモジュールのうちライセンス管理の対象とされるプログラムモジュールを識別可能なライセンス対象識別情報を生成するライセンス対象識別情報生成手段と、
前記アプリケーションの起動要求に応じ、前記ライセンス対象識別情報に基づいて、ライセンス管理の対象であるプログラムモジュールに利用できないプログラムモジュールが含まれる場合には、当該プログラムモジュールの起動を制限し、ライセンス管理の対象でないプログラムモジュールは、利用の可否を判定することなく起動する起動制限手段とを有することを特徴とする情報処理装置。
【請求項２】
前記アプリケーションの起動要求が入力されたときに前記ライセンス対象識別情報が生成されていないときは、前記ライセンス対象識別情報生成手段に前記ライセンス対象識別情報を生成させ、
前記起動制限手段は、前記起動要求に応じて生成された前記ライセンス対象識別情報に基づいて、プログラムモジュールの起動を制限することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記アプリケーションの起動要求に応じ、前記ライセンス対象識別情報の正当性を判定する正当性判定手段を有し、
前記ライセンス対象識別情報生成手段は、前記正当性判定手段によって前記ライセンス対象識別情報が不正であると判定されたときは前記ライセンス対象識別情報を再生成し、
前記起動制限手段は、再生成された前記ライセンス対象識別情報に基づいて、プログラムモジュールの起動を制限することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記ライセンス対象識別情報は、ライセンス管理の対象とされる前記プログラムモジュールの識別情報を含むことを特徴とする請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
前記ライセンス対象識別情報生成手段は、前記ライセンス対象識別情報を暗号化することを特徴とする請求項１乃至３いずれか一項記載の情報処理装置。
【請求項６】
複数のプログラムモジュールより構成されるアプリケーションを起動可能な情報処理装置が実行するライセンス判定方法であって、
前記プログラムモジュールごとに関連付けられている当該プログラムモジュールがライセンス管理の対象であるか否かを示す情報に基づいて、前記複数のプログラムモジュールのうちライセンス管理の対象とされるプログラムモジュールを識別可能なライセンス対象識別情報を生成するライセンス対象識別情報生成手順と、
前記アプリケーションの起動要求に応じ、前記ライセンス対象識別情報に基づいて、ライセンス管理の対象であるプログラムモジュールに利用できないプログラムモジュールが含まれる場合には、当該プログラムモジュールの起動を制限し、ライセンス管理の対象でないプログラムモジュールは、利用の可否を判定することなく起動する起動制限手順とを有することを特徴とするライセンス判定方法。
【請求項７】
前記アプリケーションの起動要求が入力されたときに前記ライセンス対象識別情報が生成されていないときは、前記ライセンス対象識別情報生成手順に前記ライセンス対象識別情報を生成させ、
前記起動制限手順は、前記起動要求に応じて生成された前記ライセンス対象識別情報に基づいて、プログラムモジュールの起動を制限することを特徴とする請求項６記載のライセンス判定方法。
【請求項８】
前記アプリケーションの起動要求に応じ、前記ライセンス対象識別情報の正当性を判定する正当性判定手順と、
前記正当性判定手順において前記ライセンス対象識別情報が不正であると判定されたときは前記ライセンス対象識別情報を再生成するライセンス対象識別情報再生成手順とを有し、
前記起動制限手順は、再生成された前記ライセンス対象識別情報に基づいて、プログラムモジュールの起動を制限することを特徴とする請求項６又は７記載のライセンス判定方法。
【請求項９】
前記ライセンス対象識別情報は、ライセンス管理の対象とされる前記プログラムモジュールの識別情報を含むことを特徴とする請求項６乃至８いずれか一項記載のライセンス判定方法。
【請求項１０】
前記ライセンス対象識別情報生成手順は、前記ライセンス対象識別情報を暗号化することを特徴とする請求項７乃至９いずれか一項記載のライセンス判定方法。
【請求項１１】
複数のプログラムモジュールより構成されるアプリケーションを起動可能な情報処理装置に、
前記プログラムモジュールごとに関連付けられている当該プログラムモジュールがライセンス管理の対象であるか否かを示す情報に基づいて、前記複数のプログラムモジュールのうちライセンス管理の対象とされるプログラムモジュールを識別可能なライセンス対象識別情報を生成するライセンス対象識別情報生成手順と、
前記アプリケーションの起動要求に応じ、前記ライセンス対象識別情報に基づいて、ライセンス管理の対象であるプログラムモジュールに利用できないプログラムモジュールが含まれる場合には、当該プログラムモジュールの起動を制限し、ライセンス管理の対象でないプログラムモジュールは、利用の可否を判定することなく起動する起動制限手順とを実行させるためのプログラム。
【請求項１２】
前記アプリケーションの起動要求が入力されたときに前記ライセンス対象識別情報が生成されていないときは、前記ライセンス対象識別情報生成手順に前記ライセンス対象識別情報を生成させ、
前記起動制限手順は、前記起動要求に応じて生成された前記ライセンス対象識別情報に基づいて、プログラムモジュールの起動を制限することを特徴とする請求項１１記載のプログラム。
【請求項１３】
前記アプリケーションの起動要求に応じ、前記ライセンス対象識別情報の正当性を判定する正当性判定手順と、
前記正当性判定手順において前記ライセンス対象識別情報が不正であると判定されたときは前記ライセンス対象識別情報を再生成するライセンス対象識別情報再生成手順とを有し、
前記起動制限手順は、再生成された前記ライセンス対象識別情報に基づいて、プログラムモジュールの起動を制限することを特徴とする請求項１１又は１２記載のプログラム。
【請求項１４】
前記ライセンス対象識別情報は、ライセンス管理の対象とされる前記プログラムモジュールの識別情報を含むことを特徴とする請求項１１乃至１３いずれか一項記載のプログラム。
【請求項１５】
前記ライセンス対象識別情報生成手順は、前記ライセンス対象識別情報を暗号化することを特徴とする請求項１１乃至１４いずれか一項記載のプログラム。
【請求項１６】
請求項１１乃至１５いずれか一項記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ライセンス判定方法、プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
近年では、主に複合機又は融合機と呼ばれる画像形成装置において、その出荷後に新たなアプリケーションの開発及びインストールが可能とされているものがある。斯かるアプリケーションのライセンスを、ユーザの利用形態に合わせて提供することができればユーザにとって便宜であるばかりでなく、アプリケーションを販売する側にとってもビジネスチャンスの拡大を期待できる。
【０００３】
例えば、特許文献１には、アプリケーションを利用可能な画像形成装置を所定のものに限定することができるライセンス管理方法等が開示されている。特許文献１に係る技術によれば、アプリケーションを利用する台数に応じて課金額を変化させることができる。また、アプリケーションの不正コピーによる不正利用を適切に防止することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、一つのアプリケーションは、必ずしも一つのプログラムモジュールから構成されておらず、機能別にモジュール化された複数のプログラムモジュールから構成されている場合がある。このようなアプリケーションについて、ライセンス単位をプログラムモジュール単位とすれば、アプリケーションの一部の機能のみの利用を制限又は許可することができる。そうすることで、更に多様な製品形態を構成することができる。
【０００５】
しかしながら、ライセンス単位をプログラムモジュール単位とした場合、アプリケーションの起動時にプログラムモジュールごとにライセンスのチェックを行う必要がある。そうすると、多数のプログラムモジュールを含む巨大なアプリケーションについては、ライセンスチェックに要する時間が無視できないほど大きなものとなり、アプリケーションの起動時間が許容範囲を超えて増加してしまうという問題がある。
【０００６】
本発明は、上記の点に鑑みてなされたものであって、アプリケーションを構成するプログラムモジュールに関するライセンスチェックによるアプリケーションの起動時間の増大を適切に抑制することのできる情報処理装置、ライセンス判定方法、プログラム及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【０００７】
そこで上記課題を解決するため、本発明は、複数のプログラムモジュールより構成されるアプリケーションを起動可能な情報処理装置であって、前記プログラムモジュールごとに関連付けられている当該プログラムモジュールがライセンス管理の対象であるか否かを示す情報に基づいて、前記複数のプログラムモジュールのうちライセンス管理の対象とされるプログラムモジュールを識別可能なライセンス対象識別情報を生成するライセンス対象識別情報生成手段と、前記アプリケーションの起動要求に応じ、前記ライセンス対象識別情報に基づいて、ライセンス管理の対象であるプログラムモジュールに利用できないプログラムモジュールが含まれる場合には、当該プログラムモジュールの起動を制限する起動制限手段とを有することを特徴とする。
【０００８】
このような情報処理装置では、アプリケーションを構成するプログラムモジュールに関するライセンスチェックによるアプリケーションの起動時間の増大を適切に抑制することができる。
【発明の効果】
【０００９】
本発明によれば、アプリケーションを構成するプログラムモジュールに関するライセンスチェックによるアプリケーションの起動時間の増大を適切に抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図３】ＳＤＫプラットフォームにおけるライセンス管理機能とＳＤＫアプリの構成例とを示す図である。
【図４】画像形成装置へのライセンスキーの導入手順を説明するための図である。
【図５】ライセンスキーの構成例を示す図である。
【図６】ライセンスリストの生成処理を説明するためのフローチャートである。
【図７】ライセンスリストの例を示す図である。
【図８】本実施の形態におけるＳＤＫアプリのライフサイクルを説明するための状態遷移図である。
【図９】ＳＤＫアプリの起動時の処理手順を説明するためのフローチャートである。
【図１０】ライセンスリストが無い場合のＳＤＫアプリの起動時の処理手順を説明するための図である。
【図１１】ライセンスリストによりＳＤＫアプリの起動が高速化される理由を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。図１において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、ネットワークインタフェース１５、及び操作パネル１６等のハードウェアを有する。
【００１２】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、及びＨＤＤ１１４等を含む。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される。
【００１３】
スキャナ１２は、原稿より画像データを読み取るためのハードウェアである。プリンタは１３、画像データを印刷用紙に印刷するためのハードウェアである。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。ネットワークインタフェース１５は、ＬＡＮ（Local Area Network）等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。操作パネル１６は、ユーザからの入力の受け付けや、ユーザに対する情報の通知等を行うめのボタン、液晶パネル等を備えたハードウェアである。
【００１４】
図２は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。同図において、画像形成装置１０は、ＯＳ１２１、コントロールサービス１２２、及びアプリケーション１２３等のソフトウェアを有する。
【００１５】
ＯＳ１２１は、ＵＮＩＸ（登録商標）等のいわゆるＯＳ（Operating System）であり、各種ソフトウェアをプロセス単位で並列的に起動する。
【００１６】
コントロールサービス１２２は、各種のハードウェアリソース等を制御するためのサービスを上位アプリケーション等に対して共通的に提供するソフトウェアモジュール群である。例えば、コントロールサービス１２２は、スキャナ１２又はプリンタ１３を制御するための手段や、モデム１４又はネットワークインタフェース１５を介した通信手段等を提供する。
【００１７】
アプリケーション１２３は、コントロールサービス１２２やＯＳ１２１等を利用して、ユーザより要求された各種のジョブを画像形成装置１０に実行させるプログラムである。アプリケーション１２３は、標準アプリ１３０とＳＤＫアプリ１４０とに大別される。
【００１８】
標準アプリ１３０は、画像形成装置１０に標準的に（出荷時に予め）実装されているアプリケーションをいう。図中では、コピージョブを制御するコピーアプリ１３１、スキャンジョブを制御するスキャンアプリ１３２、ファクス送信ジョブを制御するファクスアプリ１３３、印刷ジョブを制御するプリントアプリ１３４等が例示されている。
【００１９】
ＳＤＫアプリ１４０は、画像形成装置１０に専用のＳＤＫ（ソフトウェア開発キット）を使用して開発されたアプリケーションをいい、ＳＤＫプラットフォーム１５０上で動作する。すなわち、画像形成装置１０には、その出荷後に専用のＳＤＫを使用して新たにアプリケーションを追加することができる。図中では、ＳＤＫアプリ１４１、１４２、及び１４３の三つのＳＤＫアプリ１４０が例示されている。画像形成装置１０におけるＳＤＫアプリ１４０の起動は、それぞれに対するライセンスキーが取得さされていることが前提とされる。ライセンスキーは、ＳＤＫアプリ１４０の利用権限の購入によって取得されるデータである。なお、本実施の形態において、ＳＤＫアプリ１４０は、Ｊａｖａ（登録商標）言語で記述されたプログラムであるとする。但し、本発明の実施に際し、ＳＤＫアプリ１４０は、Ｊａｖａ（登録商標）言語によって記述されたプログラムに限定されない。
【００２０】
ＳＤＫプラットフォーム１５０は、ＳＤＫアプリ１４０の動作環境を提供するソフトウェアであり、例えば、Ｊａｖａ（登録商標）仮想マシンや、Ｊａｖａ（登録商標）ＭＥ（Micro Edition）において標準で提供されているクラス群やコントロールサービス１２２の機能をラッピングしたクラス群等を含む。また、ＳＤＫプラットフォーム１５０は、ＳＤＫアプリ１４０に関するライセンス管理を行う。例えば、ＳＤＫアプリ１４０は、各ＳＤＫアプリ１４０に対するライセンスキーを管理し、当該ライセンスキーに基づいてＳＤＫアプリ１４０の起動制御等を行う。
【００２１】
図３は、ＳＤＫプラットフォームにおけるライセンス管理機能とＳＤＫアプリの構成例とを示す図である。
【００２２】
同図に示されるように、一つのＳＤＫアプリ１４０は、一つ以上の機能モジュール（例えば、ＪＡＲ（Java（登録商標） Archive）等のプログラムモジュール）と機能モジュールごとに付随する（対応する）ライセンス情報ファイルを含む。機能モジュールの中にはライセンス情報ファイルが付随しないものも存在しうる。各機能モジュールは、当該機能モジュールの属するＳＤＫアプリ１４０が実行するジョブを構成する一部の機能を実現する。ライセンス情報ファイルは、対応する機能モジュールに関するライセンスに関する情報（ライセンス情報）を含むファイルである。ライセンス情報は、例えば、機能モジュールの識別子 (機能名)、機能モジュールのファイル名、及び機能モジュールの表示名 (表示文字列)等より構成される。
【００２３】
同図のＳＤＫアプリ１４０には、機能モジュールとして機能モジュール１４０１ａ、１４０１ｂ、及び１４０１ｃ（以下、総称する場合「機能モジュール１４０１」という。）が含まれている。また、ライセンス情報ファイルとしてライセンス情報ファイル１４０２ａ及びライセンス情報ファイル１４０２ｂ（以下、総称する場合「ライセンス情報ファイル１４０２」という。）が含まれている。ライセンス情報ファイル１４０２ａは、機能モジュール１４０１ａに付随するライセンス情報ファイルである。ライセンス情報ファイル１４０２ｂは、機能モジュール１４０１ｂに付随するライセンス情報ファイルである。なお、機能モジュール１４０１ｃにはライセンス情報ファイルは付随していない。これは、機能モジュール１４０１ｃは、ライセンス対象ではないこと（ライセンスチェックが不要（例えば、ライセンスフリー）であること）を示す。
【００２４】
一方、ＳＤＫプラットフォーム１５０は、ライセンス導入部１５１、ライセンス管理部１５２、起動制御部１５３、暗号処理部１５４、及び真偽判定部１５５等を有する。
【００２５】
ライセンス導入部１５１は、ネットワークを介して接続するコンピュータよりライセンスキーを取得し、当該ライセンスキーをライセンスファイル１６０に格納してＨＤＤ１１４に保存する。
【００２６】
起動制御部１５３は、ＳＤＫアプリ１４０の起動及び停止を制御する。ＳＤＫアプリ１４０を起動する際、起動制御部１５３は、ライセンス管理部１５２にＳＤＫアプリ１４０のライセンス状況の問い合わせを行うことにより、機能モジュール１４０１単位で起動（ＲＡＭ１１２へのロード）を制御する。
【００２７】
ライセンス管理部１５２は、ライセンスファイル１６０の管理や、ライセンスリスト１７０の生成を行う。ライセンスリスト１７０は、ＳＤＫアプリ１４０と一対一に対応する。したがって、複数のＳＤＫアプリ１４０がインストールされている場合、複数のライセンスリスト１７０が生成される。一つのライセンスリスト１７０は、対応するＳＤＫアプリ１４０に含まれているライセンス情報ファイル１４０２に格納されているライセンス情報の一覧を含む。ライセンス管理部１５２は、また、起動制御部１５３よりライセンス状況が問い合わされたＳＤＫアプリ１４０に対応するライセンスリスト１７０に基づいてライセンス対象となる機能モジュール１４０１（同図では、機能モジュール１４０１ａ及び１４０１ｂ）について、ライセンスファイル１６０に格納されているライセンスキーに基づく起動の可否（許否）の判断を行う。ライセンス管理部１５２は、当該判断結果を起動制御部１５３に応答する。
【００２８】
暗号処理部１５４は、ライセンス管理部１５２によって生成されたライセンスリスト１７０の保存時に当該ライセンスリスト１７０を暗号化し、暗号化されたライセンスリスト１７０の利用時に当該ライセンスリスト１７０を復号する。暗号処理部１５４によってライセンスリスト１７０の改竄が防止される。
【００２９】
真偽判定部１５５は、ライセンスリスト１７０に対する改竄の有無を判定する。
【００３０】
以下、画像形成装置１０の処理手順について説明する。
【００３１】
図４は、画像形成装置へのライセンスキーの導入手順を説明するための図である。同図において、ＰＣ２０は、画像形成装置１０とネットワークを介して接続するコンピュータであり、操作部２１及びライセンス送信部２２等を有する。
【００３２】
操作部２１は、画像形成装置１０において利用可能とする（ライセンスキーの発行対象とする）ＳＤＫアプリ１４０のプロダクトキーの入力をユーザより受け付ける。
【００３３】
プロダクトキーは、ＳＤＫアプリ１４０と機能モジュール１４０１との組み合わせによって識別される製品に対して一意に割り当てられる識別情報である。具体的には、同一のＳＤＫアプリ１４０であっても、一部の機能モジュール１４０１を利用可能な製品と全ての機能を利用可能な製品とではプロダクトキーは異なる。また、一部の機能モジュール１４０１を利用可能な製品の場合、いずれの機能モジュール１４０１が利用可能かによってもプロダクトキーは異なる。すなわち、ユーザによるプロダクトキーの入力とは、いずれのＳＤＫアプリ１４０のいずれの機能（機能モジュール１４０１）を利用するかについてのユーザによる選択を意味する。
【００３４】
プロダクトキーの入力に応じ、ライセンス送信部２２は、画像形成装置１０に対して機体番号の送信を要求する。機体番号とは、工場出荷時において各画像形成装置１０に対して一意に割り当てられている番号である。当該要求に応じ、画像形成装置１０のライセンス導入部１５１は、画像形成装置１０の機体番号を例えばＲＯＭ１１３より取得し、当該機体番号をライセンス送信部２２に返信する（Ｓ１１）。続いて、ライセンス送信部１１は、受信した機体番号によって識別される画像形成装置１０においてのみプロダクトキーで識別されるＳＤＫアプリ１４０及び機能モジュール１４０１の利用権限を与えるライセンスキーを画像形成装置１０に送信する（Ｓ１２）。
【００３５】
図５は、ライセンスキーの構成例を示す図である。同図において、一つのライセンスキーは、アプリＩＤ、画像形成装置１０の機体番号、利用可能な機能（機能モジュール１４０１の識別子の一覧）、及び有効期限等によって構成される。当該ライセンスキーによって、機体番号によって識別される画像形成装置１０上において、アプリＩＤによって識別されるＳＤＫアプリ１４０の利用が、当該ライセンスキーに指定された機能及び有効期限の範囲内で許可される。すなわち、ＳＤＫアプリ１４０に関するライセンス単位は、機能単位（機能モジュール１４０１単位）で管理される。アプリＩＤ、機能、及び有効期限は、プロダクトキーに基づいて定まる値である。なお、ライセンスキーは、アプリＩＤ、画像形成装置１０の機体番号、利用可能な機能、及び有効期限を単に並べたものではなく、これらの情報がエンコードされ、更に暗号化されたものでもよい。また、ライセンスキーは、ＰＣ２０において生成されてもよいし、ＰＣ２０とネットワークを介して接続する他のコンピュータ（例えば、グローバルな環境においてライセンス情報を一元管理するサーバコンピュータ）においてＰＣ２０からの要求に応じて生成されてもよい。ライセンス導入部１５１は、ライセンスキーを受信すると、当該ライセンスキーをライセンスファイル１６０に格納してＨＤＤ１１４に保存する（Ｓ１３）。
【００３６】
続いて、図６は、ライセンスリストの生成処理を説明するためのフローチャートである。同図の処理は、ＳＤＫアプリ１４０ごとに行われる。
【００３７】
まず、ライセンス管理部１５２は、空のライセンスリスト１７０（ファイル）をＳＤＫアプリ１４０に関連付けてＨＤＤ１１４上に生成する（Ｓ１０１）。ライセンスリスト１７０とＳＤＫアプリ１４０との関連付けの方法は所定のものに限定されない。例えば、ライセンスリスト１７０にアプリＩＤを含めてもよいし、アプリＩＤを名前とするフォルダ下にライセンスリスト１７０を生成してもよい。
【００３８】
続いて、ステップＳ１０２〜Ｓ１０５において、ライセンス管理部１５２は、処理対象とされているＳＤＫアプリ１４０に含まれている機能モジュール１４０１を検索する。検索された機能モジュール１４０１にライセンス情報ファイル１４０２が付随している場合（Ｓ１０３でＹｅｓ）、ライセンス管理部１５２は、当該ライセンス情報ファイル１４０２に格納されているライセンス情報をライセンスリスト１７０に追加する（Ｓ１０４）。全ての機能モジュール１４０１の検索が終了すると（Ｓ１０５）、ライセンス管理部１５２は、生成されたライセンスリスト１７０の暗号化を暗号処理部１５４に実行させる（Ｓ１０６）。暗号化の方式は所定のものに限定されない。
【００３９】
例えば、図３のＳＤＫアプリ１４０の構成を例とすると、まずステップＳ１０２で機能モジュール１４０１ａが検索される。機能モジュール１４０１ａにはライセンス情報ファイル１４０２ａが付随しているため、ステップＳ１０３でＹｅｓへ進む。続いて、ステップＳ１０４で機能モジュール１４０１ａのライセンス情報ファイル１４０２ａに格納されているライセンス情報をライセンスリスト１７０に登録する。
【００４０】
続いて、ステップＳ１０２に戻り、機能モジュール１４０１ｂが検索される。機能モジュール１４０１ｂにはライセンス情報ファイル１４０２ｂが付随しているため、ステップＳ１０３でＹｅｓへ進む。続いて、ステップＳ１０４で機能モジュール１４０１ｂのライセンス情報ファイル１４０２ｂに格納されているライセンス情報をライセンスリスト１７０に登録する。
【００４１】
続いて、ステップＳ１０２に戻り、機能モジュール１４０１ｃが検索される。機能モジュール１４０１ｃにはライセンス情報ファイルが付随していないためステップＳ１０３でＮｏへ進み、ステップＳ１０５で検索が終了する。その結果、図７に示されるようなライセンスリスト１７０が生成される。
【００４２】
図７は、ライセンスリストの例を示す図である。同図に示されるようにライセンスリスト１７０には、機能モジュールごとに機能モジュールの識別子 (機能名)、機能モジュールのファイル名、機能モジュールの表示名、及び日時が登録される。日時は、ライセンスされた（ライセンスキーが発行された）日時である。当該日時は、例えば、ステップＳ１０４において、処理対象とされているＳＤＫアプリ１４０に対応するライセンスファイル１６０の中で、対応する機能モジュールに対するライセンスキーを含むライセンスファイル１６０の生成日時を転記すればよい。また、その際に、当該ライセンスキーに対する関連付け情報（例えば、当該ライセンスファイル１６０のファイル名又は当該ライセンスキーそのもの）をライセンスリスト１７０に記録するようにしてもよい。
【００４３】
なお、図７において機能モジュールＡは、図３の機能モジュール１４０１ａに対応する。また、機能モジュールＢは、機能モジュール１４０１ｂに対応する。上記したように、機能モジュール１４０１ｃにはライセンス情報ファイルが付随していないため、ライセンスリスト１７０には登録されていない。
【００４４】
ライセンスリスト１７０の生成時期（図６の処理が実行されるタイミング）について説明する。ＳＤＫアプリ１４０は図８に示されるようなライフサイクルを有する。図８は、本実施の形態におけるＳＤＫアプリのライフサイクルを説明するための状態遷移図である。
【００４５】
ＳＤＫアプリ１４０は、画像形成装置１０にインストールされる前は未インストール状態にあり、インストールによってインストール済状態に遷移する。インストール済状態ではまず、ＳＤＫアプリ１４０が停止した停止状態であり、対応するライセンスキーが存在しない未ライセンス状態となる。この未ライセンス状態では、ＳＤＫアプリ１４０を起動することはできない。未ライセンス状態で、ＰＣ２０からライセンスキーが導入されるとＳＤＫアプリ１４０はライセンス済状態に遷移する。ライセンス済状態とは、ＳＤＫアプリ１４０を起動可能な状態である。
【００４６】
ライセンス済状態において起動されると、ＳＤＫアプリ１４０は起動中状態に遷移する。起動中状態において、ユーザはＳＤＫアプリ１４０に実装されている機能をライセンスされている範囲内で利用することができる。ＳＤＫアプリ１４０が停止されると、ＳＤＫアプリ１４０は、ライセンス済状態へと戻る。また、ＳＤＫアプリ１４０が停止状態であるときにアンインストールされると、ＳＤＫアプリ１４０は未インストール状態へと戻る。
【００４７】
以上のようなライフサイクルにおいて、ライセンスリスト１７０は、ＳＤＫアプリ１４０のインストール時、又はＳＤＫアプリ１４０の起動時に生成される。
【００４８】
続いて、図９は、ＳＤＫアプリの起動時の処理手順を説明するためのフローチャートである。操作パネル１６等を介して、或るＳＤＫアプリ１４０の起動指示（利用要求）がユーザによって入力されると、起動制御部１５３は、ライセンス管理部１５２に対して起動対象とされたＳＤＫアプリ１４０のアプリＩＤを通知し、当該ＳＤＫアプリ１４０のライセンス状況を問い合わせる。当該問い合わせに応じて図９の処理が開始される。
【００４９】
まず、ライセンス管理部１５２は、起動対象のＳＤＫアプリ１４０に対応するライセンスリスト１７０をＲＡＭ１１２上に読み込む（Ｓ２０１）。続いて、ライセンス管理部１５２は、ライセンスリスト１７０の復号を暗号処理部１５４に実行させる（Ｓ２０２）。続いて、ライセンス管理部１５２は、ライセンスリスト１７０の正当性を真偽判定部１５５に実行させる（Ｓ２０３）。真偽判定部１５５は、例えば、暗号処理部１５４による復号が成功したか、ライセンスリスト１７０のデータ形式が所定の形式に従っているか等を検査することにより、ライセンスリスト１７０の正当性を判定する。すなわち、復号に失敗した場合や、ライセンスリスト１７０が所定の形式に従っていない場合は、ライセンスリスト１７０は不正であると判定される。
【００５０】
また、ライセンスリスト１７０の正当性を判定するために電子署名を用いてもよい。例えば、ライセンスリスト１７０を生成する際に、暗号化前のライセンスリスト１７０のハッシュ値を生成しておき、ライセンスリスト１７０に関連付けて保存しておく。真偽判定部１５５は、ステップＳ２０２において復号されたライセンスリスト１７０のハッシュ値と、当該ライセンスリスト１７０に関連付けられて保存されているハッシュ値とを比較することにより、ライセンスリスト１７０の改竄の有無（正当性）を判定する。
【００５１】
真偽判定部１５５によって、ライセンスリスト１７０の正当性が否定された場合（ライセンスリスト１７０が不正であると判定された場合）（Ｓ２０３でＮｏ）、ライセンス管理部１５２は、起動対象のＳＤＫアプリ１４０を処理対象として、改めて図６の処理を実行することにより、ライセンスリスト１７０を生成し直す（Ｓ２０４）。ステップＳ２０１においてライセンスリスト１７０が存在しない場合も、ステップＳ２０４でライセンスリスト１７０の生成処理が実行される。
【００５２】
真偽判定部１５５によってラインセンスリスト１７０の正当性が肯定された場合（Ｓ２０３でＹｅｓ）、又はステップＳ２０４に続いて、起動対象のＳＤＫアプリ１４０において起動が不可能な（許可されない）機能モジュール１４０１の判定がライセンスリスト１７０を利用して行われる（Ｓ２０５〜Ｓ２０９）。
【００５３】
まず、ステップＳ２０６において、ライセンス管理部１５２は、ライセンスリスト１７０より一つのエントリ（一つの機能モジュール１４０１に対するライセンス情報）を取得する（Ｓ２０６）。続いて、ライセンス管理部１５２は、取得されたライセンス情報に含まれている識別子と、当該ＳＤＫアプリ１４０に対応するライセンスファイル１６０に格納されているライセンスキーとに基づいて、当該ライセンス情報に対応する機能モジュール１４０１の利用（起動）の可否を判定する（Ｓ２０７）。
【００５４】
すなわち、当該ライセンスキーが有効であり、当該ライセンスキーの「機能」項目に当該識別子が含まれていれば、当該機能モジュール１４０１は利用可能であると判定される。それ以外の場合（当該ＳＤＫアプリ１４０に対応するライセンスファイル１６０が無い場合も含む。）は、当該機能モジュール１４０１は利用不可能と判定される。なお、ライセンスキーが有効であるとは、当該ライセンスキーの機体番号が画像形成装置１０の機体番号と一致し、当該ライセンスキーの有効期限が切れていないこと等をいう。
【００５５】
利用不可能と判定された場合（Ｓ２０７でＮｏ）、ライセンス管理部１５２は、当該機能モジュールの識別子を起動不可リストに追加する（Ｓ２０８）。
【００５６】
ステップＳ２０６〜Ｓ０８までの処理が、ライセンスリスト１７０に含まれている全てのエントリ（ライセンス情報）について完了すると（Ｓ２０９）、ライセンス管理部１５２は、起動不可リストを起動対象のＳＤＫアプリ１４０のライセンス状況を示す情報として起動制御部１５３に出力する（Ｓ２０９）。
【００５７】
続いて、起動制御部１５３は、起動不可リストに基づいてＳＤＫアプリ１４０の起動制御を行う（Ｓ２１０）。具体的には、起動不可リストに含まれている起動モジュール１４０１の起動又は利用を制限（抑止）する。これによって、例えば、コピージョブに関するＳＤＫアプリ１４０であれば、カラーコピーが利用できない等、一部の機能の利用が制限される。
【００５８】
図９の処理内容を、図３のＳＤＫアプリ１４０に基づいて具体的に説明する。例えば、図３において、ライセンスファイル１６０に含まれているライセンスキーでは機能モジュール１４０１ａのみがライセンスされているとする。この場合、ＳＤＫアプリ１４０の起動が要求されると、機能モジュール１４０１ｂは、起動不可リストに含まれ、起動が抑止される。したがって、機能モジュール１４０１ａと機能モジュール１４０１ｃの機能が利用可能となる。機能モジュール１４０１ｃの機能が利用可能なのは、機能モジュール１４０１ｃはライセンス管理の対象とされていないからである。
【００５９】
なお、図９では、ＳＤＫアプリ１４０のライセンス状況として起動不可リストが起動制御部１５３に通知される例を説明したが、起動可能な機能モジュールの一覧情報がライセンス管理部１５２から起動制御部１５３に通知されるようにしてもよい。
【００６０】
上述したように、本実施の形態における画像形成装置１０は、ライセンスのチェックが必要とされる機能モジュール１４０１の一覧情報であるライセンスリスト１７０を予め生成しておき、ＳＤＫアプリ１４０の起動時には当該ライセンスリスト１７０にエントリされている機能モジュールについてのみライセンスのチェックを行う。したがって、ライセンスチェックの回数を低減させることができ、ＳＤＫアプリ１４０全体の起動時間の増大を適切に抑制することができる。
【００６１】
例えば、図１０は、ライセンスリストが無い場合のＳＤＫアプリの起動時の処理手順を説明するための図である。
【００６２】
ステップＳ３０１からＳ３０５では、起動対象とされたＳＤＫアプリ１４０に含まれる全ての機能モジュール１４０１についてライセンス対象であるか否かが判定される（Ｓ３０３）。ライセンス対象であると判定された機能モジュール１４０１については、ライセンスキーの有無、ライセンスキーの正当性等が判定され（Ｓ３０４、Ｓ３０５）、利用不可能な機能モジュール１４０１は機能不可リストに追加される（Ｓ３０６）。全ての機能モジュール１４０１についてチェックが完了すると（Ｓ３０７）、チェック結果に基づいてＳＤＫアプリ１４０の起動制御が行われる（Ｓ３０８）。
【００６３】
図１０の処理内容と、本実施の形態の画像形成装置１０が実行する処理内容との相違点をより端的に示すと図１１のように表すことができる。
【００６４】
図１１は、ライセンスリストによりＳＤＫアプリの起動が高速化される理由を説明するための図である。
【００６５】
同図において、（Ａ）は、図１０の処理内容を示す。（Ａ）では、ＳＤＫアプリ１４０の起動時に、当該ＳＤＫアプリ１４０の全ての機能モジュール１４０１についてライセンスに関するチェックが行われることが示されている。同図の例では、９回のチェックが毎回の起動時に行われる。
【００６６】
一方、（Ｂ）は、本実施の形態の画像形成装置１０が実行する処理内容を示す。本実施の形態では、ＳＤＫアプリ１４０のインストール時に当該ＳＤＫアプリ１４０の全ての機能モジュール１４０１についてライセンス対象か否かのチェックが行われ、ライセンスリスト１７０が生成される。図中では、二つの機能モジュール１４０１がライセンス対象であると判定された例が示されている。起動時には、ライセンスリスト１７０にエントリされているこの二つの機能モジュール１４０１についてのみライセンスに関するチェックが実行される。
【００６７】
このように、ＳＤＫアプリ１４０に含まれる機能モジュールの数が増加すればするほど、本実施の形態による効果は顕著なものとなる。なお、ライセンスリスト１７０は、必ずしもインストール時に生成されなくてもよい。インストール時に生成されなくても初回の起動時にライセンスリスト１７０が生成されるからである。
【００６８】
また、ライセンスリスト１７０は、暗号化されて保存され、利用時には改竄等のチェックが行われる。したがって、ライセンスリスト１７０の改竄による不正なライセンスの獲得（ライセンスリスト１７０よりエントリを削除することにより、当該エントリに係る機能モジュール１４０１のライセンスチェックを回避させること）を適切に防止することができる。
【００６９】
また、起動時においてライセンスリスト１７０の改竄等が検出された場合であっても、再度ライセンスリスト１７０が生成し直されるため、ライセンスの範囲内でのＳＤＫアプリ１４０の起動を円滑に行うことができる。
【００７０】
なお、本実施の形態では、ライセンス管理の対象とされる機能モジュール１４０１のライセンス情報をライセンスリスト１７０に含める例を説明した。但し、ライセンス管理の対象とされていない機能モジュール１４０１のライセンス情報によってライセンスリスト１７０を構成するようにしてもよい。すなわち、ライセンスリスト１７０によっていずれの機能モジュール１７０がライセンス管理の対象とされているかが識別可能であればよい。
【００７１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７２】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          ネットワークインタフェース
１６          操作パネル
２０          ＰＣ
２１          操作部
２２          ライセンス送信部
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１２１        ＯＳ
１２２        コントロールサービス
１２３        アプリケーション
１３０        標準アプリ
１５０        ＳＤＫプラットフォーム
１３１        コピーアプリ
１３２        スキャンアプリ
１３３        ファクスアプリ
１３４        プリントアプリ
１４０、１４１、１４２、１４３        ＳＤＫアプリ
１５１        ライセンス導入部
１５２        ライセンス管理部
１５３        起動制御部
１５４        暗号処理部
１５５        真偽判定部
１６０        ライセンスファイル
１７０        ライセンスリスト
【先行技術文献】
【特許文献】
【００７３】
【特許文献１】特開２００８−０１６０１３号公報
【図１】
0005510535.tif 000002
【図２】
0005510535.tif 000003
【図３】
0005510535.tif 000004
【図４】
0005510535.tif 000005
【図５】
0005510535.tif 000006
【図６】
0005510535.tif 000007
【図７】
0005510535.tif 000008
【図８】
0005510535.tif 000009
【図９】
0005510535.tif 000010
【図１０】
0005510535.tif 000011
【図１１】
0005510535.tif 000012