(57)【特許請求の範囲】
【請求項１】
情報処理端末が、
ネットワークを介してアプリケーションプログラムを受信し、
前記アプリケーションプログラムに対して設定されている外部機器の種別に属する外部機器であって、当該アプリケーションプログラムの要求の送信先の候補となる外部機器の識別情報の一覧をネットワークを介して取得し、
取得された前記一覧に含まれる識別情報に係る外部機器の中から、当該情報処理端末と通信可能な外部機器を検出し、
検出された外部機器ごとの固有のインタフェースを隠蔽し、複数の前記外部機器に関して共通のインタフェースを前記アプリケーションプログラムに提供するドライバプログラムであって、前記アプリケーションプログラムからの前記共通のインタフェースを介した前記外部機器に対する要求の送信を当該情報処理端末に実行させるドライバプログラムをネットワークを介して取得し、
前記アプリケーションプログラムが起動されると、前記ドライバプログラムを実行する、
処理を実行することを特徴とする連携方法。
【請求項２】
前記ドライバプログラムを取得する処理は、前記検出された外部機器に対応する複数のドライバプログラムのうち、ユーザによる指定に対応するドライバプログラムを取得する、
ことを特徴とする請求項１記載の連携方法。
【請求項３】
前記ドライバプログラムを取得する処理は、取得したドライバプログラムを、前記アプリケーションプログラムとは別に暗号化して記憶部に記憶し、
前記実行する処理は、前記アプリケーションプログラムが起動されると、前記記憶部に記憶されているドライバプログラムを復号して実行する、
ことを特徴とする請求項１又は２記載の連携方法。
【請求項４】
前記受信する処理は、前記情報処理端末の状況に対応するアプリケーションプログラムを受信する、
ことを特徴とする請求項１乃至３いずれか一項記載の連携方法。
【請求項５】
情報処理端末であって、
ネットワークを介してアプリケーションプログラムを受信する受信部と、
前記アプリケーションプログラムに対して設定されている外部機器の種別に属する外部機器であって、当該アプリケーションプログラムの要求の送信先の候補となる外部機器の識別情報の一覧をネットワークを介して取得する第１の取得部と、
取得された前記一覧に含まれる識別情報に係る外部機器の中から、当該情報処理端末と通信可能な外部機器を検出する検出部と、
検出された外部機器ごとの固有のインタフェースを隠蔽し、複数の前記外部機器に関して共通のインタフェースを前記アプリケーションプログラムに提供するドライバプログラムであって、前記アプリケーションプログラムからの前記共通のインタフェースを介した前記外部機器に対する要求の送信を当該情報処理端末に実行させるドライバプログラムをネットワークを介して取得する第２の取得部と、
前記アプリケーションプログラムが起動されると、前記ドライバプログラムを実行する実行部と、
を有することを特徴とする情報処理端末。
【請求項６】
情報処理端末に、
ネットワークを介してアプリケーションプログラムを受信し、
前記アプリケーションプログラムに対して設定されている外部機器の種別に属する外部機器であって、当該アプリケーションプログラムの要求の送信先の候補となる外部機器の識別情報の一覧をネットワークを介して取得し、
取得された前記一覧に含まれる識別情報に係る外部機器の中から、当該情報処理端末と通信可能な外部機器を検出し、
検出された外部機器ごとの固有のインタフェースを隠蔽し、複数の前記外部機器に関して共通のインタフェースを前記アプリケーションプログラムに提供するドライバプログラムであって、前記アプリケーションプログラムからの前記共通のインタフェースを介した前記外部機器に対する要求の送信を当該情報処理端末に実行させるドライバプログラムをネットワークを介して取得し、
前記アプリケーションプログラムが起動されると、前記ドライバプログラムを実行する、
処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連携方法、情報処理端末、及びプログラムに関する。
【背景技術】
【０００２】
最近では、ウェアラブルデバイスが注目を浴び、スマートグラスやスマートウォッチ等、多くの周辺機器が使えるようになってきている。これらの周辺機器については、スマートフォン等との連携が想定されており、例えば、ＢＬＥ（Bluetooth（登録商標） Low Energy）やＷｉ−Ｆｉ（登録商標）ダイレクト等の無線通信を介して外部から呼び出し可能なＡＰＩ（Application Program Interface）を備える。
【０００３】
他方において、スマートフォン等の情報処理端末を使用して業務を行う場合、その時々の業務に適したアプリケーションプログラムが使用されることになる。そこで、便利さの観点又はセキュリティの観点から、そのときどきに適した業務用のアプリを、ユーザのコンテキスト（所在地や時間等）から判断して、サーバからプッシュ配信する技術が提案されている（例えば、特許文献１、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２１６１６３号公報
【特許文献２】特開２０１２−２１６１６２号公報
【特許文献３】特開２００９−２１１７２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ユーザのコンテキストに合わせて配信されるアプリケーションプログラムが、周辺機器と連携する場合、当該アプリケーションプログラムは、当該周辺機器のＡＰＩを呼び出せばよい。
【０００６】
しかしながら、各周辺機器のＡＰＩは、必ずしも同じではない。例えば、同じプリンタ同士であっても、機種等が異なれば、ＡＰＩも異なる可能性が有る。そうすると、例えば、コンテキストが時間帯によって評価される場合、或る時間帯において配信されたアプリケーションプログラムが利用を予定している周辺機器と、当該時間帯において、当該アプリケーションプログラムの配信先の情報処理端末の周囲に存在する周辺機器との機種が異なれば、ユーザは、当該アプリケーションプログラムを有効に使用することが困難となってしまう。
【０００７】
そこで、一側面では、情報処理端末のアプリケーションプログラムと外部機器との連携に関する柔軟性を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
一つの案では、情報処理端末は、ネットワークを介してアプリケーションプログラムを受信し、当該情報処理端末と通信可能な外部機器を検出し、検出された外部機器に対応するドライバプログラムであって、前記アプリケーションプログラムからの前記外部機器に対する要求の送信を当該情報処理端末に実行させるドライバプログラムをネットワークを介して取得し、前記アプリケーションプログラムが起動されると、前記ドライバプログラムを実行する、処理を実行する。
【発明の効果】
【０００９】
一側面によれば、情報処理端末のアプリケーションプログラムと外部機器との連携に関する柔軟性を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】第一の実施の形態におけるシステム構成例を示す図である。
【図２】第一の実施の形態におけるユーザ端末のハードウェア構成例を示す図である。
【図３】第一の実施の形態における連携管理サーバ及びユーザ端末の機能構成例を示す図である。
【図４】第一の実施の形態におけるユーザ端末及び連携管理サーバが実行する処理手順の一例を説明するための図である。
【図５】第一の実施の形態におけるアイコン画像の表示例を示す図である。
【図６】第一の実施の形態におけるＷｅｂアプリのＨＴＭＬファイルと共通ライブラリとの定義内容の一例を示す図である。
【図７】発見用情報記憶部の構成例を示す図である。
【図８】ドライバ管理情報記憶部の構成例を示す図である。
【図９】第一の実施の形態における共通ライブラリの第二の定義内容の例を示す図である。
【図１０】第二の実施の形態における連携管理サーバ及びユーザ端末の機能構成例を示す図である。
【図１１】第二の実施の形態におけるユーザ端末及び連携管理サーバが実行する処理手順の一例を説明するための図である。
【図１２】対応情報記憶部の構成例を示す図である。
【図１３】第二の実施の形態におけるアイコン画像の表示例を示す図である。
【図１４】第二の実施の形態における共通ライブラリの定義内容の例を示す図である。
【図１５】第三の実施の形態における共通ライブラリの定義内容の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、第一の実施の形態におけるシステム構成例を示す図である。図１において、連携管理サーバ２０は、無線ＬＡＮ（Local Area Network）等の無線通信、又は移動体通信網等を介して１以上のユーザ端末１０と通信可能である。また、ユーザ端末１０は、周辺機器３０ａ及び周辺機器３０ｂ等、１以上の周辺機器３０と、無線ＬＡＮ又はＢｌｕｅＴｏｏｔｈ（登録商標）等の無線通信を介して通信可能である。なお、説明の便宜上、図１に示されるシステム構成は、或る企業内（以下、「企業Ａ」という。）において構築されていることとする。
【００１２】
ユーザ端末１０は、ユーザによって直接操作される端末である。ユーザ端末１０の一例として、スマートフォン及びタブレット端末等のスマート端末が挙げられる。但し、ＰＣ（Personal Computer）等、他の種類の情報処理端末であって、無線通信が可能な情報処理端末が、ユーザ端末１０として利用されてもよい。本実施の形態において、ユーザ端末１０は、無線通信を介して周辺機器３０と連携した処理を実行する。なお、ユーザ端末１０のユーザは、例えば、企業Ａの従業員である。
【００１３】
周辺機器３０は、ユーザ端末１０と無線通信を介して連携する外部機器の一例である。例えば、プリンタ、デジタルカメラ、ストレージ（記憶装置）、スマートグラス、又はスマートウォッチ等が、周辺機器３０として用いられてもよい。又は、エアコン等の家電機器が、周辺機器３０として用いられてもよい。
【００１４】
連携管理サーバ２０は、各ユーザ端末１０のユーザのコンテキストに対応したＷｅｂアプリケーションプログラム（以下、「Ｗｅｂアプリ」という。）を、各ユーザ端末１０に配信するコンピュータである。コンテキストとは、例えば、現在の所在地、現在の日時、現在の天候等、ユーザが置かれた状況又はユーザの状態又は状況を示す概念である。なお、ユーザ端末１０は、ユーザによって携帯される。したがって、ユーザのコンテキストは、ユーザ端末１０のコンテキストであるともいえる。連携管理サーバ２０は、また、各ユーザ端末１０に配信されたＷｅｂアプリが周辺機器３０と連携（周辺機器３０にアクセス）するために必要な情報の管理も行う。
【００１５】
なお、Ｗｅｂアプリとは、ＨＴＭＬ（HyperText Markup Language）、ＣＳＳ（Cascading Style Sheets）、及びＪａｖａＳｃｒｉｐｔ（登録商標）等を構成要素とするアプリケーションプログラムである。例えば、本実施の形態におけるＷｅｂアプリは、Ｐａｃｋａｇｅｄ  Ｗｅｂ  Ａｐｐｓ形式（http://www.w3.org/TR/widgets/参照）のＷｅｂアプリであってもよい。
【００１６】
図２は、第一の実施の形態におけるユーザ端末のハードウェア構成例を示す図である。図２において、ユーザ端末１０は、ＣＰＵ１０１、メモリ１０２、補助記憶装置１０３、タッチパネル１０４、及び無線通信装置１０５等を有する。
【００１７】
補助記憶装置１０３は、ユーザ端末１０にインストールされたプログラム等を記憶する。メモリ１０２は、プログラムの起動指示があった場合に、補助記憶装置１０３からプログラムを読み出して記憶する。ＣＰＵ１０１は、メモリ１０２に記憶されたプログラムに従ってユーザ端末１０に係る機能を実現する。
【００１８】
タッチパネル１０４は、入力機能と表示機能との双方を備えた電子部品であり、情報の表示や、ユーザからの入力の受け付け等を行う。タッチパネル１０４は、表示装置１１１及び入力装置１１２等を含む。
【００１９】
表示装置１１１は、液晶ディスプレイ等であり、タッチパネル１０４の表示機能を担う。入力装置１１２は、表示装置１１１に対する接触物の接触を検出するセンサを含む電子部品である。接触物の接触の検出方式は、静電方式、抵抗膜方式、又は光学方式等、公知の方式のいずれであってもよい。なお、接触物とは、タッチパネル１０４の接触面（表面）に接触する物体をいう。斯かる物体の一例として、ユーザの指や専用又は一般のペン等が挙げられる。無線通信装置１０５は、無線通信を行うために必要とされる電子部品である。
【００２０】
図３は、第一の実施の形態における連携管理サーバ及びユーザ端末の機能構成例を示す図である。図３において、ユーザ端末１０は、端末通信部１２１、ＵＩ制御部１２２、アプリ受信部１２３、アプリ起動部１２４、共通ライブラリ実行部１２５、発見用情報取得部１２６、機器検出部１２７、ドライバ取得部１２８、及びドライバ実行部１２９等を有する。これら各部は、ユーザ端末１０にインストールされた１以上のプログラムがＣＰＵ１０１に実行させる処理により実現される。ユーザ端末１０は、また、アプリ記憶部１４１及びドライバ記憶部１４２等を有する。これら各記憶部は、例えば、補助記憶装置１０３を用いて実現可能である。
【００２１】
端末通信部１２１は、ユーザ端末１０による無線通信を制御する。ＵＩ制御部１２２は、連携管理サーバ２０から配信されるＷｅｂアプリ等に関して表示制御を行う。アプリ受信部１２３は、連携管理サーバ２０から配信されるＷｅｂアプリを受信する。受信されたＷｅｂアプリは、アプリ記憶部１４１に記憶される。アプリ起動部１２４は、アプリ受信部１２３によって受信されたＷｅｂアプリを起動する。
【００２２】
共通ライブラリ実行部１２５は、Ｗｅｂアプリに添付されている共通ライブラリの実行を制御する。共通ライブラリとは、周辺機器３０の機能及び用途等に基づく種別（以下、「機器種別」という。）ごとに共通なライブラリをいう。周辺機器３０の使用を予定しているＷｅｂアプリには、当該周辺機器３０が属する機器種別に対応する共通ライブラリが添付されている。共通ライブラリは、当該共通ライブラリが対応する機器種別に属する各周辺機器３０を無線通信を介して検出（発見）するたに必要な、各周辺機器３０の識別情報（以下、「発見用情報」という。）の連携管理サーバ２０からの取得、発見用情報を利用した周辺機器３０の検出（発見）、検出された周辺機器３０に対応するドライバの取得等を、ユーザ端末１０に実行させるための定義を含む。本実施の形態において、共通ライブラリは、Ｗｅｂアプリとの親和性を考慮して、ＪａｖａＳｃｒｉｐｔ（登録商標）によって記述される。なお、発見用情報は、例えば、ＳＳＩＤ又はＭＡＣアドレス等である。また、ドライバとは、Ｗｅｂアプリからの周辺機器３０に対する要求の送信を、ユーザ端末１０に実行させるためのプログラム（ドライバプログラム）である。具体的には、ドライバは、周辺機器３０に固有のＡＰＩ（Application Program Interface）を隠蔽し、抽象度の高いＡＰＩを上位のプログラム（本実施の形態ではＷｅｂアプリ）に提供する。例えば、或るプリンタに対応するドライバは、ｐｒｉｎｔ（ｕｒｌ）という関数（ＡＰＩ）を提供してもよい。当該関数は、例えば、引数ｕｒｌに指定されたＵＲＬに対応するコンテンツを印刷するといった関数である。この場合、当該ドライバには、引数に指定されたコンテンツのダウンロード処理と、当該当該ドライバが対応するプリンタにコンテンツを印刷させるための処理とが定義される。ここで、当該ドライバに対応するプリンタに印刷させるための処理は、当該プリンタが公開している、当該プリンタに固有のＡＰＩを呼び出す処理である。各機種のプリンタに対応するドライバが、ｐｒｉｎｔ（ｕｒｌ）を提供すれば、或るＷｅｂアプリは、所定のタイミング（例えば、Ｗｅｂアプリが表示させるボタンが押下されたタイミング）でｐｒｉｎｔ（ｕｒｌ）を呼び出すようなスクリプトを含むことで、当該Ｗｅｂアプリについて、特定の機種のプリンタへの依存度を低下させることができる。すなわち、当該Ｗｅｂアプリは、ドライバさえ入れ替えれば、同じソースコードで、複数の機種のプリンタに同様の処理を実行させることができる。なお、ｐｒｉｎｔ（ｕｒｌ）という関数は、例示に過ぎない。また、１つのドライバには、複数種類の関数が含まれていてもよい。なお、本実施の形態において、ドライバは、ＪａｖａＳｃｒｉｐｔ（登録商標）によって記述される。
【００２３】
発見用情報取得部１２６、機器検出部１２７、ドライバ取得部１２８、及びドライバ実行部１２９は、共通ライブラリにおいて使用されるＡＰＩに対する実装部分である。すなわち、発見用情報取得部１２６は、共通ライブラリからの、発見用情報の取得要求を示すＡＰＩの呼び出しに応じ、アプリ受信部１２３によって受信されたＷｅｂアプリが使用を予定している機器種別に属する周辺機器３０に係る発見用情報の一覧を連携管理サーバ２０から取得する。ここでは、ユーザ端末１０と現在通信可能であるか否かを問わず、当該機器種別に属する全ての周辺機器３０の発見用情報が取得される。すなわち、発見用情報取得部１２６によって取得される発見用情報は、Ｗｅｂアプリからの要求の送信先の候補となる周辺機器３０の発見用情報である。
【００２４】
機器検出部１２７は、共通ライブラリからの、周辺機器３０の検出要求を示すＡＰＩの呼び出しに応じ、発見用情報取得部１２６によって取得された発見用情報を利用して、ユーザ端末１０が現在使用可能な（通信可能な）周辺機器３０を検出する。ドライバ取得部１２８は、共通ライブラリからの、ドライバの取得要求を示すＡＰＩの呼び出しに応じ、機器検出部１２７によって検出された周辺機器３０に対するドライバを、連携管理サーバ２０から取得する。取得されたドライバは、ドライバ記憶部１４２に記憶される。ドライバ実行部１２９は、ドライバの実行要求を示すＡＰＩの呼び出しに応じ、ドライバ取得部１２８によって取得されたドライバを実行する。
【００２５】
連携管理サーバ２０は、サーバ通信部２１、アプリ記憶部２２、発見用情報記憶部２３、ドライバ管理情報記憶部２４、及びドライバ記憶部２５等を有する。
【００２６】
サーバ通信部２１は、各ユーザ端末１０との通信を制御すると共に、各ユーザ端末１０から要求された処理を実行する。アプリ記憶部２２は、コンテキストを示す情報に関連付けてＷｅｂアプリを記憶する。発見用情報記憶部２３は、企業Ａ内に設置等されている各周辺機器３０の発見用情報を記憶する。ドライバ管理情報記憶部２４は、ドライバごとに、当該ドライバの保存先を示すＵＲＬ（Uniform Resource Locator）を記憶する。ドライバ記憶部２５は、各ドライバを記憶する。
【００２７】
以下、ユーザ端末１０及び連携管理サーバ２０が実行する処理手順について説明する。図４は、第一の実施の形態におけるユーザ端末及び連携管理サーバが実行する処理手順の一例を説明するための図である。
【００２８】
ステップＳ２０１において、連携管理サーバ２０のサーバ通信部２１は、ユーザ端末１０のコンテキストに対応したＷｅｂアプリをアプリ記憶部２２から取得し、取得されたＷｅｂアプリを、ユーザ端末１０に配信する。
【００２９】
例えば、日時のように、連携管理サーバ２０において検知可能なコンテキストであって、各ユーザ端末１０に対して共通のコンテキストについては、連携管理サーバ２０が検知してもよい。一方、ユーザ端末１０の所在地等、ユーザ端末１０ごとに異なり、ユーザ端末１０でないと検知が困難なコンテキストについては、ユーザ端末１０から連携管理サーバ２０に通知が行われてもよい。所在地は、緯度及び経度等によって識別されてもよいし、例えば、ユーザ端末１０が通信可能なアクセスポイントのＳＳＩＤ（Service Set Identifier）等に基づいて識別されてもよい。
【００３０】
続いて、ユーザ端末１０のアプリ受信部１２３は、連携管理サーバ２０から配信されたＷｅｂアプリを受信し、受信したＷｅｂアプリを、アプリ記憶部１４１に記憶する（Ｓ１０１）。アプリ受信部１２３は、Ｗｅｂアプリをアプリ記憶部１４１に記憶する際、当該Ｗｅｂアプリを暗号化してもよい。なお、Ｗｅｂアプリは、例えば、書庫ファイルに書庫化されている。当該書庫ファイル内に、ＨＴＭＬファイル、ＣＳＳファイル、スクリプトファイル、及びアイコンファイル等が含まれている。
【００３１】
続いて、ＵＩ制御部１２２は、アプリ受信部１２３によって受信されたＷｅｂアプリのアイコンファイルが示すアイコン画像を、表示装置１１１に表示する（Ｓ１０２）。
【００３２】
図５は、第一の実施の形態におけるアイコン画像の表示例を示す図である。図５には、表示装置１１１の画面（例えば、ホーム画面）に、Ｗｅｂアプリのアイコン画像ｇ１が表示された例が示されている。
【００３３】
アイコン画像ｇ１がユーザによって操作されることにより、Ｗｅｂアプリの起動が指示されると、アプリ起動部１２４は、当該Ｗｅｂアプリを起動する（Ｓ１０３）。Ｗｅｂアプリの起動に応じ、共通ライブラリ実行部１２５は、ＷｅｂアプリのＨＴＭＬファイル内の定義に従って、共通ライブラリを読み込み、当該共通ライブラリを実行する（Ｓ１０４）。なお、共通ライブラリは、例えば、Ｗｅｂアプリの書庫ファイル内に格納されている１以上のスクリプトファイルのうちの一つのスクリプトファイルである。但し、共通ライブラリは、予めユーザ端末１０に記憶されていてもよい。
【００３４】
図６は、第一の実施の形態におけるＷｅｂアプリのＨＴＭＬファイルと共通ライブラリとの定義内容の一例を示す図である。図６において、定義ｄ１は、ＷｅｂアプリのＨＴＭＬファイル内の定義の一部を示す。定義ｄ１においては、「/common/printer.js」というファイル名のスクリプトを実行すべきことが示されている。当該スクリプトが、共通ライブラリである。
【００３５】
定義ｄ２は、共通ライブラリの定義内容である。定義ｄ２に含まれている、記述ｄ２１、記述ｄ２２、記述ｄ２３、記述ｄ２４のそれぞれは、発見用情報取得部１２６、機器検出部１２７、ドライバ取得部１２８、又はドライバ実行部１２９に対応するＡＰＩ（Application Program Interface）である。
【００３６】
すなわち、共通ライブラリ実行部１２５は、記述ｄ２１のｇｅｔＩｎｆｏメソッドを検出すると、当該メソッドに対応する発見用情報取得部１２６を呼び出す。発見用情報取得部１２６は、ｇｅｔＩｎｆｏメソッドの第１引数の指定されている機器種別（図６の例では、「ｐｒｉｎｔｅｒ」）に属する周辺機器３０に関する発見用情報の一覧を、連携管理サーバ２０から取得する（Ｓ１０５）。具体的には、発見用情報取得部１２６が、機器種別（「ｐｒｉｎｔｅｒ」）を指定して、発見用情報の取得要求を連携管理サーバ２０に送信する。連携管理サーバ２０のサーバ通信部２１は、指定された機器種別に属する周辺機器３０の発見用情報を発見用情報記憶部２３を参照して特定する。
【００３７】
図７は、発見用情報記憶部の構成例を示す図である。図７に示されるように、発見用情報記憶部２３には、機器種別に対応付けられて、当該機器種別に属する１以上の周辺機器３０の発見用情報が記憶されている。各周辺機器３０は、企業Ａ内のいずれかの場所に設置等されている周辺機器３０である。なお、図７において、「・・・」は、１つの周辺機器３０に係る発見用情報を示す。「，」は、各発見用情報の区切りを示す。
【００３８】
サーバ通信部２１が、発見用情報の取得要求に指定された機器種別に対応付けられている発見用情報の一覧を返信すると（Ｓ２０２）、発見用情報取得部１２６は、当該一覧を受信する。なお、当該一覧は、記述ｄ２１における変数ｄｅｖｓ内に格納される。
【００３９】
続いて、共通ライブラリ実行部１２５は、記述ｄ２２のｄｉｓｃｏｖｅｒメソッドを検出すると、機器検出部１２７を呼び出す。機器検出部１２７は、当該呼び出しに応じ、ステップＳ１０６及びＳ１０７を実行する。ステップＳ１０６において、機器検出部１２７は、ｄｉｓｃｏｖｅｒメソッドの第１引数に指定されている変数ｄｅｖｓに格納されている各発見用情報（ＳＳＩＤ又はＭＡＣアドレス等）を用いて、周辺機器３０の検出処理（発見処理）を実行する（Ｓ１０６）。変数ｄｅｖｓに格納されている各発見用情報とは、ステップＳ１０５において取得された発見用情報である。ＳＳＩＤ又はＭＡＣアドレス等を用いた周辺機器３０の検出処理は、公知の無線技術等を用いて実行されればよい。例えば、ＳＳＩＤ又はＭＡＣアドレスへのアクセスが試行され、当該アクセスに成功すれば、当該ＳＳＩＤ又はＭＡＣアドレスに対応する周辺機器３０は検出されたこととされ、当該アクセスに失敗すれば、当該ＳＳＩＤ又はＭＡＣアドレスに対応する周辺機器３０は検出されなかったこととされてもよい。周辺機器３０の検出処理によって、ユーザ端末１０が現時点において使用可能な周辺機器３０が特定される。なお、Ｗｉ−Ｆｉ（登録商標）ダイレクトに対応した周辺機器３０であれば、Ｗｉ−Ｆｉ（登録商標）のＳＳＩＤが、発見用情報として使用可能である。ＢＬＥ（Bluetooth（登録商標） Low Energy）に対応した周辺機器３０であれば、ＭＡＣアドレス又は周辺機器３０の機器名が、発見用情報として使用可能である。
【００４０】
続いて、機器検出部１２７は、検出された周辺機器３０ごとに、当該周辺機器３０の発見用情報に基づいて、当該周辺機器３０に対するドライバの保存先を示すＵＲＬ（Uniform Resource Locator）を、連携管理サーバ２０から取得する（Ｓ１０７）。例えば、機器検出部１２７は、検出された周辺機器３０に係る発見用情報を指定して、当該周辺機器３０に対するドライバのＵＲＬ（以下、「ドライバＵＲＬ」という。）の取得要求を、連携管理サーバ２０に送信する。連携管理サーバ２０のサーバ通信部２１は、当該取得要求に指定されている発見用情報に対応するドライバＵＲＬを、ドライバ管理情報記憶部２４から取得する。
【００４１】
図８は、ドライバ管理情報記憶部の構成例を示す図である。図８に示されるように、ドライバ管理情報記憶部２４は、各発見用情報に対応付けて、当該発見用情報に係る周辺機器３０に対するドライバＵＲＬを記憶する。発見用情報は、周辺機器３０の機体ごとに異なるため、ドライバ管理情報記憶部２４には、周辺機器３０の機体ごとのドライバＵＲＬが記憶されている。但し、複数の周辺機器３０に対して共通のドライバが有効である場合、当該複数の周辺機器３０に係る発見用情報に対して、共通のドライバＵＲＬが記憶されていてもよい。
【００４２】
サーバ通信部２１が、ドライバＵＲＬの取得要求に指定された発見用情報に対応付けられているドライバＵＲＬを返信すると（Ｓ２０３）、機器検出部１２７は、当該ドライバＵＲＬを受信する。なお、発見用情報ごとに受信されたドライバＵＲＬの一覧は、記述ｄ２２の変数ｄｒｉｖｅｒ＿ｕｒｌに格納される。
【００４３】
続いて、共通ライブラリ実行部１２５は、記述ｄ２３のｇｅｔＤｒｉｖｅｒメソッドを検出すると、ドライバ取得部１２８を呼び出す。ドライバ取得部１２８は、ｇｅｔＤｒｉｖｅｒメソッドの第１引数に指定されている変数ｄｒｉｖｅｒ＿ｕｒｌに格納されているドライバＵＲＬによって識別される保存先から、ドライバを取得（ダウンロード）する（Ｓ１０８）。変数ｄｒｉｖｅｒ＿ｕｒｌに格納されているドライバＵＲＬとは、ステップＳ１０７において取得されたドライバＵＲＬである。例えば、ドライバ取得部１２８は、当該ドライバＵＲＬ宛に、ドライバの取得要求を送信する。連携管理サーバ２０のサーバ通信部２１は、当該ドライバＵＲＬに対応付けられてドライバを、ドライバ記憶部２５から取得し、取得されたドライバを返信する（Ｓ２０４）。ドライバ取得部１２８は、当該ドライバを受信する。受信されたドライバは、ドライバ記憶部１４２に記憶される。ドライバ記憶部１４２に記憶されたドライバの識別名（以下、「ドライバ名」という。）は、記述ｄ２３のｄｒｉｖｅｒ変数に格納される。なお、ドライバ取得部１２８は、受信されたドライバを暗号化してドライバ記憶部１４２に記憶してもよい。すなわち、ドライバは、Ｗｅｂアプリとは別に暗号化されて記憶される。
【００４４】
続いて、共通ライブラリ実行部１２５は、記述ｄ２４のｅｖａｌメソッドを検出すると、ドライバ実行部１２９を呼び出す。ドライバ実行部１２９は、ｅｖａｌメソッドの引数であるｄｒｉｖｅｒ変数に格納されているドライバ名によって特定されるドライバを、ドライバ記憶部１４２からメモリ１０２に読み込み、当該ドライバに定義されている処理を実行する（Ｓ１０９）。この際、ドライバが暗号化されて記憶されている場合には、ドライバ実行部１２９は、当該ドライバを復号してメモリ１０２に読み込む。
【００４５】
ドライバに定義されている処理の実行により、Ｗｅｂアプリは、現時点においてユーザ端末１０と通信可能な周辺機器３０を、当該ドライバを介して使用することができる。
【００４６】
なお、読み込み対象とするドライバを、対応情報記憶部１４３に基づいて動的に変更するのは、ネイティブなアプリケーションでは困難である。ネイティブなアプリケーションは、既にコンパイルが行われている状態で配布されるため、配布先において処理内容を変更するのが困難だからである。一方、Ｗｅｂアプリの場合は、ドライバをスクリプト言語で作成することが可能であるため、読み込み対象とするドライバを動的に変更することができる。
【００４７】
なお、上記では、共通ライブラリにおいて、発見用情報取得部１２６、機器検出部１２７、及びドライバ取得部１２８のそれぞれごとに、各部の機能を呼び出すためのＡＰＩ（メソッド）が異なる例について説明したが、これら各部の機能を連続して実行させるためのＡＰＩが定義されてもよい。この場合、共通ライブラリの定義内容は、例えば、図９に示されるようなものでもよい。
【００４８】
図９は、第一の実施の形態における共通ライブラリの第二の定義内容の例を示す図である。図９中、図６と同一部分には同一符号を付し、その説明は省略する。
【００４９】
図９において、定義ｄ３は、共通ライブラリの第二の定義例である。定義ｄ３において、記述ｄ３１は、発見用情報取得部１２６、機器検出部１２７、及びドライバ取得部１２８のそれぞれの機能を連続して実行させるためのメソッドである。すなわち、記述ｄ３１のｇｅｔＤｒｉｖｅｒメソッドが呼び出されると、ステップＳ１０５〜Ｓ１０８が実行される。このように、共通ライブラリにおいて使用可能な各ＡＰＩを、どのような機能単位で区別するかについては、適宜決定されてよい。
【００５０】
なお、上記では、１つの周辺機器３０に対してドライバが１つ用意される例を示したが、１つの周辺機器３０に対して複数種類のドライバが用意されていてもよい。１つの周辺機器３０に対応する複数種類のドライバは、例えば、提供するＡＰＩの種類及び数が異なる。例えば、第１のドライバは、ドライバのデータサイズ（ユーザ端末１０の記憶容量の消費量の削減）を優先して、周辺機器３０を利用するために必要最小眼のＡＰＩ（例えば、周辺機器３０がプリンタであれば、モノクロ片面印刷に関するＡＰＩ）を提供する。第２のドライバは、更に、高度な機能（例えば、カラー印刷、両面印刷等）に関するＡＰＩを提供する。更に高度な機能に関するＡＰＩを提供する第３以降のドライバが用意されてもよい。
【００５１】
１つの周辺機器３０に対して複数種類のドライバが用意される場合、例えば、ステップＳ１０２において表示されたアイコン画像ｇ１が操作されると、ＵＩ制御部１２２は、ドライバの選択基準をユーザに選択させるメニューを表示してもよい。メニュー項目は、例えば、「サイズ優先」、「機能優先」等である。ステップＳ１０７において、機器検出部１２７は、検出された周辺機器３０に係る発見用情報と、当該メニューにおいて選択されたメニュー項目に対応した値（以下、「選択基準」という。）を指定して、当該周辺機器３０に対するドライバの取得要求を、連携管理サーバ２０に送信する。連携管理サーバ２０のサーバ通信部２１は、当該取得要求に指定されている発見用情報及び選択基準に対応するドライバＵＲＬを、ドライバ管理情報記憶部２４から取得する。すなわち、この場合、連携管理サーバ２０のドライバ管理情報記憶部２４には、発見用情報及び選択基準ごとに対応付けられて、ドライバＵＲＬが記憶されている。
【００５２】
上述したように、第一の実施の形態によれば、ユーザ端末１０は、Ｗｅｂアプリの受信に応じて、当該Ｗｅｂアプリが使用又は連携を予定している機器種別に係る周辺機器３０のうち、現時点においてユーザ端末１０が通信可能な周辺機器３０に対応するドライバを自動的にダウンロードして、実行する。ここで、当該周辺機器３０に固有のＡＰＩは、ドライバによって隠蔽される。したがって、Ｗｅｂアプリは、周辺機器３０の機種等に対して平滑化されたドライバの関数を呼び出すことで、周辺機器３０と連携することができる。すなわち、或るＷｅｂアプリの配信先のユーザ端末１０においてたまたま通信可能な周辺機器３０であっても、当該Ｗｅｂアプリから使用可能となる可能性を高めることができる。このように、本実施の形態によれば、Ｗｅｂアプリと周辺機器３０との連携に関する柔軟性を向上させることができる。
【００５３】
また、第一の実施の形態によれば、周辺機器３０ごとに、いずれのドライバが必要であるのかを示す情報や、ドライバ自体を予めユーザ端末１０に記憶しておく必要性を低減することができる。したがって、ユーザ端末１０において、このような情報やドライバ自体を記憶するための記憶容量の消費を抑制することができる。
【００５４】
次に、第二の実施の形態について説明する。第二の実施の形態では第一の実施の形態と異なる点について説明する。第二の実施の形態において、特に言及されない点については、第一の実施の形態と同様でもよい。
【００５５】
第一の実施の形態では、Ｗｅｂアプリの起動に応じて、周辺機器３０の検出及びドライバの取得等が実行される例について説明したが、第二の実施の形態では、ユーザ端末１０においてＷｅｂアプリの起動前に（すなわち、Ｗｅｂアプリの受信に応じて）、周辺機器３０の検出及びドライバの取得等が行われる例について説明する。
【００５６】
図１０は、第二の実施の形態における連携管理サーバ及びユーザ端末の機能構成例を示す図である。図１０中、図３と同一又は対応する部分には同一符号を付し、その説明は、適宜省略する。図１０において、ユーザ端末１０は、更に、アプリ解析部１３０及び対応情報記憶部１４３を有する。
【００５７】
アプリ解析部１３０は、アプリ受信部１２３によって受信されたＷｅｂアプリの定義内容（ソースコード）を解析して、当該Ｗｅｂアプリが使用を予定している周辺機器３０の機器種別を特定する。なお、アプリ解析部１３０は、ユーザ端末１０にインストールされたプログラムが、ＣＰＵ１０１に実行させる処理により実現される。
【００５８】
対応情報記憶部１４３は、アプリ受信部１２３によって受信されたＷｅｂアプリと、機器検出部１２７によって検出された周辺機器３０と、ドライバ取得部１２８によって取得されたドライバとの対応情報を記憶する。対応情報記憶部１４３は、例えば、補助記憶装置１０３を用いて実現可能である。
【００５９】
図１１は、第二の実施の形態におけるユーザ端末及び連携管理サーバが実行する処理手順の一例を説明するための図である。図１１中、図４と同一ステップには同一ステップ番号を付し、その説明は省略する。
【００６０】
アプリ受信部１２３によってＷｅｂアプリが受信されると（Ｓ１０１）、アプリ解析部１３０は、当該ＷｅｂアプリのＨＴＭＬファイルを解析して、当該Ｗｅｂアプリが使用を予定している周辺機器３０の機器種別を特定する（Ｓ１１１）。第二の実施の形態において、ＷｅｂアプリのＨＴＭＬファイルの定義内容は、第一の実施の形態と同様でよい。但し、第二の実施の形態では、共通ライブラリのファイル名が、機器種別を示すこととする。例えば、図６の定義ｄ１には、共通ライブラリのファイルパス名が、「common/printer.js」であることが定義されている。アプリ解析部１３０は、当該ファイルパス名に含まれるファイル名「ｐｒｉｎｔｅｒ．ｊｓ」から拡張子を除くことによって得られる文字列「ｐｒｉｎｔｅｒ」を機器種別として特定する。なお、ＨＴＭＬファイルは、テキストデータであるため、斯かる解析は容易である。又は、Ｗｅｂアプリが、Ｐａｃｋａｇｅｄ  Ｗｅｂ  Ａｐｐｓ形式である場合、Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄｏｃｕｍｅｎｔに機器種別が記述されてもよい。例えば、Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄｏｃｕｍｅｎｔ内に、以下のような記述が含められてもよい。
<feature name = "http://example.org/device/printer"/>
この例では、機器種別はＵＲＬによって示されるため、解析は更に容易となる。
【００６１】
続くステップＳ１０５ａ〜Ｓ１０８ａは、基本的に、図４のステップＳ１０５〜Ｓ１０８と同様の処理である。但し、第二の実施の形態ではステップＳ１０５ａ〜Ｓ１０８ａが共通ライブラリに基づいて実行される処理ではない点が、第一の実施の形態と異なる。すなわち、第二の実施の形態において、ステップＳ１１１、及びステップＳ１０５ａ〜Ｓ１０８ａは、Ｗｅｂアプリが受信された際の既定の処理として実行される。換言すれば、第二の実施の形態において、発見用情報取得部１２６、機器検出部１２７、及びドライバ取得部１２８は、共通ライブラリに定義されたメソッドの呼び出しに応じてではなく、Ｗｅｂアプリが受信された際の既定の処理として、ステップＳ１０５ａ〜Ｓ１０８ａを実行する。第二の実施の形態では、Ｗｅｂアプリの実行前に（Ｗｅｂアプリの受信に応じて）、周辺機器３０の検出及びドライバの取得等を行うところ、Ｗｅｂアプリの実行前においては、当該Ｗｅｂアプリの一部を構成するスクリプトである共通ライブラリを実行することが困難なためである。
【００６２】
なお、ステップＳ１０８ａでは、ドライバと共に、ドライバのアイコンファイルが受信されてもよい。ドライバのアイコンファイルは、ドライバと共に書庫ファイルの書庫化されていてもよい。また、ステップＳ１０８と同様、取得されたドライバは、暗号化されてドライバ記憶部１４２に記憶されてもよい。
【００６３】
ステップＳ１０８ａに続いて、ドライバ取得部１２８は、ステップＳ１０１において受信されたＷｅｂアプリの識別情報であるアプリＩＤと、ステップＳ１０６ａにおいて検出された周辺機器３０の識別情報である機器ＩＤと、ステップＳ１１１において特定された機器種別と、ステップＳ１０８ａにおいて取得されたドライバの識別情報であるドライバ名とを対応付けて、対応情報記憶部１４３に記憶する（Ｓ１１２）。
【００６４】
図１２は、対応情報記憶部の構成例を示す図である。図１２に示されるように、対応情報記憶部１４３は、アプリＩＤ、機器ＩＤ、機器種別、及びドライバ名を対応付けて記憶する。ここで、アプリＩＤは、例えば、Ｗｅｂアプリのファイル名でもよい。また、機器ＩＤは、当該機器ＩＤに係る周辺機器３０に対する発見用情報と同じ値でもよい。ドライバ名は、ドライバのファイル名でもよい。
【００６５】
対応情報記憶部１４３は、また、使用対象の項目を有する。使用対象の項目は、ステップＳ１０８ａにおいて、１つのＷｅｂアプリに関して複数の周辺機器３０が検出された場合に、いずれの周辺機器３０を使用対象とするのかを示す情報である。「Ｙｅｓ」は、使用対象であることを意味する。「Ｎｏ」は、使用対象でないことを意味する。例えば、最初に検出された周辺機器３０が、自動的に使用対象とされてもよい。
【００６６】
続いて、ＵＩ制御部１２２は、ステップＳ１０１において受信されたＷｅｂアプリのアイコン画像と、当該Ｗｅｂアプリに関して使用対象とされているドライバのアイコン画像とを表示装置１１１に表示させる（Ｓ１１３）。Ｗｅｂアプリに関して使用対象とされているドライバとは、対応情報記憶部１４３における当該Ｗｅｂアプリに関するレコードにおいて、使用対象の項目の値が「Ｙｅｓ」であるドライバである。
【００６７】
図１３は、第二の実施の形態におけるアイコン画像の表示例を示す図である。図１３中、図５と同一部分には同一符号が付されている。
【００６８】
図１３において、（１）が、ステップＳ１１３に対応した状態を示す。（１）においては、Ｗｅｂアプリのアイコン画像ｇ１に重畳するように、ドライバのアイコン画像ｇ２が表示されている。
【００６９】
ここで、例えば、同じ機器種別に関して複数の周辺機器３０が検出された場合に、アイコン画像ｇ１に重畳されているアイコン画像ｇ２が操作（タッチ）されると、ＵＩ制御部１２２は、（２）に示されるように、アイコン画像ｇ１に係るＷｅｂアプリに対応付けられている各ドライバをメニュー項目とするメニューｍ１を表示させる。なお、Ｗｅｂアプリに対応付けられている各ドライバとは、対応情報記憶部１４３において、当該ＷｅｂアプリのアプリＩＤに対応付けられてドライバ名が記憶されているドライバをいう。
【００７０】
メニューｍ１において、いずれかのメニュー項目が選択されると、ＵＩ制御部１２２は、（３）に示されるように、当該メニュー項目に係るドライバに対応するアイコン画像ｇ３を、アイコン画像ｇ１に重畳させる。この際、ＵＩ制御部１２２は、対応情報記憶部１４３において、アイコンｇ２に対応するドライバの使用対象の項目の値を「Ｎｏ」として、アイコンｇ３に対応するドライバの使用対象の項目の値を「Ｙｅｓ」とする。
【００７１】
ステップＳ１１３においてアイコン画像ｇ１が表示されることにより、ユーザは、Ｗｅｂアプリの利用が可能となる。そこで、ユーザによってアイコン画像ｇ１が操作されることにより、Ｗｅｂアプリの起動が指示されると、アプリ起動部１２４は、当該Ｗｅｂアプリを起動する（Ｓ１２１）。Ｗｅｂアプリの起動に応じ、共通ライブラリ実行部１２５は、ＷｅｂアプリのＨＴＭＬファイル内の定義ｄ１に従って、共通ライブラリを読み込み、当該共通ライブラリを実行する（Ｓ１２２）。
【００７２】
図１４は、第二の実施の形態における共通ライブラリの定義内容の例を示す図である。図１４において、定義ｄ４は、共通ライブラリの定義内容の一例である。なお、図１４の記述ｄ４１におけるｇｅｔＤｒｉｖｅｒメソッドと、図９の記述ｄ３１におけるｇｅｔＤｒｉｖｅｒメソッドとの実装（呼び出しに応じて実行される処理）が異なる。すなわち、図９と図１４とでは、便宜上、同一のメソッド名が使用されているが、これらのメソッドは、相互に機能が異なるメソッドである。
【００７３】
共通ライブラリ実行部１２５は、定義ｄ４内の記述ｄ４１のｇｅｔＤｒｉｖｅｒメソッドを検出すると、当該メソッドに対応するドライバ取得部１２８を呼び出す。ドライバ取得部１２８は、対応情報記憶部１４３を参照して、読み込み対象のドライバを特定する（Ｓ１２３）。具体的には、起動されたＷｅｂアプリのアプリＩＤと当該メソッドの第１引数に指定されている機器種別との組み合わせに対応付けられて対応情報記憶部１４３に記憶されているドライバ名のうち、使用対象の項目の値が「Ｙｅｓ」であるドライバ名が特定される。
【００７４】
続いて、ドライバ取得部１２８は、特定されたドライバ名に係るドライバを、ドライバ記憶部１４２からメモリ１０２に読み込む（Ｓ１２４）。この際、ドライバが暗号化されて記憶されている場合には、ドライバ実行部１２９は、当該ドライバを復号してメモリ１０２に読み込む。読み込まれたドライバのドライバ名は、記述ｄ４１のｄｒｉｖｅｒ変数に格納される。なお、共通ライブラリは、Ｗｅｂアプリの一部であるため、起動されたＷｅｂアプリのアプリＩＤは、共通ライブラリから呼び出されているドライバ取得部１２８において特定可能である。
【００７５】
続いて、共通ライブラリ実行部１２５は、記述ｄ４２のｅｖａｌメソッドを検出すると、ドライバ実行部１２９を呼び出す。ドライバ実行部１２９は、ｄｒｉｖｅｒ変数に格納されているドライバ名によって特定されるドライバであって、ステップＳ１２４においてメモリ１０２に読み込まれているドライバに定義されている処理を実行する（Ｓ１２５）。その結果、Ｗｅｂアプリは、現時点においてユーザ端末１０と通信可能な周辺機器３０を利用することができる。
【００７６】
上述したように、第二の実施の形態によれば、第一の実施の形態と異なる構成及び異なる処理手順によって、第一の実施の形態と同様の効果を得ることができる。
【００７７】
次に、第三の実施の形態について説明する。第三の実施の形態では第二の実施の形態と異なる点について説明する。第三の実施の形態において、特に言及されない点については、第二の実施の形態と同様でもよい。
【００７８】
第三の実施の形態では、Ｗｅｂアプリの受信に応じて直ちに周辺機器３０の検出処理は実行されない。すなわち、第二の実施の形態では、Ｗｅｂアプリが受信されたその場で周辺機器３０が使用されることを想定したため、Ｗｅｂアプリの受信に応じて周辺機器３０の検出処理が実行される例を説明した。しかし、例えば、オフィスでＷｅｂアプリを受信して、オフィスとは異なる場所で当該Ｗｅｂアプリと周辺機器３０とを連携させたい場合も考えられる。例えば、ユーザが、出張先においてＷｅｂアプリを使用して印刷を行いたい場合であって、出張先では、連携管理サーバ２０とユーザ端末１０との通信が出来ないような場合である。
【００７９】
このような場合には、図１１のステップＳ１０１〜Ｓ１１３のうちのステップＳ１０６ａ以外が、オフィス等、連携管理サーバ２０との通信が可能な環境で実行されればよい。ステップＳ１０７ａ及びＳ１０８ａでは、ステップＳ１１１において特定された機器種別に属する全ての周辺機器３０に対応するドライバが取得されてもよいし、一部の周辺機器３０に対応するドライバが取得されてもよい。例えば、当該機器種別に属する全ての周辺機器３０に係るドライバの中から、ダウンロード対象とするドライバが、ユーザによって選択されてもよい。ユーザは、出張先におけるプリンタに対応する可能性が高いドライバを選択すればよい。したがって、第三の実施の形態のステップＳ１１３の終了時においては、オフィスにおいて受信されたＷｅｂアプリが使用を予定している機器種別に属する全て又は一部の各周辺機器３０に係る機器種別、機器ＩＤ、及びドライバ名等が、当該ＷｅｂアプリのアプリＩＤに対応付けられて対応情報記憶部１４３に記憶された状態となる。
【００８０】
ユーザが、出張先においてＷｅｂアプリを起動すると、図１１のステップＳ１２１以降が実行される。この際、例えば、ステップＳ１２２に続いてステップＳ１０７ａ及びＳ１０８ａが実行されてもよい。このような処理手順を実現するために、共通ライブラリは、例えば、図１５に示されるように定義されていてもよい。
【００８１】
図１５は、第三の実施の形態における共通ライブラリの定義内容の例を示す図である。定義ｄ５において、記述ｄ５１は、ステップＳ１０６ａに対応し、記述ｄ５２は、ステップＳ１２３及びＳ１２４に対応し、記述ｄ５３は、ステップＳ１２５に対応する。
【００８２】
すなわち、共通ライブラリ実行部１２５は、記述ｄ５１のｄｉｓｃｏｖｅｒメソッドを検出すると、当該メソッドに対応する機器検出部１２７を呼び出す。機器検出部１２７は、ｄｉｓｃｏｖｅｒメソッドの第１引数に指定された「ｐｒｉｎｔｅｒ」によって識別される機器種別に該当する周辺機器３０の検出処理を実行する。検出された周辺機器３０の機器ＩＤは、記述ｄ５１のｄｅｖｉｃｅ＿ｉｄに格納される。
【００８３】
続いて、共通ライブラリ実行部１２５は、記述ｄ５２のｇｅｔＤｒｉｖｅｒメソッドを検出すると、当該メソッドに対応するドライバ取得部１２８を呼び出す。ドライバ取得部１２８は、ｇｅｔＤｒｉｖｅｒメソッドの第１引数に指定されている機器ＩＤと、起動されているＷｅｂアプリのアプリＩＤとに対応するドライバ名を、対応情報記憶部１４３（図１２）を参照して特定する。ドライバ取得部１２８は、当該ドライバ名に係るドライバを、ドライバ記憶部１４２からメモリ１０２に読み込む。当該ドライバ名は、変数ｄｒｉｖｅｒに格納される。
【００８４】
続いて、記述ｄ５３に基づいて、図１１のステップＳ１２５と同様の処理が実行される。
【００８５】
上述したように、第三の実施の形態によれば、ユーザ端末１０におけるＷｅｂアプリの受信時期と、周辺機器３０の検出時期とが異なる場合でも、Ｗｅｂアプリと周辺機器３０との連携を実現することができる。
【００８６】
なお、上記各実施の形態では、Ｗｅｂアプリとドライバとが分離されて配信される例について説明したが、Ｗｅｂアプリとドライバとは、一体的に配信されてもよい。例えば、ドライバは、Ｗｅｂアプリと同じ書庫ファイル内に含まれて配信されてもよい。この場合、連携管理サーバ２０は、ユーザ端末１０のコンテキスト（所在地等）に対応したドライバを推定し、当該ドライバを当該コンテキストに応じて配信されるＷｅｂアプリに添付してもよい。この場合、複数の周辺機器３０のそれぞれに対応する複数のドライバがＷｅｂアプリに添付されてもよい。ユーザ端末１０側では、検出された周辺機器３０に対応するドライバが読み込まれ、実行されればよい。
【００８７】
また、上記各実施の形態は、Ｗｅｂアプリ以外のアプリケーションプログラムに関して適用されてもよい。
【００８８】
なお、上記各実施の形態において、ユーザ端末１０は、情報処理端末の一例である。周辺機器３０は、外部機器の一例である。アプリ受信部１２３は、受信部の一例である。機器検出部１２７は、検出部の一例である。ドライバ取得部１２８は、取得部の一例である。ドライバ実行部１２９は、実行部の一例である。
【００８９】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００９０】
以上の説明に関し、更に以下の項を開示する。
（付記１）
情報処理端末が、
ネットワークを介してアプリケーションプログラムを受信し、
当該情報処理端末と通信可能な外部機器を検出し、
検出された外部機器に対応するドライバプログラムであって、前記アプリケーションプログラムからの前記外部機器に対する要求の送信を当該情報処理端末に実行させるドライバプログラムをネットワークを介して取得し、
前記アプリケーションプログラムが起動されると、前記ドライバプログラムを実行する、
処理を実行することを特徴とする連携方法。
（付記２）
前記アプリケーションプログラムからの要求の送信先の候補となる外部機器の識別情報をネットワークを介して取得する処理を前記情報処理端末が実行し、
前記検出する処理は、取得された識別情報に係る外部機器のうち、当該情報処理端末と通信可能な外部機器を検出する、
ことを特徴とする付記１記載の連携方法。
（付記３）
前記取得する処理は、前記検出された外部機器に対応する複数のドライバプログラムのうち、ユーザによる指定に対応するドライバプログラムを取得する、
ことを特徴とする付記１又は２記載の連携方法。
（付記４）
前記ドライバプログラムを取得する処理は、取得したドライバプログラムを、前記アプリケーションプログラムとは別に暗号化して記憶部に記憶し、
前記実行する処理は、前記アプリケーションプログラムが起動されると、前記記憶部に記憶されているドライバプログラムを復号して実行する、
ことを特徴とする付記１乃至３いずれか一項記載の連携方法。
（付記５）
前記受信する処理は、前記情報処理端末の状況に対応するアプリケーションプログラムを受信する、
ことを特徴とする付記１乃至４いずれか一項記載の連携方法。
（付記６）
情報処理端末であって、
ネットワークを介してアプリケーションプログラムを受信する受信部と、
当該情報処理端末と通信可能な外部機器を検出する検出部と、
検出された外部機器に対応するドライバプログラムであって、前記アプリケーションプログラムからの前記外部機器に対する要求の送信を当該情報処理端末に実行させるドライバプログラムをネットワークを介して取得する取得部と、
前記アプリケーションプログラムが起動されると、前記ドライバプログラムを実行する実行部と、
を有することを特徴とする情報処理端末。
（付記７）
前記アプリケーションプログラムからの要求の送信先の候補となる外部機器の識別情報をネットワークを介して取得する第二の取得部を有し、
前記検出部は、前記第二の取得部によって取得された識別情報に係る外部機器のうち、当該情報処理端末と通信可能な外部機器を検出する、
ことを特徴とする付記６記載の情報処理端末。
（付記８）
前記取得部は、前記検出された外部機器に対応する複数のドライバプログラムのうち、ユーザによる指定に対応するドライバプログラムを取得する、
ことを特徴とする付記６又は７記載の情報処理端末。
（付記９）
前記取得部は、取得したドライバプログラムを、前記アプリケーションプログラムとは別に暗号化して記憶部に記憶し、
前記実行部は、前記アプリケーションプログラムが起動されると、前記記憶部に記憶されているドライバプログラムを復号して実行する、
ことを特徴とする付記６乃至８いずれか一項記載の情報処理端末。
（付記１０）
前記受信部は、前記情報処理端末の状況に対応するアプリケーションプログラムを受信する、
ことを特徴とする付記６乃至９いずれか一項記載の情報処理端末。
（付記１１）
情報処理端末に、
ネットワークを介してアプリケーションプログラムを受信し、
当該情報処理端末と通信可能な外部機器を検出し、
検出された外部機器に対応するドライバプログラムであって、前記アプリケーションプログラムからの前記外部機器に対する要求の送信を当該情報処理端末に実行させるドライバプログラムをネットワークを介して取得し、
前記アプリケーションプログラムが起動されると、前記ドライバプログラムを実行する、
処理を実行させることを特徴とするプログラム。
（付記１２）
前記アプリケーションプログラムからの要求の送信先の候補となる外部機器の識別情報をネットワークを介して取得する処理を前記情報処理端末に実行させ、
前記検出する処理は、取得された識別情報に係る外部機器のうち、当該情報処理端末と通信可能な外部機器を検出する、
ことを特徴とする付記１１記載のプログラム。
（付記１３）
前記取得する処理は、前記検出された外部機器に対応する複数のドライバプログラムのうち、ユーザによる指定に対応するドライバプログラムを取得する、
ことを特徴とする付記１１又は１２記載のプログラム。
（付記１４）
前記ドライバプログラムを取得する処理は、取得したドライバプログラムを、前記アプリケーションプログラムとは別に暗号化して記憶部に記憶し、
前記実行する処理は、前記アプリケーションプログラムが起動されると、前記記憶部に記憶されているドライバプログラムを復号して実行する、
ことを特徴とする付記１１乃至１３いずれか一項記載のプログラム。
（付記１５）
前記受信する処理は、前記情報処理端末の状況に対応するアプリケーションプログラムを受信する、
ことを特徴とする付記１１乃至１４いずれか一項記載のプログラム。
【符号の説明】
【００９１】
１０          ユーザ端末
２０          連携管理サーバ
２１          サーバ通信部
２２          アプリ記憶部
２３          発見用情報記憶部
２４          ドライバ管理情報記憶部
２５          ドライバ記憶部
３０          周辺機器
１０１        ＣＰＵ
１０２        メモリ
１０３        補助記憶装置
１０４        タッチパネル
１０５        無線通信装置
１１１        表示装置
１１２        入力装置
１２１        端末通信部
１２２        ＵＩ制御部
１２３        アプリ受信部
１２４        アプリ起動部
１２５        共通ライブラリ実行部
１２６        発見用情報取得部
１２７        機器検出部
１２８        ドライバ取得部
１２９        ドライバ実行部
１３０        アプリ解析部
１４１        アプリ記憶部
１４２        ドライバ記憶部
１４３        対応情報記憶部
【図１】
0006638189.tif 000002
【図２】
0006638189.tif 000003
【図３】
0006638189.tif 000004
【図４】
0006638189.tif 000005
【図５】
0006638189.tif 000006
【図６】
0006638189.tif 000007
【図７】
0006638189.tif 000008
【図８】
0006638189.tif 000009
【図９】
0006638189.tif 000010
【図１０】
0006638189.tif 000011
【図１１】
0006638189.tif 000012
【図１２】
0006638189.tif 000013
【図１３】
0006638189.tif 000014
【図１４】
0006638189.tif 000015
【図１５】
0006638189.tif 000016