(57)【要約】【課題】一般権限のアプリケーションでは利用できないイベント取得機能を、ＵＩ部品の操作性を向上させるために利用したい。【解決手段】アプリケーションが動作する動作環境を備える情報処理装置であって、画面を構成する部品に対し当該部品の領域外におけるユーザ操作によるイベントを通知するためのリスナを前記動作環境に登録できる権限を有する第１のアプリケーションと、前記権限を有しない第２のアプリケーションとが前記動作環境にて動作し、前記第２のアプリケーションは、前記第２のアプリケーションの画面を構成する部品が当該部品の領域外におけるユーザ操作によるイベントの通知を要する部品である場合に、前記第１のアプリケーションに対して前記リスナの登録を要求する要求手段を有し、前記第１のアプリケーションは、前記第２のアプリケーションからの要求に応じて、前記動作環境に前記リスナの登録の要求を行う登録手段を有する。【選択図】  図３
2018060373.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションが動作する動作環境を備える情報処理装置であって、
画面を構成する部品に対し当該部品の領域外におけるユーザ操作によるイベントを通知するためのリスナを前記動作環境に登録できる権限を有する第１のアプリケーションと、
前記権限を有しない第２のアプリケーションと、
が前記動作環境にて動作し、
前記第２のアプリケーションは、前記第２のアプリケーションの画面を構成する部品が当該部品の領域外におけるユーザ操作によるイベントの通知を要する部品である場合に、前記第１のアプリケーションに対して前記リスナの登録を要求する要求手段を有し、
前記第１のアプリケーションは、前記第２のアプリケーションからの要求に応じて、前記動作環境に前記リスナの登録の要求を行う登録手段を有する
ことを特徴とする情報処理装置。
【請求項２】
前記動作環境は、
アプリケーションの権限に関する情報を管理する管理手段と、
前記リスナの登録の要求を受け付けた際に、前記管理手段にて管理している情報に基づいて、当該要求の要求元が前記リスナの登録の権限を有しているか否かを判定し、当該判定の結果により前記リスナを登録する否かを制御する制御手段と
を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２のアプリケーションは、前記動作環境が、画面を構成する部品に対し当該部品の領域外におけるユーザ操作によるイベントの通知を行う仕様である所定の動作環境であるか否かを判定する手段を更に有し、
前記要求手段は、前記動作環境が前記所定の動作環境でないと判定された場合に、前記第１のアプリケーションに対して前記リスナの登録を要求することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記第１のアプリケーションは、前記リスナの登録の要求を受け付けた際に、当該要求の要求元を確認する確認手段を更に有し、
前記要求手段は、前記確認手段にて前記要求元が前記第２のアプリケーションの前記要求手段であると確認された際に、前記動作環境に前記リスナの登録の要求を行うことを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
領域外におけるユーザ操作によるイベントの通知を要する部品は、プルダウン部品であることを特徴とする請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記動作環境は、Ｊａｖａ仮想マシンによる動作環境であり、
前記リスナは、ＡＷＴイベントリスナであることを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
アプリケーションが動作する動作環境を備える情報処理装置の制御方法であって、
画面を構成する部品に対し当該部品の領域外におけるユーザ操作によるイベントを通知するためのリスナを前記動作環境に登録できる権限を有する第１のアプリケーションと、
前記権限を有しない第２のアプリケーションと、
が前記動作環境にて動作し、
前記第２のアプリケーションにおいて、前記第２のアプリケーションの画面を構成する部品が当該部品の領域外におけるユーザ操作によるイベントの通知を要する部品である場合に、前記第１のアプリケーションに対して前記リスナの登録を要求する要求工程を有し、
前記第１のアプリケーションにおいて、前記第２のアプリケーションからの要求に応じて、前記動作環境に前記リスナの登録の要求を行う登録工程を有する
ことを特徴とする情報処理装置の制御方法。
【請求項８】
アプリケーションが動作する動作環境を備えるコンピュータに、
画面を構成する部品に対し当該部品の領域外におけるユーザ操作によるイベントを通知するためのリスナを前記動作環境に登録できる権限を有する第１のアプリケーションと、
前記権限を有しない第２のアプリケーションと、
を前記動作環境にて動作させ、
前記第２のアプリケーションにおいて、前記第２のアプリケーションの画面を構成する部品が当該部品の領域外におけるユーザ操作によるイベントの通知を要する部品である場合に、前記第１のアプリケーションに対して前記リスナの登録を要求する要求手段として機能させ、
前記第１のアプリケーションにおいて、前記第２のアプリケーションからの要求に応じて、前記動作環境に前記リスナの登録の要求を行う登録手段として機能させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、機器で動作するソフトウェアのセキュリティが重要となっている。しかし、セキュリティを厳しくすると利便性が損なわれるという側面がある。例えば、グラフィカルユーザインタフェースに関し、ソフトウェアでプログラムされたプルダウン部品は、ユーザの操作に応じて動作する。画面上に表示されているプルダウン部品が自身の領域外のタッチ操作に応じて閉じることで、操作性のよいプルダウン部品が実現できる。一方、ユーザの操作をすべてプルダウン部品が取得できるようにすると、セキュリティホールが生じうるという課題がある。
【０００３】
この課題に対し、特許文献１では、ユーザの操作を特定のモジュールだけが処理する仕組みが考案されている。特許文献１では、２つのＯＳが一つの機器上で動作する環境下において、画面上のタッチイベントを２つのＯＳのどちらか片方だけで処理する。このとき、タッチイベントの処理を別のＯＳに対して隠蔽することで、イベントを横取りして盗み見る動作を防いでいる。しかし、イベント処理を完全に隠蔽すると、正当な目的でイベントを取得したい場合に対応できない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１３５０５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は上記の課題を鑑みてなされたものであり、システム上で動作するアプリケーションの権限を制限しつつ、そのアプリケーションの画面を構成するＵＩ部品がシステムにて発生したイベントを取得して応答できるようにする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、アプリケーションが動作する動作環境を備える情報処理装置であって、画面を構成する部品に対し当該部品の領域外におけるユーザ操作によるイベントを通知するためのリスナを前記動作環境に登録できる権限を有する第１のアプリケーションと、前記権限を有しない第２のアプリケーションとが前記動作環境にて動作し、前記第２のアプリケーションは、前記第２のアプリケーションの画面を構成する部品が当該部品の領域外におけるユーザ操作によるイベントの通知を要する部品である場合に、前記第１のアプリケーションに対して前記リスナの登録を要求する要求手段を有し、前記第１のアプリケーションは、前記第２のアプリケーションからの要求に応じて、前記動作環境に前記リスナの登録の要求を行う登録手段を有する。
【発明の効果】
【０００７】
本発明によれば、権限を制限されたアプリケーションでもシステムの機能を利用するＵＩ部品を利用でき、アプリケーションの利便性が向上する。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア構成の一例を示す概略図。
【図２】情報処理装置上に構築するソフトウェア構成の一例を示す模式図。
【図３】本願発明に係るソフトウェアが備える機能の構成例を示す模式図。
【図４】アプリケーションの実行処理を示すフローチャート。
【図５】ＵＩ部品作成処理を示すフローチャート。
【図６】ＡＷＴイベントリスナ登録処理を示すフローチャート。
【図７】ユーザが画面をタッチした時の処理を示すフローチャート。
【図８】ＵＩ部品のプルダウンが開いた状態と閉じた状態を示す図。
【図９】権限リストの記述例を示す図。
【図１０】第２の実施形態に係るＵＩ部品リスナ登録手段の呼び出し処理のフローチャート。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を用いて説明する。
【００１０】
＜第１の実施形態＞
［システム構成］
（ハードウェア構成）
図１は、本願発明を適用可能な一般的な情報処理装置１０１のハードウェア構成の一例を示す図である。情報処理装置１０１は、ハードウェア構成として、ＣＰＵ１１、入力装置１２、記憶装置１３、表示装置１４、及び外部接続ＩＦを含み、各構成要素は、バス１０を介して通信可能に接続される。
【００１１】
ＣＰＵ１１は、記憶装置１３に記憶されている後述するアプリケーションやプログラム実行環境等の各々に対応するプログラムに基づき処理を行うことにより、後述する各機能、又はフローチャート等を実現する。入力装置１２は、情報を入力するキーボードやマウスなどが該当する。記憶装置１３は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ハードディスク装置等を含み、上述した各プログラム以外に、プログラムに基づく処理で用いられるデータ等を記憶する。表示装置１４は、画面等を表示するディスプレイである。なお、入力装置１２と表示装置１４が一体となったタッチパネルディスプレイなどが用いられてもよい。外部接続ＩＦ１５は、ネットワークインタフェースや外部機器との各種接続インタフェースである。
【００１２】
なお、ＣＰＵ１１は、プログラムを実行することで各種手段として機能することが可能である。また、ＣＰＵ１１と協調して動作するＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの制御回路がこれらの手段として機能してもよい。また、ＣＰＵ１１と情報処理装置１０１の動作を制御する制御回路との協調によってこれらの手段が実現されてもよい。また、ＣＰＵ１１は単一のものである必要はなく、複数であってもよい。この場合、複数のＣＰＵ１１は分散して処理を実行することが可能である。また、複数のＣＰＵ１１は単一のコンピュータに配置されていてもよいし、物理的に異なる複数のコンピュータに配置されていてもよい。なお、ＣＰＵ１１がプログラムを実行することで実現する手段が専用の回路によって実現されてもよい。
【００１３】
（ソフトウェア構成）
図２は、情報処理装置１０１のソフトウェア構成の一例を示す図である。情報処理装置１０１において、オペレーティングシステム（ＯＳ）２０１、仮想マシン２０２、アプリケーションフレームワーク２０３、及び各種アプリケーション（システムアプリケーション２０４、アプリケーション２０５）が階層構造にて構成されている。ＯＳ２０１は、システム全体の基盤となるソフトウェアである。例えば、ＯＳ２０１の例としては、Ｌｉｎｕｘ（登録商標）などのＯＳが挙げられる。仮想マシン２０２は、ＯＳ２０１上のプロセスでありながら、自身の上でアプリケーションが動作する動作環境を提供するソフトウェアである。仮想マシン２０２の例としては、Ｊａｖａ（登録商標）ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）などが挙げられる。アプリケーションフレームワーク２０３は、仮想マシン２０２上で動作するプログラムであり中間コードによって構成される。アプリケーションフレームワーク２０３は、各種アプリケーションのライフサイクルを管理する。
【００１４】
システムアプリケーション２０４とアプリケーション２０５は、アプリケーションフレームワーク２０３上で動作するアプリケーションである。システムアプリケーション２０４は、システムの権限で動作する。一方、アプリケーション２０５は、制限された権限で実行される。図３において、２つのアプリケーション２０５が示されているが、この構成に限定するものではなく、更に多くのアプリケーション２０５が動作可能であってよい。
【００１５】
次に、情報処理装置１０１のシステム上でアプリケーションの権限を管理する構成について説明する。図３は、図２にて示したソフトウェア構成において、権限に関する機能とイベントに関する機能を司る部位を示す図である。なお、各アプリケーションは図３に示す機能以外も備えており、これらに関しては、本願発明と直接関係ないため説明を省略する。
【００１６】
仮想マシン２０２は、イベント管理手段３０１、および権限管理手段３０２を備える。イベント管理手段３０１は、情報処理装置１０１への入力をイベントとして管理する。入力の具体例として、タッチパネル上でのユーザによるタッチ操作や、情報処理装置１０１が備えるハードキーの押下などがある。これらの入力は、タッチイベント、ハードキーイベントとしてイベント管理手段３０１で管理される。なお、イベントとして管理される入力は上記に限定するものではなく、例えば、入力装置１２や外部接続ＩＦ１５を介した各種ユーザ操作など他の操作であってよい。
【００１７】
権限管理手段３０２は、仮想マシン２０２上で動作するアプリケーションの権限を管理する。例えば、アプリケーションがタッチイベントを取得して処理するためにイベント管理手段３０１にリスナを登録する場合、権限管理手段３０２にて管理されている情報に基づいて、そのアプリケーションがリスナの登録権限を有しているか否かが確認される。リスナ（イベントリスナ）とは、イベントを監視し、何かしらのイベントが起きた際に対応付けられた処理を実行するように制御するオブジェクトである。ここでの処理とは、関数やメソッドなどが該当する。ここで、処理の実行の起因となるイベントを誰でも取得できると、暗証番号やパスワードを盗むキーロガーのような悪質なプログラムの動作も許してしまう。そのため、権限のないプログラム（アプリケーション）はイベント管理手段３０１へのリスナ登録をできないように制御される。つまり、仮想マシン２０２の権限管理手段３０２は、各アプリケーションの権限を管理し、リスナの登録の要求の際に、要求元のアプリケーションの権限を確認する。
【００１８】
アプリケーションフレームワーク２０３は、ＦＷ内権限管理手段３０３を備える。ＦＷ内権限管理手段３０３は、アプリケーションフレームワーク２０３上で動作するアプリケーションの権限を管理する。これにより、アプリケーションフレームワーク２０３独自のフォーマットでアプリ権限リスト３０７の書式を規定することや、独自の権限を追加することが容易になっている。実際の権限の管理は、仮想マシン２０２の標準機能として備わっている権限管理手段３０２を利用して行う。
【００１９】
システムアプリケーション２０４は、ＵＩ部品リスナ登録手段３０４、およびシステム権限リスト３０５を備える。ＵＩ部品リスナ登録手段３０４は、システムアプリケーション２０４の機能の一つであり、アプリケーション２０５が備えるＵＩ部品ライブラリ３０６からのみ利用される。システム権限リスト３０５は、システムアプリケーション２０４が有する権限のリストである。本実施形態では、システムアプリケーション２０４は、後述するｌｉｓｔｅｎＴｏＡｌｌＡＷＴＥｖｅｎｔｓ権限を有するものとする。この権限を有することで、システムアプリケーション２０４は、仮想マシン２０２上のイベントを取得するリスナを仮想マシン２０２に登録できる。
【００２０】
アプリケーション２０５は、ＵＩ部品ライブラリ３０６、およびアプリ権限リスト３０７を備える。ＵＩ部品ライブラリ３０６は、アプリケーション２０５が表示装置１４等において画面を描画するときに用いるライブラリである。アプリケーション２０５の開発者は、予め各種ＵＩ部品が定義されたＵＩ部品ライブラリ３０６を利用することで、詳細を知ることなく容易に部品を利用できる。アプリ権限リスト３０７は、アプリケーション２０５が有する権限のリストである。本実施形態では、システムアプリケーション２０４が有する権限と比較して、アプリケーション２０５が有する権限は制限されたものであるとし、アプリケーション２０５は、ｌｉｓｔｅｎＴｏＡｌｌＡＷＴＥｖｅｎｔｓ権限を有しないものとする。従って、アプリケーション２０５は、例えば、ＵＩ部品の領域以外に対するユーザ操作のイベントを取得するリスナを仮想マシン２０２に直接登録できないように制限されている。
【００２１】
アプリケーション２０５のアプリ権限リスト３０７とシステムアプリケーション２０４のシステム権限リスト３０５の記載例を図９に示す。図９において、コード９０１では、環境変数ｕｓｅｒ．ｈｏｍｅとして設定されたディレクトリのファイルに対する読み込み（ｒｅａｄ）、書き込み（ｗｒｉｔｅ）、実行（ｅｘｅｃｕｔｅ）、削除（ｄｅｌｅｔｅ）の権限が記載され、これらの動作が許可されている。また、コード９０２では、任意のソケットでの受付（ａｃｃｅｐｔ）、接続（ｃｏｎｎｅｃｔ）、待受（ｌｉｓｔｅｎ）、名前解決（ｒｅｓｏｌｖｅ）の権限が記載され、これらの動作が許可されている。
【００２２】
ここまで、情報処理装置１０１の構成について説明した。本実施形態において、仮想マシン２０２はＪａｖａ仮想マシン（ＪａｖａＶＭ）とし、アプリケーションフレームワーク２０３はＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  ｉｎｉｔｉａｔｉｖｅ；登録商標）として、以下説明を行う。
【００２３】
本実施形態では、ＵＩ部品ライブラリ３０６が備えるプルダウン部品を用いるアプリケーション２０５を対象として説明を行う。プルダウン部品の例を図８に示す。プルダウン部品は、画面を構成するＵＩ部品であり、プルダウンボタン８０１とプルダウンメニュー８０２から構成される。プルダウンボタン８０１の領域内をタッチすると、プルダウンメニュー８０２が表示される。プルダウンメニュー８０２を表示した状態でプルダウンボタン８０１の領域内、あるいはプルダウンボタン８０１の外の領域をタッチすると、プルダウンボタン８０１は閉じた状態に戻る。
【００２４】
ここで、プルダウンメニュー８０２が閉じた状態に戻るためには、部品の中か外の領域をタッチしたイベントが発生したことをプルダウンボタン８０１が認識する必要がある。しかし、ＯＳ２０１と仮想マシン２０２の実装によっては、部品の外の領域がタッチされたイベントを容易に取得できない。例えば、Ｕｎｉｘ系ＯＳで一般的なＸ−Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍに対応した実装では、部品が独立したウィンドウとして処理される。この場合、各部品には自身の領域内のイベントしか通知されない。その結果、各部品は、部品の領域外がタッチされたイベントが発生したことを認識することができない。
【００２５】
領域外のイベントを取得するためには、仮想マシン２０２のイベント管理手段３０１にリスナを登録する必要がある。リスナの登録処理はＵＩ部品ライブラリ３０６が行うが、ＵＩ部品ライブラリ３０６の権限はアプリケーション２０５のものである。つまり、アプリ権限リスト３０７において、イベント管理手段３０１へリスナを登録する権限を記載する必要がある。ここでのリスナを登録する権限とは、Ｊａｖａ（登録商標）が標準で定義されている権限であり、ｌｉｓｔｅｎＴｏＡｌｌＡＷＴＥｖｅｎｔｓとして知られている。以降、ｌｉｓｔｅｎＴｏＡｌｌＡＷＴＥｖｅｎｔｓ権限を要するリスナ登録を、ＡＷＴイベントリスナの登録と記す。
【００２６】
一方、ｌｉｓｔｅｎＴｏＡｌｌＡＷＴＥｖｅｎｔｓ権限をアプリケーション２０５に与えると、その権限により悪質な動作も可能になってしまう。そのため、アプリケーション２０５の権限を制限したまま、ＵＩ部品ライブラリ３０６がＡＷＴイベントリスナを登録できる方法が必要となる。そこで、本実施形態では、仮想マシン２０２と同じシステムの権限で動作するシステムアプリケーション２０４とＵＩ部品ライブラリ３０６を連携させる。ここでは、便宜上、システムアプリケーション２０４を「第１のアプリケーション」とも称し、アプリケーション２０５を「第２のアプリケーション」とも称する。
【００２７】
［処理フロー］
図４、図５を用いて、情報処理装置１０１の動作について説明する。図４は、アプリケーションの実行処理を示すフローチャートである。図５は、ＵＩ部品を作成する処理を示すフローチャートである。図６は、ＡＷＴイベントリスナの登録処理を示すフローチャートである。いずれの処理も、情報処理装置１０１のＣＰＵ１１が記憶装置１３等に格納されたプログラムを読み出して実行する事により実現される。
【００２８】
アプリケーション２０５を実行する処理の流れについて、図４を用いて説明する。アプリケーション２０５の実行が開始されると本処理フローが開始される。
【００２９】
Ｓ４０１にて、アプリケーションフレームワーク２０３は、ＦＷ内権限管理手段３０３を用いて、開始されたアプリケーション２０５のアプリ権限リスト３０７を取得する。
【００３０】
Ｓ４０２にて、アプリケーションフレームワーク２０３は、仮想マシン２０２の権限管理手段３０２にアプリケーション２０５の権限を登録する。
【００３１】
Ｓ４０３にて、アプリケーション２０５は、画面を表示するために、ＵＩ部品ライブラリ３０６によりＵＩ部品を作成する。このとき、アプリケーション２０５は、ＵＩ部品ライブラリ３０６の機能を利用してＵＩ部品を作成するだけであり、リスナ登録などの作成処理の詳細はアプリケーション２０５に対しては隠蔽される。本処理工程の詳細は、図５を用いて説明する。そして、本処理フローを終了する。
【００３２】
次に、図４のＳ４０３におけるＵＩ部品の作成処理の詳細について、図５を用いて説明する。ＵＩ部品ライブラリ３０６が作成するＵＩ部品としては、プルダウン部品、ラベル部品、ボタン部品、テキスト入力部品などがあるが、これらに限定するものではない。例えばラベル部品について、異なる見栄えのラベル部品が複数種類用意されている。どのＵＩ部品を作成するかは、アプリケーション２０５の指示に従う。
【００３３】
Ｓ５０１にて、ＵＩ部品ライブラリ３０６は、指示されたＵＩ部品のインスタンスを作成する。
【００３４】
Ｓ５０２にて、ＵＩ部品ライブラリ３０６は、作成したＵＩ部品がイベントに反応する部品か否かを確認する。例えば、作成したＵＩ部品がラベル部品であれば文字や画像を表示するだけであり、イベントに反応する必要はない。一方、ボタン部品であれば、自身がタッチされた際に選択されたことを示す描画に変化すると同時に紐付けられた処理を行うために、イベントに反応するＵＩ部品である。イベントに反応するＵＩ部品か否かの情報は予め定義され、その情報が保持されているものとする。イベントに反応するＵＩ部品である場合は（Ｓ５０２にてＹＥＳ）Ｓ５０３へ進み、イベントに反応しないＵＩ部品である場合は（Ｓ５０２にてＮＯ）本処理フローを終了する。
【００３５】
Ｓ５０３にて、ＵＩ部品ライブラリ３０６は、ＵＩ部品自身の領域内のイベントを知るためのリスナの登録を仮想マシン２０２に要求する。自身の領域内のイベントを取得するリスナの登録に、特別な権限は必要ない。したがって、ここでは、仮想マシン２０２は、ＵＩ部品ライブラリ３０６の要求に応じてリスナを登録することとなる。ここでのリスナの登録は、システムアプリケーション２０４のＵＩ部品リスナ登録手段３０４を介して要求（呼び出し）してもよいし、仮想マシン２０２に直接要求（呼び出し）してもよい。
【００３６】
Ｓ５０４にて、ＵＩ部品ライブラリ３０６は、作成したＵＩ部品が自身の領域外におけるイベントに反応するＵＩ部品か否かを確認する。例えば、プルダウン部品であれば、自身の領域外のイベントに反応するＵＩ部品となる。ここでの自身の領域外におけるイベントに反応するＵＩ部品か否かは予め定義され、その情報が保持されているものとする。自身の領域外のイベントに反応するＵＩ部品である場合は（Ｓ５０４にてＹＥＳ）Ｓ５０５へ進み、自身の領域外のイベントに反応するＵＩ部品でない場合は（Ｓ５０４にてＮＯ）本処理フローを終了する。
【００３７】
Ｓ５０５にて、ＵＩ部品ライブラリ３０６は、ＡＷＴイベントリスナの登録処理を行う。本処理の詳細は、図６を用いて説明する。そして、本処理フローを終了する。
【００３８】
次に、図５のＳ５０５のＡＷＴイベントリスナ登録処理の詳細について、図６を用いて説明する。
【００３９】
Ｓ６０１にて、ＵＩ部品ライブラリ３０６は、部品の領域外におけるイベントを取得できる所定の動作環境か否かを確認する。例えば、情報処理装置１０１が独自のウィンドウシステムを備える場合、または、Ｗｉｎｄｏｗｓ（登録商標）用の仮想マシン２０２の場合は、部品の領域外のイベントを取得できる動作環境（仕様）となる。一方、Ｕｎｉｘ系ＯＳで一般的なＸ−Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍに対応した実装では、部品の領域外のイベントを取得できない動作環境となる。ここでの動作環境に関する情報は、予め保持されており、この情報に基づいて判断してよい。ＵＩ部品の領域外のイベントを取得できない場合（Ｓ６０１にてＮＯ）Ｓ６０２へ進み、部品の領域外のイベントを取得できる環境である場合（Ｓ６０１にてＹＥＳ）本処理フローを終了する。
【００４０】
Ｓ６０２にて、ＵＩ部品ライブラリ３０６は、システムアプリケーション２０４のＵＩ部品リスナ登録手段３０４を呼び出し、ＵＩ部品の領域外のイベントを取得するためのリスナの登録を要求する。
【００４１】
Ｓ６０３にて、ＵＩ部品リスナ登録手段３０４は、アプリケーション２０５のＵＩ部品ライブラリ３０６からの要求に応じて、仮想マシン２０２のリスナ登録機能を呼び出し、リスナの登録を要求する。この登録機能は、仮想マシン２０２が標準的に備えるＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）である。
【００４２】
Ｓ６０４にて、仮想マシン２０２は、登録を要求してきたアプリケーションがリスナ登録の権限を有しているか否かを確認する。上述したように、システムアプリケーション２０４のＵＩ部品リスナ登録手段３０４は、システムアプリケーション２０４として動作しており、リスナ登録の権限を有する。
【００４３】
Ｓ６０５にて、仮想マシン２０２は、リスナの登録を要求したアプリケーションがその権限を有しているか否かを判定する。権限を有している場合は（Ｓ６０５にてＹＥＳ）Ｓ６０６へ進み、権限を有していない場合は（Ｓ６０５にてＮＯ）Ｓ６０７へ進む。
【００４４】
Ｓ６０６にて、仮想マシン２０２は、ＡＷＴイベントリスナをイベント管理手段３０１にて登録する。そして、本処理フローを終了する。
【００４５】
Ｓ６０７にて、仮想マシン２０２は、要求されたリスナの登録を行わずに例外処理を行う。そして、本処理フローを終了する。図６のようにＵＩ部品ライブラリ３０６からＵＩ部品リスナ登録手段３０４を経由してリスナの登録を要求する限り、Ｓ６０５で登録権限が無いと判定される場合は生じない。しかし、アプリケーション２０５がＵＩ部品の領域外に関するイベントのリスナを登録するために仮想マシン２０２のリスナ登録機能を直接呼び出した場合などは、リスナ登録権限がないために登録せずに例外処理を行われる。
【００４６】
以下、情報処理装置１０１が備える入力装置１２の１つであるタッチパネルをユーザがタッチしたときの処理について、図７を用いて説明する。本処理は、情報処理装置１０１のＣＰＵ１１が記憶装置１３等に格納されたプログラムを読み出して実行する事により実現される。
【００４７】
Ｓ７０１にて、情報処理装置１０１は、入力手段を介したユーザによる画面のタッチ操作を受け付ける。
【００４８】
タッチ操作により、ＯＳ２０１を経由して仮想マシン２０２に入力が通知され、Ｓ７０２にて、イベント管理手段３０１は、タッチイベントを生成する。
【００４９】
Ｓ７０３にて、仮想マシン２０２は、タッチイベントの座標が画面に表示中のＵＩ部品の領域内か否かを確認する。ＵＩ部品の領域内であれば（Ｓ７０３にてＹＥＳ）Ｓ７０４へ進み、ＵＩ部品の領域外であれば（Ｓ７０３にてＮＯ）Ｓ７０５へ進む。なお、１の画面内に複数のＵＩ部品が含まれている場合には、それぞれのＵＩ部品についてタッチイベントの座標が領域内か否かを判定してよい。
【００５０】
Ｓ７０４にて、仮想マシン２０２は、タッチイベントが領域内で行われているＵＩ部品のリスナにイベントを通知する。これに伴って、ＵＩ部品に対応付けられた処理が実行される。
【００５１】
Ｓ７０５にて、仮想マシン２０２は、ＡＷＴリスナにイベントを通知する。つまり、自身の領域外にてタッチイベントが発生したことが通知される。これに伴って、例えば、図８に示すようなプルダウン部品であれば、プルダウンメニュー８０２が閉じる動作が実行される。そして、本処理フローを終了する。
【００５２】
なお、上記では、プルダウン部品を例に挙げて説明したがこれに限定するものではなく、他のＵＩ部品を対象としてもよい。また、ユーザ操作の例としてタッチ操作を例に挙げて説明したが、これに限定するものではなく、例えばキーボタンの押下やフリック操作など他のユーザ操作であってもよい。
【００５３】
以上、アプリケーション２０５の権限を制限したまま、ＵＩ部品ライブラリ３０６がＡＷＴイベントリスナを登録できる方法について説明した。本実施形態により、アプリケーションの権限を制限して悪質な動作を防ぎつつ、アプリケーションの利便性を高めることが可能となる。
【００５４】
＜第２の実施形態＞
第１の実施形態では、ＡＷＴリスナを登録する際に、アプリケーション２０５のＵＩ部品ライブラリ３０６からシステムアプリケーション２０４のＵＩ部品リスナ登録手段３０４を呼び出す仕組みについて説明した。このとき、システムアプリケーション２０４が備えるＵＩ部品リスナ登録手段３０４の存在をアプリケーション２０５の開発者は知ることがない前提であった。つまり、ＵＩ部品リスナ登録手段３０４は、非公開の構成としていた。しかし、もし悪意のある開発者にＵＩ部品リスナ登録手段３０４の存在を知られてしまうと、攻撃用のプログラムからＵＩ部品リスナ登録手段３０４を利用されてしまう危険がある。
【００５５】
そこで、本実施形態では、ＵＩ部品リスナ登録手段３０４の内部で呼び出し元を確認し、ＵＩ部品ライブラリ３０６からの呼び出し以外を拒否する方法について説明する。つまり、ＵＩ部品リスナ登録手段３０４は、ＡＷＴイベントリスナの登録の要求元がＵＩ部品ライブラリであれば、リスナ登録を仮想マシン２０２に対して要求する。
【００５６】
図１０は、システムアプリケーション２０４のＵＩ部品リスナ登録手段３０４が呼び出し元を確認する処理のフローチャートである。ここでは、第１の実施形態にて説明した図６のＳ６０２にてＵＩ部品リスナ登録手段３０４が呼び出された際に実行される場合を例に挙げて説明する。
【００５７】
アプリケーション２０５のＵＩ部品ライブラリ３０６から呼び出されると、Ｓ１００１にて、ＵＩ部品リスナ登録手段３０４は、その時点のスタックを取得する。ここでのスタックとは、関数の呼び出しをフレームとして積んだものである。スタックを上から走査することで、どのような関数を経由してＵＩ部品リスナ登録手段３０４が呼び出されたのかを確認することができる。
【００５８】
Ｓ１００２にて、ＵＩ部品リスナ登録手段３０４は、現時点においてスタックの１つ下に積まれたフレームを取得する。ＵＩ部品リスナ登録手段３０４が正当に呼び出された場合、１つ下のフレームはＵＩ部品ライブラリ３０６の特定の関数となる。特定の関数とは、例えばプルダウン部品の作成関数である。ここでは、第１の実施形態と同様、プルダウン部品を例に挙げて説明するが、これ以外のＵＩ部品であれば、そのＵＩ部品の作成関数となる。ここでのＵＩ部品ライブラリ３０６の特定の関数は、予め定義され、その情報が管理されているものとする。
【００５９】
Ｓ１００３にて、ＵＩ部品リスナ登録手段３０４は、取得したフレームがＵＩ部品ライブラリ３０６か否かを確認する。フレームがＵＩ部品ライブラリ３０６である場合（Ｓ１００３にてＹＥＳ）図６のＳ６０３へ進み、フレームがＵＩ部品ライブラリ３０６でない場合（Ｓ１００３にてＮＯ）Ｓ１００４へ進む。Ｓ６０３以降の処理については、第１の実施形態にて述べた処理と同様であるため、説明を省略する。
【００６０】
Ｓ１００４にて、ＵＩ部品リスナ登録手段３０４は、登録処理を行わずに例外処理を行う。そして、本処理フローを終了する。この場合、図６のＳ６０３以降の処理は省略される。
【００６１】
なお、本実施形態では、図６のＳ６０２にてＵＩ部品リスナ登録手段３０４が呼び出された場合を例に挙げて説明したが、他の経路（ＵＩ部品ライブラリ３０６以外）にて呼び出された場合にも本処理が行われることとなる。このとき、他の経路（ＵＩ部品ライブラリ３０６以外）からＵＩ部品リスナ登録手段３０４が呼び出されている場合には、リスナは登録されず例外処理が行われる。
【００６２】
本実施形態により、第１の実施形態の効果に加え、よりセキュリティを向上させることが可能となる。
【００６３】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６４】
２０２…仮想マシン、２０３…アプリケーションフレームワーク、２０４…システムアプリケーション、３０１…イベント管理手段、３０２…権限管理手段、３０３…ＦＷ内権限管理手段、３０４…ＵＩ部品リスナ登録手段、３０６…ＵＩ部品ライブラリ
【図１】
2018060373.tif 000003
【図２】
2018060373.tif 000004
【図３】
2018060373.tif 000005
【図４】
2018060373.tif 000006
【図５】
2018060373.tif 000007
【図６】
2018060373.tif 000008
【図７】
2018060373.tif 000009
【図８】
2018060373.tif 000010
【図９】
2018060373.tif 000011
【図１０】
2018060373.tif 000012