(57)【要約】【課題】外部デバイスの制御用のデバイスドライバをＯＳに組み込むことが可能な権限が端末装置のユーザに与えられていないＯＳを搭載する端末装置から外部デバイスを制御可能にするアプリの作成労力を軽減すること。【解決手段】デバイスドライバをＯＳ１３に組み込むことが可能な権限がユーザに与えられていないＯＳ１３を搭載する端末装置１０において、汎用ドライバ１３１は、ＯＳ１３に予め組み込まれている。一方で、ドライバライブラリ１１１はアプリケーション１１に含まれている。ドライバライブラリ１１１は、アプリケーション１１が認識可能な形式の第１の制御命令をアプリケーション１１から与えられ、その第１の制御命令を、外部デバイス２０への受け渡しが可能な形式の第２の制御命令に変換する。汎用ドライバ１３１は、ドライバライブラリ１１１から出力される変換後の第２の制御命令を外部デバイス２０へ送信する。【選択図】図１
2015162214.tif 000002
【特許請求の範囲】
【請求項１】
デバイスドライバをオペレーティングシステムに組み込むことが可能な権限がユーザに与えられていない前記オペレーティングシステムを搭載する端末装置であって、
プロセッサと、
第１のデバイスドライバを予め組み込まれた前記オペレーティングシステムと、アプリケーションとを記憶可能なメモリと、を具備し、
前記アプリケーションは、前記アプリケーションから与えた第１の制御命令を、外部周辺機器への受け渡しが可能な形式の第２の制御命令に変換する第２のデバイスドライバを含み、
前記第１のデバイスドライバは、前記第２のデバイスドライバから出力される前記第２の制御命令を前記外部周辺機器へ送信する、
端末装置。
【請求項２】
第１のデバイスドライバを第１のオペレーティングシステムに組み込むことが可能な権限がユーザに与えられていない前記第１のオペレーティングシステムを搭載する端末装置と通信可能な外部周辺機器であって、
プロセッサと、
第２のデバイスドライバを組み込み可能な第２のオペレーティングシステムと、前記端末装置から自機器への第１の制御命令を、前記第２のデバイスドライバが認識可能な形式の第２の制御命令に変換する変換部を含むアプリケーションとを記憶可能なメモリと、
を具備する外部周辺機器。
【請求項３】
デバイスドライバをオペレーティングシステムに組み込むことが可能な権限がユーザに与えられていない前記オペレーティングシステムを搭載し、かつ、アプリケーションを記憶可能なメモリを具備する端末装置と通信可能なサーバ装置であって、
前記アプリケーションから与えられる第１の制御命令を、外部周辺機器への受け渡しが可能な形式の第２の制御命令に変換するデバイスドライバを含む前記アプリケーションを記憶する記憶部と、
前記記憶部に記憶された前記アプリケーションを前記端末装置へ送信する通信部と、
を具備するサーバ装置。
【請求項４】
デバイスドライバをオペレーティングシステムに組み込むことが可能な権限がユーザに与えられていない前記オペレーティングシステムを搭載する端末装置の前記オペレーティングシステムに予め組み込まれたデバイスドライバプログラムであって、
前記端末装置にインストールされたアプリケーションに含まれる所定のデバイスドライバであって、前記アプリケーションから与えられた第１の制御命令を、外部周辺機器への受け渡しが可能な形式の第２の制御命令に変換する前記所定のデバイスドライバから送信される前記第２の制御命令を受信し、
受信した前記第２の制御命令を前記外部周辺機器へ送信する、
処理を前記端末装置に実行させるデバイスドライバプログラム。
【請求項５】
デバイスドライバをオペレーティングシステムに組み込むことが可能な権限がユーザに与えられていない前記オペレーティングシステムを搭載する端末装置が行う外部周辺機器制御方法であって、
前記端末装置にインストールされたアプリケーションに含まれる第２のデバイスドライバが、前記アプリケーションから与えられた第１の制御命令を、外部周辺機器への受け渡しが可能な形式の第２の制御命令に変換し、
前記オペレーティングシステムに予め組み込まれた第１のデバイスドライバが、前記第２の制御命令を前記外部周辺機器へ送信する、
外部周辺機器制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末装置、外部周辺機器、サーバ装置、デバイスドライバプログラム及び外部周辺機器制御方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ（Personal  Computer；以下では「ＰＣ」と呼ぶことがある）に有線または無線で外部周辺機器（以下では「外部デバイス」と呼ぶことがある）が接続されることがある。ＰＣに接続された外部デバイスをＰＣから制御するためには、通常、ＰＣにデバイスドライバ（以下では単に「ドライバ」と呼ぶことがある）がインストールされる。外部デバイスは、例えば、プリンタ、キーボード、マウス、カードリーダ等である。それぞれの外部デバイスに応じたドライバがＰＣにインストールされることにより、ＰＣから外部デバイスを制御可能になる。ＰＣで利用されるWindows（登録商標）等のオペレーティングシステム（Operating  System：以下では「ＯＳ」と呼ぶことがある）では、ドライバはＯＳの一部としてＯＳに組み込まれる。このため、ＰＣへのドライバのインストールは、通常のアプリケーション（以下では「アプリ」と省略して呼ぶことがある）のインストールと異なり、管理者権限で行われる。
【０００３】
近年、ＰＣと同様な機能を有する端末装置として、スマートフォン、タブレット端末等
の「スマートデバイス」が普及している。スマートデバイスで利用されるAndroid，ｉＯＳ等のＯＳは、セキュリティ上の理由から、ユーザに管理者権限を与えていないため、スマートデバイスでは、ユーザ自身がドライバをＯＳに組み込むことができない。このため、スマートデバイスを介して制御可能な外部デバイスは、通常、スマートデバイスの出荷時点で予めＯＳに組み込まれているドライバに対応したものに限られる。例えば、キーボードのドライバは、スマートデバイスのメーカによって、スマートデバイスの出荷前に予めＯＳに組み込まれていることが多いのに対し、プリンタのドライバは、スマートデバイスの出荷時点ではＯＳに組み込まれていないことが多い。
【０００４】
そこで、対応するドライバがＯＳに組み込まれていない外部デバイスをスマートデバイスから制御可能にするために、個々の外部デバイスに専用のアプリをスマートデバイスにインストールして制御可能にする方法がある。例えば、無線ＬＡＮ（Wireless  Local  Area  Network；以下では「ＷＬＡＮ」と呼ぶことがある）の機能を備えたプリンタをスマートデバイスから制御可能にするために、そのプリンタのメーカが専用アプリを配布する。ユーザは、その専用アプリをスマートデバイスにインストールすることで、その専用アプリに対応するプリンタをスマートデバイスから無線ＬＡＮ経由で制御可能になる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１０９６９８号公報
【特許文献２】特開２００８−１３４７０１号公報
【特許文献３】特開２００２−３２８８７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＰＣでは、上記のようにドライバはＯＳに組み込まれるため、そのドライバに対応する外部デバイスは、ＯＳ上で動作する様々なアプリから制御可能になる。一方で、スマートデバイスでは、プリンタのような特定の外部デバイスをスマートデバイスから制御可能にするには、上記のように専用アプリがインストールされる。この専用アプリは、ＰＣにインストールされるドライバとは異なり、ＯＳに組み込まれるものではなく、他のアプリと同様に、ＯＳ上で動作するものである。また、アプリ間での通信手段は確立されていない。このため、特定の外部デバイスを制御可能とする専用のアプリをスマートデバイスにインストールしても、その専用アプリ以外の他のアプリからは、その専用アプリに対応した特定の外部デバイスを制御することはできない。例えば、プリンタによるイメージデータの印刷を可能にする専用アプリがインストールされている場合に、その専用アプリでは文書データの印刷が不可ならば、たとえ文書作成アプリがインストールされていても文書データを印刷することはできない。よって、従来のスマートデバイスでは、同一のプリンタを複数のアプリからそれぞれ制御可能にするには、それぞれ個別の専用アプリが必要であった。
【０００７】
ここで、上記のような専用アプリには、外部デバイスとの間で制御命令を送信及び受信する機能（以下では「送受信機能」と呼ぶことがある）が含まれる。上記のように、アプリ間での通信手段は確立されていないため、それぞれのアプリから外部デバイスを制御可能にするには、それぞれのアプリに個別に送受信機能を含める必要がある。このように、送受信機能がアプリ毎に個別に備えられると、アプリの作成労力の増加や、アプリのデータ量の増加の一因となる。
【０００８】
また、この送受信機能は、スマートデバイスが対応している通信方式に依存する。例えば、専用アプリがBluetooth（登録商標）に対応した送受信機能を備えていても、その専用アプリがインストールされるスマートデバイスがBluetooth（登録商標）に対応していなければ、スマートデバイスから外部デバイスを制御することはできない。そこで、互いに異なる通信方式にそれぞれ対応している複数のスマートデバイスで共通に利用可能な専用アプリを作成しようとすると、その専用アプリには、複数の通信方式にそれぞれ対応する複数の送受信機能を含める必要がある。これは、さらに、アプリの作成労力の増加や、アプリのデータ量の増加を招く。
【０００９】
開示の技術は、上記に鑑みてなされたものであって、外部デバイスの制御用のドライバをＯＳに組み込むことが可能な権限が端末装置のユーザに与えられていないＯＳを搭載する端末装置から外部デバイスを制御可能にするアプリの作成労力を軽減することができる端末装置、外部周辺機器、サーバ装置、デバイスドライバプログラム及び外部周辺機器制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
開示の態様では、デバイスドライバをＯＳに組み込むことが可能な権限がユーザに与えられていない前記ＯＳを搭載する端末装置は、アプリケーションを記憶可能なメモリと、前記ＯＳに予め組み込まれた第１のデバイスドライバと、を具備する。前記アプリケーションは、前記アプリケーションから与えた第１の制御命令を、外部周辺機器への受け渡しが可能な形式の第２の制御命令に変換する第２のデバイスドライバを含む。前記第１のデバイスドライバは、前記第２のデバイスドライバから出力される前記第２の制御命令を前記外部周辺機器へ送信する。
【発明の効果】
【００１１】
開示の態様によれば、外部デバイスの制御用のドライバをＯＳに組み込むことが可能な権限が端末装置のユーザに与えられていないＯＳを搭載する端末装置から外部デバイスを制御可能にするアプリの作成労力を軽減することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１の通信システムの構成例を示す図である。
【図２】図２は、実施例１の端末装置の処理の説明に供するフローチャートである。
【図３】図３は、実施例２の通信システムの構成例を示す図である。
【図４】図４は、実施例３の通信システムの構成例を示す図である。
【図５】図５は、実施例４の通信システムの動作の説明に供する図である。
【図６】図６は、実施例４の通信システムの動作の説明に供する図である。
【図７】図７は、実施例４の通信システムの動作の説明に供する図である。
【図８】図８は、実施例４の通信システムの動作の説明に供する図である。
【図９】図９は、実施例４の通信システムの動作の説明に供する図である。
【図１０】図１０は、実施例４の通信システムの動作の説明に供する図である。
【図１１】図１１は、実施例４の通信システムの動作の説明に供する図である。
【図１２】図１２は、実施例４の端末装置の画面表示例を示す図である。
【図１３】図１３は、実施例４の端末装置の画面表示例を示す図である。
【図１４】図１４は、実施例４の通信システムの動作の説明に供する図である。
【図１５】図１５は、実施例４の端末装置の画面表示例を示す図である。
【図１６】図１６は、実施例４の通信システムの動作の説明に供する図である。
【図１７】図１７は、実施例５の通信システムの構成例を示す図である。
【図１８】図１８は、実施例５のドライバ管理テーブルの一例を示す図である。
【図１９】図１９は、端末装置のハードウェア構成例を示す図である。
【図２０】図２０は、外部周辺機器のハードウェア構成例を示す図である。
【図２１】図２１は、サーバ装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示する端末装置、外部周辺機器、サーバ装置、デバイスドライバプログラム及び外部周辺機器制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本願の開示する端末装置、外部周辺機器、サーバ装置、デバイスドライバプログラム及び外部周辺機器制御方法が限定されるものではない。また、以下の実施例において、同一の機能を有する構成には同一の符号を付し、重複する説明を省略する。
【００１４】
［実施例１］
＜通信システム、端末装置及び外部デバイスの構成＞
図１は、実施例１の通信システムの構成例を示す図である。図１に示す通信システム１は、端末装置１０と、外部デバイス２０とを有する。端末装置１０は、例えば、スマートフォン、タブレット端末等のスマートデバイスである。つまり、端末装置１０は、外部デバイス２０の制御用のドライバをＯＳ１３に組み込むことが可能な権限が端末装置１０のユーザに与えられていないＯＳ１３を搭載する端末装置である。端末装置１０に搭載されるＯＳ１３は、例えば、Android，ｉＯＳ等である。外部デバイス２０は、例えば、プリンタ、カードリーダ等である。端末装置１０と外部デバイス２０とは、無線または有線で接続される。
【００１５】
端末装置１０によって行われる処理は、上位から順に、アプリケーション１１での処理、実行環境１２での処理、ＯＳ１３での処理に大別される。つまり、端末装置１０では、ソフトウェアは、上位から順に、アプリケーション層、実行環境層、ＯＳ層という３階層の構造を採る。
【００１６】
アプリケーション１１には、ドライバライブラリ１１１−１〜１１１−Ｎが含まれる。以下、ドライバライブラリ１１１−１〜１１１−Ｎを特に区別しない場合は、「ドライバライブラリ１１１」と表記する。ドライバライブラリ１１１を含むアプリケーション１１は、端末装置１０の出荷時点では、端末装置１０にインストールされておらず、端末装置１０の出荷後に端末装置１０にインストールされ、端末装置１０内のメモリに記憶される。
【００１７】
実行環境１２には、汎用ドライバＩ／Ｆ（インタフェース）１２１と、アプリ管理部１２２と、認証管理部１２３とが含まれる。
【００１８】
ＯＳ１３には、端末装置１０の出荷時点で、予め汎用ドライバ１３１が組み込まれている。汎用ドライバ１３１には、制御情報操作部１３２と、通信制御部１３３とが含まれる。
【００１９】
アプリケーション１１と、実行環境１２と、ＯＳ１３とにそれぞれ対応する各プログラムが端末装置１０内のメモリに記憶され、端末装置１０内のプロセッサによって各プログラムがメモリから読み出されて実行される。
【００２０】
汎用ドライバ１３１は、複数のアプリで共用される機能である送受信機能を有する。すなわち、通信制御部１３３は、外部デバイス２０の通信制御部２１と接続し、端末装置１０が対応している通信方式に従って、外部デバイス２０との間で、制御命令の送受信を行う。無線での通信方式としては、例えば、Ｗｉ−Ｆｉ（Wireless  Fidelity）、Bluetooth（登録商標）、ＮＦＣ（Near  Field  Communication）等が挙げられる。
【００２１】
制御情報操作部１３２は、ドライバライブラリ１１１からの要求、または、外部デバイス２０の制御情報記憶部２２の記憶内容の変化に基づき、制御情報記憶部２２への制御命令の書き込み、及び、制御情報記憶部２２からの制御命令の読み込みを行う。制御命令の読み書きは、通信制御部１３３と通信制御部２１とを介して行われる。
【００２２】
汎用ドライバＩ／Ｆ１２１は、ドライバライブラリ１１１と制御情報操作部１３２との間のインタフェースである。汎用ドライバＩ／Ｆ１２１は、ドライバライブラリ１１１が、アプリケーション１１が認識可能な形式の制御命令と、外部デバイス２０との受け渡しが可能な形式の制御命令とを相互に変換する際に用いられる。
【００２３】
アプリ管理部１２２は、起動中のアプリケーション１１と、その起動中のアプリケーション１１が使用する外部デバイス２０との対応付けを管理する。
【００２４】
認証管理部１２３は、端末装置１０のユーザからの認証情報が正しいか否かをチェックする。認証管理はＰＩＮコードの入力等による簡易なものでも良いし、ＩＣカード等と通信して認証情報をチェックするもの等でも良い。
【００２５】
ドライバライブラリ１１１は、外部デバイス２０に対するアプリケーション１１からの制御命令を、汎用ドライバＩ／Ｆ１２１を使って、制御情報操作部１３２へ書き込む制御命令に変換する。また、ドライバライブラリ１１１は、制御情報操作部１３２からの制御命令を、汎用ドライバＩ／Ｆ１２１を使って、アプリケーション１１が認識可能な制御命令に変換する。つまり、ドライバライブラリ１１１は、アプリケーション１１が認識可能な形式の制御命令と、外部デバイス２０との受け渡しが可能な形式の制御命令とを相互に変換する。
【００２６】
また、ドライバライブラリ１１１−１〜１１１−Ｎのそれぞれは、Ｎ個の外部デバイス２０のそれぞれに対応して用意される。
【００２７】
一方で、外部デバイス２０は、通信制御部２１と、制御情報記憶部２２と、サービス識別子記憶部２３と、デバイス制御部２４とを有する。
【００２８】
通信制御部２１は、端末装置１０の通信制御部１３３と接続し、外部デバイス２０が対応している通信方式に従って、端末装置１０との間で、制御命令の送受信を行う。無線での通信方式としては、例えば、Ｗｉ−Ｆｉ、Bluetooth（登録商標）、ＮＦＣ等が挙げられ、端末装置１０と外部デバイス２０との双方が対応している通信方式を用いて、端末装置１０と外部デバイス２０との通信が可能になる。
【００２９】
サービス識別子記憶部２３は、外部デバイス２０がどのようなサービスを提供するデバイスであるかを一意に識別可能な「サービス識別子」を記憶する。端末装置１０は、このサービス識別子を見て、外部デバイス２０が提供するサービスを知ることができる。例えば、外部デバイス２０が「プリンタ」である場合はサービス識別子は“１”に、外部デバイス２０が「カードリーダ」である場合はサービス識別子は“２”に設定される。
【００３０】
制御情報記憶部２２は、外部デバイス２０を制御するための制御命令を記憶する。各サービスに応じて制御命令の記録形式が定められている。
【００３１】
デバイス制御部２４は、制御情報記憶部２２に記憶された制御命令に基づき、外部デバイス２０の制御を行う。例えば、デバイス制御部２４は、制御情報記憶部２２のキーＡに命令値“Ｐ”が書き込まれた場合は、動作“Ｘ”を行ってキーＢに結果“Ｑ”を書き込む。
【００３２】
＜通信システム、端末装置及び外部デバイスの動作＞
以下では、外部デバイス２０がプリンタであり、端末装置１０のアプリケーション１１が外部デバイス２０に対して印刷命令を行う場合を一例として説明する。この場合、アプリケーション１１には、ドライバライブラリ１１１として、印刷ドライバライブラリが含まれる。
【００３３】
外部デバイス２０において、サービス識別子記憶部２３には、外部デバイス２０が印刷サービスを行うプリンタであることを示すサービス識別子“１”が設定されて記憶される。
【００３４】
制御情報記憶部２２では、例えば、キーＡ，Ｂ，Ｃ，Ｄに対してそれぞれ対応する記憶領域が割り当てられており、「印刷命令」がキーＡに、「印刷用紙」がキーＢに、「印刷データ」がキーＣに、「印刷結果」がキーＤに記憶される。
【００３５】
デバイス制御部２４は、制御情報記憶部２２のキーＡ，Ｂ，Ｃ，Ｄを監視し、それらのキーに対して読み書きが発生すると、キーＡ，Ｂ，Ｃ，Ｄの各キーの内容に応じて外部デバイス２０を制御する。
【００３６】
端末装置１０において、制御情報操作部１３２では、制御情報記憶部２２と同様に、例えば、キーＡ，Ｂ，Ｃ，Ｄに対してそれぞれ対応する記憶領域が割り当てられている。また、制御情報操作部１３２では、サービス識別子“１”に対応する記憶領域のキーＡ，Ｂ，Ｃ，Ｄにおいて、「印刷命令」がキーＡに、「印刷用紙」がキーＢに、「印刷データ」がキーＣに、「印刷結果」がキーＤに記憶される。
【００３７】
ドライバライブラリ１１１は、アプリケーション１１から与えられた「第１の制御命令」を、外部デバイス２０への受け渡しが可能な形式の「第２の制御命令」に変換して制御情報操作部１３２に書き込む。つまり、「第１の制御命令」は、アプリケーション１１が認識可能な形式の制御命令である。
【００３８】
例えば、アプリケーション１１は、第１の制御命令として「テキストデータをＡ４サイズの用紙に印刷する」という命令をドライバライブラリ１１１に与える。この場合、ドライバライブラリ１１１は、汎用ドライバＩ／Ｆ１２１を用いて、「テキストデータをＡ４サイズの用紙に印刷する」という第１の制御命令を第２の制御命令に変換する。例えば、ドライバライブラリ１１１は、この第１の制御命令を、キーＡに“ｐｒｉｎｔ”，キーＢに“Ａ４”，キーＣに“テキストデータ”を書き込むという第２の制御命令に変換する。そして、ドライバライブラリ１１１は、変換後の第２の制御命令を、汎用ドライバＩ／Ｆ１２１を介して、制御情報操作部１３２の、サービス識別子“１”に対応する記憶領域に書き込む。また、ドライバライブラリ１１１は、制御情報操作部１３２のキーＤの値を監視する。
【００３９】
変換後の第２の制御命令を書き込まれた制御情報操作部１３２は、この第２の制御命令を通信制御部１３３に出力し、通信制御部１３３は、入力された第２の制御命令を外部デバイス２０の通信制御部２１へ送信する。
【００４０】
外部デバイス２０において、第２の制御命令を受信した通信制御部２１は、受信した第２の制御命令を制御情報記憶部２２に書き込む。
【００４１】
つまり、制御情報操作部１３２は、変換後の第２の制御命令を、通信制御部１３３及び通信制御部２１を介して、制御情報記憶部２２に書き込む処理を行う。
【００４２】
デバイス制御部２４は、制御情報記憶部２２が書き換えられたことを検出し、制御情報記憶部２２から第２の制御命令を読み込む。第２の制御命令を読み込んだデバイス制御部２４は、キーＡが“ｐｒｉｎｔ”，キーＢが“Ａ４”であることを認識し、キーＣに含まれる“テキストデータ”をＡ４の用紙に印刷する処理を行う。印刷完了後、デバイス制御部２４は、印刷完了を示す値である“０”を、制御情報記憶部２２のキーＤに書き込む。
【００４３】
端末装置１０において、制御情報操作部１３２は、キーＤの値が“０”に書き換えられたことの通知を、制御情報記憶部２２から通信制御部２１と通信制御部１３３とを介して受信する。制御情報操作部１３２は、この通知を汎用ドライバＩ／Ｆ１２１を介してドライバライブラリ１１１に転送する。
【００４４】
通知を受けたドライバライブラリ１１１は、制御情報操作部１３２に対し、制御情報記憶部２２からキーＤの値を読み込むように、汎用ドライバＩ／Ｆ１２１を介して指示する。
【００４５】
この指示を受けた制御情報操作部１３２は、通信制御部２１及び通信制御部１３３を介して、制御情報記憶部２２からキーＤの値を読み込み、読み込んだキーＤの値“０”を汎用ドライバＩ／Ｆ１２１を介してドライバライブラリ１１１に送る。
【００４６】
キーＤの値が“０”であることを認識したドライバライブラリ１１１は、アプリケーション１１から与えられた「テキストデータをＡ４サイズの用紙に印刷する」という第１の制御命令に対し、「印刷完了」という結果をアプリケーション１１に返す。
【００４７】
＜端末装置の処理＞
図２は、実施例１の端末装置の処理の説明に供するフローチャートである。
【００４８】
ドライバライブラリ１１１は、アプリケーション１１において第１の制御命令が発生するまで待機する（ステップＳ０１：Ｎｏ）。
【００４９】
ドライバライブラリ１１１は、アプリケーション１１において第１の制御命令が発生してアプリケーション１１から第１の制御命令を与えられると（ステップＳ０１：Ｙｅｓ）、第１の制御命令を第２の制御命令に変換して制御情報操作部１３２に書き込む（ステップＳ０２）。
【００５０】
通信制御部１３３は、制御情報操作部１３２に書き込まれた第２の制御命令を外部デバイス２０へ送信する（ステップＳ０３）。
【００５１】
以上のように、本実施例では、端末装置１０は、ドライバをＯＳ１３に組み込むことが可能な権限がユーザに与えられていないＯＳ１３を搭載する端末装置である。汎用ドライバ１３１は、ＯＳ１３に予め組み込まれている。一方で、ドライバライブラリ１１１はアプリケーション１１に含まれている。ドライバライブラリ１１１は、アプリケーション１１が認識可能な形式の第１の制御命令をアプリケーション１１から与えられ、その第１の制御命令を、外部デバイス２０への受け渡しが可能な形式の第２の制御命令に変換する。汎用ドライバ１３１は、ドライバライブラリ１１１から出力される変換後の第２の制御命令を外部デバイス２０へ送信する。
【００５２】
送受信機能は、単に制御命令を送信及び受信する機能であるため、複数のアプリケーション１１で共用することが可能である。そこで、送受信機能を有する汎用ドライバ１３１はＯＳ１３に予め組み込まれている。一方で、各アプリケーション１１が認識可能な形式の第１の制御命令を、外部デバイス２０への受け渡しが可能な形式の第２の制御命令に変換する機能を有するドライバライブラリ１１１は、アプリケーション１１に含まれている。このような制御命令の変換機能は、送受信機能以外の機能の一つである。つまり、本実施例では、複数のアプリケーション１１で共用可能な送受信機能を有する汎用ドライバ１３１を予めＯＳ１３に組み込む一方で、送受信機能以外の機能を有するドライバライブラリ１１１を各アプリケーション１１に含めている。
【００５３】
こうすることで、複数のアプリケーション１１で共用可能な送受信機能を個々のアプリケーション１１が有しなくてもよくなる。このため、アプリケーション１１は、端末装置１０が通信可能な通信方式に依存しなくなる。また、アプリケーション１１の作成者は、端末装置１０が通信可能な通信方式を意識することなく、アプリケーション１１を作成することができる。よって、本実施例によれば、スマートデバイスである端末装置１０から外部デバイス２０を制御可能にするアプリケーション１１の作成労力を軽減することができる。
【００５４】
また、本実施例によれば、アプリケーション１１には外部デバイス２０に対応するドライバライブラリ１１１が含まれている。このため、アプリケーション１１を端末装置１０にインストールさえすれば、別途、外部デバイス２０用のドライバをインストールしなくても、端末装置１０から外部デバイス２０の制御が可能になる。つまり、アプリケーション１１のインストールと同時にドライバライブラリ１１１もインストールされるため、アプリケーション１１の実行前に予めドライバライブラリ１１１をインストールする手間が省ける。このようにして、本実施例では、ユーザはドライバライブラリ１１１の事前のインストールを意識することなく、アプリケーション１１を実行するだけで、外部デバイス２０を制御することができる。
【００５５】
[実施例２]
本実施例は、外部デバイスが端末装置と同様の構成を有する点が実施例１と相違する。
【００５６】
＜通信システム、端末装置及び外部デバイスの構成＞
図３は、実施例２の通信システムの構成例を示す図である。図３に示す通信システム２は、端末装置１０と、外部デバイス３０とを有する。端末装置１０は実施例１と同一のものなので、説明を省略する。
【００５７】
端末装置１０と外部デバイス３０とは、無線または有線で接続され、外部デバイス３０は端末装置１０と通信可能である。
【００５８】
外部デバイス３０によって行われる処理は、上位から順に、制御アプリケーション３１での処理、実行環境３２での処理、ＯＳ３３での処理に大別される。つまり、外部デバイス３０では、端末装置１０と同様に、ソフトウェアは、上位から順に、アプリケーション層、実行環境層、ＯＳ層という３階層の構造を採る。
【００５９】
制御アプリケーション３１には、ドライバ間ブリッジ３１１と、サービス識別子記憶部２３とが含まれる。
【００６０】
実行環境３２には、デバイスドライバＩ／Ｆ３２１と、汎用ドライバＩ／Ｆ３２２とが含まれる。
【００６１】
ＯＳ３３には、デバイスドライバ３３１と、汎用ドライバ３３２とが含まれる。汎用ドライバ３３２は、外部デバイス３０の出荷時点で、予めＯＳ３３に組み込まれている。一方で、デバイスドライバ３３１は、外部デバイス３０の出荷後に、ユーザによってインストールされてＯＳ３３に組み込まれる。汎用ドライバ３３２には、制御情報記憶部２２と、通信制御部２１とが含まれる。デバイスドライバ３３１は、外部デバイス３０のハードウェアを操作するためのプログラムであり、通常は外部デバイス３０のメーカがＯＳ３３に合わせたプログラムをデバイスドライバ３３１として提供している。
【００６２】
制御アプリケーション３１と、実行環境３２と、ＯＳ３３とにそれぞれ対応する各プログラムが外部デバイス３０内のメモリに記憶され、外部デバイス３０内のプロセッサによって各プログラムがメモリから読み出されて実行される。
【００６３】
ここで、ドライバ間ブリッジ３１１は、端末装置１０のドライバライブラリ１１１と同様の機能を有し、汎用ドライバＩ／Ｆ３２２は、端末装置１０の汎用ドライバＩ／Ｆ１２１と同様の機能を有する。また、汎用ドライバ３３２は、端末装置１０の汎用ドライバ１３１と同様の機能を有する。
【００６４】
すなわち、汎用ドライバ３３２は、複数の制御アプリで共用される機能である送受信機能を有し、通信制御部２１が、端末装置１０の通信制御部１３３と接続し、外部デバイス３０が対応している通信方式に従って、端末装置１０との間で、制御命令の送受信を行う。
【００６５】
汎用ドライバＩ／Ｆ３２２は、ドライバ間ブリッジ３１１と制御情報記憶部２２との間のインタフェースである。
【００６６】
デバイスドライバＩ／Ｆ３２１は、ドライバ間ブリッジ３１１とデバイスドライバ３３１との間のインタフェースである。
【００６７】
ドライバ間ブリッジ３１１は、制御情報記憶部２２に書き込まれた制御命令を、デバイスドライバＩ／Ｆ３２１を使って、デバイスドライバ３３１が認識可能な制御命令に変換する。また、ドライバ間ブリッジ３１１は、デバイスドライバ３３１からの制御命令を、汎用ドライバＩ／Ｆ３２２を使って、制御情報記憶部２２へ書き込む制御命令に変換する。つまり、ドライバ間ブリッジ３１１は、デバイスドライバ３３１が認識可能な形式の制御命令と、端末装置１０との受け渡しが可能な形式の制御命令とを相互に変換する。
【００６８】
例えば、制御情報記憶部２２のキーＡに命令値が書き込まれたことを汎用ドライバＩ／Ｆ３２２が検出すると、汎用ドライバＩ／Ｆ３２２は、検出した旨をドライバ間ブリッジ３１１に通知する。ドライバ間ブリッジ３１１は、その通知に基づいて、キーＡに書き込まれた命令値“Ｐ”を制御情報記憶部２２から読み込み、デバイスドライバＩ／Ｆ３２１を用いて、命令値“Ｐ”に対応する命令“Ｘ”に変換し、変換後の命令“Ｘ”をデバイスドライバ３３１に出力する。一方で、デバイスドライバ３３１からの命令“Ｙ”をデバイスドライバＩ／Ｆ３２１が検出すると、デバイスドライバＩ／Ｆ３２１は命令“Ｙ”をドライバ間ブリッジ３１１に通知する。ドライバ間ブリッジ３１１は、汎用ドライバＩ／Ｆ３２２を用いて、命令“Ｙ”を命令値“Ｑ”に変換し、変換後の命令値“Ｑ”を制御情報記憶部２２のキーＢに書き込む。
【００６９】
＜通信システム、端末装置及び外部デバイスの動作＞
以下では、実施例１と同様に、外部デバイス３０がプリンタであり、端末装置１０のアプリケーション１１が外部デバイス３０に対して印刷命令を行う場合を一例として説明する。なお、端末装置１０の動作は、実施例１と同様であるため、説明を省略する。
【００７０】
ドライバ間ブリッジ３１１は、デバイスドライバＩ／Ｆ３２１及び汎用ドライバＩ／Ｆ３２２からの通知を監視する。また、汎用ドライバＩ／Ｆ３２２は、制御情報記憶部２２内のキーＡを監視する。
【００７１】
制御情報記憶部２２のキーＡにデータが書き込まれると、汎用ドライバＩ／Ｆ３２２はその書き込みを検出し、検出した旨をドライバ間ブリッジ３１１に通知する。通知を受けたドライバ間ブリッジ３１１は、キーＡに書き込まれた命令値“ｐｒｉｎｔ”を制御情報記憶部２２から読み込み、命令値“ｐｒｉｎｔ”を、デバイスドライバ３３１が認識可能な“印刷命令”に変換する。また、ドライバ間ブリッジ３１１は、キーＡに関連するキーＢ，Ｃの値を制御情報記憶部２２から読み込む。読み込み後、ドライバ間ブリッジ３１１は、デバイスドライバＩ／Ｆ３２１を介して、“印刷命令”と、キーＢの値である用紙サイズ“Ａ４”と、キーＣの値である印刷対象“テキストデータ”をデバイスドライバ３３１に送信する。デバイスドライバ３３１は、Ａ４の用紙にテキストデータの印刷を行う。
【００７２】
また、以下では、外部デバイス３０がＮＦＣリーダである場合を一例として説明する。
【００７３】
ＮＦＣリーダである外部デバイス３０にＮＦＣタグが近づけられると、デバイスドライバ３３１は、ＮＦＣタグの接近を検出し、ＮＦＣタグの特定の領域に記憶されたデータを読み込んでデバイスドライバＩ／Ｆ３２１に送信する。デバイスドライバＩ／Ｆ３２１は、デバイスドライバ３３１から送信されたデータを所定のフォーマットに整形し、整形後のデータをドライバ間ブリッジ３１１に送信する。例えば、デバイスドライバＩ／Ｆ３２１は、データのうち、先頭から３２バイト目から１２８バイト目までを文字列として解釈してフォーマット整形を行い、フォーマット整形後のデータをドライバ間ブリッジ３１１に送信する。ドライバ間ブリッジ３１１は、汎用ドライバＩ／Ｆ３２２を用いて、フォーマット整形後のデータを制御情報記憶部２２に書き込む形式の制御命令に変換し、制御情報記憶部２２のキーＨに“NFCread”という値、キーＩに上記の文字列を書き込む。
【００７４】
以上のように、本実施例では、外部デバイス３０は端末装置１０と通信可能である。制御情報記憶部２２は、端末装置１０からの制御命令を記憶する。ＯＳ３３には、デバイスドライバ３３１が組み込み可能である。ドライバ間ブリッジ３１１は、制御情報記憶部２２に記憶されている制御命令を、デバイスドライバ３３１が認識可能な制御命令に変換する。
【００７５】
こうして、本実施例では、外部デバイス３０でも、端末装置１０と同様に、制御アプリケーション３１に含まれるドライバ間ブリッジ３１１によって制御命令の変換を行う。こうすることで、端末装置１０のアプリケーションと、外部デバイス３０の制御アプリケーション３１とを協調させることができる。よって、外部デバイス３０の制御に関し、外部デバイス３０のメーカが提供するデバイスドライバ３３１の設計に依存することなく、自由度の高い制御が可能となる。
【００７６】
[実施例３]
本実施例は、端末装置にインストールされるアプリケーションがサーバ装置から配信される点が実施例２と相違する。
【００７７】
＜通信システム、端末装置、外部デバイス及びサーバ装置の構成＞
図４は、実施例３の通信システムの構成例を示す図である。図３に示す通信システム３は、端末装置１０と、外部デバイス３０と、サーバ装置４０とを有する。端末装置１０は実施例１と同一のものなので、説明を省略する。また、外部デバイス３０は実施例２と同一のものなので、説明を省略する。
【００７８】
サーバ装置４０は、端末装置１０と無線または有線で接続され、端末装置１０と通信可能である。
【００７９】
サーバ装置４０は、通信部４１と、アプリ管理部４２と、アプリケーションパッケージ４３とを有する。
【００８０】
アプリケーションパッケージ４３は、サーバ装置４０内の記憶部（図示せず）に記憶されている。記憶部は、例えばＨＤＤ（Hard  disk  drive）、メモリ等により実現される。アプリケーションパッケージ４３には、アプリケーション４４と、そのアプリケーション４４に対応する制御アプリケーション４６とが含まれる。また、アプリケーション４４には、ドライバライブラリ４５が含まれる。アプリケーション４４は、端末装置１０にインストールされたアプリケーション１１に相当し、よって、ドライバライブラリ４５は、ドライバライブラリ１１１に相当する。また、制御アプリケーション４６は、外部デバイス３０にインストールされた制御アプリケーション３１に相当する。
【００８１】
通信部４１は、端末装置１０と接続し、サーバ装置４０が対応している通信方式に従って、端末装置１０との間で通信を行う。無線での通信方式として、例えば、Ｗｉ−Ｆｉ，３Ｇ，ＬＴＥ等が挙げられる。
【００８２】
アプリ管理部４２は、複数のアプリケーションパッケージ４３の中から、端末装置１０の要求に応じたアプリケーションパッケージ４３を選択して、通信部４１を介して端末装置１０に送信する。
【００８３】
＜通信システム、端末装置、外部デバイス及びサーバ装置の動作＞
以下では、端末装置１０のアプリケーション１１と、外部デバイス３０の制御アプリケーション３１とが起動されるまでの動作を一例として説明する。
【００８４】
端末装置１０のアプリ管理部１２２は、サーバ装置４０内にあるアプリケーションパッケージ群を閲覧及び取得する機能を有する。アプリケーションパッケージ群は、複数のアプリケーションパッケージ４３を有する。
【００８５】
ユーザは、アプリ管理部１２２が提供するインタフェースを用いて所望のアプリケーションを選択し、アプリ管理部１２２に対して所望のアプリケーションのダウンロードを指示する。アプリ管理部１２２が提供するインタフェースとしては、例えば、Google  PlayまたはApple  App  Store等のアプリが挙げられる。
【００８６】
ダウンロードを指示されたアプリ管理部１２２は、通信制御部１３３を介して、サーバ装置４０に所望のアプリケーションのダウンロードを要求する。例えば、サーバ装置４０がウェブサーバをベースにして構築されている場合は、“https://appserver.example.com/app＿request?app＿id=123456789”という要求がサーバ装置４０に送信される。
【００８７】
サーバ装置４０の通信部４１は、上記の要求を受信すると、アプリ管理部４２にその要求を転送する。
【００８８】
アプリ管理部４２は、その要求を解釈し、アプリケーションパッケージ群の中から、その要求に応じたアプリケーションパッケージ４３を選択して取得し、取得したアプリケーションパッケージ４３を通信部４１に出力する。アプリ管理部４２は、例えば“https://appserver.example.com/app＿request?app＿id=123456789”という要求を受けた場合、識別番号が“123456789”のアプリケーションパッケージ４３をアプリケーションパッケージ群の中から選択する。
【００８９】
通信部４１は、アプリ管理部４２によって取得されたアプリケーションパッケージ４３を端末装置１０に送信する。
【００９０】
端末装置１０のアプリ管理部１２２は、通信制御部１３３を介してアプリケーションパッケージ４３を受信すると、ドライバライブラリ４５を含むアプリケーション４４をアプリケーションパッケージ４３から取り出してメモリに記憶する。このようにして、ドライバライブラリ４５を含むアプリケーション４４が、サーバ装置４０から端末装置１０にダウンロードされる。ダウンロードされたアプリケーション４４がユーザによって起動されると、アプリケーション４４とドライバライブラリ４５とが実行環境１２上で実行される。なお、アプリケーション４４は、ダウンロード時に自動的に起動されてもよい。
【００９１】
また、アプリ管理部１２２は、制御アプリケーション４６をアプリケーションパッケージ４３から取り出して、取り出した制御アプリケーション４６を通信制御部１３３を介して外部デバイス３０に送信する。
【００９２】
外部デバイス３０は、通信制御部２１を介して受信した制御アプリケーション４６を実行する。
【００９３】
なお、サーバ装置４０が外部デバイス３０とも通信可能な場合は、外部デバイス３０は、端末装置１０を介することなく、サーバ装置４０から直接、制御アプリケーション４６を取得してもよい。
【００９４】
以上のように、本実施例では、サーバ装置４０は端末装置１０と通信可能である。サーバ装置４０は、ドライバライブラリ４５を含むアプリケーション４４を記憶する。通信部４１は、アプリケーション４４を含むアプリケーションパッケージ４３を端末装置１０へ送信する。
【００９５】
こうすることで、端末装置１０のユーザは、必要に応じてアプリケーション４４をサーバ装置４０からダウンロードして実行するだけで、別途、外部デバイス３０用のドライバを端末装置１０にインストールしなくても、端末装置１０から外部デバイス３０の制御が可能になる。
【００９６】
[実施例４]
実施例４では、実施例３の通信システム３の適用例について説明する。図５〜１１，１４，１６は、実施例４の通信システムの動作の説明に供する図である。また、図１２，１３，１５は、実施例４の端末装置の画面表示例を示す図である。図５〜１６は時系列に並んでいる。
【００９７】
図５において、端末１０には、ＪＳ（JavaScript：登録商標）エンジン１０１と、汎用属性情報を記録するためのＧＡＴＴ（General  Attribute  Profile）プラグイン１０２と、ＧＡＴＴ１０３とが、端末装置１０の出荷時点で予めインストールされている。また、端末装置１０はＢＬＥ（Bluetooth  Low  Energy）通信モジュールを有し（Bluetooth：登録商標）、端末装置１０には、ＢＬＥ通信モジュール用のＢＬＥドライバ１０４が、端末装置１０の出荷時点で予めインストールされている。ＪＳエンジン１０１は実行環境１２に相当し、ＧＡＴＴプラグイン１０２は汎用ドライバＩ／Ｆ１２１に相当し、ＧＡＴＴ１０３は制御情報操作部１３２に相当し、ＢＬＥドライバ１０４は通信制御部１３３に相当する。この状態で端末装置１０は、サーバ装置４０に無線で接続し、サーバ装置４０からSE.js４０１をダウンロードして（図６）、端末装置１０にインストールする（図７）。
【００９８】
次いで、図７において、端末装置１０は、個人を識別するための情報を保持するためのＳＥ（Secure  Element）５０とＢＬＥ接続を行う。ＳＥ５０には、ＳＥＰ（Secure  Element  Profile）５０１と、ＧＡＴＴ５０２とがインストールされている。また、ＳＥ５０は、ＢＬＥ通信モジュールを有し、ＳＥ５０には、ＢＬＥ通信モジュール用のＢＬＥドライバ５０３がインストールされている。SE.js４０１は、ＳＥ５０用のドライバライブラリ１１１−１に相当する。
【００９９】
次いで、図８において、端末装置１０は、外部デバイスとしてカードリーダ６０とプリンタ７０とが設置されている店舗内に入る。店舗内に入った端末装置１０は、サーバ装置４０から、Nfc.js４０３とPrinter.js４０４とを含む業務アプリ.js４０２をサーバ装置４０からダウンロードして端末装置１０にインストールする（図９）。業務アプリ.js４０２はアプリケーション１１に相当する。Nfc.js４０３は、カードリーダ６０用のドライバライブラリ１１１−２に相当し、Printer.js４０４は、プリンタ７０用のドライバライブラリ１１１−３に相当する。
【０１００】
カードリーダ６０には、ＮＦＣタグの読み書きを行うためのＮＦＣＰ（NFC  Profile）６０１と、鍵情報の管理を行うためのＫＭＰ（Key  Management  Profile）６０２と、ＧＡＴＴ６０３とがインストールされている。また、カードリーダ６０は、ＢＬＥ通信モジュールを有し、カードリーダ６０には、ＢＬＥ通信モジュール用のＢＬＥドライバ６０４がインストールされている。また、カードリーダ６０には、サービス識別子としてsvid#1が与えられており、svid#1はＮＦＣＰ６０１内に保持されている。
【０１０１】
プリンタ７０には、印刷を行うためのＰＲＩＮＴＰ（Printer  Profile）７０１と、ＫＭＰ７０２と、ＧＡＴＴ７０３とがインストールされている。また、プリンタ７０は、ＢＬＥ通信モジュールを有し、プリンタ７０には、ＢＬＥ通信モジュール用のＢＬＥドライバ７０４がインストールされている。また、プリンタ７０には、サービス識別子としてsvid#2が与えられており、svid#2はＰＲＩＮＴＰ７０１内に保持されている。
【０１０２】
次いで、図１０において、端末装置１０での業務アプリ.js４０２の起動時に、端末装置１０のSE.js４０１と、ＳＥ５０のＳＥＰ５０１との間で、社員ＩＤのチェックが行われる。SE.js４０１は、ＳＥＰ５０１に保持されている社員ＩＤが、SE.js４０１に保持されている社員ＩＤと一致するか否かをチェックし、一致する場合はユーザ認証を“ＯＫ”とし、一致しない場合はユーザ認証を“ＮＧ”とする。
【０１０３】
図１０におけるユーザ認証が“ＯＫ“だった場合、次いで、図１１において、端末装置１０は、外部デバイスをスキャンする。このスキャンに対して、カードリーダ６０はsvid#1を端末装置１０にアドバタイズし、プリンタ７０はsvid#2を端末装置１０にアドバタイズする。アドバタイズの結果、端末装置１０の画面には、図１２に示す表示がなされる。なお、端末装置１０での外部デバイスのスキャン時には、アドバタイズされたすべてのサービス識別子を表示させるのではなく、業務アプリ.js４０２に含まれているドライバライブラリに対応するサービス識別子のみを表示させる。このとき、スキャン対象となるサービス識別子のリストを予め保持しておき、リストに存在するサービス識別子以外のサービス識別子を持つデバイスをスキャンしないようにすることで、端末装置１０の電力消費を抑えるようにしてもよい。そして、ユーザにより接続ボタンがタッチされることにより、端末装置１０は、カードリーダ６０及びプリンタ７０とＢＬＥ接続を開始し、端末装置１０の画面表示は図１３に遷移する。
【０１０４】
次いで、図１４において、端末装置１０は、社員ＩＤを基に、SE.js４０１からＳＥＰ５０１を経由してＳＥ５０に対して一時鍵の発行依頼を行って、ＳＥ５０から一時鍵８１を取得する。端末装置１０は、一時鍵８１から外部デバイス毎に異なるセッション鍵８２，８３を生成する。端末装置１０は、セッション鍵８２を、SE.js４０１からＫＭＰ６０２を経由してカードリーダ６０に送信する。また、端末装置１０は、セッション鍵８３を、SE.js４０１からＫＭＰ７０２を経由してプリンタ７０に送信する。
【０１０５】
次いで、図１５において、端末装置１０の画面上の「カード読取」ボタンがタッチされると、端末装置１０は、Nfc.js４０３からＮＦＣＰ６０１を経由して、カードリーダ６０に対して読取要求を行う。この読取要求に応じて、カードリーダ６０は、読み取ったカード情報を、ＮＦＣＰ６０１からNfc.js４０３を経由して、端末装置１０に送信する（図１６）。読取要求及びカード情報は、セッション鍵８２によって暗号化されている。
【０１０６】
同様に、図１５において、端末装置１０の画面上の「プリントアウト」ボタンがタッチされると、端末装置１０は、Print.js４０４からＰＲＩＮＴＰ７０１を経由して、プリンタ７０に対してプリントアウト要求を行う。このプリントアウト要求に応じて、プリンタ７０は、プリントアウト要求に含まれるテキストデータをプリントアウトする（図１６）。プリントアウト要求は、セッション鍵８３によって暗号化されている。
【０１０７】
[実施例５]
本実施例は、実行環境がドライバライブラリを含む点が実施例１と相違する。
【０１０８】
＜通信システム、端末装置及び外部デバイスの構成＞
図１７は、実施例５の通信システムの構成例を示す図である。図１７に示す通信システム４は、端末装置８０と、外部デバイス２０とを有する。外部デバイス２０は実施例１と同一のものなので、説明を省略する。
【０１０９】
実施例１ではドライバライブラリ１１１がアプリケーション１１に含まれていたのに対し、本実施例では、ドライバライブラリ１１１をアプリケーション１１と独立させた。すなわち、実行環境１２は、ドライバライブラリ１１１を格納するドライバ格納部１２４と、ドライバ格納部１２４に格納されているドライバライブラリ１１１の管理を行うドライバ管理部１２５とを有する。
【０１１０】
本実施例では、アプリケーション１１とドライバライブラリ１１１とは別々にインストールされ、かつ、ドライバライブラリ１１１はアプリケーション１１に含まれるのではなく、ドライバ格納部１２４に格納される。格納されたドライバライブラリ１１１の情報（以下では「ドライバ情報」と呼ぶことがある）はドライバ管理部１２５に登録される。ドライバライブラリ１１１がアンインストールされると、そのアンインストールされたドライバライブラリ１１１の情報がドライバ管理部１２５からも削除される。ドライバ管理部１２５は、ドライバ情報を管理するとともに、ドライバ管理部１２５が記憶するドライバ管理テーブルを用いて、各ドライバライブラリ１１１に対応した外部デバイス２０が端末装置８０の周辺で使用可能か否かを管理する。
【０１１１】
図１８は、実施例５のドライバ管理テーブルの一例を示す図である。ドライバ管理テーブルでは、外部デバイス２０のサービスＩＤと、ドライバライブラリ名と、有効フラグとが互いに対応付けられている。サービスＩＤは外部デバイス２０の種類を表し、例えば、プリンタ、カードリーダ等、外部デバイス２０の種類毎に一意なサービスＩＤが用いられる。図１８に示す例では、svid#1，svid#2，svid#3という３つのサービス（つまり、３種類の外部デバイス）がドライバ管理テーブルに登録されている。例えば、Ａ社のプリンタとＢ社のプリンタとが「プリンタ」というサービスを提供する場合等のように、１つのサービスに対して複数のドライバライブラリが存在する可能性がある。このような場合に、ドライバ管理テーブルでは、svid#1というサービスに対して、driver-1-Aと、driver-1-Bという２つのドライバライブラリが対応付けられて管理されている。
【０１１２】
また、端末装置８０はユーザの移動に伴って移動するものであるため、通常、端末装置８０が現在位置する場所に応じて、使用可能な外部デバイス２０が異なる。そこで、有効フラグは、ドライバ管理テーブルに登録された各ドライバライブラリに対応した外部デバイスが端末装置８０の周辺で使用可能か否か、つまり、有効か否かを示す。所定のタイミング、または、端末装置８０が所定のエリアに入ったときに、実行環境１２は、端末装置８０の周辺の外部デバイスをスキャン（探索）する。スキャンによって見つかった外部デバイスに対応するドライバライブラリがドライバ管理テーブルに登録されていれば、そのドライバライブラリに対応する有効フラグにチェックマークが付され、そのドライバライブラリが使用可能であることが示される。
【０１１３】
実行環境１２は、アプリケーション１１からドライバライブラリ１１１への要求があると、その要求に従ってドライバ管理テーブルを参照し、現在使用可能なドライバライブラリ１１１を選択する。実行環境１２は、選択したドライバライブラリ１１１に、アプリケーション１１からの要求を渡す。
【０１１４】
端末装置８０が以上のような構成を採ることで、アプリケーション１１とドライバライブラリ１１１とを別々のタイミングで端末８０にインストールすることができる。また、実行環境１２が、端末装置８０の周辺で使用可能な外部デバイス２０に対応するドライバライブラリ１１１を自動的に選択してくれる。このため、アプリケーション１１は、端末装置８０が現在位置する場所でどの外部デバイス２０を使用可能かを意識することなく動作することができる。
【０１１５】
以上、実施例１〜５について説明した。
【０１１６】
［他の実施例］
［１］端末装置１０，８０は、例えば、次のようなハードウェア構成により実現することができる。図１９は、端末装置のハードウェア構成例を示す図である。図１９に示すように、端末装置１０は、ハードウェアの構成要素として、プロセッサ１０ａと、メモリ１０ｂと、タッチパネル１０ｃと、通信モジュール１０ｄとを有する。プロセッサ１０ａの一例として、ＣＰＵ（Central  Processing  Unit），ＤＳＰ（Digital  Signal  Processor），ＦＰＧＡ（Field  Programmable  Gate  Array）等が挙げられる。また、端末装置１０は、プロセッサ１０ａと周辺回路とを含むＬＳＩ（Large  Scale  Integrated  circuit）を有してもよい。メモリ１０ｂの一例として、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等のＲＡＭ（Random  Access  Memory），ＲＯＭ（Read  Only  Memory）、フラッシュメモリ等が挙げられる。
【０１１７】
そして、端末装置１０，８０での上記説明における各処理は、各処理に対応するプログラムをプロセッサ１０ａに実行させることによって実現してもよい。例えば、上記説明における各処理に対応するプログラムがメモリ１０ｂに記憶され、プログラムがプロセッサ１０ａによってメモリ１０ｂから読み出されて実行されてもよい。
【０１１８】
［２］外部デバイス２０，３０は、例えば、次のようなハードウェア構成により実現することができる。図２０は、外部デバイスのハードウェア構成例を示す図である。図２０に示すように、外部デバイス２０，３０は、ハードウェアの構成要素として、プロセッサ２０ａと、メモリ２０ｂと、外部処理機構２０ｃと、通信モジュール２０ｄとを有する。プロセッサ２０ａの一例として、ＣＰＵ，ＤＳＰ，ＦＰＧＡ等が挙げられる。また、外部デバイス２０，３０は、プロセッサ２０ａと周辺回路とを含むＬＳＩを有してもよい。メモリ２０ｂの一例として、ＳＤＲＡＭ等のＲＡＭ，ＲＯＭ，フラッシュメモリ等が挙げられる。
【０１１９】
そして、外部デバイス２０，３０での上記説明における各処理は、各処理に対応するプログラムをプロセッサ２０ａに実行させることによって実現してもよい。例えば、上記説明における各処理に対応するプログラムがメモリ２０ｂに記憶され、プログラムがプロセッサ２０ａによってメモリ２０ｂから読み出されて実行されてもよい。
【０１２０】
［３］サーバ装置４０は、例えば、次のようなハードウェア構成により実現することができる。図２１は、サーバ装置のハードウェア構成例を示す図である。図２１に示すように、サーバ装置４０は、ハードウェアの構成要素として、プロセッサ４０ａと、メモリ４０ｂと、ネットワークＩ／Ｆモジュール４０ｃとを有する。プロセッサ４０ａの一例として、ＣＰＵ，ＤＳＰ，ＦＰＧＡ等が挙げられる。また、サーバ装置４０は、プロセッサ４０ａと周辺回路とを含むＬＳＩを有してもよい。メモリ４０ｂの一例として、ＳＤＲＡＭ等のＲＡＭ，ＲＯＭ，フラッシュメモリ等が挙げられる。
【０１２１】
そして、サーバ装置４０での上記説明における各処理は、各処理に対応するプログラムをプロセッサ４０ａに実行させることによって実現してもよい。例えば、上記説明における各処理に対応するプログラムがメモリ２０ｂまたはＨＤＤ等の記憶部に記憶され、プログラムがプロセッサ４０ａによって記憶部から読み出されて実行されてもよい。
【符号の説明】
【０１２２】
１０，８０  端末装置
１１  アプリケーション
１１１−１〜１１１−Ｎ  ドライバライブラリ
１２，３２  実行環境
１２１，３２２  汎用ドライバＩ／Ｆ
１２４  ドライバ格納部
１２５  ドライバ管理部
１３，３３  ＯＳ
１３１，３３２  汎用ドライバ
１３２  制御情報操作部
２０，３０  外部デバイス
２１，１３３  通信制御部
２２  制御情報記憶部
３１  制御アプリケーション
３１１  ドライバ間ブリッジ
３２１  デバイスドライバＩ／Ｆ
４０  サーバ装置
４１  通信部  
４３  アプリケーションパッケージ
【図１】
2015162214.tif 000003
【図２】
2015162214.tif 000004
【図３】
2015162214.tif 000005
【図４】
2015162214.tif 000006
【図５】
2015162214.tif 000007
【図６】
2015162214.tif 000008
【図７】
2015162214.tif 000009
【図８】
2015162214.tif 000010
【図９】
2015162214.tif 000011
【図１０】
2015162214.tif 000012
【図１１】
2015162214.tif 000013
【図１２】
2015162214.tif 000014
【図１３】
2015162214.tif 000015
【図１４】
2015162214.tif 000016
【図１５】
2015162214.tif 000017
【図１６】
2015162214.tif 000018
【図１７】
2015162214.tif 000019
【図１８】
2015162214.tif 000020
【図１９】
2015162214.tif 000021
【図２０】
2015162214.tif 000022
【図２１】
2015162214.tif 000023