(57)【特許請求の範囲】
【請求項１】
第１のプログラミング言語で構成されている第１プログラミング部分と、
前記第１のプログラミング言語とは異なる第２のプログラミング言語で構成されていて前記第１プログラミング部分によって呼び出される第２プログラミング部分と
を備えるアドオンと、
前記アドオンを利用するアプリケーションと
をインストール可能な電子機器であって、
前記アドオンは、少なくとも前記第２プログラミング部分が認証されたことを示す認証情報が関連付けられており、
前記電子機器は、
前記第１プログラミング部分による前記第２プログラミング部分の呼び出しの権限を前記アドオンに付与する権限付与手段と、
前記呼び出しを許可する呼び出し許可手段と
を備え、
前記権限付与手段は、前記アドオンに関連付けられている前記認証情報が正当なものである場合に前記呼び出しが許可されていると判断するとともに、前記アドオンに関連付けられている前記認証情報が正当なものではない場合に前記呼び出しが許可されていないと判断し、前記呼び出しが許可されていると判断した場合に前記権限を前記アドオンに付与し、
前記呼び出し許可手段は、前記アプリケーションが実行される場合に、前記権限が前記アドオンに付与されているとき、前記呼び出しを許可することを特徴とする電子機器。
【請求項２】
前記アプリケーションの実行前に前記アドオンに付与された前記権限を前記アドオンの実行後も維持することを特徴とする請求項１に記載の電子機器。
【請求項３】
前記権限付与手段は、前記呼び出しが許可されているか否かを前記アドオンのインストール時に判断することを特徴とする請求項１または請求項２に記載の電子機器。
【請求項４】
前記権限付与手段は、前記認証情報と、前記アドオンの少なくとも一部から特定の計算アルゴリズムに基づいて作成された情報とが一致する場合に、前記呼び出しが許可されていると判断することを特徴とする請求項１から請求項３までの何れかに記載の電子機器。
【請求項５】
前記権限を不揮発性の記憶デバイスに記憶することを特徴とする請求項１から請求項４までの何れかに記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のプログラミング言語で構成されている第１プログラミング部分によって、第１のプログラミング言語とは異なる第２のプログラミング言語で構成されている第２プログラミング部分を呼び出すことができる電子機器に関する。
【背景技術】
【０００２】
従来、Ｊａｖａ（登録商標）言語で構成されているアプリケーション（以下「Ｊａｖａアプリケーション」という。）をインストール可能な電子機器が知られている（例えば、特許文献１参照。）。
【０００３】
Ｊａｖａアプリケーションは、Ｊａｖａの仮想環境で動作するので、使用可能なＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）や、使用可能なメモリーの容量などの制御が容易である。そのため、電子機器は、Ｊａｖａアプリケーションがインストールされても、Ｊａｖａアプリケーションによって電子機器の製造者の想定外の動作が実行される可能性が低く、セキュリティー上の問題が発生する可能性が低い。
【０００４】
しかしながら、Ｊａｖａの仮想環境の処理が高負荷であるので、Ｊａｖａ言語で構成されているプログラムの処理は、低速になる場合がある。そのため、Ｊａｖａには、Ｃ＋＋などのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上でそのまま動作するネイティブ言語で構成されているプログラム（以下「ネイティブプログラム」という。）を相互に呼び出すことができるＪＮＩ（Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ）という仕組みが提供されていて、処理の高速化のためや、ネイティブ言語で構成されているライブラリーを呼び出すために利用されている。
【０００５】
しかしながら、ネイティブ言語は、ＯＳが提供している機能を自由に利用することができる。そのため、ネイティブプログラムは、例えば、電子機器における任意のファイルに対して読み出しおよび書き込みが可能である。したがって、電子機器は、電子機器の製造者の想定外の動作がネイティブプログラムによって実行される可能性が高くなり、セキュリティー上の問題が発生する可能性が高くなる。
【０００６】
特許文献１に記載された電子機器は、Ｊａｖａアプリケーションの処理が開始されてＪａｖａアプリケーションがネイティブプログラムを呼び出す場合にＪａｖａアプリケーションの認証を実行し、この認証が成功したときに、Ｊａｖａアプリケーションによるネイティブプログラムの呼び出しを許可する。特許文献１に記載された電子機器は、この認証をＪａｖａアプリケーションが保持しているデジタル署名によって行うので、電子機器の製造者の想定外の動作をネイティブプログラムによって実行しないＪａｖａアプリケーションのみに適切なデジタル署名を付与することによって、セキュリティー上の問題が発生する可能性を低下させることができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−０１１５１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の電子機器においては、Ｊａｖａアプリケーション毎に認証が必要であるので、Ｊａｖａアプリケーションの作成の労力が大きいという問題がある。
【０００９】
そこで、本発明は、アプリケーションの作成を容易化することができる電子機器を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の電子機器は、第１のプログラミング言語で構成されている第１プログラミング部分と、前記第１のプログラミング言語とは異なる第２のプログラミング言語で構成されていて前記第１プログラミング部分によって呼び出される第２プログラミング部分とを備えるアドオンと、前記アドオンを利用するアプリケーションとをインストール可能な電子機器であって、前記第１プログラミング部分による前記第２プログラミング部分の呼び出しが許可されているか否かを、前記アドオンに関連付けられている認証情報に基づいて判断し、前記呼び出しが許可されていると判断した場合に前記呼び出しの権限を前記アドオンに付与することを特徴とする。
【００１１】
この構成により、本発明の電子機器は、アドオンにおける第１プログラミング部分による第２プログラミング部分の呼び出しが許可されていると認証情報に基づいて判断した場合に呼び出しの権限をアドオンに付与し、このアドオンをアプリケーションが利用するので、アプリケーション毎に認証情報に関連付けられる必要がなく、アプリケーションの作成を容易化することができる。
【００１２】
本発明の電子機器は、前記アドオンの実行後も前記権限を維持しても良い。
【００１３】
この構成により、本発明の電子機器は、第１プログラミング部分による第２プログラミング部分の呼び出しの権限をアドオンの実行後も維持するので、アドオンの実行の度に認証情報に基づいて判断する必要がなく、第１プログラミング部分によって第２プログラミング部分を高速に呼び出すことができる。
【００１４】
本発明の電子機器は、前記呼び出しが許可されているか否かを前記アドオンのインストール時に判断しても良い。
【００１５】
この構成により、本発明の電子機器は、第１プログラミング部分による第２プログラミング部分の呼び出しが許可されているか否かを、アドオンの実行時ではなく、アドオンのインストール時に判断するので、アドオンを高速に実行することができる。
【００１６】
本発明の電子機器は、前記認証情報と、前記アドオンの少なくとも一部から特定の計算アルゴリズムに基づいて作成された情報とが一致する場合に、前記呼び出しが許可されていると判断しても良い。
【００１７】
この構成により、本発明の電子機器は、アドオン毎に認証情報が異なる可能性が高いので、特定のアドオンに正当に関連付けられている認証情報が他のアドオンに不正に流用されることを防止することができ、セキュリティー性能を向上することができる。
【００１８】
本発明の電子機器は、前記権限を不揮発性の記憶デバイスに記憶しても良い。
【００１９】
この構成により、本発明の電子機器は、第１プログラミング部分による第２プログラミング部分の呼び出しが許可されているか否かを電子機器の起動の度に判断する必要がないので、処理負担を軽減することができる。
【発明の効果】
【００２０】
本発明の電子機器は、アプリケーションの作成を容易化することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施の形態に係るＭＦＰのブロック図である。
【図２】図１に示すＭＦＰのソフトウェア構成を示す図である。
【図３】図１に示すアドオンの作成のシーケンス図である。
【図４】アドオンがインストールされる場合の図１に示すＭＦＰの動作のフローチャートである。
【図５】アドオンがインストールされる場合の図１に示すＭＦＰのソフトウェア構成を示す図である。
【図６】Ｊａｖａが提供している機能と、ＯＳが提供している機能とのうちＪａｖａが提供している機能のみをアプリケーションが利用する場合の図１に示すＭＦＰのソフトウェア構成を示す図である。
【図７】ＯＳが提供している機能をプラットフォーム側アプリケーション経由でアプリケーションが利用する場合の図１に示すＭＦＰのソフトウェア構成を示す図である。
【図８】ＯＳが提供している機能をアドオン経由でアプリケーションが利用する場合の図１に示すＭＦＰの動作のフローチャートである。
【図９】ＯＳが提供している機能をアドオン経由でアプリケーションが利用する場合の図１に示すＭＦＰのソフトウェア構成を示す図である。
【図１０】本発明の第２の実施の形態に係るＭＦＰのブロック図である。
【図１１】図１０に示すアドオンの作成のシーケンス図である。
【図１２】アドオンがインストールされる場合の図１０に示すＭＦＰの動作のフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態について、図面を用いて説明する。
【００２３】
（第１の実施の形態）
まず、本発明の第１の実施の形態に係る電子機器としてのＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）の構成について説明する。
【００２４】
図１は、本実施の形態に係るＭＦＰ１０のブロック図である。
【００２５】
図１に示すように、ＭＦＰ１０は、種々の操作が入力されるボタンなどの入力デバイスである操作部１１と、種々の情報を表示するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などの表示デバイスである表示部１２と、用紙などの記録媒体に印刷を実行する印刷デバイスであるプリンター１３と、原稿から画像を読み取る読取デバイスであるスキャナー１４と、図示していない外部のファクシミリ装置と公衆電話回線などの通信回線経由でファックス通信を行うファックスデバイスであるファックス通信部１５と、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク経由で外部の装置と通信を行うネットワーク通信デバイスであるネットワーク通信部１６と、各種の情報を記憶する半導体メモリー、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの不揮発性の記憶デバイスである記憶部１７と、ＭＦＰ１０全体を制御する制御部１８とを備えている。
【００２６】
図２は、ＭＦＰ１０のソフトウェア構成を示す図である。
【００２７】
図１および図２に示すように、記憶部１７は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１７ａと、ＯＳ１７ａ上で動作するＪａｖａプラットフォーム１７ｂとを記憶している。Ｊａｖａプラットフォーム１７ｂは、ＯＳ１７ａ上で動作するＪａｖａ  ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）１７ｃと、Ｊａｖａ  ＶＭ１７ｃ上で動作するＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅ  Ｇａｔｅｗａｙ  ｉｎｉｔｉａｔｉｖｅ）  Ｆｒａｍｅ  Ｗｏｒｋ１７ｄと、ＯＳＧｉ  Ｆｒａｍｅ  Ｗｏｒｋ１７ｄ上で動作するＪａｖａアプリケーションである少なくとも１つのプラットフォーム側アプリケーション１７ｅとを含んでいる。
【００２８】
記憶部１７は、ＯＳＧｉ  Ｆｒａｍｅ  Ｗｏｒｋ１７ｄ上で動作するＪａｖａアプリケーションである少なくとも１つのアプリケーション１７ｆを記憶可能である。アプリケーション１７ｆは、ＭＦＰ１０の製造段階でＭＦＰ１０にインストールされていても良いし、ＳＤカード、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリーなどの外部の記憶媒体からＭＦＰ１０に追加でインストールされても良いし、ネットワーク上からＭＦＰ１０に追加でインストールされても良い。
【００２９】
記憶部１７は、ＯＳＧｉ  Ｆｒａｍｅ  Ｗｏｒｋ１７ｄ上で動作して少なくとも１つのアプリケーション１７ｆによって利用される少なくとも１つのアドオン１７ｇを記憶可能である。アドオン１７ｇは、第１のプログラミング言語としてのＪａｖａ言語で構成されている第１プログラミング部分としてのＪａｖａ部分１７ｈと、Ｊａｖａ言語とは異なる第２のプログラミング言語としてのネイティブ言語で構成されていてＪａｖａ部分１７ｈによって呼び出される第２プログラミング部分としてのネイティブ部分１７ｉとを備える。なお、図２においては、ネイティブ部分１７ｉを、「ｌｉｂｒａｒｙ．ｓｏ」と示している。アドオン１７ｇは、ＭＦＰ１０の製造段階でＭＦＰ１０にインストールされていても良いし、ＳＤカード、ＵＳＢメモリーなどの外部の記憶媒体からＭＦＰ１０に追加でインストールされても良いし、ネットワーク上からＭＦＰ１０に追加でインストールされても良い。
【００３０】
記憶部１７は、アドオン１７ｇが認証されたことを示す認証情報１７ｊをアドオン１７ｇ毎に記憶可能である。
【００３１】
記憶部１７は、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されているか否かの判断に使用される判断用計算アルゴリズム１７ｋを記憶している。
【００３２】
制御部１８は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、プログラムおよび各種のデータを記憶しているＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、ＣＰＵの作業領域として用いられるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とを備えている。ＣＰＵは、記憶部１７またはＲＯＭに記憶されているプログラムを実行する。
【００３３】
なお、Ｊａｖａ言語は、ネイティブ言語と比較して、機能の制限をかけることが容易である。一方、ネイティブ言語は、Ｊａｖａ言語と比較して、高速に処理されることができる。
【００３４】
アプリケーション１７ｆは、プリント、コピー、ファックス、スキャンなど、ＭＦＰ１０の主たる機能を構成する図示していないプログラム（以下「主機能プログラム」という。）と、主機能プログラムの設定情報、秘密情報など、主機能プログラムが有する情報と、ＭＦＰ１０のハードウェアとの保護のために、これらの利用の少なくとも一部がＪａｖａプラットフォーム１７ｂによって制限される場合がある。
【００３５】
以下においては、ネイティブ言語がＣ＋＋であるものとして説明する。
【００３６】
次に、アドオン１７ｇの作成について説明する。
【００３７】
図３は、アドオン１７ｇの作成のシーケンス図である。
【００３８】
図３に示すように、アドオン１７ｇの開発者（以下「アドオン開発者」という。）２０は、ＭＦＰ１０にネイティブで実行させたい部分をＣ＋＋で実装し、ライブラリーとして「．ｓｏ形式」のファイル（以下「ｌｉｂｒａｒｙ．ｓｏ」とする。）を作成する（Ｓ１０１）。
【００３９】
次いで、アドオン開発者２０は、Ｓ１０１において作成したｌｉｂｒａｒｙ．ｓｏ、すなわち、ネイティブ部分１７ｉと、このｌｉｂｒａｒｙ．ｓｏをロードする命令を含むＪａｖａ部分１７ｈとを含むアドオン１７ｇを作成する（Ｓ１０２）。
【００４０】
次いで、アドオン開発者２０は、Ｓ１０２において作成したアドオン１７ｇの認証をＭＦＰ１０の製造者（以下「ＭＦＰ製造者」という。）３０に依頼する（Ｓ１０３）。
【００４１】
ＭＦＰ製造者３０は、Ｓ１０３における依頼に応じて、認証を依頼されたアドオン１７ｇ、特に、このアドオン１７ｇに含まれるｌｉｂｒａｒｙ．ｓｏを検証する（Ｓ１０４）。
【００４２】
ＭＦＰ製造者３０は、Ｓ１０４における検証において問題ないと判断すると、ｌｉｂｒａｒｙ．ｓｏから特定の計算アルゴリズムに基づいて認証情報１７ｊを作成し（Ｓ１０５）、認証情報１７ｊをアドオン開発者２０に送信する（Ｓ１０６）。ここで、この計算アルゴリズムは、判断用計算アルゴリズム１７ｋと同一内容のものである。
【００４３】
次に、アプリケーション１７ｆの作成について説明する。
【００４４】
アプリケーション１７ｆの開発者（以下「アプリ開発者」という。）は、Ｓ１０２において作成されたアドオン１７ｇを利用するアプリケーション１７ｆを作成する。
【００４５】
次に、ＭＦＰ１０の動作について説明する。
【００４６】
ＭＦＰ１０は、アプリ開発者によって作成されたアプリケーション１７ｆがインストールされる。また、ＭＦＰ１０は、アドオン開発者によって作成されたアドオン１７ｇがインストールされるとともに、このアドオン１７ｇに関連付けられてＭＦＰ製造者によって作成された認証情報１７ｊが記憶部１７に記憶させられる。
【００４７】
まず、アドオン１７ｇがインストールされる場合のＭＦＰ１０の動作について説明する。
【００４８】
なお、以下においては、プラットフォーム側アプリケーション１７ｅの動作として記載しているが、実際には、制御部１８がプラットフォーム側アプリケーション１７ｅを実行することによって実現される機能の動作である。
【００４９】
図４は、アドオン１７ｇがインストールされる場合のＭＦＰ１０の動作のフローチャートである。図５は、アドオン１７ｇがインストールされる場合のＭＦＰ１０のソフトウェア構成を示す図である。
【００５０】
図４および図５に示すように、プラットフォーム側アプリケーション１７ｅは、インストールされたアドオン１７ｇにネイティブ部分１７ｉとしてのｌｉｂｒａｒｙ．ｓｏが存在するか否かを判断する（Ｓ１３１）。
【００５１】
プラットフォーム側アプリケーション１７ｅは、ｌｉｂｒａｒｙ．ｓｏが存在するとＳ１３１において判断すると、アドオン１７ｇに関連付けられている認証情報１７ｊが存在するか否かを判断する（Ｓ１３２）。
【００５２】
プラットフォーム側アプリケーション１７ｅは、認証情報１７ｊが存在するとＳ１３２において判断すると、この認証情報１７ｊが正当なものであるか否か、すなわち、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されているか否かを判断する（Ｓ１３３）。ここで、プラットフォーム側アプリケーション１７ｅは、インストールされたアドオン１７ｇのｌｉｂｒａｒｙ．ｓｏから判断用計算アルゴリズム１７ｋに基づいて作成した情報と、このアドオン１７ｇに関連付けられている認証情報１７ｊとが一致する場合に、認証情報１７ｊが正当なものであると判断する。
【００５３】
プラットフォーム側アプリケーション１７ｅは、認証情報１７ｊが正当なものである、すなわち、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されているとＳ１３３において判断すると、インストールされたアドオン１７ｇに対して、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しの権限、すなわち、ネイティブ部分１７ｉとしてのｌｉｂｒａｒｙ．ｓｏをＪａｖａの実行環境にロードする権限を付与する（Ｓ１３４）。
【００５４】
プラットフォーム側アプリケーション１７ｅは、ｌｉｂｒａｒｙ．ｓｏが存在しないとＳ１３１において判断するか、認証情報１７ｊが存在しないとＳ１３２において判断するか、認証情報１７ｊが正当なものではないとＳ１３３において判断するか、Ｓ１３４の処理を実行すると、図４に示す動作を終了する。
【００５５】
次に、アプリケーション１７ｆが実行される場合のＭＦＰ１０の動作について説明する。
【００５６】
まず、Ｊａｖａが提供している機能と、ＯＳ１７ａが提供している機能とのうちＪａｖａが提供している機能のみをアプリケーション１７ｆが利用する場合のＭＦＰ１０の動作について説明する。
【００５７】
なお、Ｊａｖａは、記憶部１７にアクセスする機能、プリンター１３によって印刷するときに図示していないステープラーによってステープルを実行する機能など、ＯＳ１７ａが提供している少なくとも一部の機能を提供していない。
【００５８】
図６は、Ｊａｖａが提供している機能と、ＯＳ１７ａが提供している機能とのうちＪａｖａが提供している機能のみをアプリケーション１７ｆが利用する場合のＭＦＰ１０のソフトウェア構成を示す図である。
【００５９】
図６に示すように、アプリケーション１７ｆは、Ｊａｖａが提供している機能と、ＯＳ１７ａが提供している機能とのうちＪａｖａが提供している機能のみを利用する。
【００６０】
次に、ＯＳ１７ａが提供している機能をプラットフォーム側アプリケーション１７ｅ経由でアプリケーション１７ｆが利用する場合のＭＦＰ１０の動作について説明する。
【００６１】
図７は、ＯＳ１７ａが提供している機能をプラットフォーム側アプリケーション１７ｅ経由でアプリケーション１７ｆが利用する場合のＭＦＰ１０のソフトウェア構成を示す図である。
【００６２】
図７に示すように、アプリケーション１７ｆは、ＯＳ１７ａが提供している機能をプラットフォーム側アプリケーション１７ｅ経由で利用する。プラットフォーム側アプリケーション１７ｅは、ＯＳ１７ａとの通信にＪＮＩを利用する。アプリケーション１７ｆは、Ｊａｖａが提供している機能もプラットフォーム側アプリケーション１７ｅ経由で利用可能である。
【００６３】
次に、ＯＳ１７ａが提供している機能をアドオン１７ｇ経由でアプリケーション１７ｆが利用する場合のＭＦＰ１０の動作について説明する。
【００６４】
図８は、ＯＳ１７ａが提供している機能をアドオン１７ｇ経由でアプリケーション１７ｆが利用する場合のＭＦＰ１０の動作のフローチャートである。図９は、ＯＳ１７ａが提供している機能をアドオン１７ｇ経由でアプリケーション１７ｆが利用する場合のＭＦＰ１０のソフトウェア構成を示す図である。
【００６５】
図８に示すように、Ｊａｖａプラットフォーム１７ｂは、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しの権限、すなわち、ネイティブ部分１７ｉとしてのｌｉｂｒａｒｙ．ｓｏをＪａｖａの実行環境にロードする権限がアドオン１７ｇに付与されているか否かを判断する（Ｓ１６１）。
【００６６】
Ｊａｖａプラットフォーム１７ｂは、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しの権限がアドオン１７ｇに付与されているとＳ１６１において判断すると、アドオン１７ｇにＪＮＩの利用を許可して（Ｓ１６２）、図８に示す動作を終了する。したがって、アドオン１７ｇは、Ｊａｖａ部分１７ｈによってネイティブ部分１７ｉを呼び出す、すなわち、ネイティブ部分１７ｉとしてのｌｉｂｒａｒｙ．ｓｏをＪａｖａの実行環境にロードすることができる。その結果、アプリケーション１７ｆは、ＯＳ１７ａが提供している機能を図９に示すようにアドオン１７ｇ経由で利用可能である。アドオン１７ｇは、ＯＳ１７ａとの通信にＪＮＩを利用する。アプリケーション１７ｆは、Ｊａｖａが提供している機能もアドオン１７ｇ経由で利用可能である。
【００６７】
Ｊａｖａプラットフォーム１７ｂは、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しの権限がアドオン１７ｇに付与されていないとＳ１６１において判断すると、アドオン１７ｇにＪＮＩの利用を許可せずに、図８に示す動作を終了する。
【００６８】
以上に説明したように、ＭＦＰ１０は、アドオン１７ｇにおけるＪａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されていると認証情報１７ｊに基づいて判断した場合（Ｓ１３３でＹＥＳ）に呼び出しの権限をアドオン１７ｇに付与し（Ｓ１３４）、このアドオン１７ｇをアプリケーション１７ｆが利用するので、アプリケーション１７ｆ毎に認証情報に関連付けられる必要がなく、アプリケーション１７ｆの作成を容易化することができる。
【００６９】
アプリケーション１７ｆにおけるＪａｖａ部分によるネイティブ部分の呼び出しの権限をアプリケーション１７ｆに付与する構成の場合、Ｊａｖａ部分によるネイティブ部分の呼び出しの権限をアプリケーション１７ｆに付与した後、このアプリケーション１７ｆと同一の識別情報（例えばファイル名）を備えた別のアプリケーション（以下「別アプリ」と言う。）がインストールされたときに、別アプリにおけるＪａｖａ部分によるネイティブ部分の呼び出しを誤って許可する可能性がある。しかしながら、ＭＦＰ１０は、アドオン１７ｇにおけるＪａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しの権限をアドオン１７ｇに付与するので、アプリケーション１７ｆにおけるＪａｖａ部分によるネイティブ部分の呼び出しをアプリケーション１７ｆに付与する構成と比較して、不正なアプリケーション１７ｆに対するセキュリティー性能を向上することができる。
【００７０】
ＭＦＰ１０は、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しの権限をアドオン１７ｇの実行後も維持するので、アドオン１７ｇの実行の度に認証情報１７ｊに基づいて判断する必要がなく、Ｊａｖａ部分１７ｈによってネイティブ部分１７ｉを高速に呼び出すことができる。
【００７１】
ＭＦＰ１０は、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されているか否かを、アドオン１７ｇの実行時ではなく、アドオン１７ｇのインストール時に判断するので、アドオン１７ｇを高速に実行することができる。しかしながら、ＭＦＰ１０は、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されているか否かを、アドオン１７ｇのインストール時ではなく、アドオン１７ｇの最初の実行時に判断する構成でも良い。
【００７２】
ＭＦＰ１０は、認証情報１７ｊと、アドオン１７ｇのネイティブ部分１７ｉから判断用計算アルゴリズム１７ｋに基づいて作成された情報とが一致する場合に、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されていると判断する。したがって、ＭＦＰ１０は、アドオン１７ｇ毎に認証情報１７ｊが異なる可能性が高いので、特定のアドオン１７ｇに正当に関連付けられている認証情報１７ｊが他のアドオン１７ｇに不正に流用されることを防止することができ、セキュリティー性能を向上することができる。
【００７３】
ＭＦＰ１０は、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しの権限を不揮発性の記憶部１７に記憶することによって、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されているか否かをＭＦＰ１０の起動の度に判断する必要がないので、処理負担を軽減することができる。しかしながら、ＭＦＰ１０は、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しの権限を制御部１８のＲＡＭに記憶して、Ｊａｖａ部分１７ｈによるネイティブ部分１７ｉの呼び出しが許可されているか否かをＭＦＰ１０の起動の度に判断する構成でも良い。
【００７４】
なお、認証情報１７ｊは、本実施の形態においてアドオン１７ｇに関連付けられて、アドオン１７ｇとは別ファイルとして存在している。しかしながら、認証情報１７ｊは、アドオン１７ｇのうち、ネイティブ部分１７ｉ以外の部分に含まれていても良い。
【００７５】
ＭＦＰ製造者３０は、本実施の形態においてｌｉｂｒａｒｙ．ｓｏを含むアドオン１７ｇ全体を検証する。しかしながら、ＭＦＰ製造者３０は、ｌｉｂｒａｒｙ．ｓｏのみを検証しても良い。ＭＦＰ製造者３０がｌｉｂｒａｒｙ．ｓｏのみを検証する場合、アドオン開発者２０からＭＦＰ製造者３０へはアドオン１７ｇのうちｌｉｂｒａｒｙ．ｓｏのみが送信されれば良い。
【００７６】
（第２の実施の形態）
まず、本発明の第２の実施の形態に係る電子機器としてのＭＦＰの構成について説明する。
【００７７】
図１０は、本実施の形態に係るＭＦＰ２１０のブロック図である。
【００７８】
図１０に示すＭＦＰ２１０の構成は、以下に述べる構成を除いて、第１の実施の形態に係るＭＦＰ１０（図１参照。）の構成と同様である。
【００７９】
ＭＦＰ２１０は、アドオン１７ｇ（図１参照。）ではなく、アドオン２１７ａを備えている。アドオン２１７ａは、Ｊａｖａ部分１７ｈと、ネイティブ言語で構成されていてＪａｖａ部分１７ｇによって呼び出される第２プログラミング部分としてのネイティブ部分２１７ｂとを備えている。ＭＦＰ２１０は、アドオン１７ｇ毎に関連付けられている認証情報１７ｊ（図１参照。）を備えておらず、ネイティブ部分２１７ｂに認証情報２１７ｃを含んでいる。
【００８０】
ＭＦＰ２１０は、判断用計算アルゴリズム１７ｋ（図１参照。）を備えておらず、Ｊａｖａ部分１７ｇによるネイティブ部分２１７ｂの呼び出しが許可されているか否かの判断に使用される判断用情報２１７ｄを備えている。
【００８１】
次に、アドオン２１７ａの作成について説明する。
【００８２】
図１１は、アドオン２１７ａの作成のシーケンス図である。
【００８３】
図１１に示すように、アドオン開発者２０は、ＭＦＰ２１０にネイティブで実行させたい部分をＣ＋＋で実装し、ライブラリーとしてｌｉｂｒａｒｙ．ｓｏを作成する（Ｓ３０１）。
【００８４】
次いで、アドオン開発者２０は、Ｓ３０１において作成したｌｉｂｒａｒｙ．ｓｏの認証をＭＦＰ製造者３０に依頼する（Ｓ３０２）。
【００８５】
ＭＦＰ製造者３０は、Ｓ３０２における依頼に応じて、ｌｉｂｒａｒｙ．ｓｏを検証する（Ｓ３０３）。
【００８６】
ＭＦＰ製造者３０は、Ｓ３０３における検証において問題ないと判断すると、ｌｉｂｒａｒｙ．ｓｏに認証情報２１７ｃを埋め込み（Ｓ３０４）、認証情報２１７ｃを埋め込んだｌｉｂｒａｒｙ．ｓｏをアドオン開発者２０に返す（Ｓ３０５）。
【００８７】
アドオン開発者２０は、Ｓ３０５において返されたｌｉｂｒａｒｙ．ｓｏ、すなわち、ネイティブ部分２１７ｂと、このｌｉｂｒａｒｙ．ｓｏをロードする命令を含むＪａｖａ部分１７ｈとを含むアドオン２１７ａを作成する（Ｓ３０６）。
【００８８】
次に、ＭＦＰ２１０の動作について説明する。
【００８９】
ＭＦＰ２１０は、アプリ開発者によって作成されたアプリケーション１７ｆがインストールされる。また、ＭＦＰ２１０は、アドオン開発者によって作成されたアドオン２１７ａがインストールされる。
【００９０】
まず、アドオン２１７ａがインストールされる場合のＭＦＰ２１０の動作について説明する。
【００９１】
なお、以下においては、プラットフォーム側アプリケーション１７ｅの動作として記載しているが、実際には、制御部１８がプラットフォーム側アプリケーション１７ｅを実行することによって実現される機能の動作である。
【００９２】
図１２は、アドオン２１７ａがインストールされる場合のＭＦＰ２１０の動作のフローチャートである。
【００９３】
図１２に示すように、プラットフォーム側アプリケーション１７ｅは、インストールされたアドオン２１７ａにネイティブ部分２１７ｂとしてのｌｉｂｒａｒｙ．ｓｏが存在するか否かを判断する（Ｓ３３１）。
【００９４】
プラットフォーム側アプリケーション１７ｅは、ｌｉｂｒａｒｙ．ｓｏが存在するとＳ３３１において判断すると、このｌｉｂｒａｒｙ．ｓｏに認証情報２１７ｃが埋め込まれているか否かを判断する（Ｓ３３２）。
【００９５】
プラットフォーム側アプリケーション１７ｅは、認証情報２１７ｃが埋め込まれているとＳ３３２において判断すると、埋め込まれている認証情報２１７ｃが正当なものであるか否か、すなわち、Ｊａｖａ部分１７ｇによるネイティブ部分２１７ｂの呼び出しが許可されているか否かを判断する（Ｓ３３３）。ここで、プラットフォーム側アプリケーション１７ｅは、インストールされたアドオン２１７ａのｌｉｂｒａｒｙ．ｓｏに埋め込まれている認証情報２１７ｃと、判断用情報２１７ｄとが一致する場合に、認証情報２１７ｃが正当なものであると判断する。
【００９６】
プラットフォーム側アプリケーション１７ｅは、埋め込まれている認証情報２１７ｃが正当なものである、すなわち、Ｊａｖａ部分１７ｇによるネイティブ部分２１７ｂの呼び出しが許可されているとＳ３３３において判断すると、インストールされたアドオン２１７ａに対して、Ｊａｖａ部分１７ｇによるネイティブ部分２１７ｂの呼び出しの権限、すなわち、ネイティブ部分２１７ｂとしてのｌｉｂｒａｒｙ．ｓｏをＪａｖａの実行環境にロードする権限を付与する（Ｓ３３４）。
【００９７】
プラットフォーム側アプリケーション１７ｅは、ｌｉｂｒａｒｙ．ｓｏが存在しないとＳ３３１において判断するか、認証情報２１７ｃが埋め込まれていないとＳ３３２において判断するか、埋め込まれている認証情報２１７ｃが正当なものではないとＳ３３３において判断するか、Ｓ３３４の処理を実行すると、図１２に示す動作を終了する。
【００９８】
なお、アプリケーション１７ｆが実行される場合のＭＦＰ２１０の動作については、第１の実施の形態と同様である。
【００９９】
以上に説明したように、ＭＦＰ２１０は、アドオン２１７ａにおけるＪａｖａ部分１７ｈによるネイティブ部分２１７ｂの呼び出しが許可されていると認証情報２１７ｃに基づいて判断した場合（Ｓ３３３でＹＥＳ）に呼び出しの権限をアドオン２１７ａに付与し（Ｓ３３４）、このアドオン２１７ａをアプリケーション１７ｆが利用するので、アプリケーション１７ｆ毎に認証情報に関連付けられる必要がなく、アプリケーション１７ｆの作成を容易化することができる。
【０１００】
ＭＦＰ２１０は、Ｊａｖａ部分１７ｈによるネイティブ部分２１７ｂの呼び出しの権限をアドオン２１７ａの実行後も維持するので、アドオン２１７ａの実行の度に認証情報２１７ｃに基づいて判断する必要がなく、Ｊａｖａ部分１７ｈによってネイティブ部分２１７ｂを高速に呼び出すことができる。
【０１０１】
ＭＦＰ２１０は、Ｊａｖａ部分１７ｈによるネイティブ部分２１７ｂの呼び出しが許可されているか否かを、アドオン２１７ａの実行時ではなく、アドオン２１７ａのインストール時に判断するので、アドオン２１７ａを高速に実行することができる。しかしながら、ＭＦＰ２１０は、Ｊａｖａ部分１７ｈによるネイティブ部分２１７ｂの呼び出しが許可されているか否かを、アドオン２１７ａのインストール時ではなく、アドオン２１７ａの最初の実行時に判断する構成でも良い。
【０１０２】
ＭＦＰ２１０は、Ｊａｖａ部分１７ｈによるネイティブ部分２１７ｂの呼び出しの権限を不揮発性の記憶部１７に記憶することによって、Ｊａｖａ部分１７ｈによるネイティブ部分２１７ｂの呼び出しが許可されているか否かをＭＦＰ２１０の起動の度に判断する必要がないので、処理負担を軽減することができる。しかしながら、ＭＦＰ２１０は、Ｊａｖａ部分１７ｈによるネイティブ部分２１７ｂの呼び出しの権限を制御部１８のＲＡＭに記憶して、Ｊａｖａ部分１７ｈによるネイティブ部分２１７ｂの呼び出しが許可されているか否かをＭＦＰ２１０の起動の度に判断する構成でも良い。
【０１０３】
なお、認証情報２１７ｃは、本実施の形態においてネイティブ部分２１７ｂに埋め込まれている。しかしながら、認証情報２１７ｃは、アドオン２１７ａのうち、ネイティブ部分２１７ｂ以外の部分に含まれていても良い。また、認証情報２１７ｃは、アドオン２１７ａに関連付けられて、アドオン２１７ａとは別ファイルとして存在しても良い。
【０１０４】
ＭＦＰ製造者３０は、本実施の形態においてｌｉｂｒａｒｙ．ｓｏを検証する。しかしながら、ＭＦＰ製造者３０は、ｌｉｂｒａｒｙ．ｓｏを含むアドオン全体を検証しても良い。
【０１０５】
本発明の電子機器は、上述の各実施の形態においてＭＦＰであるが、プリンター専用機、コピー専用機、ファックス専用機、スキャナー専用機など、ＭＦＰ以外の画像形成装置でも良いし、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）など、画像形成装置以外の電子機器でも良い。
【符号の説明】
【０１０６】
１０  ＭＦＰ（電子機器）
１７  記憶部（不揮発性の記憶デバイス）
１７ｆ  アプリケーション
１７ｇ  アドオン
１７ｈ  Ｊａｖａ部分（第１プログラミング部分）
１７ｉ  ネイティブ部分（第２プログラミング部分）
１７ｊ  認証情報
１７ｋ  判断用計算アルゴリズム（特定の計算アルゴリズム）
２１０  ＭＦＰ（電子機器）
２１７ａ  アドオン
２１７ｂ  ネイティブ部分（第２プログラミング部分）
２１７ｃ  認証情報
【図１】
0006440100.tif 000002
【図２】
0006440100.tif 000003
【図３】
0006440100.tif 000004
【図４】
0006440100.tif 000005
【図５】
0006440100.tif 000006
【図６】
0006440100.tif 000007
【図７】
0006440100.tif 000008
【図８】
0006440100.tif 000009
【図９】
0006440100.tif 000010
【図１０】
0006440100.tif 000011
【図１１】
0006440100.tif 000012
【図１２】
0006440100.tif 000013