(57)【特許請求の範囲】
【請求項１】
１以上のＷｅｂアプリケーションがインストールされたコンピュータが、
無線通信を介して外部機器が検出されると、前記１以上のＷｅｂアプリケーションの中で前記外部機器にアクセスが許可されるＷｅｂアプリケーションを、外部機器ごとに当該外部機器へのアクセスが許可されるＷｅｂアプリケーションを示す情報を記憶した第一の記憶部を参照して特定し、
検出された外部機器への要求を、特定されたＷｅｂアプリケーションから受け付けるためのインタフェースを生成し、
前記特定されたＷｅｂアプリケーションのコンテンツデータと、前記インタフェースとに同じＩＰアドレスを割り当て、
前記コンテンツデータが読み出されて起動されたＷｅｂアプリケーションから、前記インタフェースを介して前記要求を受信し、当該要求を無線通信を介して前記検出された外部機器に送信する、
処理を実行することを特徴とする要求送信方法。
【請求項２】
前記割り当てる処理は、前記Ｗｅｂアプリケーションごとに異なるＩＰアドレスを割り当てる、
ことを特徴とする請求項１記載の要求送信方法。
【請求項３】
前記生成する処理は、無線通信を介して検出された外部機器ごとに前記インタフェースを生成する、
ことを特徴とする請求項１又は２記載の要求送信方法。
【請求項４】
前記コンピュータが、
前記インタフェースの呼び出しを前記コンピュータに実行させるための情報が記述されたプログラムコードにおいて、呼び出し対象のインタフェースの識別情報が指定される部分に、当該プログラムコードに関連付けられている識別情報に係る外部機器に対して生成されたインタフェースの識別情報を適用し、
前記Ｗｅｂアプリケーションの構成要素として、前記プログラムコードを追加する、
処理を実行することを特徴とする請求項１乃至３いずれか一項記載の要求送信方法。
【請求項５】
１以上のＷｅｂアプリケーションがインストールされた情報処理装置であって、
無線通信を介して外部機器が検出されると、前記１以上のＷｅｂアプリケーションの中で前記外部機器にアクセスが許可されるＷｅｂアプリケーションを、外部機器ごとに当該外部機器へのアクセスが許可されるＷｅｂアプリケーションを示す情報を記憶した第一の記憶部を参照して特定する特定部と、
検出された外部機器への要求を、特定されたＷｅｂアプリケーションから受け付けるためのインタフェースを生成する生成部と、
前記特定されたＷｅｂアプリケーションのコンテンツデータと、前記インタフェースとに同じＩＰアドレスを割り当てる割当部と、
前記コンテンツデータが読み出されて起動されたＷｅｂアプリケーションから、前記インタフェースを介して前記要求を受信し、当該要求を無線通信を介して前記検出された外部機器に送信する送信部と、
を有することを特徴とする情報処理装置。
【請求項６】
１以上のＷｅｂアプリケーションがインストールされたコンピュータに、
無線通信を介して外部機器が検出されると、前記１以上のＷｅｂアプリケーションの中で前記外部機器にアクセスが許可されるＷｅｂアプリケーションを、外部機器ごとに当該外部機器へのアクセスが許可されるＷｅｂアプリケーションを示す情報を記憶した第一の記憶部を参照して特定し、
検出された外部機器への要求を、特定されたＷｅｂアプリケーションから受け付けるためのインタフェースを生成し、
前記特定されたＷｅｂアプリケーションのコンテンツデータと、前記インタフェースとに同じＩＰアドレスを割り当て、
前記コンテンツデータが読み出されて起動されたＷｅｂアプリケーションから、前記インタフェースを介して前記要求を受信し、当該要求を無線通信を介して前記検出された外部機器に送信する、
処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、要求送信方法、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
スマートフォン等のスマート端末と連携可能な外部機器が増加している。スマート端末と連携可能な外部機器の一例として、スマート端末のカメラ機能、ストレージ機能、又はディスプレイ機能等拡張可能な周辺機器が挙げられる。以下、スマート端末と連携可能な外部機器を「ガジェット」という。
【０００３】
ガジェットをスマート端末に接続する際には認証が必要となる。例えば、無線ＬＡＮタイプのガジェットであれば、ユーザによってスマート端末に手入力されるＳＳＩＤ及びパスワードを用いて認証が行われる。また、ＮＦＣ（Near field communication）タッチや、同時ボタン方式によって認証が行われるガジェットも有る。認証に利用されたパスワードは、スマート端末とガジェットとの間で記憶され、再接続時には認証は不要となる。
【０００４】
他方において、ガジェットと接続してサービスを提供するアプリケーションに関して変化が起きている。例えば、アプリケーションの開発言語が、Ｊａｖａ（登録商標）、Ｏｂｊｅｃｔ−Ｃ、又はＣ＋＋等のネイティブ（Native）言語から、ＨＴＭＬ（HyperText Markup Language）、ＣＳＳ（Cascading Style Sheets）、及びＪａｖａＳｃｒｉｐｔ（登録商標）等にシフトしつつある。ＨＴＭＬ、ＣＳＳ、及びＪａｖａＳｃｒｉｐｔ（登録商標）等は、ＯＳ（Operating System）等のプラットフォームに対する依存度が低く、１つのソースコードで、複数のプラットフォームに対応することが可能だからである。なお、ＨＴＭＬ、ＣＳＳ、及びＪａｖａＳｃｒｉｐｔ（登録商標）等が構成するアプリケーションは、Ｗｅｂアプリケーション（以下、「Ｗｅｂアプリ」という。）と呼ばれている。Ｗｅｂアプリは、Ｈｏｓｔｅｄ  ＡｐｐｓとＰａｃｋａｇｅｄ  Ｗｅｂ  ａｐｐｓとに分類される。
【０００５】
Ｈｏｓｔｅｄ  Ａｐｐｓは、ＷｅｂブラウザがＷｅｂサーバにアクセスすると、Ｗｅｂサーバから返信されるＷｅｂアプリである。一方、Ｐａｃｋａｇｅｄ  Ｗｅｂ  ａｐｐｓは、Ｗｅｂアプリを構成するＨＴＭＬ、ＣＳＳ、及びＪａｖａＳｃｒｉｐｔ（登録商標）等のファイルが、パッケージという形式にまとめられて配布され、ユーザの端末のローカル環境にインストールされるＷｅｂアプリである。Ｐａｃｋａｇｅｄ  Ｗｅｂ  ａｐｐｓは、Ｗｅｂブラウザ上で動作する点において、Ｈｏｓｔｅｄ  Ａｐｐｓと共通する。但し、Ｐａｃｋａｇｅｄ  Ｗｅｂ  ａｐｐｓは、オフラインのＷｅｂアプリとして実現されることも可能である。以下において、単に「Ｗｅｂアプリ」として言及されるアプリケーションは、Ｐａｃｋａｇｅｄ  Ｗｅｂ  ａｐｐｓである。
【０００６】
Ｗｅｂアプリの開発言語とされているＨＴＭＬ、ＣＳＳ、及びＪａｖａＳｃｒｉｐｔ（登録商標）等は、インターネット環境において発展してきた言語であるため、サービスＡＰＩ（Application Program Interface）の呼び出し等にＩＰアドレスが関わっている。ガジェットに関しても、このような背景に鑑みて、ＩＰアドレスに基づくＡＰＩ（ＲＥＳＴ（Representational State Transfer）ベースのＡＰＩ）が公開されている。例えば、以下のＵＲＬ（Uniform Resource Locator）は、それぞれ、ガジェットが公開しているＡＰＩの一例である。
【０００７】
ｈｔｔｐ：／／＜ガジェットのｉｐアドレス＞／ａｐｉ３／  ＰＷ？ｘ＝＜ｐｗｄ＞＆ｍ＝１
ｈｔｔｐ：／／＜ガジェットのｉｐアドレス＞／ａｐｉ／１．０／
ＰＯＳＴメッセージで送るデータ  ｛"ｍｅｔｈｏｄ"："ｓｈｏｔ"，"ｐａｒａｍｓ"，［］｝
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００６−５２４９７３号公報
【特許文献２】特開２０１０−１５２９１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
無線ＬＡＮタイプのガジェットのＡＰＩは、無線ＬＡＮ経由で呼び出される。したがって、ＷｅｂアプリがガジェットのＡＰＩを呼び出すためには、当該Ｗｅｂアプリには無線ＬＡＮへのアクセス権が必要とされる。スマート端末においては、アプリケーションごとに、無線ＬＡＮへのアクセス権がユーザによって設定される。但し、Ｗｅｂアプリの場合、その実行基盤であるＷｅｂブラウザがアクセス権の授与対象となる。したがって、無線ＬＡＮへのアクセス権がＷｅｂブラウザに与えられていれば、Ｗｅｂブラウザ上で動作する全てのＷｅｂアプリがガジェットにアクセス可能となる。
【００１０】
しかしながら、或るガジェットへアクセス可能なＷｅｂアプリを、特定のＷｅｂアプリにのみ限定したい場合も考えられる。例えば、企業内において利用されるガジェット内に、企業情報等の機密情報が記憶されている場合、不特定のＷｅｂアプリに当該ガジェットへのアクセスが許可されてしまうと、機密情報の漏洩の虞がある。
【００１１】
Ｗｅｂアプリによる外部へのアクセスを制限するための一つの手法としてＣＳＰ（Content Security Policy）が有る。ＣＳＰでは、各Ｗｅｂアプリがアクセス可能なＩＰアドレスの一覧がホワイトリストとして設けられる。ＣＳＰは、Ｐａｃｋａｇｅｄ  Ｗｅｂ  Ａｐｐｓでも標準採用されている。そこで、ＣＳＰを用いて、或るガジェットへのアクセスを特定のＷｅｂアプリにのみ限定することが考えられる。すなわち、一部のＷｅｂアプリのホワイトリストに当該ガジェットのＩＰアドレスを含め、他のＷｅｂアプリのホワイトリストには当該ＩＰアドレスを含めないことで、当該ガジェットにアクセス可能なＷｅｂアプリを、特定のＷｅｂアプリに限定することができる。
【００１２】
しかしながら、ガジェットによっては、そのＩＰアドレス体系が、スマート端末とガジェットとが接続するたびに変化する場合が有る。このようなガジェットのＩＰアドレスは、スマート端末との接続が完了するまで判明しない。したがって、ＣＳＰで保護されたＷｅｂアプリに関して、このようなガジェットへのアクセスを許可するためには、ＩＰアドレスが判明するたびに（すなわち、接続が行われるたびに）当該ＩＰアドレスが当該Ｗｅｂアプリのホワイトリストに設定される必要が有る。ホワイトリストの更新には、当該ホワイトリストに対応するＷｅｂアプリの停止が要求される。したがって、スマート端末と接続するガジェットの数が増加すると、Ｗｅｂアプリが停止する頻度が高くなり、スマート端末の操作性が低下する可能性が有る。
【００１３】
そこで、一側面では、Ｗｅｂアプリケーションと外部機器との連携を円滑化すること目的とする。
【課題を解決するための手段】
【００１４】
一つの案では、要求送信方法は、１以上のＷｅｂアプリケーションがインストールされたコンピュータが、無線通信を介して外部機器が検出されると、前記１以上のＷｅｂアプリケーションの中で前記外部機器にアクセスが許可されるＷｅｂアプリケーションを、外部機器ごとに当該外部機器へのアクセスが許可されるＷｅｂアプリケーションを示す情報を記憶した第一の記憶部を参照して特定し、検出された外部機器への要求を、特定されたＷｅｂアプリケーションから受け付けるためのインタフェースを生成し、前記特定されたＷｅｂアプリケーションのコンテンツデータと、前記インタフェースとに同じＩＰアドレスを割り当て、前記コンテンツデータが読み出されて起動されたＷｅｂアプリケーションから、前記インタフェースを介して前記要求を受信し、当該要求を無線通信を介して前記検出された外部機器に送信する、処理を実行する。
【発明の効果】
【００１５】
一側面によれば、Ｗｅｂアプリケーションと外部機器との連携を円滑化することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態におけるシステム構成例を示す図である。
【図２】本実施の形態におけるユーザ端末のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における連携管理サーバ及びユーザ端末の機能構成例を示す図である。
【図４】Ｗｅｂアプリの起動処理の処理手順の一例を説明するための図である。
【図５】ガジェットの検出時に実行される処理手順の一例を説明するための図である。
【図６】検出リストの一例を示す図である。
【図７】連携情報記憶部の構成例を示す図である。
【図８】ガジェット一覧記憶部の構成例を示す図である。
【図９】端末情報記憶部の構成例を示す図である。
【図１０】第一の連携処理の処理手順の一例を説明するための図である。
【図１１】ドライバの定義内容の一例を示す図である。
【図１２】ガジェットに対応するアイコンの表示例を示す図である。
【図１３】ドライバの無効化に伴ってアイコンが消去される例を示す図である。
【図１４】第二の連携処理の処理手順の一例を説明するための図である。
【図１５】ドライバのアイコンの操作例を示す図である。
【発明を実施するための形態】
【００１７】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるシステム構成例を示す図である。図１において、連携管理サーバ２０は、無線ＬＡＮ（Local Area Network）等の無線通信を介して１以上のユーザ端末１０と通信可能である。また、ユーザ端末１０は、ガジェット３０ａ及びガジェット３０ｂ等、１以上のガジェット３０と、無線ＬＡＮ又はＢｌｕｅＴｏｏｔｈ（登録商標）等の無線通信を介して通信可能である。なお、説明の便宜上、図１に示されるシステム構成は、或る企業内（以下、「企業Ａ」という。）において構築されていることとする。
【００１８】
ユーザ端末１０は、ユーザによって直接操作される端末である。ユーザ端末１０の一例として、スマートフォン及びタブレット端末等のスマート端末が挙げられる。但し、ＰＣ（Personal Computer）等、他の種類の情報処理装置であって、無線通信が可能な情報処理装置が、ユーザ端末１０として利用されてもよい。本実施の形態において、ユーザ端末１０は、無線通信を介してガジェット３０と連携した処理を実行する。なお、ユーザ端末１０のユーザは、例えば、企業Ａの従業員である。
【００１９】
ガジェット３０は、ユーザ端末１０と連携する外部機器の一例である。例えば、ユーザ端末１０のカメラ機能、ストレージ機能、又はディスプレイ機能等を拡張可能な周辺機器が、ガジェット３０として用いられてもよい。又は、エアコン等の家電機器が、ガジェット３０として用いられてもよい。
【００２０】
連携管理サーバ２０は、各ユーザ端末１０がガジェット３０と連携（ガジェット３０にアクセス）するために必要な情報や、各ユーザ端末１０にインストールされたＷｅｂアプリケーション（以下、「Ｗｅｂアプリ」という。）に連携（アクセス）が許可されるガジェット３０を示す情報等を管理するコンピュータである。すなわち、本実施の形態では、企業Ａのシステム管理者によって、各ユーザ端末１０にインストールされるＷｅｂアプリの中で、各ガジェット３０との連携が許可されるＷｅｂアプリが判断される。
【００２１】
なお、Ｗｅｂアプリとは、ＨＴＭＬ（HyperText Markup Language）、ＣＳＳ（Cascading Style Sheets）、及びＪａｖａＳｃｒｉｐｔ（登録商標）等を構成要素とするアプリケーションである。本実施の形態において、Ｗｅｂアプリとは、Ｐａｃｋａｇｅｄ  Ｗｅｂ  ａｐｐｓ形式のＷｅｂアプリをいう。
【００２２】
図２は、本実施の形態におけるユーザ端末のハードウェア構成例を示す図である。図２において、ユーザ端末１０は、ＣＰＵ１０１、メモリ１０２、補助記憶装置１０３、タッチパネル１０４、及び無線通信装置１０５等を有する。
【００２３】
補助記憶装置１０３は、ユーザ端末１０にインストールされたプログラム等を記憶する。メモリ１０２は、プログラムの起動指示があった場合に、補助記憶装置１０３からプログラムを読み出して記憶する。ＣＰＵ１０１は、メモリ１０２に記憶されたプログラムに従ってユーザ端末１０に係る機能を実現する。
【００２４】
タッチパネル１０４は、入力機能と表示機能との双方を備えた電子部品であり、情報の表示や、ユーザからの入力の受け付け等を行う。タッチパネル１０４は、表示装置１１１及び入力装置１１２等を含む。
【００２５】
表示装置１１１は、液晶ディスプレイ等であり、タッチパネル１０４の表示機能を担う。入力装置１１２は、表示装置１１１に対する接触物の接触を検出するセンサを含む電子部品である。接触物の接触の検出方式は、静電方式、抵抗膜方式、又は光学方式等、公知の方式のいずれであってもよい。なお、接触物とは、タッチパネル１０４の接触面（表面）に接触する物体をいう。斯かる物体の一例として、ユーザの指や専用又は一般のペン等が挙げられる。
【００２６】
無線通信装置１０５は、無線通信を行うために必要とされる電子部品である。
【００２７】
図３は、本発明の実施の形態における連携管理サーバ及びユーザ端末の機能構成例を示す図である。図３において、連携管理サーバ２０は、情報送信部２１及び端末認証部２２を有する。これら各部は、連携管理サーバ２０にインストールされたプログラムが、連携管理サーバ２０のＣＰＵに実行させる処理により実現される。連携管理サーバ２０は、また、端末情報記憶部２３、連携情報記憶部２４、及びガジェット一覧記憶部２５等を利用する。これら各記憶部は、連携管理サーバ２０の補助記憶装置、又は連携管理サーバ２０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００２８】
情報送信部２１は、連携情報記憶部２４に記憶されている情報（以下、「連携情報」という。）や、ガジェット一覧記憶部２５に記憶されている情報（以下、「ガジェット一覧情報」という。）を、ユーザ端末１０からの要求に応じて返信する。連携情報とは、ユーザ端末１０にインストールされたＷｅｂアプリ１３のうち、各ガジェット３０との連携が許可される（各ガジェット３０へのアクセスが許可される）Ｗｅｂアプリ１３を示す情報である。ガジェット一覧情報は、ガジェット３０ごとのガジェット情報の一覧である。ガジェット情報とは、ユーザ端末１０がガジェット３０と通信するために必要とされる情報である。例えば、ＳＳＩＤ（Service Set Identifier）及びパスワード等がガジェット情報に含まれる。
【００２９】
端末認証部２２は、連携情報及びガジェット一覧情報を要求するユーザ端末１０に関して認証を行う。認証は、端末情報記憶部２３を参照して行われる。
【００３０】
ユーザ端末１０は、アプリ起動部１１、ブラウザ部１２、Ｗｅｂアプリ１３ａ、１３ｂ、及び１３ｃ等の１以上のＷｅｂアプリ１３、ローカルサーバ部１４ａ、１４ｂ、及び１４ｃ等のＷｅｂアプリ１３ごとのローカルサーバ部１４、ガジェット検出部１５、設定部１６、並びにＡＰＩ生成部１７等を有する。これら各部は、ユーザ端末１０にインストールされた１以上のプログラムがＣＰＵ１０１に実行させる処理により実現される。ユーザ端末１０は、また、連携情報キャッシュ部１１１及びガジェット一覧キャッシュ部１１２等の記憶部を有する。これらの記憶部は、補助記憶装置１０３又はメモリ１０２等を用いて実現可能である。
【００３１】
アプリ起動部１１は、ユーザ端末１０にインストールされているＷｅｂアプリ１３のうち、起動対象として選択されたＷｅｂアプリ１３の起動処理を実行する。アプリ起動部１１は、Ｗｅｂアプリ１３の起動処理の過程において、起動対象のＷｅｂアプリ１３のコンテンツデータにＩＰアドレス及びボート番号との組み合わせ（すなわち、ＵＲＬ（Uniform Resource Locator））を割り当てる。Ｗｅｂアプリ１３のコンテンツデータとは、ＨＴＭＬファイル、ＣＳＳファイル、及びＪａｖａＳｃｒｉｐｔ（登録商標）ファイル等の集合であり、補助記憶装置１０３に記憶されている。アプリ起動部１１は、また、起動処理において、起動対象のＷｅｂアプリ１３に対応するローカルサーバ部１４のスレッドを生成する。
【００３２】
ブラウザ部１２は、Ｗｅｂブラウザとして機能する。ブラウザ部１２は、Ｗｅｂアプリ１３の実行環境でもある。すなわち、ブラウザ部１２は、Ｗｅｂアプリ１３のコンテンツデータの内容を解析し、当該コンテンツデータに基づく画像の表示や、当該コンテンツデータに基づく処理の実行等を行う。なお、本実施の形態において、ブラウザ部１２は、ＣＳＰ（Content Security Policy）に基づいて、各Ｗｅｂアプリ１３による外部へのアクセスを制限する。したがって、基本的に、各Ｗｅｂアプリ１３によるアクセス先は、Ｗｅｂアプリ１３ごとのホワイトリストに含まれているＩＰアドレスに制限される。
【００３３】
ローカルサーバ部１４は、ユーザ端末１０内においてＷｅｂサーバとして機能する。すなわち、ローカルサーバ部１４は、ソケット通信用のポート（以下、「サーバポート」という。）を生成（オープン）し、サーバポートへのＨＴＴＰ（HyperText Transfer Protocol）リクエストを待機する。ローカルサーバ部１４は、サーバポートを介して、ブラウザ部１２からのＷｅｂアプリ１３のコンテンツデータの取得要求（ＨＴＴＰリクエスト）が受信されると、当該コンテンツデータを含む応答（ＨＴＴＰレスポンス）をブラウザ部１２に返信する。或るローカルサーバ部１４のサーバポートのＩＰアドレスは、当該ローカルサーバ部１４が対応するＷｅｂアプリ１３のコンテンツデータに対して割り当てられたＩＰアドレスと同じである。したがって、コンテンツデータの取得要求には、当該コンテンツデータに割り当てられたＩＰアドレスが指定される。したがって、ブラウザ部１２は、当該コンテンツデータのダウンロード元が、当該ＩＰアドレスに係るドメインに属するＷｅｂアプリ１３であると認識する。
【００３４】
ローカルサーバ部１４は、また、Ｗｅｂアプリ１３によるガジェット３０へのアクセスを仲介又は代行する。具体的には、ローカルサーバ部１４は、Ｗｅｂアプリ１３からのガジェット３０へのアクセス要求を受け付けるためのインタフェースとして、ソケット通信用のポート（以下、「ＡＰＩポート」という。）を生成（オープン）する。ＡＰＩポートは、各ローカルサーバ部１４において、ガジェット３０ごとに生成される。ＡＰＩポートには、ローカルサーバ部１４が対応するＷｅｂアプリ１３のコンテンツデータと同じＩＰアドレスが割り当てられる。すなわち、アプリ起動部１１は、実質的に、Ｗｅｂアプリ１３のコンテンツデータと、当該Ｗｅｂアプリ１３に対応するローカルサーバ部１４のＡＰＩポートとに対して、同じＩＰアドレスを割り当てる。
【００３５】
Ｗｅｂアプリ１３のアクセス先は、ブラウザ部１２によって、基本的には当該Ｗｅｂアプリ１３に対応するホワイトリスト（ＣＳＰのホワイトリスト）の範囲に制限される。但し、ＣＳＰにおいても、同一オリジンポリシー（Same-Origin Policy）が有効である。すなわち、ブラウザ部１２は、Ｗｅｂアプリ１３のオリジン（コンテンツデータのダウンロード元）のＩＰアドレスに係るドメインの範囲内であれば、ホワイトリストに拘わらず、当該Ｗｅｂアプリ１３によるアクセスを許可する。したがって、或るＷｅｂアプリ１３が、当該Ｗｅｂアプリ１３に対応するローカルサーバ部１４のＡＰＩポートにアクセスしようとした場合、当該アクセスは、ブラウザ部１２によって許可される。ブラウザ部１２から見れば、当該アクセスは、当該Ｗｅｂアプリ１３のオリジンと同じドメイン内に対するアクセスに該当するからである。
【００３６】
ローカルサーバ部１４は、Ｗｅｂアプリ１３によって或るＡＰＩポートがアクセスされると、当該ＡＰＩポートに対応するガジェット３０にアクセス。すなわち、当該ガジェット３０が公開しているＡＰＩを構成するメソッドの呼び出しが行われる。その結果、Ｗｅｂアプリ１３は、実質的にガジェット３０にアクセスすることができる。なお、ガジェット３０が公開しているＡＰＩを構成するメソッドのうち、ローカルサーバ部１４が呼び出すべきメソッドは、当該ＡＰＩポートの連携元のＷｅｂアプリ１３によって指定される。
【００３７】
ガジェット検出部１５は、無線通信を介してガジェット３０の存在を検出する。設定部１６は、ガジェット検出部１５によってガジェット３０が検出されると、連携管理サーバ２０から連携情報及びガジェット一覧情報をダウンロードする。ダウンロードされた情報は、連携情報キャッシュ部１１１又はガジェット一覧キャッシュ部１１２に記憶される。
【００３８】
設定部１６は、また、検出されたガジェット３０に対応するＡＰＩポートの生成を、ＡＰＩ生成部１７に要求する。ＡＰＩ生成部１７は、検出されたガジェット３０へのアクセスが許可されているＷｅｂアプリ１３を特定し、当該Ｗｅｂアプリ１３に対応するローカルサーバ部１４に、当該ガジェット３０に対応するＡＰＩポートの生成を要求する。
【００３９】
以下、ユーザ端末１０が実行する処理手順について説明する。図４は、Ｗｅｂアプリの起動処理の処理手順の一例を説明するための図である。
【００４０】
例えば、表示装置１１１に表示されているアイコンの選択等によって、当該アイコンに係るＷｅｂアプリ１３の起動指示が入力されると（Ｓ１０１でＹｅｓ）、アプリ起動部１１は、起動対象のＷｅｂアプリ１３（ここでは、Ｗｅｂアプリ１３ａとする。）のコンテンツデータの格納場所の識別名を特定する（Ｓ１０２）。格納場所の識別名とは、例えば、ファイル名又はフォルダ名である。ここでは、コンテンツデータを格納した書庫ファイルのファイル名が、格納場所の識別名として用いられることとする。なお、当該ファイル名は、Ｗｅｂアプリ１３のアイコンに関連付けられてユーザ端末１０に記憶されている。
【００４１】
続いて、アプリ起動部１１は、Ｗｅｂアプリ１３ａに対応するＩＰアドレス、ポート番号、及びｃｏｏｋｉｅ（クッキー）を生成する。ＩＰアドレス及びポート番号は、各Ｗｅｂアプリ１３間で重複しない値が割り当てられる。ｃｏｏｋｉｅは、Ｗｅｂアプリ１３ａの認証に利用される、パスワードのような情報である。したがって、ｃｏｏｋｉｅについても、各Ｗｅｂアプリ１３間で重複しない値が生成される。なお、Ｗｅｂアプリ１３ａに対応するＩＰアドレス及びポート番号は、Ｗｅｂアプリ１３ａのコンテンツデータに対するＩＰアドレス及びポート番号である。
【００４２】
続いて、アプリ起動部１１は、Ｗｅｂアプリ１３ａに対応するローカルサーバ部１４ａのスレッドを生成する（Ｓ１０４）。当該ローカルサーバ部１４ａには、ステップＳ１０２において特定されたファイル名、並びにステップＳ１０３において生成されたＩＰアドレス、ポート番号、及びｃｏｏｋｉｅが設定される。ローカルサーバ部１４ａは、起動されると、設定されたＩＰアドレス及びポート番号に対応するサーバポートを生成（開設）し（Ｓ１３１）、当該サーバポートへのアクセスを待機する。
【００４３】
続いて、アプリ起動部１１は、Ｗｅｂアプリ１３ａのＩＰアドレス、ポート番号、及びｃｏｏｋｉｅを指定して、Ｗｅｂアプリ１３ａの起動をブラウザ部１２に要求する（Ｓ１０５）。
【００４４】
ブラウザ部１２は、Ｗｅｂアプリ１３ａの起動要求に応じ、Ｗｅｂアプリ１３ａとして機能するプロセスを生成する（Ｓ１１１）。当該プロセスには、Ｗｅｂアプリ１３ａのＩＰアドレス、ポート番号、及びｃｏｏｋｉｅが設定される。なお、当該プロセスは、ブラウザ部１２としてのプロセスの子プロセスである。したがって、当該プロセスは、ブラウザ部１２の一部（ブラウザ部１２においてＷｅｂアプリ１３ａとして機能する部分）であるといえる。但し、以下では、便宜上、当該プロセスが実行する処理について、Ｗｅｂアプリ１３ａが実行主体であるとして説明する。なお、各Ｗｅｂアプリ１３は、スレッドとして起動されてもよい。ブラウザ部１２が、Ｗｅｂアプリ１３ごとにプロセスを起動するのか又はスレッドを起動するのかについては、ブラウザ部１２の実装に依存する。
【００４５】
Ｗｅｂアプリ１３ａは、起動されると、ブラウザ部１２から設定されたＩＰアドレス及びポート番号に係るサーバポート宛に、コンテンツデータの取得要求（ＨＴＴＰリクエスト）を送信する（Ｓ１２１）。ローカルサーバ部１４ａは、サーバポートを介して当該取得要求を受信すると、ステップＳ１０４において設定されているファイル名に係るファイルから、コンテンツデータを読み出す（Ｓ１３２）。なお、当該ファイル名が、書庫ファイルである場合、当該書庫ファイルに書庫化されているファイル群から、コンテンツデータが読み出される。続いて、ローカルサーバ部１４ａは、読み出されたコンテンツデータを含む応答（ＨＴＴＰレスポンス）を、Ｗｅｂアプリ１３ａに返信する（Ｓ１３３）。なお、ステップＳ１２１における取得要求には、Ｗｅｂアプリ１３ａに設定されたｃｏｏｋｉｅが含まれてもよい。ローカルサーバ部１４ａは、当該ｃｏｏｋｉｅが、自らに設定されたｃｏｏｋｉｅに一致する場合に、コンテンツデータを返信するようにしてもよい。
【００４６】
Ｗｅｂアプリ１３ａは、コンテンツデータを受信すると（Ｓ１２２）、当該コンテンツデータに基づいて、Ｗｅｂアプリ１３ａの画像を表示させる（Ｓ１２３）。続いて、Ｗｅｂアプリ１３ａは、ガジェット３０との連携処理を開始する（Ｓ１２４）。
【００４７】
続いて、ガジェット３０の検出に応じて実行される処理手順について説明する。図５は、ガジェットの検出時に実行される処理手順の一例を説明するための図である。
【００４８】
ガジェット検出部１５は、一定時間が経過するごとに（Ｓ２０１でＹｅｓ）、電波スキャンを実行する（Ｓ２０２）。その結果、電波スキャンによって検出されたガジェット３０ごとのＳＳＩＤ及びＭＡＣアドレス等のリスト（以下、「検出リスト」という。）が得られる。続いて、ガジェット検出部１５は、検出リストを設定部１６に送信する（Ｓ２０３）。
【００４９】
図６は、検出リストの一例を示す図である。図６に示されるように、検出リストは、検出されたガジェット３０ごとに、ＳＳＩＤ及びＭＡＣアドレスを含む。但し、例えば、ＢｌｕｅＴｏｏｔｈ（登録商標）等、ＳＳＩＤを利用しない通信方式によって検出されたガジェット３０については、ＳＳＩＤは含まれない。
【００５０】
設定部１６は、検出リストを受信すると（Ｓ２１１）、連携情報及びガジェット一覧情報に関して、連携管理サーバ２０との同期をとる（Ｓ２１２）。すなわち、設定部１６は、当該ユーザ端末１０の端末ＩＤを含む、連携情報及びガジェット一覧情報の取得要求を連携管理サーバ２０に送信する。端末ＩＤとは、ユーザ端末１０ごとの識別情報であり、例えば、補助記憶装置１０３に記憶されている。連携管理サーバ２０の情報送信部２１は、連携情報記憶部２４に記憶されている連携情報の中で、当該ユーザ端末１０に対応する連携情報を返信する。
【００５１】
図７は、連携情報記憶部の構成例を示す図である。図７に示されるように、連携情報記憶部２４は、各端末ＩＤに対応付けて、当該端末ＩＤに係るユーザ端末１０に連携が許可されるガジェット３０を示す情報を記憶する。すなわち、「○」が記録されているセルは、当該セルが属する行に係るユーザ端末１０の全てのＷｅｂアプリ１３に、当該セルが属する列に係るガジェット３０との連携が許可されることを示す。また、「○（ＸＸＸのみ）」が記録されているセルは、当該セルが属する行に係るユーザ端末１０のＷｅｂアプリ１３のうち「ＸＸＸ」に該当するＷｅｂアプリ１３のみに、当該セルが属する列に係るガジェット３０と連携が許可されることを示す。なお、「ＸＸＸ」には、複数のＷｅｂアプリ１３の識別情報が列挙されてもよい。また、「Ｘ」が記録されているセルは、当該セルが属する行に係るユーザ端末１０の全てのＷｅｂアプリ１３に、当該セルが属する列に係るガジェット３０との連携が許可されないことを示す。
【００５２】
ステップＳ２１２において、情報送信部２１は、情報の取得要求に含まれている端末ＩＤに対応する行に係る連携情報を返信する。
【００５３】
また、図８は、ガジェット一覧記憶部の構成例を示す図である。図８に示されるように、ガジェット一覧記憶部２５は、ガジェット３０ごとにガジェット情報を記憶する。ガジェット情報には、ガジェット名、ＳＳＩＤ、パスワード、ＭＡＣアドレス、接続方法、及びドライバ名等が含まれる。
【００５４】
ガジェット名は、ガジェット３０の識別名である。但し、ガジェット名は、ガジェット情報に含まれなくてもよい。ＳＳＩＤは、ガジェット３０に対するＳＳＩＤである。パスワードは、ガジェット３０に対するパスワードである。ＭＡＣアドレスは、ガジェット３０のＭＡＣアドレスである。接続方法は、無線通信でのガジェット３０との接続方法である。なお、接続方法における「ＢＬＴ」は、ＢｌｕｅＴｏｏｔｈ（登録商標）を示す。ドライバ名は、ドライバを格納するファイルのファイル名である。ドライバとは、ＡＰＩポートの呼び出しをＷｅｂアプリに実行させ、その結果として、ガジェット３０が公開するＡＰＩの呼び出しに必要な情報を、ローカルサーバ部１４に伝達するためのプログラムコードである。本実施の形態において、ドライバは、ＪａｖａＳｃｒｉｐｔ（登録商標）によって実装される。
【００５５】
ステップＳ２１２において、情報送信部２１は、ガジェット一覧記憶部２５に記憶されているガジェット情報の一覧と、各ガジェット情報のドライバ名によって識別されるドライバのファイルとを返信する。なお、ユーザ端末１０からの取得要求に、検出されたガジェット３０のＳＳＩＤ又はＭＡＣアドレスの一覧が含まれてもよい。情報送信部２１は、当該ＳＳＩＤ又は当該ＭＡＣアドレスに対応するガジェット情報及びドライバのみを返信してもよい。
【００５６】
設定部１６は、返信された連携情報を連携情報キャッシュ部１１１に記憶し、返信されたガジェット一覧情報及びドライバ群を、ガジェット一覧キャッシュ部１１２に記憶する。
【００５７】
なお、連携情報及びガジェット一覧情報が返信される前に、端末認証部２２が、端末情報記憶部２３を参照して、取得要求に係る認証が行を行う。認証が成功した場合に、連携情報及びガジェット一覧情報が返信される。
【００５８】
図９は、端末情報記憶部の構成例を示す図である。図９に示されるように、端末情報記憶部２３は、端末ＩＤに対応付けて、認証方式及び認証情報を記憶する。認証方式は、認証の方式を示す。認証情報は、認証方式に基づく認証において利用される情報である。例えば、図９に示される例では、ユーザ端末１０が有するがＲＳＡ（Rivest Shamir Adleman）鍵が、認証情報に登録されている公開鍵に対応するものであるか否かが、チャレンジ＆レスポンスで検証される。
【００５９】
続いて、設定部１６は、連携情報キャッシュ部１１１から連携情報を取得すると共に、検出リストに含まれる各ＳＳＩＤ又は各ＭＡＣアドレスに対応するガジェット情報を、ガジェット一覧キャッシュ部１１２から取得する（Ｓ２１３）。すなわち、検出されたガジェット３０のガジェット情報が取得される。なお、ここではドライバのファイルは取得されなくてもよい。続いて、設定部１６は、ガジェット３０に対応するＡＰＩの生成を、ＡＰＩ生成部１７に要求する（Ｓ２１４）。当該要求には、ステップＳ２１３において取得された連携情報と、ガジェット情報の一覧とが指定される。
【００６０】
続いて、ＡＰＩ生成部１７は、起動されているＷｅｂアプリ１３ごとに、ステップＳ２２１〜Ｓ２２３を実行する。ステップＳ２２１において、ＡＰＩ生成部１７は、起動されているＷｅｂアプリ１３の中で、処理対象とするＷｅｂアプリ１３を一つ選択する。以下、選択されたＷｅｂアプリ１３を「対象アプリ」という。続いて、ＡＰＩ生成部１７は、ＡＰＩの生成要求に指定されている連携情報に基づいて、対象アプリに連携が許可されるガジェット３０ごとに、ガジェット名を特定する（Ｓ２２２）。続いて、ＡＰＩ生成部１７は、対象アプリに対応するローカルサーバ部１４に対して、ＡＰＩポートの生成を要求する（Ｓ２２３）。当該要求には、ステップＳ２２２において特定された各ガジェット名に対応するガジェット情報が含まれる。なお、ドライバを格納したファイルは当該要求に含まれなくてもよい。
【００６１】
各ローカルサーバ部１４は、ＡＰＩポートの生成要求に応じ、ＡＰＩポートの過不足を判定する（Ｓ２３１）。すなわち、ステップＳ２３１は、ガジェット検出部１５によるステップＳ２０２に同期して一定時間ごとに実行される。したがって、前回までに検出されたガジェット３０に関してはＡＰＩポートが生成されている場合が有る。また、前回検出されガジェット３０の一覧と今回検出されたガジェット３０の一覧とが異なる可能性が有る。また、設定部１６によるステップＳ２１２についても、ステップＳ２０２に同期して一定時間ごとに実行される。したがって、前回の検出時と、今回の検出時とにおいて、各Ｗｅｂアプリ１３に連携が許可されるガジェット３０が異なる可能性が有る。システム管理者によって、連携情報が更新されている可能性が有るからである。
【００６２】
そこで、ステップＳ２３１では、既に生成されている各ＡＰＩポートに対応するガジェット情報と、ＡＰＩポートの生成要求に指定されたガジェット情報の一覧とが比較され、後者にのみ含まれているガジェット情報と、前者にのみ含まれているガジェット情報とが特定される。後者にのみ含まれているガジェット情報は、新たに検出されたガジェット３０、又は新たに連携が許可されたガジェット３０のガジェット情報である。また、前者にのみ含まれているガジェット情報は、検出されなくなったガジェット３０、又は新たに連携が禁止されたガジェット３０の情報である。当該ガジェット情報に対応するＡＰＩポートは、不要なＡＰＩポートということになる。
【００６３】
不要なＡＰＩポートが有る場合（Ｓ２３２でＹｅｓ）、ローカルサーバ部１４は、該当するＡＰＩポートのそれぞれをクローズする（Ｓ２３３）。また、新規のガジェット情報が有る場合（Ｓ２３４でＹｅｓ）、ローカルサーバ部１４は、新規のガジェット情報のそれぞれに対応するポート番号を生成する（Ｓ２３５）。当該ポート番号は、当該ローカルサーバ部１４が生成済みのポートであって、かつ、現時点においても有効なポートのポート番号と重複しない値であればよい。また、ステップＳ２３５において複数のポート番号が生成される場合、生成される各ポート番号は、相互に重複しない値であればよい。続いて、ローカルサーバ部１４は、ステップＳ２３５において生成されたポート番号ごとに、ＡＰＩポートを生成する（Ｓ２３６）。この際、当該ローカルサーバ部１４のサーバポートのＩＰアドレスと同じＩＰアドレスが、生成される各ＡＰＩポートに割り当てられる。続いて、ローカルサーバ部１４は、ステップＳ２３６において生成されたＡＰＩポートに対応付けて、当該ＡＰＩポートに対応するガジェット情報を、例えば、メモリ１０２に記憶する（Ｓ２３７）。
【００６４】
続いて、図４のステップＳ１２４の詳細について説明する。図１０は、第一の連携処理の処理手順の一例を説明するための図である。図１０は、図４のステップＳ１２３に続いて実行される処理であるため、図１０におけるＷｅｂアプリ１３は、便宜上、Ｗｅｂアプリ１３ａであるとする。但し、図１０に示される処理手順は、起動中の各Ｗｅｂアプリ１３及び各Ｗｅｂアプリ１３に対応するローカルサーバ部１４によって並列的に実行される。
【００６５】
ステップＳ３０１において、Ｗｅｂアプリ１３ａは、ＡＰＩポートのポート番号の一覧の取得要求（ＨＴＴＰリクエスト）を、ローカルサーバ部１４ａのサーバポート宛に送信する。ローカルサーバ部１４ａは、サーバポートを介して当該取得要求を受信すると（Ｓ３１１）、ローカルサーバ部１４ａが現在オープン中の各ＡＰＩポートのポート番号を含む応答（ＨＴＴＰリクエスト）を返信する（Ｓ３１２）。複数のＡＰＩポートがオープン中である場合、複数のポート番号が返信される。なお、ステップＳ３１１における取得要求には、Ｗｅｂアプリ１３ａに設定されたｃｏｏｋｉｅが含まれてもよい。ローカルサーバ部１４ａは、当該ｃｏｏｋｉｅが、自らに設定されたｃｏｏｋｉｅに一致する場合に、ポート番号を返信するようにしてもよい。
【００６６】
続いて、Ｗｅｂアプリ１３ａは、今回のステップＳ３０２において受信されたポート番号の一覧の中で、前回のステップＳ３０２において受信されたポート番号の一覧に含まれていないポート番号の有無を判定する（Ｓ３０２）。すなわち、新たに連携可能となったガジェット３０の有無が判定される。該当するポート番号が無い場合（Ｓ３０３でＮｏ）、ステップＳ３０８に進む。該当するポート番号が有る場合（Ｓ３０３でＹｅｓ）、Ｗｅｂアプリ１３ａは、当該ポート番号に対応するガジェット３０に対するドライバの取得要求（ＨＴＴＰリクエスト）を、ローカルサーバ部１４ａのサーバポート宛に送信する（Ｓ３０４）。当該取得要求には、該当するポート番号が含まれる。該当するポート番号が複数有る場合、複数のポート番号が当該取得要求に含まれる。
【００６７】
ローカルサーバ部１４ａは、サーバポートを介して当該取得要求を受信すると（Ｓ３１４）、当該取得要求に含まれているポート番号ごとに、当該ポート番号に対応するドライバをガジェット一覧キャッシュ部１１２から取得する（読み出す）（Ｓ３１５）。或るＡＰＩポートのポート番号に対応するドライバは、当該ＡＰＩポートに対応付けられてメモリ１０２に記憶されているガジェット情報に含まれているドライバ名に基づいて特定可能である。続いて、ローカルサーバ部１４ａは、取得された各ドライバを含む応答（ＨＴＴＰレスポンス）を、Ｗｅｂアプリ１３ａに返信する（Ｓ３１６）。Ｗｅｂアプリ１３ａは、当該応答を受信する（Ｓ３０５）。
【００６８】
図１１は、ドライバの定義内容の一例を示す図である。図１１において、ドライバ５１０は、ＷｉＦｉ（Wireless Fidelity）（登録商標）対応レンズカメラであるガジェット３０に対応するドライバである。
【００６９】
ドライバ５１０において、記述５１１は、変数ｐｏｒｔに対してＡＰＩポートのポート番号を代入することを示す。但し、記述５１１において、代入されるポート番号は、変数化されている。すなわち、本実施の形態において、「＄ＰＯＲＴ＄」は、ドライバ５１０に対して割り当てられたＡＰＩポートのポート番号によって置換されるべき（当該ポート番号が適用されるべき）部分を示すキーワードである。ポート番号が変数化されているのは、ドライバ５１０の作成者は、ドライバ５１０の作成時において、当該ポート番号を知ることができないからである。
【００７０】
記述５１２は、ドライバ５１０に対応するガジェット３０に対応するＡＰＩポートにアクセスするメソッド群のうちの一つのメソッドのメソッド名が「Ｔａｋｅｐｈｏｔｏ」であることを示す。記述５１３は、当該メソッドが実行された場合のアクセス先が括弧内に指定されたＵＲＬであることを示す。当該ＵＲＬにおいて、＜ガジェットが公開するＡＰＩ１＞の部分には、実際には、ＡＰＩポートに対するアクセスに応じてローカルサーバ部１４によって呼び出されるべきガジェット３０のＡＰＩのメソッド名が具体的に記述されている。また、記述５１３において、「ＩＰ（）」は、ドライバ５１０（スクリプト）の実行時において、ブラウザ部１２（Ｗｅｂブラウザ）の環境変数から、当該スクリプトを実行するＷｅｂアプリ１３のＩＰアドレスを取得する関数である。すなわち、ドライバ５１０の実行時において、「ＩＰ（）」は、Ｗｅｂアプリ１３ａのＩＰアドレスに置換される。したがって、記述５１３では、ドライバ５１０に対応するガジェット３０に対してローカルサーバ部１４が生成したＡＰＩポートがアクセス先であることが定義されている。
【００７１】
記述５１４は、括弧内の情報を、記述５１３において指定されたアクセス先へ送信することを示す。当該括弧内には、実際には、「ガジェット３０が公開するＡＰＩ１」に対する引数を示す文字列が、具体的に記述されている。
【００７２】
記述５２２、５２３、及び５２４は、記述５１２、５１３、及び５１４と同様の定義である。但し、記述５２２〜５２４では、記述５１２〜５１４が対応するＡＰＩ（ガジェット３０のメソッド）とは異なるＡＰＩ（ガジェット３０のメソッド）に対応するドライバ５１０のメソッドに関する定義である。
【００７３】
続いて、Ｗｅｂアプリ１３ａは、受信された各ドライバに対して、当該ドライバに対応するポート番号を適用する（Ｓ３０６）。すなわち、各ドライバにおいて、「＄ＰＯＲＴ＄」の部分が、当該ドライバに対応するポート番号によって置換される。なお、ドライバ５１０の記述５１３におけるＩＰ（）が、例えば、「＄ＩＰ＄」等のキーワードによって記述されていてもよい。すなわち、ＩＰアドレスに関しても変数化されていてもよい。この場合、Ｗｅｂアプリ１３ａは、ドライバ５１０の「＄ＩＰ＄」を、Ｗｅｂアプリ１３ａに設定されたＩＰアドレスによって置換する。
【００７４】
続いて、Ｗｅｂアプリ１３ａは、ドライバを有効化する（Ｓ３０７）。すなわち、ドライバとしてのスクリプトが、Ｗｅｂアプリ１３ａの構成要素として、メモリ１０２に読み込まれる。その結果、例えば、当該ドライバの実行指示をユーザから受け付けるためのアイコンが、表示装置１１１に表示されてもよい。
【００７５】
図１２は、ガジェットに対応するアイコンの表示例を示す図である。図１２では、ＷｉＦｉ（登録商標）対応レンズカメラであるガジェット３０ａと、ＷｉＦｉ（登録商標）対応ＳＤカードであるガジェット３０ｂとが検出され、それぞれに対するドライバが有効化された場合の表示例が示されている。この場合、それぞれのドライバに対応するアイコンｃ１及びアイコンｃ２が、例えば、画面の上方から落下してきて画面下部に表示される。
【００７６】
続いて、Ｗｅｂアプリ１３ａは、前回のステップＳ３０２において受信されたポート番号の一覧の中で、今回のステップＳ３０２において受信されたポート番号の一覧には含まれていないポート番号の有無を判定する（Ｓ３０８）。すなわち、連携が不可能になったガジェット３０の有無が判定される。該当するポート番号が有る場合（Ｓ３０８でＹｅｓ）、Ｗｅｂアプリ１３ａは、当該ポート番号に対応するドライバを無効化する（Ｓ３０９）。例えば、Ｗｅｂアプリ１３ａの構成要素としてメモリ１０２に展開されているドライバが、メモリ１０２から削除される。その結果、当該ドライバに対応するアイコンも消去される。
【００７７】
図１３は、ドライバの無効化に伴ってアイコンが消去される例を示す図である。図１３では、ガジェット３０ａが検出されなくなった結果、ガジェット３０ａに対応するアイコンｃ１が消去された例が示されている。
【００７８】
なお、図１０において、ステップＳ３０１以降は、繰り返し実行される。例えば、ステップＳ３０１以降は、一定時間間隔で実行されてもよい。
【００７９】
続いて、図４のステップＳ１２４において、図１０の処理と並行して実行される処理について説明する。図１４は、第二の連携処理の処理手順の一例を説明するための図である。
【００８０】
Ｗｅｂアプリ１３ａは、ドライバのアイコンが操作されてドライバに含まれるメソッドのうち、いずれかのメソッドの実行指示が入力されたことを検知すると（Ｓ４０１でＹｅｓ）、選択されたメソッドを実行する（Ｓ４０２）。
【００８１】
図１５は、ドライバのアイコンの操作例を示す図である。図１５では、アイコンｃ１が選択されて、メニューｍ１が表示されている例が示されている。メニューｍ１には、アイコンｃ１に対応するドライバ５１０に含まれている各メソッドがメニュー項目として含まれている。すなわち、メニューｍ１には、「ＴａｋｅＰｈｏｔｏ」メソッドと、「Ｓｔａｒｔｒｅｃｏｒｄｉｎｇ」メソッドとが、メニュー項目として含まれている。ユーザは、所望のメソッドを選択することにより、当該メソッドの実行指示を入力することができる。
【００８２】
続いて、Ｗｅｂアプリ１３ａは、選択されたメソッド内に定義されているスクリプトを実行する（Ｓ４０２）。例えば、「ＴａｋｅＰｈｏｔｈｏ」が選択された場合、図１１のドライバ５１０における記述５１１〜５１４が実行される。その結果、ローカルサーバ部１４ａのＡＰＩポートのうち、ドライバ５１０に対応するポート番号に係るＡＰＩポートの＜ガジェット３０が公開するＡＰＩ１＞のパス宛に、＜ガジェット３０が公開するＡＰＩ１の引数＞を含むＨＴＴＰリクエストが送信される。なお、当該ＨＴＴＰリクエストには、Ｗｅｂアプリ１３ａに設定されたｃｏｏｋｉｅが含まれる。
【００８３】
ローカルサーバ部１４ａは、オープン中のＡＰＩポートのうちのいずれかのＡＰＩポートを介してＨＴＴＰリクエストが受信されると（Ｓ４１１でＹｅｓ）、当該ＨＴＴＰリクエストに含まれているｃｏｏｋｉｅの正当性を検証する（Ｓ４１２）。具体的には、ローカルサーバ部１４ａが保持しているｃｏｏｋｉｅと、当該ＨＴＴＰリクエストに含まれているｃｏｏｋｉｅとが照合される。照合の結果、両者が異なる場合（Ｓ４１２でＮｏ）、ローカルサーバ部１４ａは、エラーの発生を検出する（Ｓ４１７）。この場合、ステップＳ４１７において、ローカルサーバ部１４ａは、エラーを示すＨＴＴＰレスポンスを返信する。
【００８４】
一方、両者が一致する場合（Ｓ４１２でＹｅｓ）、ＨＴＴＰリクエストの送信元がＷｅｂアプリ１３ａであることが確認されたことになる。そこで、ローカルサーバ部１４ａは、ステップＳ４１１においてアクセスされたＡＰＩポートに対応付けられて記憶されているガジェット情報に含まれているＳＳＩＤ又はＭＡＣアドレス、及びパスワード等を用いて、当該ガジェット情報に含まれている接続方法に従って、当該ＳＳＩＤ又は当該ＭＡＣアドレスに係るガジェット３０と無線通信を介して接続する（Ｓ４１３）。その結果、当該ガジェット３０のＩＰアドレスが判明する。そこで、ローカルサーバ部１４ａは、ステップＳ４１１において受信されたＨＴＴＰリクエストに基づいて特定される、ガジェット３０のＡＰＩに対して、ガジェット３０のＩＰアドレスを適用する（Ｓ４１５）。したがって、ユーザ端末１０とガジェット３０とが接続するたびに、ガジェット３０のＩＰアドレスが変化する場合であっても、接続の都度、ガジェット３０に割り当てられるＩＰアドレスが、ガジェット３０のＡＰＩに対して適用される。
【００８５】
続いて、ローカルサーバ部１４ａは、ガジェット３０のＡＰＩを呼び出すことにより、ガジェット３０へ要求を送信し、当該要求に対する応答をガジェット３０から受信する（Ｓ４１６）。応答の内容は、ガジェット３０と、呼び出されたＡＰＩとに応じて異なる。ＷｉＦｉ（登録商標）対応レンズカメラに対して撮像を要求するＡＰＩが呼び出された場合、撮像結果である画像データが応答に含まれているかもしれない。ＷｉＦｉ（登録商標）対応ＳＤカードに対して情報の読み出しを要求するＡＰＩが呼び出された場合、読み出された情報が応答に含まれているかもしれない。
【００８６】
続いて、ローカルサーバ部１４ａは、ステップＳ４１１において受信されたＨＴＴＰリクエストに対するＨＴＴＰレスポンスを返信する（Ｓ４１８）。当該ＨＴＴＰレスポンスには、ガジェット３０からの応答が含まれる。Ｗｅｂアプリ１３ａは、当該ＨＴＴＰレスポンスを受信すると（Ｓ４０３）、例えば、当該ＨＴＴＰレスポンスに含まれているガジェット３０からの応答を利用した処理を実行する。
【００８７】
上述したように、本実施の形態によれば、Ｗｅｂアプリ１３と同じドメイン内に、ガジェット３０のＡＰＩ（ＷｅｂＡＰＩ）が設けられる。したがって、ＣＳＰによってＷｅｂアプリ１３のアクセス先が制限されている場合でも、同一オリジンポリシーによって、当該Ｗｅｂアプリ１３は、当該ＡＰＩを呼び出すことができる。その結果、Ｗｅｂアプリ１３とガジェット３０との連携を円滑化することができる。
【００８８】
また、各Ｗｅｂアプリ１３には、相互に異なるＩＰアドレスが割り当てられる。したがって、各Ｗｅｂアプリ１３にとって、他のＷｅｂアプリ１３に対応するローカルサーバ部１４のＡＰＩポートへのアクセスが困難となる。各Ｗｅｂアプリ１３は、他のＷｅｂアプリ１３のＩＰアドレスを知るのが困難であるし、ＣＳＰによる制限や、同一オリジンポリシー等によって、他のＷｅｂアプリ１３のＩＰアドレスへのアクセスが禁止されるからである。その結果、各Ｗｅｂアプリ１３にとって、自らにはアクセスが許可されていないガジェット３０へのアクセスが困難となる。すなわち、Ｗｅｂアプリ１３ごとに、アクセス可能なガジェット３０を異ならせることができる。
【００８９】
更に、図１４のステップＳ４１２に示されるように、各Ｗｅｂアプリ１３がガジェット３０のＡＰＩを呼び出す際は、ローカルサーバ部１４によって、呼び出し元のＷｅｂアプリ１３の正当性が判定される。斯かる機構によっても、各Ｗｅｂアプリ１３にとって、自らにはアクセスが許可されていないガジェット３０へのアクセスが困難となる。
【００９０】
また、本実施の形態では、ガジェット３０ごとにドライバが予め作成され、当該ドライバが、Ｗｅｂアプリ１３の構成要素として動的に追加される。したがって、当該ガジェット３０への連携に関する定義が実装されていない既存のＷｅｂアプリ１３であっても、ドライバとの連携が可能となる。
【００９１】
換言すれば、Ｗｅｂアプリ１３には、ドライバと同様の定義を有するスクリプトが構成要素として予め含まれていてもよい。この場合、当該Ｗｅｂアプリ１３に対して、当該ドライバが組み込まれる処理（図１０のＳ３０４、Ｓ３０５、Ｓ３０７、Ｓ３０９等）は実行されなくてもよい。ステップＳ３０６では、Ｗｅｂアプリ１３の定義内の当該ガジェット３０との連携部分に対して、ポート番号の適用が実行されればよい。
【００９２】
また、ローカルサーバ部１４は、必ずしもＷｅｂアプリ１３ごとに起動されなくてもよい。例えば、一つのローカルサーバ部１４が、Ｗｅｂアプリ１３ごとに異なるＩＰアドレスを有するサーバポートを生成し、Ｗｅｂアプリ１３ごとに異なるＩＰアドレスを有するＡＰＩポートを生成してもよい。そうすることによっても、各Ｗｅｂアプリ１３のドメインを区別することができる。
【００９３】
また、本実施の形態では、企業内における利用シーンを想定したが、個人的な利用に関して本実施の形態が適用されてもよい。この場合、連携管理サーバ２０は設けらずに、連携情報キャッシュ部１１１及びガジェット一覧キャッシュ部１１２には、予め当該ユーザ端末１０に関連する情報が記憶されていてもよい。この場合、各Ｗｅｂアプリ１３による各ガジェット３０へのアクセスの許否は、ユーザ端末１０のユーザによって設定されてもよい。
【００９４】
なお、本実施の形態において、ユーザ端末１０は、情報処理装置の一例である。ＡＰＩ生成部１７は、特定部の一例である。ローカルサーバ部１４は、生成部及び送信部の一例である。アプリ起動部１１は、割当部の一例である。ポート番号は、インタフェースの識別情報の一例である。
【００９５】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００９６】
以上の説明に関し、更に以下の項を開示する。
（付記１）
１以上のＷｅｂアプリケーションがインストールされたコンピュータが、
無線通信を介して外部機器が検出されると、前記１以上のＷｅｂアプリケーションの中で前記外部機器にアクセスが許可されるＷｅｂアプリケーションを、外部機器ごとに当該外部機器へのアクセスが許可されるＷｅｂアプリケーションを示す情報を記憶した第一の記憶部を参照して特定し、
検出された外部機器への要求を、特定されたＷｅｂアプリケーションから受け付けるためのインタフェースを生成し、
前記特定されたＷｅｂアプリケーションのコンテンツデータと、前記インタフェースとに同じＩＰアドレスを割り当て、
前記コンテンツデータが読み出されて起動されたＷｅｂアプリケーションから、前記インタフェースを介して前記要求を受信し、当該要求を無線通信を介して前記検出された外部機器に送信する、
処理を実行することを特徴とする要求送信方法。
（付記２）
前記割り当てる処理は、前記Ｗｅｂアプリケーションごとに異なるＩＰアドレスを割り当てる、
ことを特徴とする付記１記載の要求送信方法。
（付記３）
前記生成する処理は、無線通信を介して検出された外部機器ごとに前記インタフェースを生成する、
ことを特徴とする付記１又は２記載の要求送信方法。
（付記４）
前記コンピュータが、
前記インタフェースの呼び出しを前記コンピュータに実行させるための情報が記述されたプログラムコードにおいて、呼び出し対象のインタフェースの識別情報が指定される部分に、当該プログラムコードに関連付けられている識別情報に係る外部機器に対して生成されたインタフェースの識別情報を適用し、
前記Ｗｅｂアプリケーションの構成要素として、前記プログラムコードを追加する、
処理を実行することを特徴とする付記１乃至３いずれか一項記載の要求送信方法。
（付記５）
１以上のＷｅｂアプリケーションがインストールされた情報処理装置であって、
無線通信を介して外部機器が検出されると、前記１以上のＷｅｂアプリケーションの中で前記外部機器にアクセスが許可されるＷｅｂアプリケーションを、外部機器ごとに当該外部機器へのアクセスが許可されるＷｅｂアプリケーションを示す情報を記憶した第一の記憶部を参照して特定する特定部と、
検出された外部機器への要求を、特定されたＷｅｂアプリケーションから受け付けるためのインタフェースを生成する生成部と、
前記特定されたＷｅｂアプリケーションのコンテンツデータと、前記インタフェースとに同じＩＰアドレスを割り当てる割当部と、
前記コンテンツデータが読み出されて起動されたＷｅｂアプリケーションから、前記インタフェースを介して前記要求を受信し、当該要求を無線通信を介して前記検出された外部機器に送信する送信部と、
を有することを特徴とする情報処理装置。
（付記６）
前記割当部は、前記Ｗｅｂアプリケーションごとに異なるＩＰアドレスを割り当てる、
ことを特徴とする付記５記載の情報処理装置。
（付記７）
前記生成部は、無線通信を介して検出された外部機器ごとに前記インタフェースを生成する、
ことを特徴とする付記５又は６記載の情報処理装置。
（付記８）
前記インタフェースの呼び出しを前記コンピュータに実行させるための情報が記述されたプログラムコードにおいて、呼び出し対象のインタフェースの識別情報が指定される部分に、当該プログラムコードに関連付けられている識別情報に係る外部機器に対して生成されたインタフェースの識別情報を適用して、前記Ｗｅｂアプリケーションの構成要素として、前記プログラムコードを追加する追加部を有する、
ことを特徴とする付記５乃至７いずれか一項記載の要求送信方法。
（付記９）
１以上のＷｅｂアプリケーションがインストールされたコンピュータに、
無線通信を介して外部機器が検出されると、前記１以上のＷｅｂアプリケーションの中で前記外部機器にアクセスが許可されるＷｅｂアプリケーションを、外部機器ごとに当該外部機器へのアクセスが許可されるＷｅｂアプリケーションを示す情報を記憶した第一の記憶部を参照して特定し、
検出された外部機器への要求を、特定されたＷｅｂアプリケーションから受け付けるためのインタフェースを生成し、
前記特定されたＷｅｂアプリケーションのコンテンツデータと、前記インタフェースとに同じＩＰアドレスを割り当て、
前記コンテンツデータが読み出されて起動されたＷｅｂアプリケーションから、前記インタフェースを介して前記要求を受信し、当該要求を無線通信を介して前記検出された外部機器に送信する、
処理を実行させることを特徴とするプログラム。
（付記１０）
前記割り当てる処理は、前記Ｗｅｂアプリケーションごとに異なるＩＰアドレスを割り当てる、
ことを特徴とする付記９記載のプログラム。
（付記１１）
前記生成する処理は、無線通信を介して検出された外部機器ごとに前記インタフェースを生成する、
ことを特徴とする付記９又は１０記載のプログラム。
（付記１２）
前記コンピュータに、
前記インタフェースの呼び出しを前記コンピュータに実行させるための情報が記述されたプログラムコードにおいて、呼び出し対象のインタフェースの識別情報が指定される部分に、当該プログラムコードに関連付けられている識別情報に係る外部機器に対して生成されたインタフェースの識別情報を適用し、
前記Ｗｅｂアプリケーションの構成要素として、前記プログラムコードを追加する、
処理をさせることを特徴とする付記９乃至１１いずれか一項記載のプログラム。
【符号の説明】
【００９７】
１０          ユーザ端末
１１          アプリ起動部
１２          ブラウザ部
１３          Ｗｅｂアプリ
１４          ローカルサーバ部
１５          ガジェット検出部
１６          設定部
１７          ＡＰＩ生成部
２０          連携管理サーバ
２１          情報送信部
２２          端末認証部
２３          端末情報記憶部
２４          連携情報記憶部
２５          ガジェット一覧記憶部
３０          ガジェット
１０１        ＣＰＵ
１０２        メモリ
１０３        補助記憶装置
１０４        タッチパネル
１０５        無線通信装置
１１１        連携情報キャッシュ部
１１２        ガジェット一覧キャッシュ部
【図１】
0006358063.tif 000002
【図２】
0006358063.tif 000003
【図３】
0006358063.tif 000004
【図４】
0006358063.tif 000005
【図５】
0006358063.tif 000006
【図６】
0006358063.tif 000007
【図７】
0006358063.tif 000008
【図８】
0006358063.tif 000009
【図９】
0006358063.tif 000010
【図１０】
0006358063.tif 000011
【図１１】
0006358063.tif 000012
【図１２】
0006358063.tif 000013
【図１３】
0006358063.tif 000014
【図１４】
0006358063.tif 000015
【図１５】
0006358063.tif 000016