(57)【特許請求の範囲】
【請求項１】
情報処理装置が、
外部機器ごとに記憶部に記憶されている、外部機器と無線通信を介して接続するために必要な接続情報を用いて、外部機器と無線通信を介して接続する処理と、
接続された外部機器のうちの第１の外部機器が対応している無線通信の接続方法と、接続された外部機器のうちの第２の外部機器が対応している無線通信の接続方法とを比較し、前記第２の外部機器について、前記第１の外部機器との接続の可否を判定する処理と、
前記判定する処理において接続が可能であると判定された場合に、前記第１の外部機器と当該情報処理装置との接続を切断して、前記第１の外部機器に対する前記接続情報を前記第２の外部機器に送信して、前記第１の外部機器との接続を前記第２の外部機器に実行させる処理と、
を実行することを特徴とする通信方法。
【請求項２】
前記情報処理装置が、
前記接続する処理において接続された外部機器ごとに、当該外部機器に対応するアイコンを表示する処理を実行し、
前記判定する処理は、前記第１の外部機器に対応するアイコンについて、前記第２の外部機器に対応するアイコンに関係した所定の操作が行われると実行される、
ことを特徴とする請求項１記載の通信方法。
【請求項３】
前記情報処理装置が、
前記第２の外部機器から暗号鍵を受信する処理を実行し、
前記実行させる処理は、前記暗号鍵によって暗号化された前記接続情報を前記第２の外部機器に送信する、
ことを特徴とする請求項１又は２記載の通信方法。
【請求項４】
前記情報処理装置が、
前記第１の外部機器が前記第２の外部機器に接続されている状態において、所定の操作が行われると、前記第２の外部機器に前記第１の外部機器との接続を切断させ、前記第１の外部機器に対する前記接続情報を用いて当該情報処理装置と前記第１の外部機器とを接続する処理を実行する、
ことを特徴とする請求項１乃至３いずれか一項記載の通信方法。
【請求項５】
情報処理装置であって、
外部機器ごとに記憶部に記憶されている、外部機器と無線通信を介して接続するために必要な接続情報を用いて、外部機器と無線通信を介して接続する接続部と、
接続された外部機器のうちの第１の外部機器が対応している無線通信の接続方法と、接続された外部機器のうちの第２の外部機器が対応している無線通信の接続方法とを比較し、前記第２の外部機器について、前記第１の外部機器との接続の可否を判定する判定部と、
前記判定部によって接続が可能であると判定された場合に、前記第１の外部機器と当該情報処理装置との接続を切断して、前記第１の外部機器に対する前記接続情報を前記第２の外部機器に送信して、前記第１の外部機器との接続を前記第２の外部機器に実行させる切替部と、
を有することを特徴とする情報処理装置。
【請求項６】
情報処理装置に、
外部機器ごとに記憶部に記憶されている、外部機器と無線通信を介して接続するために必要な接続情報を用いて、外部機器と無線通信を介して接続する処理と、
接続された外部機器のうちの第１の外部機器が対応している無線通信の接続方法と、接続された外部機器のうちの第２の外部機器が対応している無線通信の接続方法とを比較し、前記第２の外部機器について、前記第１の外部機器との接続の可否を判定する処理と、
前記判定する処理において接続が可能であると判定された場合に、前記第１の外部機器と当該情報処理装置との接続を切断して、前記第１の外部機器に対する前記接続情報を前記第２の外部機器に送信して、前記第１の外部機器との接続を前記第２の外部機器に実行させる処理と、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信方法、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
スマートフォン等のスマート端末と連携可能なデバイス（以下、単に「ガジェット」という。）が増加している。スマート端末と連携可能なガジェットの一例として、スマート端末のカメラ機能、ストレージ機能、又はディスプレイ機能等を拡張可能な周辺機器が挙げられる。多数のガジェットをスマート端末に連携させることで、ユーザは、より高機能がサービスを享受できる。
【０００３】
但し、ガジェットとの連携のためにスマートフォンが有するリソース（例えば、無線帯域やコネクタ数等）は有限である。したがって、連携対象のガジェットが増加すると、一部又は全部のガジェットについては、アクセスポイントとして機能可能なガジェットを経由するように、接続形態が変更されなければならない。
【０００４】
図１は、スマート端末とガジェットとの接続形態の変更を説明するための図である。（１）では、スマート端末と、ガジェットｄ１及びガジェットｄ２とは、直接的に接続されている。（２）には、更に、ガジェットｄ３をスマート端末に接続させようとした場合の接続形態の一例が示されている。この場合、例えば、スマート端末の帯域不足により、ガジェットｄ３を直接的にスマート端末に接続させることができないこととする。そこで、アクセスポイントとして機能可能なガジェットｄ４をスマート端末に接続させ、ガジェットｄ２及びガジェットｄ４は、ガジェットｄ４を経由してスマート端末に接続されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００６−５２４９７３号公報
【特許文献２】特開２０１０−１５２９１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来、図１の（１）の状態から（２）の状態へ変更するためには、ユーザが、手作業によって、関係する各ガジェットに関して設定変更をする必要が有った。例えば、ガジェットｄ２及びガジェットｄ３が、ガジェットｄ４経由でスマート端末に接続されるようにするための設定が、ガジェットｄ２及びガジェットｄ３のそれぞれに対して行われる必要が有った。図１では、便宜上、比較的単純なネットワーク構成が示されているが、スマート端末に接続するガジェットが増加すると、斯かる手作業はより煩雑になることが予想される。
【０００７】
そこで、一側面では、情報処理装置と機器との接続形態を変更するための操作負担を軽減することを目的とする。
【課題を解決するための手段】
【０００８】
一つの案では、情報処理装置は、外部機器ごとに記憶部に記憶されている、外部機器と無線通信を介して接続するために必要な接続情報を用いて、外部機器と無線通信を介して接続する処理と、接続された外部機器のうちの第１の外部機器の属性情報と、接続された外部機器のうちの第２の外部機器との属性情報とを比較し、前記第２の外部機器について、前記第１の外部機器との接続の可否を判定する処理と、前記判定する処理において接続が可能であると判定された場合に、前記第１の外部機器と当該情報処理装置との接続を切断して、前記第１の外部機器に対する前記接続情報を前記第２の外部機器に送信して、前記第１の外部機器との接続を前記第２の外部機器に実行させる処理と、を実行する。
【発明の効果】
【０００９】
一側面によれば、情報処理装置と機器との接続形態を変更するための操作負担を軽減することができる。
【図面の簡単な説明】
【００１０】
【図１】スマート端末とガジェットとの接続形態の変更を説明するための図である。
【図２】本発明の実施の形態におけるシステム構成例を示す図である。
【図３】本実施の形態におけるユーザ端末のハードウェア構成例を示す図である。
【図４】本発明の実施の形態における連携管理サーバ及びユーザ端末の機能構成例を示す図である。
【図５】本発明の実施の形態における拡張デバイスの機能構成例を示す図である。
【図６】登録処理の処理手順の一例を説明するための図である。
【図７】登録処理の処理手順の一例を説明するための図である。
【図８】ビーコンデータの構成例を示す図である。
【図９】登録完了通知の構成例を示す図である。
【図１０】登録情報記憶部の構成例を示す図である。
【図１１】ワンタイムコードの生成方法の一例を説明するための図である。
【図１２】Ｗｅｂアプリの起動処理の処理手順の一例を説明するための図である。
【図１３】ガジェットの検出時に実行される処理手順の一例を説明するための図である。
【図１４】検出リストの一例を示す図である。
【図１５】許可リスト記憶部の構成例を示す図である。
【図１６】ガジェット一覧記憶部の構成例を示す図である。
【図１７】端末情報記憶部の構成例を示す図である。
【図１８】検出ガジェットリストの構成例を示す図である。
【図１９】第一の連携処理の処理手順の一例を説明するための図である。
【図２０】ドライバの構成例を示す図である。
【図２１】ドライバに対応するアイコンの第一の表示例を示す図である。
【図２２】ドライバに対応するアイコンの第二の表示例を示す図である。
【図２３】ドライバの定義内容の一例を示す図である。
【図２４】ドライバオブジェクトの削除に伴ってアイコンが消去される例を示す図である。
【図２５】第二の連携処理の処理手順の一例を説明するための図である。
【図２６】ドライバのアイコンの操作例を示す図である。
【図２７】ドライバに基づくガジェットとの接続処理の処理手順の一例を説明するためのフローチャートである。
【図２８】ユーザ端末とガジェットとの接続形態の変更を説明するための図である。
【図２９】接続形態の変更処理の処理手順の一例を説明するための図である。
【図３０】接続形態の変更処理の処理手順の一例を説明するための図である。
【図３１】接続形態の変更処理の処理手順の一例を説明するための図である。
【図３２】アイコンのドラッグ・アンド・ドロップの一例を示す図である。
【図３３】ガジェットが拡張デバイスに収容された状態を示すアイコンの表示例を示す図である。
【図３４】接続形態の復帰処理の処理手順の一例を説明するための図である。
【図３５】解除指示の入力例を示す図である。
【図３６】ＢａａＳ機能を提供するクラウドサービスとの連携例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図２は、本発明の実施の形態におけるシステム構成例を示す図である。図２において、１以上のユーザ端末１０は、無線ＬＡＮ（Local Area Network）等の無線通信を介して連携管理サーバ２０と通信可能である。また、各ユーザ端末１０は、ガジェット３０ａ及びガジェット３０ｂ等、１以上のガジェット３０と、無線ＬＡＮ又はＢｌｕｅｔｏｏｔｈ（登録商標）等の無線通信を介して通信可能である。なお、説明の便宜上、図２に示されるシステム構成は、或る企業内（以下、「企業Ａ」という。）において構築されていることとする。
【００１２】
ユーザ端末１０は、ユーザによって直接操作される端末である。ユーザ端末１０の一例として、スマートフォン及びタブレット端末等のスマート端末が挙げられる。但し、ＰＣ（Personal Computer）等、他の種類の情報処理装置であって、無線通信が可能な情報処理装置が、ユーザ端末１０として利用されてもよい。本実施の形態において、ユーザ端末１０は、無線通信を介してガジェット３０と連携した処理を実行する。なお、ユーザ端末１０のユーザは、例えば、企業Ａの従業員である。
【００１３】
ガジェット３０は、ユーザ端末１０と連携する外部機器の一例である。例えば、ユーザ端末１０のカメラ機能、ストレージ機能、又はディスプレイ機能等を拡張可能な周辺機器が、ガジェット３０として用いられてもよい。又は、エアコン等の家電機器が、ガジェット３０として用いられてもよい。
【００１４】
本実施の形態において、一部のガジェット３０は、他のガジェット３０を収容可する能力を有するガジェット（以下、「拡張デバイス」という。）であるとする。他のガジェット３０を収容する能力とは、例えば、ユーザ端末１０と他のガジェット３０との通信を中継する能力である。例えば、無線通信のアクセスポイントとして機能するガジェットが、拡張デバイスとされる。拡張デバイスの具体例として、ユーザ端末１０の充電スタンドやＷｉＦｉ（Wireless Fidelity）（登録商標）ルータ等が挙げられる。また、スマートフォンやタブレット端末等が拡張デバイスとして用いられてもよい。図２においては、ガジェット３０ｚが、拡張デバイス３０ｚである例が示されている。以下、ガジェット３０ｚを、拡張デバイス３０ｚという。但し、単に、ガジェット３０というとき、ガジェット３０には拡張デバイス３０ｚも含まれる。
【００１５】
連携管理サーバ２０は、各ユーザ端末１０がガジェット３０と（ガジェット３０と接続）するために必要な情報や、各ユーザ端末１０にインストールされたＷｅｂアプリケーション（以下、「Ｗｅｂアプリ」という。）との連携（アクセス）が許可されるガジェット３０を示す情報等を管理するコンピュータである。すなわち、本実施の形態では、企業Ａのシステム管理者によって、各ユーザ端末１０にインストールされるＷｅｂアプリの中で、各ガジェット３０との連携が許可されるＷｅｂアプリが判断される。
【００１６】
なお、Ｗｅｂアプリとは、ＨＴＭＬ（HyperText Markup Language）、ＣＳＳ（Cascading Style Sheets）、及びＪａｖａＳｃｒｉｐｔ（登録商標）等を構成要素とするアプリケーションである。本実施の形態において、Ｗｅｂアプリとは、Ｐａｃｋａｇｅｄ  Ｗｅｂ  ａｐｐｓ形式のＷｅｂアプリをいう。
【００１７】
図３は、本実施の形態におけるユーザ端末のハードウェア構成例を示す図である。図３において、ユーザ端末１０は、ＣＰＵ１０１、メモリ１０２、補助記憶装置１０３、タッチパネル１０４、及び無線通信装置１０５等を有する。
【００１８】
補助記憶装置１０３は、ユーザ端末１０にインストールされたプログラム等を記憶する。メモリ１０２は、プログラムの起動指示があった場合に、補助記憶装置１０３からプログラムを読み出して記憶する。ＣＰＵ１０１は、メモリ１０２に記憶されたプログラムに従ってユーザ端末１０に係る機能を実現する。
【００１９】
タッチパネル１０４は、入力機能と表示機能との双方を備えた電子部品であり、情報の表示や、ユーザからの入力の受け付け等を行う。タッチパネル１０４は、表示装置１１１及び入力装置１１２等を含む。
【００２０】
表示装置１１１は、液晶ディスプレイ等であり、タッチパネル１０４の表示機能を担う。入力装置１１２は、表示装置１１１に対する接触物の接触を検出するセンサを含む電子部品である。接触物の接触の検出方式は、静電方式、抵抗膜方式、又は光学方式等、公知の方式のいずれであってもよい。なお、接触物とは、タッチパネル１０４の接触面（表面）に接触する物体をいう。斯かる物体の一例として、ユーザの指や専用又は一般のペン等が挙げられる。
【００２１】
無線通信装置１０５は、無線通信を行うために必要とされる電子部品である。
【００２２】
図４は、本発明の実施の形態における連携管理サーバ及びユーザ端末の機能構成例を示す図である。図４において、連携管理サーバ２０は、情報送信部２１及び端末認証部２２を有する。これら各部は、連携管理サーバ２０にインストールされたプログラムが、連携管理サーバ２０のＣＰＵに実行させる処理により実現される。連携管理サーバ２０は、また、端末情報記憶部２３、許可リスト記憶部２４、及びガジェット一覧記憶部２５等を利用する。これら各記憶部は、連携管理サーバ２０の補助記憶装置、又は連携管理サーバ２０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００２３】
情報送信部２１は、許可リスト記憶部２４に記憶されている情報（以下、「許可リスト」という。）や、ガジェット一覧記憶部２５に記憶されている情報（以下、「ガジェット一覧情報」という。）を、ユーザ端末１０からの要求に応じて返信する。許可リストとは、ユーザ端末１０にインストールされたＷｅｂアプリ１３のうち、各ガジェット３０との連携が許可される（各ガジェット３０へのアクセスが許可される）Ｗｅｂアプリ１３を示す情報である。ガジェット一覧情報は、ガジェット３０ごとのガジェット情報の一覧である。ガジェット情報とは、ガジェット３０の属性情報である。ガジェット情報には、ユーザ端末１０がガジェット３０と接続するために必要とされる情報も含まれる。例えば、ＳＳＩＤ（Service Set Identifier）及びパスワード等がガジェット情報に含まれる。
【００２４】
端末認証部２２は、許可リスト及びガジェット一覧情報を要求するユーザ端末１０に関して認証を行う。認証は、端末情報記憶部２３を参照して行われる。
【００２５】
ユーザ端末１０は、アプリ起動部１１、ブラウザ部１２、Ｗｅｂアプリ１３ａ及び１３ｂ等の１以上のＷｅｂアプリ１３、ローカルサーバ部１４ａ及び１４ｂ等のＷｅｂアプリ１３ごとのローカルサーバ部１４、ガジェット検出部１５、設定部１６、並びにＡＰＩサーバ部１７等を有する。これら各部は、ユーザ端末１０にインストールされた１以上のプログラムがＣＰＵ１０１に実行させる処理により実現される。ユーザ端末１０は、また、許可リストキャッシュ部１２１、ガジェット一覧キャッシュ部１２２、及び登録情報記憶部１２３等の記憶部を有する。これら各記憶部は、補助記憶装置１０３又はメモリ１０２等を用いて実現可能である。
【００２６】
アプリ起動部１１は、ユーザ端末１０にインストールされているＷｅｂアプリ１３のうち、起動対象として選択されたＷｅｂアプリ１３の起動処理を実行する。アプリ起動部１１は、Ｗｅｂアプリ１３の起動処理の過程において、起動対象のＷｅｂアプリ１３のコンテンツデータにＩＰアドレス及びボート番号との組み合わせ（すなわち、ＵＲＬ（Uniform Resource Locator））を割り当てる。Ｗｅｂアプリ１３のコンテンツデータとは、ＨＴＭＬファイル、ＣＳＳファイル、及びＪａｖａＳｃｒｉｐｔ（登録商標）ファイル等の集合であり、補助記憶装置１０３に記憶されている。アプリ起動部１１は、また、起動処理において、起動対象のＷｅｂアプリ１３に対応するローカルサーバ部１４のスレッドを生成する。
【００２７】
ブラウザ部１２は、Ｗｅｂブラウザとして機能する。ブラウザ部１２は、Ｗｅｂアプリ１３の実行環境でもある。すなわち、ブラウザ部１２は、Ｗｅｂアプリ１３のコンテンツデータの内容を解析し、当該コンテンツデータに基づく画像の表示や、当該コンテンツデータに基づく処理の実行等を行う。なお、ブラウザ部１２は、ＣＳＰ（Content Security Policy）に基づいて、各Ｗｅｂアプリ１３による外部へのアクセスを制限してもよい。すなわち、各Ｗｅｂアプリ１３による外部へのアクセス先は、基本的に、Ｗｅｂアプリ１３ごとのホワイトリストに含まれているＩＰアドレスに制限されてもよい。
【００２８】
ローカルサーバ部１４は、ユーザ端末１０内においてＷｅｂサーバとして機能する。すなわち、ローカルサーバ部１４は、ソケット通信用のポート（以下、「サーバポート」という。）を生成（オープン）し、サーバポートへのＨＴＴＰ（HyperText Transfer Protocol）リクエストを待機する。ローカルサーバ部１４は、サーバポートを介して、ブラウザ部１２からのＷｅｂアプリ１３のコンテンツデータの取得要求（ＨＴＴＰリクエスト）が受信されると、当該コンテンツデータを含む応答（ＨＴＴＰレスポンス）をブラウザ部１２に返信する。或るローカルサーバ部１４のサーバポートのＩＰアドレスは、当該ローカルサーバ部１４に対応するＷｅｂアプリ１３のコンテンツデータに対して割り当てられたＩＰアドレスと同じである。したがって、コンテンツデータの取得要求には、当該コンテンツデータに割り当てられたＩＰアドレスが指定される。その結果、ブラウザ部１２は、当該コンテンツデータのダウンロード元が、当該ＩＰアドレスに係るドメインに属するＷｅｂアプリ１３であると認識する。なお、本実施の形態において、各ローカルサーバ部１４のサーバポートのＩＰアドレスは共通する。
【００２９】
ＡＰＩサーバ部１７は、無線通信を介してガジェットと接続し、各Ｗｅｂアプリ１３によるガジェット３０へのアクセスを仲介又は代行する。具体的には、ＡＰＩサーバ部１７は、Ｗｅｂアプリ１３からのガジェット３０へのアクセス要求を受け付けるためのインタフェースとして、ソケット通信用のポート（以下、「ＡＰＩポート」という。）を生成（オープン）する。ＡＰＩポートは、ガジェット３０ごとに生成される。ＡＰＩポートには、当該ＡＰＩポートのオープンを要求したＷｅｂアプリ１３のコンテンツデータと同じＩＰアドレスが割り当てられてもよい。
【００３０】
ＣＳＰに基づいて、Ｗｅｂアプリ１３のアクセス先が制限される場合、Ｗｅｂアプリ１３のアクセス先は、ブラウザ部１２によって、基本的には当該Ｗｅｂアプリ１３に対応するホワイトリスト（ＣＳＰのホワイトリスト）の範囲に制限される。但し、ＣＳＰにおいても、同一オリジンポリシー（Same-Origin Policy）が有効である。すなわち、ブラウザ部１２は、Ｗｅｂアプリ１３のオリジン（コンテンツデータのダウンロード元）のＩＰアドレスに係るドメインの範囲内であれば、ホワイトリストに拘わらず、当該Ｗｅｂアプリ１３によるアクセスを許可する。したがって、或るＷｅｂアプリ１３が、ＡＰＩポートにアクセスしようとした場合、当該ＡＰＩポートのＩＰアドレスが、当該Ｗｅｂアプリ１３のコンテンツデータのＩＰアドレスと同じであれば、当該アクセスは、ブラウザ部１２によって許可される。ブラウザ部１２から見れば、当該アクセスは、当該Ｗｅｂアプリ１３のオリジンと同じドメイン内に対するアクセスに該当するからである。
【００３１】
ＡＰＩサーバ部１７は、Ｗｅｂアプリ１３によって或るＡＰＩポートがアクセスされると、当該ＡＰＩポートに対応するガジェット３０にアクセスする。すなわち、当該ガジェット３０が公開しているＡＰＩを構成するメソッドの呼び出しが行われる。その結果、Ｗｅｂアプリ１３は、実質的にガジェット３０にアクセスすることができる。なお、ガジェット３０が公開しているＡＰＩを構成するメソッドのうち、ＡＰＩサーバ部１７が呼び出すべきメソッドは、Ｗｅｂアプリ１３によって指定される。
【００３２】
ガジェット検出部１５は、無線通信を介してガジェット３０の存在を検出する。設定部１６は、ガジェット検出部１５によってガジェット３０が検出されると、連携管理サーバ２０から許可リスト及びガジェット一覧情報をダウンロードする。ダウンロードされた情報は、許可リストキャッシュ部１２１又はガジェット一覧キャッシュ部１２２に記憶される。設定部１６は、また、検出されたガジェット３０に対応するＡＰＩポートの生成を、ＡＰＩサーバ部１７に要求する。登録情報記憶部１２３は、拡張デバイス３０ｚに関する属性情報を記憶する。
【００３３】
図５は、本発明の実施の形態における拡張デバイスの機能構成例を示す図である。図５において、拡張デバイス３０ｚは、ビーコン生成部３１、デバイス管理部３２、拡張サーバ部３３、中継サーバ部３４、及び仲介部３５等を有する。これら各部は、拡張デバイス３０ｚにインストールされた１以上のプログラムが、拡張デバイス３０ｚのＣＰＵに実行させる処理により実現される。拡張デバイス３０ｚは、また、ドライバ記憶部３６、共通鍵記憶部３７、及びポート対応記憶部３８等を有する。これら各記憶部は、拡張デバイス３０ｚのメモリ又は補助記憶装置等を用いて実現可能である。
【００３４】
ビーコン生成部３１は、拡張デバイス３０ｚの存在をユーザ端末１０に通知するためのビーコンを生成し、生成されたビーコンを送信する。デバイス管理部３２は、拡張デバイス３０ｚにガジェット３０を収容するための処理を制御する。拡張サーバ部３３は、拡張デバイス３０ｚに収容されたガジェット３０のＡＰＩを呼び出すためのソケット通信用のポート（以下、「拡張ポート」という。）を生成する。拡張ポートは、ユーザ端末１０におけるＡＰＩポートと同様の役割を担い、拡張デバイス３０ｚに収容されたガジェット３０ごとに生成される。
【００３５】
中継サーバ部３４は、ユーザ端末１０と、拡張デバイス３０ｚに収容されたガジェット３０に対応するＡＰＩポートとを中継するためのソケット通信用のポート（以下、「中継ポート」という。）を生成する。すなわち、中継ポートは、拡張ポートに対するインタフェースをユーザ端末１０に提供するためのポートであり、ガジェット３０ごとに生成される。仲介部３５は、拡張ポートと中継ポートとの対応関係を管理し、拡張ポートに対するメッセージを、中継ポートに伝達する。当該対応関係を示す情報は、ポート対応記憶部３８に記憶される。
【００３６】
ドライバ記憶部３６は、拡張デバイス３０ｚのドライバを記憶する。ドライバについては、後述される。共通鍵記憶部３７は、ユーザ端末１０との間で共有される暗号鍵（共通鍵）を記憶する。
【００３７】
以下、ユーザ端末１０が実行する処理手順について説明する。本実施の形態において、ユーザ端末１０は、「登録モード」及び「運用モード」の二つの状態を有する。登録モードとは、拡張デバイス３０ｚとの連携の準備のための処理が実行されるモードである。運用モードとは、ガジェット３０との連携が行われるモードである。そこで、まず、登録モードにおいて実行される処理について説明する。本実施の形態では、不正な拡張デバイス３０ｚとの連携が回避されるようにするために、ユーザ端末１０と拡張デバイス３０ｚとの間に信頼関係を構築するための処理が、登録モードにおいて実行される。当該処理を、「登録処理」という。
【００３８】
図６及び図７は、登録処理の処理手順の一例を説明するための図である。拡張デバイス３０ｚのビーコン生成部３１は、定期的に、ビーコンによって送信するデータ（以下、「ビーコンデータ」という。）を生成し（Ｓ１０１〜Ｓ１０３）、生成されたビーコンデータをビーコンによって送信（ブロードキャスト）している（Ｓ１０４）。より詳しくは、共通鍵記憶部３７に１以上の共通鍵が記憶されている場合（Ｓ１０１でＹｅｓ）、ビーコン生成部３１は、当該共通鍵に基づいて生成されるワンタイムコードを含むビーコンを生成する（Ｓ１０２）。一方、共通鍵記憶部３７に共通鍵が記憶されていない場合（Ｓ１０１でＮｏ）、ビーコン生成部３１は、ワンタイムコードを生成できないため、ワンタイムコードを含まないビーコンを生成する（Ｓ１０３）。ワンタイムコードとは、一定期間に限り有効なパスワードである。
【００３９】
図８は、ビーコンデータの構成例を示す図である。図８において、ビーコンデータは、ＭＡＣアドレス、データ長、データ部、及びＣＲＣ（Cyclic Redundancy Check）等を含む。ＭＡＣアドレスは、ビーコンの宛先のＭＡＣアドレスである。データ長は、データ部のデータサイズである。データ部は、ビーコンデータの本体部分であり、例えば、ドライバ名、ＩＤ、ＭＡＣ値、収容可能属性、収容可能数、及びワンタイムコード等を含む。
【００４０】
ドライバ名は、ビーコンの送信元の拡張デバイス３０ｚの識別名であると共に、当該拡張デバイス３０ｚに対するドライバの識別名でもある。ドライバとは、当該拡張デバイス３０ｚと接続するために必要な情報を含むデータである。ＩＤは、無線通信において当該拡張デバイス３０ｚを識別するための情報である。例えば、ＳＳＩＤ（Service Set Identifier）がＩＤとして用いられてもよい。ＭＡＣ値は、当該拡張デバイス３０ｚのＭＡＣアドレスである。収容可能属性は、他のガジェット３０の収容の可否を示す情報であり、ｔｒｕｅ又はｆａｌｓｅの値をとる。ｔｒｕｅは、他のガジェット３０を収容可能であることを示す。ｆａｌｓｅは、他のガジェットを収容できないことを示す。拡張デバイス３０ｚの場合、収容可能属性の値は、ｔｒｕｅである。収容可能数は、現時点において収容可能なガジェット３０の残りの数であり、収容可能数の値は、収容可能属性の値がｔｒｕｅである場合に有効である。収容可能数は、例えば、接続方法ごとに値を含む。接続方法とは、例えば、ＷｉＦｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ、ＢＬＥ（Bluetooth（登録商標） Low Energy）等、無線通信の種別である。ワンタイムコードは、上記したワンタイムコードである。すなわち、共通鍵が既に記憶されている場合に、ワンタイムコードが生成されて、ビーコンデータに含められる。なお、ビーコンデータの構造は、例えば、ビーコンの送信元の拡張デバイス３０ｚの接続方法に応じて異なる。また、共通鍵は、登録処理が行われたユーザ端末１０（登録済みのユーザ端末１０）ごとに生成される。したがって、共通鍵が記憶されていないということは、拡張デバイス３０ｚとの間で登録処理が行われたユーザ端末１０が一つも無いことを示す。なお、複数の共通鍵が記憶されている場合（複数のユーザ端末１０との間で既に登録処理が行われている場合）、各共通鍵によって生成されるワンタイムコードを含むビーコンが、一定周期で順番に（又は交互に）送信されてもよい。
【００４１】
一方、ユーザ端末１０のユーザが、登録モードへの移行指示を所定の操作によってユーザ端末１０に対して入力すると、ユーザ端末１０の設定部１６は、ガジェット検出部１５に対し、登録モードへの移行を指示する（Ｓ１２２）。ガジェット検出部１５は、当該要求に応じ、登録モードをＯＮにする（Ｓ１２３）。ガジェット検出部１５は、登録モードがＯＮである状態においてビーコンを検出すると（Ｓ１２４）、検出されたビーコンのビーコンデータのリスト（以下、「ビーコンリスト」という。）を、設定部１６に通知する（Ｓ１２５）。ビーコンを発している拡張デバイスは、一つであるとは限らないため、検出された全てのビーコンデータのリストが、検出リストとして設定部１６に通知される。
【００４２】
設定部１６は、例えば、ビーコンリストを表示して、登録対象とする拡張デバイスの選択をユーザから受け付ける。各ビーコンデータの全部が表示されるのは煩雑であるため、各ビーコンデータに含まれているドライバ名が表示されてもよい。ユーザに選択の機会を与えることにより、連携対象とする拡張デバイスを、ユーザによって許可された拡張デバイスに限定することができる。ユーザによって、ビーコンリストの中のいずれかの選択肢が選択されると、設定部１６は、選択された選択肢に係るＭＡＣアドレスを指定して、拡張デバイスの登録を、ガジェット検出部１５に要求する（Ｓ１２６）。ここでは、拡張デバイス３０ｚが選択されたこととする。
【００４３】
ガジェット検出部１５は、当該ＭＡＣアドレス宛に、登録要求を示すビーコンを送信する（Ｓ１２７）。当該登録要求には、ビーコン生成部３１によってこれから生成される共通鍵を受信するためのチャネル（媒体）の一覧情報（以下、「チャネルリスト」という。）が含まれる。斯かるチャネルの一例としては、カメラ、ＮＦＣ（Near field communication）、超音波等が挙げられる。カメラによる共通鍵の受信は、拡張デバイス３０ｚにおいて表示される、共通鍵を示す画像（例えば、２次元コード）を、ユーザ端末１０のカメラによって撮像することにより実現される。
【００４４】
登録要求の宛先に係る拡張デバイス３０ｚのビーコン生成部３１は、当該登録要求を受信すると（Ｓ１０５）、チャネルリストの中から、当該拡張デバイス３０ｚが対応可能なチャネルを選択する（Ｓ１０６）。続いて、ビーコン生成部３１は、選択されたチャネルを示す情報を、ビーコンによってユーザ端末１０に送信する（Ｓ１０７）。ユーザ端末１０のガジェット検出部１５は、当該情報を受信すると（Ｓ１２８でＹｅｓ）、当該情報が示すチャネルによる共通鍵の受信の準備を設定部１６に要求する（Ｓ１２９）。設定部１６は、当該チャネルを起動し、共通鍵の受信の態勢を整える（Ｓ１３０）。
【００４５】
一方、拡張デバイス３０ｚのビーコン生成部３１は、チャネルを示す情報の送信後、新たな共通鍵を生成する（Ｓ１０８）。すなわち、仮に、ステップＳ１０４においてワンタイムコード付きのビーコンが送信されていた場合には、当該ワンタイムコードの生成に用いられた共通鍵とは異なる共通鍵が新たに生成される。共通鍵は、ユーザ端末１０ごとに生成されるからである。
【００４６】
続いて、ビーコン生成部３１は、ステップＳ１０６において選択されたチャネルを介して、新たに生成された共通鍵を送信する（Ｓ１０９）。例えば、ＮＦＣ又は超音波によって共通鍵が送信される。または、カメラがチャネルとして選択された場合には、共通鍵を示す画像が表示される。また、他のチャネルによって共通鍵が送信（伝達）されてもよい。
【００４７】
ユーザ端末１０の設定部１６は、共通鍵を受信すると（Ｓ１３１）、当該共通鍵を用いてワンタイムコードを生成する（Ｓ１３２）。設定部１６によるワンタイムコードの生成方法は、拡張デバイス３０ｚによるワンタイムコードの生成方法と同じである。続いて、設定部１６は、ステップＳ１３２において生成されたワンタイムコードを、ガジェット検出部１５に通知する（Ｓ１３３）。ガジェット検出部１５は、当該ワンタイムコードを含む登録完了通知を、ビーコンによって拡張デバイス３０ｚに送信する（Ｓ１３４）。
【００４８】
図９は、登録完了通知の構成例を示す図である。図９に示されるように、登録完了通知には、ＭＡＣアドレス、時刻、アクセス情報要否、及びワンタイムコード等が含まれる。ＭＡＣアドレスは、ユーザ端末１０のＭＡＣアドレスである。時刻は、現在時刻である。アクセス情報要否は、拡張デバイス３０ｚのアクセス情報の要否を示す情報である。ｔｒｕｅは、アクセス情報が必要であることを示し、ｆａｌｓｅは、アクセス情報が不要であることを示す。アクセス情報とは、無線通信によって拡張デバイス３０ｚにアクセスするために必要な情報をいい、例えば、ＷｉＦｉ（登録商標）であれば、ＳＳＩＤ及びパスワードがアクセス情報に該当する。ワンタイムコードは、ステップＳ１３２において生成されたワンタイムコードである。
【００４９】
拡張デバイス３０ｚのビーコン生成部３１は、登録完了通知を受信すると（Ｓ１１０でＹｅｓ）、ステップＳ１０８において生成された共通鍵を用いてワンタイムコードを生成する（Ｓ１１１）。続いて、ビーコン生成部３１は、生成されたワンタイムコードが、登録完了通知に含まれているワンタイムコードに一致するか否かを判定する（Ｓ１１２）。二つのワンタイムコードが一致しない場合（Ｓ１１２でＮｏ）、ビーコン生成部３１は、登録処理の失敗を示す情報を、ユーザ端末１０にビーコンによって送信する（Ｓ１１３）。
【００５０】
一方、二つのワンタイムコードが一致する場合（Ｓ１１２でＹｅｓ）、ビーコン生成部３１は、ステップＳ１０８において生成された共通鍵を、ユーザ端末１０のＭＡＣアドレスに対応付けて共通鍵記憶部３７に保存する（図７のＳ１１３）。続いて、ビーコン生成部３１は、登録完了通知に含まれているアクセス情報要否の値がｔｒｕｅであるか否かを判定する（Ｓ１１４）。アクセス情報要否の値がｔｒｕｅである場合（Ｓ１１４でＹｅｓ）、ビーコン生成部３１は、拡張デバイス３０ｚのアクセス情報（例えば、接続方法、ＳＳＩＤ、及びパスワード等）を共通鍵で暗号化して、ビーコンによってユーザ端末１０に送信する（Ｓ１１５）。
【００５１】
ユーザ端末１０のガジェット検出部１５は、当該アクセス情報を受信すると（Ｓ１３５）、当該アクセス情報を設定部１６に通知する（Ｓ１３６）。続いて、ガジェット検出部１５は、登録モードをＯＦＦにする（Ｓ１３７）。
【００５２】
一方、設定部１６は、通知されたアクセス情報を、ステップＳ１３１において受信された共通鍵を用いて復号する（Ｓ１３８）。続いて、設定部１６は、当該アクセス情報に基づいて、拡張デバイス３０ｚとの無線通信を確立し、当該無線通信を介してドライバの取得要求を拡張デバイス３０ｚに送信する（Ｓ１３９）。
【００５３】
拡張デバイス３０ｚの中継サーバ部３４は、当該取得要求に応じ、ドライバ記憶部３６に記憶されているドライバを取得して（Ｓ１４０）、当該ドライバを設定部１６に返信する（Ｓ１４１）。設定部１６は、当該ドライバを受信すると、当該ドライバを補助記憶装置１０３に記憶すると共に、拡張デバイス３０ｚに関する登録情報を登録情報記憶部１２３に保存する（Ｓ１４２）。
【００５４】
図１０は、登録情報記憶部の構成例を示す図である。図１０に示されるように、登録情報記憶部１２３は、登録された拡張デバイス３０ｚごとに登録情報を記憶する。登録情報には、ドライバ名、ＳＳＩＤ、パスワード、ＭＡＣアドレス、接続方法、ドライバ名、及び共通鍵等が含まれる。
【００５５】
ドライバ名は、拡張デバイス３０ｚの識別名であると共に、拡張デバイス３０ｚのドライバの識別名である。ＳＳＩＤは、拡張デバイス３０ｚに対するＳＳＩＤである。パスワードは、拡張デバイス３０ｚに対するパスワードである。ＭＡＣアドレスは、拡張デバイス３０ｚのＭＡＣアドレスである。接続方法は、無線通信での拡張デバイス３０ｚとの接続方法である。共通鍵は、ステップＳ１３２において受信された共通鍵である。
【００５６】
なお、ドライバ名及びＭＡＣアドレスは、ビーコン（図９）から取得可能である。ＳＳＩＤ，パスワード、及び接続情報は、ステップＳ１３５において受信されたアクセス情報から取得可能である。なお、ここでのパスワードは、ワンタイムコードとは異なる。
【００５７】
続いて、ワンタイムコードの生成方法の一例について説明する。図１１は、ワンタイムコードの生成方法の一例を説明するための図である。なお、図１１では、ＯＡＵＴＨ  ＴＯＴＰ（Time-based One-Time Password）、ＲＦＣ６２３８に従って、ワンタイムコードを算出する例が示されているが、他の方法によってワンタイムコードが生成されてもよい。
【００５８】
まず、ＵＮＩＸ(登録商標)時間による現在時刻を得る（Ｓ１５１）。続いて、現在時刻を３０秒で除した結果を得る（Ｓ１５２）。但し、小数点以下は削除される。これにより、ワンタイムコードの生成時期が３０秒ずれたとしても、同じワンタイムコードを生成することができる。
【００５９】
続いて、現在時刻を３０秒で除した結果を１６バイトの１６進数のデータに変換する（Ｓ１５３）。続いて、共通鍵とビーコン（図９）のデータ部（但し、ワンタイムコードの部分は除く）とをＢＡＳＥ６４でデコードした結果と、１６進数のデータとに基づいてＨＭＡＣ（Hash-based Message Authentication Code）演算を行う（Ｓ１５４）。
【００６０】
続いて、ＨＭＡＣ演算の結果が格納されている配列であるｈｍａｃの１９番目の値をオフセット値（ｏｆｆｓｅｔ）とする（Ｓ１５５）。続いて、以下の演算結果を得る（Ｓ１５６）。
ｈｍａｘ［ｏｆｆｓｅｔ］＆０ｘ７ｆ
ｈｍａｘ［ｏｆｆｓｅｔ＋０］＆０ｘｆｆ
ｈｍａｘ［ｏｆｆｓｅｔ＋１］＆０ｘ７ｆ
ｈｍａｘ［ｏｆｆｓｅｔ＋２］＆０ｘ７ｆ
演算結果を順番に接続した値を、１０の４乗で除した余りをワンタイムパスコードとする（Ｓ１５７）。
【００６１】
続いて、運用モードにおいて実行される処理手順について説明する。まず、ガジェット３０と連携するＷｅｂアプリ１３の起動処理について説明する。図１２は、Ｗｅｂアプリの起動処理の処理手順の一例を説明するための図である。
【００６２】
例えば、ユーザ端末１０の表示装置１１１に表示されているアイコンの選択等によって、当該アイコンに係るＷｅｂアプリ１３の起動指示が入力されると（Ｓ２０１でＹｅｓ）、アプリ起動部１１は、起動対象のＷｅｂアプリ１３（ここでは、Ｗｅｂアプリ１３ａとする。）のコンテンツデータの格納場所の識別名を特定する（Ｓ２０２）。格納場所の識別名とは、例えば、ファイル名又はフォルダ名である。ここでは、コンテンツデータを格納した書庫ファイルのファイル名が、格納場所の識別名として用いられることとする。なお、当該ファイル名は、Ｗｅｂアプリ１３のアイコンに関連付けられてユーザ端末１０に記憶されている。
【００６３】
続いて、アプリ起動部１１は、Ｗｅｂアプリ１３ａに対応するＩＰアドレス、ポート番号、及びＣｏｏｋｉｅ（クッキー）を生成する（Ｓ２０３）。ＩＰアドレスは、各Ｗｅｂアプリ１３に関して共通でよい。ポート番号は、各Ｗｅｂアプリ１３間で重複しない値が割り当てられる。Ｃｏｏｋｉｅは、Ｗｅｂアプリ１３ａの認証に利用される、パスワードのような情報である。したがって、Ｃｏｏｋｉｅについても、各Ｗｅｂアプリ１３間で重複しない値が生成される。なお、Ｗｅｂアプリ１３ａに対応するＩＰアドレス及びポート番号は、Ｗｅｂアプリ１３ａのコンテンツデータに対するＩＰアドレス及びポート番号としての意味を有する。
【００６４】
続いて、アプリ起動部１１は、Ｗｅｂアプリ１３ａに対応するローカルサーバ部１４ａのスレッドを生成する（Ｓ２０４）。当該ローカルサーバ部１４ａには、ステップＳ２０２において特定されたファイル名、並びにステップＳ２０３において生成されたＩＰアドレス、ポート番号、及びＣｏｏｋｉｅが設定される。ローカルサーバ部１４ａは、起動されると、設定されたＩＰアドレス及びポート番号に対応するサーバポートを生成（開設）し（Ｓ２３１）、当該サーバポートへのアクセスを待機する。
【００６５】
続いて、アプリ起動部１１は、Ｗｅｂアプリ１３ａのＩＰアドレス、ポート番号、及びＣｏｏｋｉｅを指定して、Ｗｅｂアプリ１３ａの起動をブラウザ部１２に要求する（Ｓ２０５）。
【００６６】
ブラウザ部１２は、Ｗｅｂアプリ１３ａの起動要求に応じ、Ｗｅｂアプリ１３ａとして機能するプロセスを生成する（Ｓ２１１）。当該プロセスには、Ｗｅｂアプリ１３ａのＩＰアドレス、ポート番号、及びＣｏｏｋｉｅが設定される。なお、当該プロセスは、ブラウザ部１２としてのプロセスの子プロセスである。したがって、当該プロセスは、ブラウザ部１２の一部（ブラウザ部１２においてＷｅｂアプリ１３ａとして機能する部分）であるといえる。但し、以下では、便宜上、当該プロセスが実行する処理について、Ｗｅｂアプリ１３ａが実行主体であるとして説明する。なお、各Ｗｅｂアプリ１３は、スレッドとして起動されてもよい。ブラウザ部１２が、Ｗｅｂアプリ１３ごとにプロセスを起動するのか又はスレッドを起動するのかについては、ブラウザ部１２の実装に依存する。
【００６７】
Ｗｅｂアプリ１３ａは、起動されると、ブラウザ部１２から設定されたＩＰアドレス及びポート番号に係るサーバポート宛に、コンテンツデータの取得要求（ＨＴＴＰリクエスト）を送信する（Ｓ２２１）。ローカルサーバ部１４ａは、サーバポートを介して当該取得要求を受信すると、ステップＳ２０４において設定されているファイル名に係るファイルから、コンテンツデータを読み出す（Ｓ２３２）。なお、当該ファイル名が、書庫ファイルである場合、当該書庫ファイルに書庫化されているファイル群から、コンテンツデータが読み出される。続いて、ローカルサーバ部１４ａは、読み出されたコンテンツデータを含む応答（ＨＴＴＰレスポンス）を、Ｗｅｂアプリ１３ａに返信する（Ｓ２３３）。なお、ステップＳ２２１における取得要求には、Ｗｅｂアプリ１３ａに設定されたＣｏｏｋｉｅが含まれてもよい。ローカルサーバ部１４ａは、当該Ｃｏｏｋｉｅが、自らに設定されたＣｏｏｋｉｅに一致する場合に、コンテンツデータを返信するようにしてもよい。
【００６８】
Ｗｅｂアプリ１３ａは、コンテンツデータを受信すると（Ｓ２２２）、当該コンテンツデータに基づいて、Ｗｅｂアプリ１３ａの画像を表示させる（Ｓ２２３）。続いて、Ｗｅｂアプリ１３ａは、ガジェット３０との連携処理を開始する（Ｓ２２４）。
【００６９】
続いて、ガジェット３０の検出に応じて実行される処理手順について説明する。図１３は、ガジェットの検出時に実行される処理手順の一例を説明するための図である。
【００７０】
ガジェット検出部１５は、一定時間ごとに（Ｓ３０１でＹｅｓ）、電波スキャンを実行する（Ｓ３０２）。電波スキャンでは、各ガジェット３０から送信されているビーコンのうち、ユーザ端末１０に到達可能なビーコンが検出される。各ガジェット３０のビーコンの形式は、ガジェット３０が対応する接続方法等に応じて異なっていてもよい。電波スキャンの結果、検出されたビーコンごとに、当該ビーコンの送信元のガジェット３０のＳＳＩＤ及びＭＡＣアドレス等のリスト（以下、「検出リスト」という。）が得られる。続いて、ガジェット検出部１５は、検出リストを設定部１６に送信する（Ｓ３０３）。
【００７１】
図１４は、検出リストの一例を示す図である。図１４に示されるように、検出リストは、検出されたガジェット３０ごとに、接続方法、ＳＳＩＤ、パスワード、及びＭＡＣアドレスを含む。但し、ビーコンにＳＳＩＤ又はパスワードが含まれていないガジェット３０について、ＳＳＩＤ又はパスワードの値は無効である。
【００７２】
なお、拡張デバイス３０ｚが送信しているビーコン（図９）も、ステップＳ３０２において検出される。登録モードにおいて登録された拡張デバイス３０ｚが、現時点において、ユーザ端末１０と通信可能な範囲内に位置するとは限らないからである。したがって、拡張デバイス３０ｚのビーコンに含まれている情報も、検出リストに含められる。例えば、図１４に示される検出リストにおいて、３番目のレコードは、拡張デバイス３０ｚに対応するレコードである。
【００７３】
設定部１６は、検出リストを受信すると（Ｓ３１１）、許可リスト及びガジェット一覧情報に関して、連携管理サーバ２０との同期をとる（Ｓ３１２）。例えば、設定部１６は、当該ユーザ端末１０の端末ＩＤを含む、許可リスト及びガジェット一覧情報の取得要求を連携管理サーバ２０に送信する。端末ＩＤとは、ユーザ端末１０ごとの識別情報であり、例えば、補助記憶装置１０３に記憶されている。連携管理サーバ２０の情報送信部２１は、許可リスト記憶部２４に記憶されている許可リストの中で、当該ユーザ端末１０に対応する許可リストを返信する。
【００７４】
図１５は、許可リスト記憶部の構成例を示す図である。図１５に示されるように、許可リスト記憶部２４は、各端末ＩＤに対応付けて、当該端末ＩＤに係るユーザ端末１０に連携が許可されるガジェット３０を示す情報を記憶する。すなわち、「○」が記録されているセルは、当該セルが属する行に係るユーザ端末１０の全てのＷｅｂアプリ１３に、当該セルが属する列に係るガジェット３０との連携が許可されることを示す。また、「○（ＸＸＸのみ）」が記録されているセルは、当該セルが属する行に係るユーザ端末１０のＷｅｂアプリ１３のうち「ＸＸＸ」に該当するＷｅｂアプリ１３のみに、当該セルが属する列に係るガジェット３０と連携が許可されることを示す。なお、「ＸＸＸ」には、複数のＷｅｂアプリ１３の識別情報が列挙されてもよい。また、「Ｘ」が記録されているセルは、当該セルが属する行に係るユーザ端末１０の全てのＷｅｂアプリ１３に、当該セルが属する列に係るガジェット３０との連携が許可されないことを示す。
【００７５】
ステップＳ３１２において、情報送信部２１は、情報の取得要求に含まれている端末ＩＤに対応する行に係る許可リストを返信する。
【００７６】
また、図１６は、ガジェット一覧記憶部の構成例を示す図である。図１６に示されるように、ガジェット一覧記憶部２５は、ガジェット３０ごとにガジェット情報を記憶する。ガジェット情報には、ドライバ名、ＳＳＩＤ、パスワード、ＭＡＣアドレス、接続方法、及びドライバ名等が含まれる。
【００７７】
ドライバ名は、ガジェット３０の識別名であると共に、当該ガジェット３０に対応するドライバの識別名でもある。ＳＳＩＤは、ガジェット３０に対するＳＳＩＤである。パスワードは、ガジェット３０に対するパスワードである。ＭＡＣアドレスは、ガジェット３０のＭＡＣアドレスである。接続方法は、無線通信でのガジェット３０との接続方法である。なお、接続方法における「ＢＬＴ」は、Ｂｌｕｅｔｏｏｔｈ（登録商標）を示す。
【００７８】
ステップＳ３１２において、情報送信部２１は、ガジェット一覧記憶部２５に記憶されているガジェット一覧情報と、各ガジェット情報のドライバ名によって識別されるドライバのファイルとを返信する。なお、ユーザ端末１０からの取得要求に、検出されたガジェット３０のＳＳＩＤ又はＭＡＣアドレスの一覧が含まれてもよい。情報送信部２１は、当該ＳＳＩＤ又は当該ＭＡＣアドレスに対応するガジェット情報及びドライバのみを返信してもよい。
【００７９】
設定部１６は、返信された許可リストを許可リストキャッシュ部１２１に記憶し、返信されたガジェット一覧情報及びドライバ群を、ガジェット一覧キャッシュ部１２２に記憶する。なお、許可リスト及びガジェット一覧情報において、拡張デバイス３０ｚに関するレコードは含まれていなくてもよい。本実の形態において、拡張デバイス３０ｚは、登録処理が行われるため、信頼できる拡張デバイス３０ｚは、登録モードにおいて確認されているからである。
【００８０】
なお、許可リスト及びガジェット一覧情報が返信される前に、端末認証部２２が、端末情報記憶部２３を参照して、取得要求に係る認証が行を行う。認証が成功した場合に、許可リスト及びガジェット一覧情報が返信される。
【００８１】
図１７は、端末情報記憶部の構成例を示す図である。図１７に示されるように、端末情報記憶部２３は、端末ＩＤに対応付けて、認証方式及び認証情報を記憶する。認証方式は、認証の方式を示す。認証情報は、認証方式に基づく認証において利用される情報である。例えば、図１７に示される例では、ユーザ端末１０が有するＲＳＡ（Rivest Shamir Adleman）鍵が、認証情報に登録されている公開鍵に対応するものであるか否かが、チャレンジ＆レスポンスで検証される。
【００８２】
続いて、設定部１６は、許可リストキャッシュ部１２１に記憶されている許可リストにおいて、いずれかのＷｅｂアプリに連携が許可されているガジェット３０であって、かつ、検出リストに対応するレコードが含まれているガジェット３０に係るガジェット情報の一覧をガジェット一覧キャッシュ部１２２から取得する（Ｓ３１３）。この際、設定部１６は、登録情報記憶部１２３に記憶されている登録情報の中で、検出リストに含まれているいずれかのＳＳＩＤ又はＭＡＣアドレスを含む登録情報を取得し、当該登録情報を、当該ガジェット情報の一覧に追加する。以下、当該一覧に追加された登録情報もガジェット情報という。但し、拡張デバイス３０ｚについては、ステップＳ３０２において検出されたビーコンに含まれているワンタイムコードが、当該登録情報に含まれている共通鍵によって検証されてもよい。具体的には、ビーコンに含まれているワンタイムコードが、当該共通鍵に基づいて生成されるワンタイムコードに一致するか否かが検証されてもよい。比較されたワンタイムコードが一致しない場合、当該登録情報は、ガジェット情報の一覧に追加されなくてもよい。
【００８３】
続いて、設定部１６は、ステップＳ３１３において取得された一覧に基づいて、検出ガジェットリストを更新する（Ｓ３１４）。検出ガジェットリストとは、現在検出されている各ガジェットのガジェット情報の一覧である。
【００８４】
図１８は、検出ガジェットリストの構成例を示す図である。検出ガジェットリストの各レコードは、基本的に、ガジェット情報（図１６）を構成する項目に対して、ポート番号の項目が追加されたものである。ポート番号は、当該ガジェット３０と連携するためのＡＰＩポートのポート番号である。また、拡張デバイス３０ｚに対応するレコードについては、収容可能数の項目が有効である。収容可能数は、拡張デバイス３０ｚのビーコンから取得可能である。以下において、検出ガジェットリストの各レコードを、ガジェット情報という。
【００８５】
なお、ステップＳ３１４が初めて実行される場合には、ステップＳ３１３において取得されたガジェット情報の一覧の全てが検出ガジェットリストに追加される。この際、各レコードのポート番号の値は、空である。まだＡＰＩポートは生成されていないからである。一方、ステップＳ３１４が２回目以降に実行される場合には、ステップＳ３１３において取得されたガジェット情報の一覧に含まれており、検出ガジェットリストに含まれていないガジェット情報に対応するレコードが、検出ガジェットリストに追加される。また、ステップＳ３１３において取得されたガジェット情報の一覧に含まれておらず、検出ガジェットリストに含まれているガジェット情報に対応するレコードが、検出ガジェットリストから削除される。また、拡張デバイス３０ｚに対応するレコードについて、収容可能数が最新の値（ステップＳ３０２において検出されたビーコンに含まれている値）に更新される。すなわち、ステップＳ３１４は、一定時間ごとに実行される。したがって、検出ガジェットリストは、一定時間ごとに更新される。なお、設定部１６は、最新の検出ガジェットリストを、例えば、メモリ１０２に記憶しておく。
【００８６】
続いて、設定部１６は、ガジェット３０に対応するＡＰＩの生成を、ＡＰＩサーバ部１７に要求する（Ｓ３１５）。当該要求には、検出ガジェットリストに新たに追加されたガジェット情報と、検出ガジェットリストから削除されたガジェット情報とが指定される。
【００８７】
ＡＰＩサーバ部１７は、ＡＰＩの生成要求に応じ、検出ガジェットリストから削除されたガジェット情報が有る場合は（Ｓ３２１でＹｅｓ）、当該各ガジェット情報に含まれているポート番号に係るＡＰＩポートのそれぞれをクローズする（Ｓ３２２）。また、検出ガジェットリストに追加されたガジェット情報が有る場合は（Ｓ３２３でＹｅｓ）、ＡＰＩサーバ部１７は、当該ガジェット情報のそれぞれに対応するポート番号を生成する（Ｓ３２４）。当該ポート番号は、現時点においても有効なＡＰＩポートのポート番号と重複しない値であればよい。また、ステップＳ３２４において複数のポート番号が生成される場合、生成される各ポート番号は、相互に重複しない値であればよい。
【００８８】
続いて、ＡＰＩサーバ部１７は、ステップＳ３２４において生成されたポート番号ごとに、ＡＰＩポートを生成する（Ｓ３２５）。この際、各ローカルサーバ部１４のサーバポートのＩＰアドレスと同じＩＰアドレスが、生成される各ＡＰＩポートに割り当てられる。続いて、ＡＰＩサーバ部１７は、ステップＳ３２５において生成されたＡＰＩポートに対応付けて、当該ＡＰＩポートに対応するガジェット情報を、例えば、メモリ１０２に記憶する（Ｓ３２６）。また、ＡＰＩサーバ部１７は、生成されたＡＰＩポートに対応するガジェット情報に係るガジェットとの連携が許可されているＷｅｂアプリ１３に関してアプリ起動部１１によって生成されたＣｏｏｋｉｅを、生成されたＡＰＩポートに対応付ける。生成されたＡＰＩポートに対応するガジェット情報に係るガジェットとの連携が許可されているＷｅｂアプリ１３は、許可リストに基づいて特定可能である。
【００８９】
続いて、ＡＰＩサーバ部１７は、検出ガジェットリストに新たに追加されたガジェット情報ごとにＡＰＩポートのポート番号を含む応答を、設定部１６に返却する（Ｓ３２７）。設定部１６は、当該応答に含まれている各ガジェット情報に対応するポート番号を、当該各ガジェット情報に対応付けて、検出ガジェットリストに記録する（Ｓ３１６）。
【００９０】
続いて、図１２のステップＳ２２４の詳細について説明する。図１９は、第一の連携処理の処理手順の一例を説明するための図である。図１９は、図１２のステップＳ２２３に続いて実行される処理であるため、図１９におけるＷｅｂアプリ１３は、便宜上、Ｗｅｂアプリ１３ａであるとする。但し、図１９に示される処理手順は、起動中の各Ｗｅｂアプリ１３によって並列的に実行されてもよい。
【００９１】
ステップＳ４０１において、Ｗｅｂアプリ１３ａは、設定部１６から、最新の検出ガジェットリストを取得する。この際、設定部１６は、許可リストに基づいて、Ｗｅｂアプリ１３ａに対して連携が許可されているガジェット３０に対するガジェット情報のみを検出ガジェットリストから抽出する。
【００９２】
続いて、Ｗｅｂアプリ１３ａは、今回取得された検出ガジェットリストに含まれていて、前回のステップＳ４０１において取得された検出ガジェットリストに含まれていないガジェット情報の有無を判定する（Ｓ４０２）。すなわち、新たなガジェット情報の有無が判定される。
【００９３】
新たなガジェット情報が有る場合（Ｓ４０２でＹｅｓ）、Ｗｅｂアプリ１３ａは、当該各ガジェット情報に含まれているポート番号に係る各ＡＰＩポート宛に、ドライバの取得要求を送信する（Ｓ４０３）。ＡＰＩサーバ部１７は、当該各ＡＰＩポートに対応付けられているガジェット情報に含まれているドライバ名に基づいて、当該ドライバ名に係るドライバを取得して、当該ドライバをＷｅｂアプリ１３ａに返信する（Ｓ４０４）。なお、ステップＳ４０３及びＳ４０４においては、複数のドライバが取得される可能性も有る。
【００９４】
図２０は、ドライバの構成例を示す図である。図２０に示されるように、各ドライバは、ドライバ名、接続方法、アクセス情報、プログラム部、使用プロトコル、及環境情報等の項目を含む。図２０には、便宜上、４つのドライバの内容が例示されている。
【００９５】
ドライバ名は、ドライバの識別名であると共に、当該ドライバに対応するガジェット３０の識別名である。接続方法は、当該ドライバに対応するガジェット３０が対応可能な接続方法（通信方法）である。アクセス情報は、ＳＳＩＤ及びパスワード、又はＭＡＣアドレス等、当該ドライバに対応するガジェット３０にアクセスするために必要な情報である。プログラム部は、ＡＰＩポートの呼び出しをＷｅｂアプリ１３に実行させ、その結果として、ガジェット３０が公開するＡＰＩの呼び出しに必要な情報を、ＡＰＩサーバ部１７に伝達するためのプログラムコードである。本実施の形態において、プログラム部は、ＪａｖａＳｃｒｉｐｔ（登録商標）によって実装される。使用プロトコルは、当該ドライバのプログラム部が、ＡＰＩポートの呼び出しをＷｅｂアプリ１３に実行させる際に利用される通信プロトコルである。ベースプログラム情報は、当該ドライバを用いてガジェット３０と連携するために前提となるソフトウェア環境を示す情報である。
【００９６】
続いて、Ｗｅｂアプリ１３ａは、新たなガジェット情報に係る各ガジェット３０のアイコンの表示指示の入力を待機する（Ｓ４０５）。ユーザによって、当該アイコンの表示指示が入力されると（Ｓ４０５Ｙｅｓ）、Ｗｅｂアプリ１３ａは、新たなガジェット情報に係るガジェット３０ごとに、当該ガジェット３０に対するドライバを表現するオブジェクト（以下、「ドライバオブジェクト」という。）を生成する（Ｓ４０６）。すなわち、ドライバオブジェクトは、検出ガジェットリストに含まれるガジェット情報ごとに生成される。なお、各ドライバオブジェクトには、それぞれに対応するガジェット情報と、ドライバと、Ｗｅｂアプリ１３ａに設定されているＣｏｏｋｉｅとが設定される。また、各ドライバオブジェクトは、それぞれに対応するガジェット情報に含まれているポート番号に係るＡＰＩポートに対応付けられる。
【００９７】
各ドライバオブジェクトは、生成されると初期化処理を実行する（Ｓ４０７）。当該初期化処理によって、各ドライバオブジェクトに対応するドライバのアイコンが表示される。
【００９８】
図２１は、ドライバに対応するアイコンの第一の表示例を示す図である。図２１では、ＷｉＦｉ（登録商標）対応のレンズカメラであるガジェット３０ａと、拡張デバイス３０ｚとが検出された例が示されている。
【００９９】
例えば、ステップＳ４０５では、アイコンの表示指示を受け付けるためのボタンｂ１が表示される。ボタンｂ１が選択されると、ガジェット３０ａに対応するアイコンｃ１と、拡張デバイス３０ｚに対応するアイコンｃ２とが、例えば、画面の上方から落下してきて画面下部に表示される。なお、アイコンｃ２の右上の数値は、収容可能数を示す。
【０１００】
又は、拡張デバイス３０ｚの操作方法を示す情報が出力されてもよい。図２２は、ドライバに対応するアイコンの第二の表示例を示す図である。
【０１０１】
図２２では、メッセージｍｅｓ１が表示された例が示されている。メッセージｍｅｓ１は、拡張デバイス３０ｚに対応するドライバオブジェクトによって表示されてもよい。例えば、当該ドライバオブジェクトの初期化処理の一部として、メッセージｍｅｓ１の表示処理が組み込まれていてもよい。又は、メッセージｍｅｓ１の内容が音声出力されてもよい。メッセージｍｅｓ１の出力形態は、ユーザ端末１０に対する設定に従ってもよい。
【０１０２】
ところで、各ドライバオブジェクトは、初期化処理において、当該ドライバオブジェクトに設定されたドライバのプログラム部の一部を、現在の環境に合わせて改変する。具体的には、現在のＡＰＩサーバ部１７のＩＰアドレスと、当該ドライバオブジェクトに設定されたガジェット情報に含まれているポート番号とが、プログラム部に適用される。
【０１０３】
図２３は、ドライバのプログラム部の定義内容の一例を示す図である。図２３において、プログラム部５１０は、ＷｉＦｉ（登録商標）対応レンズカメラであるガジェット３０ａに対応するドライバである。
【０１０４】
プログラム部５１０の記述５１１にける「ｉｐ  ｐｏｒｔ」のうち、「ｉｐ」は、初期化処理において、ＡＰＩサーバ部１７のＩＰアドレスに置換される。また、「ｐｏｒｔ」は、初期化処理において、プログラム部５１０を含むドライバに対応するＡＰＩポートのポート番号に置換される。すなわち、当該ＩＰアドレス及び当該ポート番号は、静的な値では無いため、プログラム部５１０には、具体的な値ではなく記号によって記述されている。
【０１０５】
記述５１２は、プログラム部５１０が提供するメソッド群のうちの一つのメソッドの名前が、「Ｔａｋｅｐｈｏｔｏ」であることを示す。記述５１３は、当該メソッドが実行された場合のアクセス先が、括弧内に指定されたＵＲＬであることを示す。当該ＵＲＬにおいて、「ｔｈｉｓ．ｉｐ」の値は、記述５１１においてｉｐに対して適用されたＩＰアドレスとなる。また、当該ＵＲＬにおいて、「ｔｈｉｓ．ｐｏｒｔ」の値は、記述５１１においてｐｏｒｔに対して適用されたポート番号となる。記述５１４は、括弧内の情報が、記述５１３において指定されたＵＲＬ（すなわち、ＡＰＩポート）へ送信対象とされることを示す。当該括弧内のパラメータは、ガジェット３０ａのＡＰＩを構成する情報である。
【０１０６】
記述５１５は、プログラム部５１０が提供するメソッド群のうちの一つのメソッドの名前が、「ＳｔａｒｔＲｅｃｏｒｄｉｎｇ」であることを示す。
【０１０７】
図１９に戻る。ステップＳ４０６に続いて、Ｗｅｂアプリ１３ａは、前回のステップＳ４０１において取得された検出ガジェットリストに含まれていて、今回取得された検出ガジェットリストに含まれていないガジェット情報の有無を判定する（Ｓ４０８）。すなわち、検出されなくなったガジェット３０の有無が判定される。該当するガジェット情報が有る場合（Ｓ４０８でＹｅｓ）、Ｗｅｂアプリ１３ａは、当該ガジェット情報に対応するドライバオブジェクトを削除する（Ｓ４０９）。ドライバオブジェクトは、削除される際に、当該ドライバオブジェクトに対応するドライバのアイコンを消去する。
【０１０８】
図２４は、ドドライバオブジェクトの削除に伴ってアイコンが消去される例を示す図である。図２４では、拡張デバイス３０ｚが検出されなくなった結果、拡張デバイス３０ｚに対応するアイコンｃ２が上昇して消去される例が示されている。
【０１０９】
なお、図１９において、ステップＳ４０１以降は、繰り返し実行される。例えば、ステップＳ４０１以降は、一定時間間隔で実行されてもよい。
【０１１０】
続いて、図１２のステップＳ２２４において、図１９の処理と並行して実行される処理について説明する。図２５は、第二の連携処理の処理手順の一例を説明するための図である。
【０１１１】
ドライバのアイコンが操作されて、ドライバのプログラム部に含まれるメソッドのうちのいずれかのメソッドの実行指示が入力されると（Ｓ５０１でＹｅｓ）、当該ドライバに対応するドライバオブジェクトは、選択されたメソッドを実行する（Ｓ５０２）。
【０１１２】
図２６は、ドライバのアイコンの操作例を示す図である。図２６では、アイコンｃ１が選択されて、メニューｍ１が表示されている例が示されている。メニューｍ１には、アイコンｃ１に対応するドライバのプログラム部５１０に含まれている各メソッドがメニュー項目として含まれている。すなわち、メニューｍ１には、「ＴａｋｅＰｈｏｔｏ」メソッドと、「Ｓｔａｒｔｒｅｃｏｒｄｉｎｇ」メソッドとが、メニュー項目として含まれている。ユーザは、所望のメソッドを選択することにより、当該メソッドの実行指示を入力することができる。
【０１１３】
例えば、「ＴａｋｅＰｈｏｔｈｏ」が選択された場合、図２３のプログラム部５１０におけるＴａｋｅＰｈｏｔｏに関する定義が実行される。その結果、記述５１３において特定されるＵＲＬに係るＡＰＩポートに対して、記述５１４の括弧内に指定されたパラメータを含むＨＴＴＰリクエストが送信される。なお、当該ＨＴＴＰリクエストには、Ｗｅｂアプリ１３ａに設定されたＣｏｏｋｉｅが含まれる。
【０１１４】
ＡＰＩサーバ部１７は、オープン中のＡＰＩポートのうちのいずれかのＡＰＩポート（以下、「対象ポート」という。）を介してＨＴＴＰリクエストが受信されると（Ｓ５１１でＹｅｓ）、当該ＨＴＴＰリクエストに含まれているＣｏｏｋｉｅの正当性を検証する（Ｓ５１２）。具体的には、当該ＨＴＴＰリクエストに含まれているＣｏｏｋｉｅが、対象ポートに対応付けられているいずれかのＣｏｏｋｉｅに一致するか否かが判定される。当該ＨＴＴＰリクエストに含まれているＣｏｏｋｉｅが、対象ポートに対応付けられているいずれのＣｏｏｋｉｅにも一致しない場合（Ｓ５１２でＮｏ）、ＡＰＩサーバ部１７は、エラーの発生を検出する（Ｓ５１６）。この場合、ステップＳ５１６において、ＡＰＩサーバ部１７は、エラーを示すＨＴＴＰレスポンスを返信する。
【０１１５】
一方、当該ＨＴＴＰリクエストに含まれているＣｏｏｋｉｅが、対象ポートに対応付けられているいずれかのＣｏｏｋｉｅに一致する場合（Ｓ５１２でＹｅｓ）、ＡＰＩサーバ部１７は、対象ポートに対応付けられて記憶されているドライバオブジェクトに設定されているドライバに基づくガジェット３０との接続処理を実行する（Ｓ５１３）。その結果、当該ガジェット３０のアドレス（例えば、ＩＰアドレス等）が判明する。そこで、ＡＰＩサーバ部１７は、ステップＳ５１１において受信されたＨＴＴＰリクエストに含まれているパラメータに基づいて、当該ガジェット３０に対するＡＰＩを呼び出して、当該ＡＰＩの応答を受信する（Ｓ５１４）。当該ＡＰＩの呼び出しにおいて、ステップＳ５１３において判明したアドレスが、当該ＡＰＩの宛先となる。また、応答の内容は、ＡＰＩの呼び出し先のガジェット３０と、呼び出されたＡＰＩとに応じて異なる。例えば、ＷｉＦｉ（登録商標）対応レンズカメラに対して撮像を要求するＡＰＩが呼び出された場合、撮像結果である画像データが応答に含まれているかもしれない。
【０１１６】
続いて、ＡＰＩサーバ部１７は、ステップＳ５１１において受信されたＨＴＴＰリクエストに対するＨＴＴＰレスポンスを返信する（Ｓ５１５）。当該ＨＴＴＰレスポンスには、ガジェット３０からの応答が含まれる。ドライバオブジェクトは、当該ＨＴＴＰレスポンスを受信すると（Ｓ５０３）、例えば、当該ＨＴＴＰレスポンスに含まれているガジェット３０からの応答を利用した処理を実行する。
【０１１７】
続いて、ステップＳ４１３の詳細について説明する。図２７は、ドライバに基づくガジェットとの接続処理の処理手順の一例を説明するためのフローチャートである。図２７の処理が呼び出される時点において処理対象とされるドライバを、「対象ドライバ」という。また、図２７の処理が呼び出される時点において接続対象のガジェット３０を、「対象ガジェット」という。
【０１１８】
ステップＳ６０１において、対象ドライバに指定されているペースプログラムがインストール済みであるか否かが判定される。ペースプログラムがインストールされていない場合（Ｓ６０１でＮｏ）、ペースプログラムのインストールが実行される（Ｓ６０２）。
【０１１９】
続いて、対象ガジェットと接続済みであるか否かが判定される（Ｓ６０３）。対象ガジェットと接続されていない場合（Ｓ６０３でＮｏ）、対象ドライバに指定されている接続方法に応じた接続処理が実行される（Ｓ６０４）。例えば、接続方法が、「ＷｉＦｉ（登録商標）  ＡＰ」であれば、ＳＳＩＤとパスワードとに基づいて、対象デバイスとの接続が実行される。
【０１２０】
続いて、対象ドライバのアクセス情報に、アドレス判別方法が指定されているか否かが判定される（Ｓ６０５）。アドレス判別方法とは、対象ガジェットのアドレス（ＩＰアドレス又はＭＡＣアドレス等）の判別方法である。アドレス判別方法が指定されている場合（Ｓ６０５）、当該アドレス判別方法に従って、対象ガジェットのアドレスが特定される（Ｓ６０６）。当該アドレスは、対象ガジェットのＡＰＩを呼び出す際に利用される。
【０１２１】
続いて、ユーザ端末１０と、各ガジェット３０との接続形態の変更について説明する。図２８は、ユーザ端末とガジェットとの接続形態の変更を説明するための図である。図２８において、（１）は、ユーザ端末１０において、図２１に示されるようにアイコンｃ１及びｃ２が表示される状態に対応する。すなわち、（１）では、ガジェット３０ａと拡張デバイス３０ｚとが、直接的にユーザ端末１０に接続されている。
【０１２２】
一方、（２）は、ガジェット３０ａが、拡張デバイス３０ｚの配下に移行された状態（拡張デバイス３０ｚに収容された状態）を示す。すなわち、（２）では、ガジェット３０ａは、拡張デバイス３０ｚを経由してユーザ端末１０に接続される。まず、接続形態が（１）の状態から（２）の状態に変更される際に実行される処理について説明する。
【０１２３】
図２９、図３０、及び図３１は、接続形態の変更処理の処理手順の一例を説明するための図である。なお、図２９、図３０、及び図３１の処理は、図１９及び図２９と並列的な関係に有る。また、図２９の初期状態において、ユーザ端末１０には、図２１に示されように、アイコンｃ１及びアイコンｃ２が表示されていることとする。
【０１２４】
ガジェット３０ａを、拡張デバイス３０ｚの配下に移行したい場合、ユーザは、アイコンｃ１をドラッグして、アイコンｃ２の領域内にドロップする。
【０１２５】
図３２は、アイコンのドラッグ・アンド・ドロップの一例を示す図である。図３２には、アイコンｃ１が、アイコンｃ２に対してドラッグ・アンド・ドロップされている様子が示されている。なお、アイコンｃ１についての操作であって、アイコンｃ２に関係した操作であれば、ドラッグ・アンド・ドロップ以外の操作が、ガジェット３０ａを拡張デバイス３０ｚの配下に移行させるための操作として割り当てられてもよい。例えば、アイコンｃ１及びアイコンｃ２が選択された状態において、アイコンｃ１に対するコンテキストメニューから移行指示が入力されてもよい。
【０１２６】
Ｗｅｂアプリ１３ａは、アイコンｃ１がアイコンｃ２に対してドラッグ・アンド・ドロップされたことを検知すると（Ｓ７０１でＹｅｓ）、アイコンｃ１に対応するドライバオブジェクトａと、アイコンｃ２に対応するドライバオブジェクトｚとのそれぞれから、ガジェット情報を取得する（Ｓ７０２）。すなわち、ドラッグされたドライバ（ガジェット３０）に対応するガジェット情報と、ドロップ先のドライバ（拡張デバイス３０ｚ）に対応するガジェット情報とが取得される。
【０１２７】
続いて、Ｗｅｂアプリ１３ａは、取得されたそれぞれのガジェット情報を比較して、ドロップ先の拡張デバイス３０ｚに、ドラッグされたガジェット３０ａを収容可能か否か（拡張デバイス３０ｚについて、ガジェット３０ａとの接続の可否）を判定する（Ｓ７０３）。具体的には、ドロップ先の拡張デバイス３０ｚのガジェット情報において、ドラッグされたガジェット３０のガジェット情報の接続方法に対応する収容可能数が、１以上であれば、収容は可能であると判定される。そうでなければ、収容は不可能であると判定される。収容が不可能であると判定された場合（Ｓ７０３でＮｏ）、Ｗｅｂアプリ１３ａは、ドラッグされたアイコンｃ１を元の位置に戻す（Ｓ７０４ａ）。収容が可能であると判定された場合（Ｓ７０３でＹｅｓ）、Ｗｅｂアプリ１３ａは、ガジェット３０ａのドライバを指定して、当該ドライバのロードをドライバオブジェクトｚに要求する（Ｓ７０４ｂ）。
【０１２８】
ドライバオブジェクトｚは、自らに設定されているポート番号に係るＡＰＩポート（以下、「ポートｚ」という。）宛に、ガジェット３０ａのドライバを含む、ドライバのロード要求を送信する（Ｓ７０５）。ＡＰＩサーバ部１７は、ポートｚに対応付けられているガジェット情報のＭＡＣアドレス（拡張デバイス３０ｚのＭＡＣアドレス）と、ガジェット３０ａのドライバとを指定して、当該ドライバの暗号化を設定部１６に要求する（Ｓ７０６）。設定部１６は、当該ＭＡＣアドレスに対応付けられて登録情報記憶部１２３に記憶されている共通鍵によって、当該ドライバを暗号化する（Ｓ７０７）。続いて、設定部１６は、暗号化されたドライバを、ＡＰＩサーバ部１７に出力する（Ｓ７０８）。
【０１２９】
続いて、ＡＰＩサーバ部１７は、ポートｚに対応するドライバ（拡張デバイス３０ｚのドライバ）のアクセス情報を用いて、拡張デバイス３０ｚに接続する（Ｓ７０９）。続いて、ＡＰＩサーバ部１７は、拡張デバイス３０ｚのデバイス管理部３２に対して、暗号化されたガジェット３０ａのドライバを送信する（Ｓ７１０）。なお、当該ドライバと共に、当該ユーザ端末１０のＭＡＣアドレスも、デバイス管理部３２に通知される。
【０１３０】
デバイス管理部３２は、暗号化されたドライバを受信すると、当該ドライバと共に通知されたＭＡＣアドレスに対応付けられて共通鍵記憶部３７に記憶されている共通鍵を用いて、当該ドライバを復号する（Ｓ７１１）。デバイス管理部３２は、復号されたドライバを、例えば、ファイルに格納して保存する。
【０１３１】
続いて、デバイス管理部３２は、ガジェット３０ａに対応する中継ポート及び拡張ポートのそれぞれのポート番号を生成する（図３０のＳ７１２）。続いて、デバイス管理部３２は、拡張ポートのポート番号を指定して、拡張ポートの生成を拡張サーバ部３３に要求する（Ｓ７１３）。拡張サーバ部３３は、指定されたポート番号に係る拡張ポートを生成する（Ｓ７１４）。続いて、デバイス管理部３２は、中継ポートのポート番号を指定して、中継ポートの生成を中継サーバ部３４に要求する（Ｓ７１５）。中継サーバ部３４は、指定されたポート番号に係る中継ポートを生成する（Ｓ７１６）。
【０１３２】
続いて、デバイス管理部３２は、拡張ポートのポート番号と、中継ポートのポート番号とを指定して、ステップＳ７１４において生成された拡張ポートとステップＳ７１６において生成された中継ポートとの対応付けを、仲介部３５に要求する（Ｓ７１７）。仲介部３５は、二つのポート番号の対応情報をポート対応記憶部３８に記憶する（Ｓ７１８）。
【０１３３】
続いて、デバイス管理部３２は、拡張ポート（すなわち、ガジェット３０ａ）へのアクセスを認証するためのＣｏｏｋｉｅを生成する（Ｓ７１９）。続いて、デバイス管理部３２は、当該Ｃｏｏｋｉｅと、ステップＳ７１１において保存されているドライバのドライバ名とを、ステップＳ７１４において生成された拡張ポートに設定する（Ｓ７２０）。続いて、デバイス管理部３２は、当該Ｃｏｏｋｉｅと、ステップＳ７１６において生成された中継ポートのポート番号とを、ＡＰＩサーバ部１７のポートｚ宛に返信する（Ｓ７２１）。続いて、ＡＰＩサーバ部１７は、ポートｚに対するＵＲＬであって、当該中継ポートに対応するＵＲＬを生成する（Ｓ７２２）。当該ＵＲＬは、例えば、以下の形式で生成される。
＜ＡＰＩサーバ部１７のＩＰアドレス＞：＜ポートｚのポート番号＞／１
上記のＵＲＬにおいて、末尾の「１」は、当該中継ポートに対応する識別子である。以下、当該ＵＲＬを「中継ＵＲＬ」という。
【０１３４】
続いて、ＡＰＩサーバ部１７は、ステップＳ７２１において受信されたＣｏｏｋｉｅと、中継ＵＲＬとをドライバオブジェクトｚに返却する（Ｓ７２３）。オブジェクトｚは、当該Ｃｏｏｋｉｅ及び中継ＵＲＬを、Ｗｅｂアプリ１３ａに返却する（図３１のＳ７２４）。
【０１３５】
Ｗｅｂアプリ１３ａは、当該Ｃｏｏｋｉｅ及び中継ＵＲＬを指定して、接続先の切り替えを、ドライバオブジェクトａに要求して（Ｓ７２５）、アイコンｃ１の表示状態を更新する（Ｓ７２６）。すなわち、ガジェット３０ａが拡張デバイス３０ｚに収容された状態を示すように、アイコンｃ１の表示状態が更新される。
【０１３６】
図３３は、ガジェットが拡張デバイスに収容された状態を示すアイコンの表示例を示す図である。図３３に示されるように、アイコンｃ１が、アイコンｃ２に重畳されて表示される。なお、アイコンｃ２について、収容可能数が２に減少している。これは、拡張デバイス３０ｚに対してガジェット３０ａが収容されたためである。
【０１３７】
一方、接続先の切り替えが要求されたドライバオブジェクトａは、当該Ｃｏｏｋｉｅ及び中継ＵＲＬを含む接続先の切り替え要求を、ドライバオブジェクトａに対して設定されているガジェット情報に含まれているポート番号に係るポートａ宛に送信する（Ｓ７２７）。ＡＰＩサーバ部１７は、当該切り替え要求に応じ、ポートａについて、ガジェット３０ａとの接続を切断する（Ｓ７２８）。続いて、ＡＰＩサーバ部１７は、ポートａに対するメッセージが中継ＵＲＬに転送されるようにポートａに対して設定する（Ｓ７２９）。また、ＡＰＩサーバ部１７は、ポートａに対応付けて、当該切り替え要求に含まれているＣｏｏｋｉｅを保持する。続いて、ＡＰＩサーバ部１７は、接続先の切り替えの完了を、Ｗｅｂアプリ１３ａに通知する（Ｓ７３０）。
【０１３８】
Ｗｅｂアプリ１３ａは、接続先の切り替えの完了の通知に応じ、ドライバオブジェクトａに対して、（拡張デバイス３０ｚへの）接続を要求する（Ｓ７３１）。ドライバオブジェクトａは、自ら（ドライバオブジェクトａ）に対して設定されているガジェット情報に含まれているポート番号に係るポートａ宛に接続要求を送信する（Ｓ７３２）。ＡＰＩサーバ部１７は、ポートａに対する接続要求に応じ、ポートａに対応付けられて保持されているＣｏｏｋｉｅを指定して、中継ＵＲＬ宛に、接続要求を送信する（Ｓ７３３）。ポートａに対するメッセージは、中継ＵＲＬに転送するように設定されているからである。なお、中継ＵＲＬは、ポートｚに対するＵＲＬである。したがって、当該接続要求は、ポートｚにおいて受信される。
【０１３９】
ＡＰＩサーバ部１７は、中継ＵＲＬ宛の接続要求がポートｚにおいて受信されると、中継ＵＲＬに対応する中継ポート宛に当該接続要求を送信する（Ｓ７３４）。拡張デバイス３０ｚの中継サーバ部３４は、当該中継ポートを介して当該接続要求を受信すると、当該接続要求を仲介部３５に転送する（Ｓ７３５）。仲介部３５は、ポート対応記憶部３８を参照して、当該中継ポートに対応する拡張ポートを特定し、当該拡張ポートに対して当該接続要求を転送する（Ｓ７３６）。その結果、当該接続要求は、拡張サーバ部３３によって受信される。
【０１４０】
拡張サーバ部３３は、当該接続要求に指定されているＣｏｏｋｉｅと、当該拡張ポートに対して設定されているＣｏｏｋｉｅとを照合する（Ｓ７３７）。二つのＣｏｏｋｉｅが一致しない場合、以降の処理は実行されずにエラーが返却される。二つのＣｏｏｋｉｅが一致した場合、拡張サーバ部３３は、当該拡張ポートに対して設定されているドライバ名に係るドライバに基づいて、ガジェット３０ａとの接続処理を実行する（Ｓ７３８）。その結果、拡張デバイス３０ｚとガジェット３０ａとが接続される。なお、ステップＳ７３８の詳細は、図２７において説明した通りである。
【０１４１】
続いて、拡張サーバ部３３は、接続の完了を示す応答を、中継ポートに対して返信する（Ｓ７３９）。続いて、中継サーバ部３４は、当該応答をユーザ端末１０のポートｚに対して転送する（Ｓ７４０）。当該応答は、接続要求の伝達経路を逆に辿って、Ｗｅｂアプリ１３ａに通知される（Ｓ７４１〜Ｓ７４３）。
【０１４２】
以上により、ユーザ端末１０、ガジェット３０ａ、及び拡張デバイス３０ｚの接続形態は、図２８の（２）に示した通りとなる。この状態においても、アイコンｃ１は、図２６に示した通りの操作が可能である。例えば、ユーザが、「ＴａｋｅＰｈｏｔｏ」メソッドを選択すると、図２５のステップＳ５０２以降が実行される。但し、ポートａ宛のメッセージは、ポートｚを経由して、拡張デバイス３０ｚの中継サーバ部３４の中継ポートに転送される。更に、当該メッセージは、仲介部３５によって当該中継ポートに対応する拡張ポートに転送される。したがって、図２５のステップＳ５１３以降は、拡張サーバ部３３によって実行される。その結果、「ＴａｋｅＰｈｏｔｏ」メソッドに対応する、ガジェット３０ａのＡＰＩは、拡張サーバ部３３によって呼び出される。
【０１４３】
続いて、図２８の（２）の状態から（１）の状態に復帰させるために実行される処理について説明する。図３４は、接続形態の復帰処理の処理手順の一例を説明するための図である。
【０１４４】
ドライバオブジェクトａは、収容状態の解除指示の入力を検知すると（Ｓ８０１でＹｅｓ）、ドライバオブジェクトａに設定されているガジェット情報に含まれているポート番号に係るポートａ宛に、解除要求を送信する（Ｓ８０２）。解除指示は、例えば、図３５に示されるように入力される。
【０１４５】
図３５は、解除指示の入力例を示す図である。図３５では、アイコンｃ１が選択されて、メニューｍ１が表示されている例が示されている。アイコンｃ１に係るガジェット３０ａは、拡張デバイス３０ｚに収容されているため、メニューｍ１には、解除指示を受け付けるためのメニュー項目が含まれている。ユーザは、当該メニュー項目を選択することにより、収容状態の解除指示を入力することができる。
【０１４６】
ポートａに対する解除要求は、ポートｚに係る中継ＵＲＬに転送される（Ｓ８０３）。したがて、当該解除要求は、ポートｚから拡張デバイス３０ｚの中継サーバ部３４の中継ポートに転送される（Ｓ８０４）。中継サーバ部３４は、当該中継ポートを介して当該解除要求を受信すると、当該解除要求を仲介部３５に転送する（Ｓ８０５）。仲介部３５は、ポート対応記憶部３８を参照して、当該中継ポートに対応する拡張ポートを特定すると共に、当該中継ポートのポート番号と、当該拡張ポートのポート番号との対応情報をポート対応記憶部３８から削除する（Ｓ８０６）。続いて、仲介部３５は、特定された拡張ポートに対して当該解除要求を転送する（Ｓ８０７）。その結果、当該解除要求は、拡張サーバ部３３によって受信される。
【０１４７】
拡張サーバ部３３は、当該拡張ポートについて、ガジェット３０ａとの通信の切断処理を実行する（Ｓ８０９）。続いて、拡張サーバ部３３は、中継ポートに対して、解除の完了を示す応答を中継ポートに対して返信する（Ｓ８１０）。続いて、中継サーバ部３４は、当該応答をユーザ端末１０のポートｚに対して転送する（Ｓ８１１）。当該応答は、ポートａに転送される（Ｓ８１２）。
【０１４８】
ＡＰＩサーバ部１７は、ポートａに対応付けられているドライバに基づいて、ガジェット３０ａとの接続処理を実行する（Ｓ８１３）。ステップＳ８１３の詳細は、図２７において説明した通りである。その結果、ユーザ端末１０とガジェット３０ａとが接続される。続いて、ＡＰＩサーバ部１７は、ポートａに対するメッセージが中継ＵＲＬへの転送されるようにするための設定を解除する（Ｓ８１４）。続いて、ＡＰＩサーバ部１７は、解除の完了を示す応答を、ドライバオブジェクトａに返却する（Ｓ８１５）。当該応答は、Ｗｅｂアプリ１３ａに返却される（Ｓ８１６）。Ｗｅｂアプリ１３ａは、当該応答に応じ、アイコンｃ１の表示状態を更新する（Ｓ８１７）。具体的には、アイコンｃ１の表示位置が、図２１に示した位置に復帰する。
【０１４９】
以上により、ユーザ端末１０、ガジェット３０ａ、及び拡張デバイス３０ｚの接続形態は、図２８の（１）に説明した状態に復帰する。
【０１５０】
上述したように、本実施の形態によれば、ユーザ端末１０に接続されているガジェット３０を、アイコンのドラッグ・アンド・ドロップのような直感的な操作によって、拡張デバイス３０ｚに収容させることができる。したがって、ユーザ端末とガジェット３０との接続関係（接続形態）を変更するための操作負担を軽減することができる。
【０１５１】
また、図２８の（２）に示した接続形態が実現されている状態において、ユーザ端末１０とガジェット３０ａとを持ち出したい場合、解除操作を行うことで、容易にユーザ端末１０とガジェット３０ａとの接続状態を復帰させることができる。
【０１５２】
なお、拡張デバイス３０ｚには、複数のガジェット３０が収容されてもよい。また、複数の拡張デバイスが、ユーザ端末１０に接続されてもよい。
【０１５３】
また、拡張デバイス３０ｚは、階層的に接続されてもよい。すなわち、或る拡張デバイスが、他の拡張デバイスに収容されてもよい。
【０１５４】
また、接続形態の変更は、過去の接続形態の変更操作の履歴に基づいて、自動的に行われてもよい。例えば、ガジェット３０ａのみが検出されている状態では、ユーザ端末１０にガジェット３０ａを接続させ、拡張デバイス３０ｚが検出された時点で、自動的に、図２９、図３０、及び図３１に示した処理が実行されてもよい。
【０１５５】
また、或るユーザ端末１０に接続されている拡張デバイス３０ｚに他のユーザ端末１０が接続しようとした場合に、当該或るユーザ端末１０において、当該他のユーザ端末１０による接続の許可又は許否の選択が可能とされてもよい。接続が許可された場合、当該拡張デバイス３０ｚに収容されているガジェット３０についても、当該他のユーザ端末１０から利用可能とされてもよい。
【０１５６】
また、ＢａａＳ（Backend as a Service）機能を提供するクラウドサービスとガジェット３０との連携が行われてもよい。すなわち、当該クラウドサービスに対応するアイコンがユーザ端末１０に表示され、当該アイコンに対して、センサ機能を有するガジェット３０のアイコンがドラッグ・アンド・ドロップされると、当該ガジェット３０による計測値が、当該クラウドサービスによって統計処理されてもよい。
【０１５７】
図３６は、ＢａａＳ機能を提供するクラウドサービスとの連携例を示す図である。図３６において、（１）は、ユーザ端末１０にアイコンｃ３とアイコンｃ４とが表示されている状態を示す。アイコンｃ３は、気温のセンサであるガジェット３０ｂに対応するアイコンである。アイコンｃ４は、気温の計測値について統計処理を行うＢａａＳ機能を提供するクラウドサービスに対応するアイコンである。すなわち、（１）は、ガジェット３０ｂが、直接的にユーザ端末１０に接続されている状態に対応する。この状態において、アイコンｃ３を操作することにより表示されるメニューｍ２を介してデータ表示が指示されると、ガジェット３０ｂによる計測値が刻々と領域ａ１に表示される。
【０１５８】
続いて、（２）に示されるように、アイコンｃ３が、アイコンｃ４に対してドラッグ・アンド・ドロップされると、（３）に示される状態が実現される。（３）に示される状態において、ユーザ端末１０は、ガジェット３０ｂが、クラウドサービスに関連付けられていることを示す情報を保持する。但し、ガジェット３０ｂは、ユーザ端末１０に接続されたままである。ユーザ端末１０は、当該情報に基づいて、ガジェット３０ｂから得られる計測値を、クラウドサービスに転送する。ユーザ端末１０は、クラウドサービスによって統計処理された結果を、領域ａ１に表示する。
【０１５９】
また、本実施の形態では、企業内における利用シーンを想定したが、個人的な利用に関して本実施の形態が適用されてもよい。この場合、連携管理サーバ２０は設けらずに、許可リストキャッシュ部１２１及びガジェット一覧キャッシュ部１２２には、予め当該ユーザ端末１０に関連する情報が記憶されていてもよい。この場合、各Ｗｅｂアプリ１３による各ガジェット３０へのアクセスの許否は、ユーザ端末１０のユーザによって設定されてもよい。
【０１６０】
なお、本実施の形態において、ユーザ端末１０は、情報処理装置の一例である。ガジェット３０ａは、第１の外部機器の一例である。拡張デバイス３０ｚは、第２の外部機器の一例である。ＡＰＩサーバ部１７は、接続部の一例である。Ｗｅｂアプリ１３は、判定部及び切替部の一例である。ドライバは、接続情報の一例である。ガジェット情報は、属性情報の一例である。
【０１６１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１６２】
以上の説明に関し、更に以下の項を開示する。
（付記１）
情報処理装置が、
外部機器ごとに記憶部に記憶されている、外部機器と無線通信を介して接続するために必要な接続情報を用いて、外部機器と無線通信を介して接続する処理と、
接続された外部機器のうちの第１の外部機器の属性情報と、接続された外部機器のうちの第２の外部機器との属性情報とを比較し、前記第２の外部機器について、前記第１の外部機器との接続の可否を判定する処理と、
前記判定する処理において接続が可能であると判定された場合に、前記第１の外部機器と当該情報処理装置との接続を切断して、前記第１の外部機器に対する前記接続情報を前記第２の外部機器に送信して、前記第１の外部機器との接続を前記第２の外部機器に実行させる処理と、
を実行することを特徴とする通信方法。
（付記２）
前記情報処理装置が、
前記接続する処理において接続された外部機器ごとに、当該外部機器に対応するアイコンを表示する処理を実行し、
前記判定する処理は、前記第１の外部機器に対応するアイコンについて、前記第２の外部機器に対応するアイコンに関係した所定の操作が行われると実行される、
ことを特徴とする付記１記載の通信方法。
（付記３）
前記情報処理装置が、
前記第２の外部機器から暗号鍵を受信する処理を実行し、
前記実行させる処理は、前記暗号鍵によって暗号化された前記接続情報を前記第２の外部機器に送信する、
ことを特徴とする付記１又は２記載の通信方法。
（付記４）
前記情報処理装置が、
前記第１の外部機器が前記第２の外部機器に接続されている状態において、所定の操作が行われると、前記第２の外部機器に前記第１の外部機器との接続を切断させ、前記第１の外部機器に対する前記接続情報を用いて当該情報処理装置と前記第１の外部機器とを接続する処理を実行する、
ことを特徴とする付記１乃至３いずれか一項記載の通信方法。
（付記５）
情報処理装置であって、
外部機器ごとに記憶部に記憶されている、外部機器と無線通信を介して接続するために必要な接続情報を用いて、外部機器と無線通信を介して接続する接続部と、
接続された外部機器のうちの第１の外部機器の属性情報と、接続された外部機器のうちの第２の外部機器との属性情報とを比較し、前記第２の外部機器について、前記第１の外部機器との接続の可否を判定する判定部と、
前記判定する処理において接続が可能であると判定された場合に、前記第１の外部機器と当該情報処理装置との接続を切断して、前記第１の外部機器に対する前記接続情報を前記第２の外部機器に送信して、前記第１の外部機器との接続を前記第２の外部機器に実行させる切替部と、
を有することを特徴とする情報処理装置。
（付記６）
前記接続部によって接続された外部機器ごとに、当該外部機器に対応するアイコンを表示する表示制御部を有し、
前記判定部は、前記第１の外部機器に対応するアイコンについて、前記第２の外部機器に対応するアイコンに関係した所定の操作が行われると、前記第２の外部機器について、前記第１の外部機器との接続の可否を判定する、
ことを特徴とする付記５記載の情報処理装置。
（付記７）
前記第２の外部機器から暗号鍵を受信する受信部を有し、
前記切替部は、前記暗号鍵によって暗号化された前記接続情報を前記第２の外部機器に送信する、
ことを特徴とする付記５又は６記載の情報処理装置。
（付記８）
前記第１の外部機器が前記第２の外部機器に接続されている状態において、所定の操作が行われると、前記第２の外部機器に前記第１の外部機器との接続を切断させ、前記第１の外部機器に対する前記接続情報を用いて当該情報処理装置と前記第１の外部機器とを接続する、
ことを特徴とする付記５乃至７いずれか一項記載の情報処理装置。
（付記９）
情報処理装置に、
外部機器ごとに記憶部に記憶されている、外部機器と無線通信を介して接続するために必要な接続情報を用いて、外部機器と無線通信を介して接続する処理と、
接続された外部機器のうちの第１の外部機器の属性情報と、接続された外部機器のうちの第２の外部機器との属性情報とを比較し、前記第２の外部機器について、前記第１の外部機器との接続の可否を判定する処理と、
前記判定する処理において接続が可能であると判定された場合に、前記第１の外部機器と当該情報処理装置との接続を切断して、前記第１の外部機器に対する前記接続情報を前記第２の外部機器に送信して、前記第１の外部機器との接続を前記第２の外部機器に実行させる処理と、
を実行させることを特徴とするプログラム。
（付記１０）
前記情報処理装置に、
前記接続する処理において接続された外部機器ごとに、当該外部機器に対応するアイコンを表示する処理を実行させ、
前記判定する処理は、前記第１の外部機器に対応するアイコンについて、前記第２の外部機器に対応するアイコンに関係した所定の操作が行われると実行される、
ことを特徴とする付記９記載のプログラム。
（付記１１）
前記情報処理装置に、
前記第２の外部機器から暗号鍵を受信する処理を実行させ、
前記実行させる処理は、前記暗号鍵によって暗号化された前記接続情報を前記第２の外部機器に送信する、
ことを特徴とする付記９又は１０記載のプログラム。
（付記１２）
前記情報処理装置に、
前記第１の外部機器が前記第２の外部機器に接続されている状態において、所定の操作が行われると、前記第２の外部機器に前記第１の外部機器との接続を切断させ、前記第１の外部機器に対する前記接続情報を用いて当該情報処理装置と前記第１の外部機器とを接続する処理を実行させる、
ことを特徴とする付記９乃至１１いずれか一項記載のプログラム。
【符号の説明】
【０１６３】
１０          ユーザ端末
１１          アプリ起動部
１２          ブラウザ部
１３          Ｗｅｂアプリ
１４          ローカルサーバ部
１５          ガジェット検出部
１６          設定部
１７          ＡＰＩサーバ部
２０          連携管理サーバ
２１          情報送信部
２２          端末認証部
２３          端末情報記憶部
２４          連携情報記憶部
２５          ガジェット一覧記憶部
３０          ガジェット
３１          ビーコン生成部
３２          デバイス管理部
３３          拡張サーバ部
３４          中継サーバ部
３５          仲介部
３６          ドライバ記憶部
３７          共通鍵記憶部
３８          ポート対応記憶部
１０１        ＣＰＵ
１０２        メモリ
１０３        補助記憶装置
１０４        タッチパネル
１０５        無線通信装置
１１１        表示装置
１１２        入力装置
１２１        許可リストキャッシュ部
１２２        ガジェット一覧キャッシュ部
１２３        登録情報記憶部
【図１】
0006447297.tif 000002
【図２】
0006447297.tif 000003
【図３】
0006447297.tif 000004
【図４】
0006447297.tif 000005
【図５】
0006447297.tif 000006
【図６】
0006447297.tif 000007
【図７】
0006447297.tif 000008
【図８】
0006447297.tif 000009
【図９】
0006447297.tif 000010
【図１０】
0006447297.tif 000011
【図１１】
0006447297.tif 000012
【図１２】
0006447297.tif 000013
【図１３】
0006447297.tif 000014
【図１４】
0006447297.tif 000015
【図１５】
0006447297.tif 000016
【図１６】
0006447297.tif 000017
【図１７】
0006447297.tif 000018
【図１８】
0006447297.tif 000019
【図１９】
0006447297.tif 000020
【図２０】
0006447297.tif 000021
【図２１】
0006447297.tif 000022
【図２２】
0006447297.tif 000023
【図２３】
0006447297.tif 000024
【図２４】
0006447297.tif 000025
【図２５】
0006447297.tif 000026
【図２６】
0006447297.tif 000027
【図２７】
0006447297.tif 000028
【図２８】
0006447297.tif 000029
【図２９】
0006447297.tif 000030
【図３０】
0006447297.tif 000031
【図３１】
0006447297.tif 000032
【図３２】
0006447297.tif 000033
【図３３】
0006447297.tif 000034
【図３４】
0006447297.tif 000035
【図３５】
0006447297.tif 000036
【図３６】
0006447297.tif 000037