<Web Intentsの基本的な仕組み>
まず、専用のAPIを用いずに任意のWebサービス(または、Webアプリケーション)と連携するための仕組みの一例であるWeb Intentsに関する基本的な仕組みについて図1乃至図4を用いて説明する。本発明では、具体例として、Web Intentsを挙げるが、任意のウェブサービス(または、Webアプリケーション)と連携する技術として、他の同様の仕組みを適用することも可能である。
図1は、Web Intentsの全体構成を例示する図である。
図1において、103は、Web Intents技術を利用してサービスや機能を提供するWeb Intentsサービス(以下、サービス)である。101は、サービス103を利用するWeb Intentsクライアント(以下、クライアント)である。102は、クライアント101からの要求をサービス103に渡し、サービス103からの結果をクライアントに渡す役割をするUA(ユーザエージェント)である。UA102は、クライアント101及びサービス103の間で要求を実行したり、データを受け渡したりするための中継機能といえる。また、UA102には、サービス103の提供機能を呼び出すための機能情報であるWeb Intentが登録される。
本仕組みにおいては、例えば、クライアント101はデータを管理し、サービスを呼び出すボタンなどを配置しているWebサイト(ウェブサイト)であり、UA102は該ウェブサイトを表示するWebブラウザ(ウェブブラウザ)である。また、サービス103は、UA102を介してクライアント101が管理するデータを受け付けて、処理するクライアント101の連携先のWebサイトである。
例えば、本仕組みをSNS(ソーシャル・ネットワーキング・サービス)に適用した場合に、サービス103はクライアントで管理する写真やコメントの投稿を受け付けて閲覧サイトを構成する投稿先サービスとなる。SNSサイトの「いいね」「チェック」「シェア」といったソーシャルボタンをWeb Intentsの仕組みで例えると、クライアント101はボタンを配置しているサイトになり、UA102はWebブラウザになり、サービス103は「いいね」などの投稿先サービスになる。なお、サービス103が機能を提供するにあたって、ユーザ認証やユーザによる操作が必要な場合、UA102上でユーザが操作を行う。
なお、UA102は、後述するサービスと連携するための機能を持つのであれば、Webブラウザ以外にも、情報処理端末で動作するオペレーティングシステム(OS)やアプリケーションなどで実現することも可能である。ここで、情報処理端末の例としては、パーソナルコンピュータ、スマートフォン、タブレット型コンピュータ、カーナビなどが挙げられる。
また、サービス103については、上述した投稿先サービスのような、インターネット上のサービス提供者以外にも、例えば情報処理端末が内蔵するカメラ、プリンタ、スキャナなどといったデバイスもサービス提供者になり得る。また、サービス103については、ネットワークで接続されるプリンタ、スキャナ、ネットワークカメラなどの周辺機器や、冷蔵庫やテレビといった家電製品などもサービス提供者になり得る。クライアント101とUA102とサービス103は、これらの任意の組み合わせが、同一システム内で稼働することもある。また、クライアント101、UA102、サービス103のいずれかが、同じ装置上で動作する機能であってもよい。
図2は、Web Intentsを利用したサービス提供に関する基本動作を説明するためのシーケンス図である。
S201にて、UA102は、ユーザの操作によりサービス103にアクセスする。S202にて、サービス103は、自身が提供する機能をUA102に登録してもらうための登録用マークアップを含むHTML(HyperText Markup Language)応答をUA102に返信する。
図3は、S202にてサービス103からUA102に返信されるHTML文書を例示する図である。以下、図3の例を用いて、サービス103からUA102に返信されるHTML文書の中身について説明する。
<intent>タグには、提供機能を特定し、サービス103が提供する機能を呼び出すための機能情報が記載されている。actionは、提供機能の分類情報(カテゴリ)を示す。すなわち、actionは、提供機能がどのような機能、サービスを提供するものであるかの分類情報を示す。なお、提供機能の分類情報には、例えば、データを共有する機能に対応する分類情報「Share」、データを編集する機能に対応する分類情報「Edit」、データを閲覧する機能に対応する分類情報「View」、データを取得する機能に対応する分類情報「Pick」、データを保存する機能に対応する分類情報「Save」等が含まれる。即ち、上記機能情報には、分類情報として、例えばShare、Edit、View、Pick、Saveのいずれかの分類情報が記載されている。
typeは、提供機能が扱えるデータなどの種類を示す。すなわち、typeは、actionに対して扱えるデータ型などを示す。hrefは、提供機能の接続先(URL)を示す。titleは、提供機能のタイトルを示す。また、dispositionは、呼び出された提供機能がどのように表示されるかを示す。
図3の例では、提供機能のカテゴリが"share(共有)"であり、扱えるデータ等の種類が"あらゆるフォーマット(*)の画像データ"であり、接続先は"share.html"である。また、タイトルは"Image share service"である。さらに、この機能がUA102を介して別ウィンドウで表示されることを示している。
UA102は、上記S202でのHTML応答を受信すると、ユーザに対してサービス103の提供機能をUA102に登録するか否か確認する。例えば、UA102がWebブラウザであれば、ポップアップウィンドウを表示させユーザに登録の可否の選択を促す。ユーザがこの提供機能をWeb Intentとして登録することを選択すると、UA102は、上記S202で受信した情報を内部に記憶する登録処理を実行する。具体的には、上記S202で受信した情報はUA102が動作する情報処理端末の記憶領域に記憶され、UA102にWeb Intentsとして登録される。
S203で、UA102は、ユーザの操作によりクライアント101にアクセスする。S204で、クライアント101は、サービス103の提供機能(Web Intent)を利用することが記載されたHTML文書を、UA102へ返信する。例えば、クライアント101としてのWebサイトで、画像と「共有」ボタンが表示される場合に、該Webサイトは、Web Intentの処理要求である図4で示すようなECMAScriptを含むHTML文書をUA102へ返す。
図4は、S204にてクライアント101からUA102に返信されるHTML文書を例示する図である。以下、図4の例を用いて、クライアント101からUA102に返信されるHTML文書の中身について説明する。
ECMAScriptは、HTML内のID「share―photo」を持つボタンがクリックされると指定された無名関数を実行することを示している。無名関数は、まず、新規のIntentオブジェクトを作成し、これを引数にしてstartActivety()関数を呼び出す。この関数を実行すると、UA102は自身に登録されているWeb Intentsの中から、指定されたWeb Intentオブジェクトのactionとtypeが一致するものを抽出し、一覧表示させることでユーザに選択を要求する。また、UA102は、無名関数内で呼び出しているgetImageFrom()関数を実行することにより、クライアント101が持つ画像データを取得する。
上記S204にて、UA102は、クライアント101から送信されるHTML文書を受け取り、該HTML文書に基づく画面を表示する。S205にて、UA102は、ユーザによる画面上の「共有」ボタンの押下を検出すると、上述したようにWeb Intents起動用のECMAScriptを実行し、S206にて、クライアント101が持つ画像データを取得する。また、上記S205で「共有」ボタン押下を検出した際に、UA102は、自身に登録されているWeb Intentsの一覧を表示する。UA102は、この一覧からユーザがサービス103の提供機能を示すWeb Intentを選択したことを検出すると、S207にて、該選択された提供機能を提供するサービス103へHTTP要求(Web Intent処理要求)を送信する。その際、UA102は、送信データに、図4のECMAScriptが作成したWeb Intentオブジェクトの内容を含める。
サービス103は、上記S207でUA102から送信されたHTTP要求を受信すると、S208にて、該HTTP要求からWeb Intentオブジェクトを取り出し、UA102を介してユーザと相互作用しながら、選択された提供機能(ここではクライアント101の画像データの「共有」)の利用を実現する。
サービス103は、提供機能に関する処理が終了すると、S209にて、処理結果をクライアント101に伝えるECMAScriptを含む応答をUA102に返す。UA102は、上記S209の応答を受信すると、S210にて、該応答中に含まれるECMAScriptを実行し、上記S205のstartActivety()関数の引数で指定されたコールバック関数onSuccess()を呼び出す。S211にて、UA102は、該コールバック関数onSuccess()によってクライアント101へ処理結果を返す。
ここで、図2のシーケンスにより、Webメール機能を利用する例について説明する。まず、ユーザがWebブラウザ(UA102)で、写真データを管理するウェブストレージ(クライアント101)のWeb Intentsの呼び出しボタンが用意されたサイトに訪れ、当該ボタンを押下する。すると、Webブラウザ(UA102)が登録サービス一覧を含むポップアップウィンドウを表示する。そのポップアップウィンドウで、ユーザがサービスとしてWebメール機能を選択したとすると、該機能を提供するサイトが別ウィンドウで表示され、処理結果として、そのウィンドウ上では写真データを添付した新規メールが作成される。なお、以上のように、Web Intent処理要求からWeb Intentオブジェクトを取り出し、解析して処理することを、以降ではWeb Intentを処理すると記載する。
以上の処理により、クライアント101は、UA102を介して、サービス103が提供するWeb Intentsの機能(この例では画像の「共有」)を呼び出すことが可能となる。
<モバイル端末内でのアプリケーション同士の連携に関する基本的な仕組み>
次に、図5乃至図8を用いて、情報処理端末の一例であるモバイル端末内で動作するアプリケーション同士の連携に関する基本的な仕組みについて説明する。なお、本実施例ではモバイル端末内ではオペレーティングシステム(OS)としてAndroid(登録商標)などが動作する場合の例を説明する。
Android(登録商標) OSでは、Intentsで、複数のアプリケーションの間でデータを受け渡しするなどの連携を行う。ここで、AndroidにおけるIntentsとは、アプリケーション同士の連携に際してサービスの呼び出しに用いる登録情報やそれを用いた仕組みのことを示す。また、以降、本明細書ではWeb Intentsと区別するため、AndroidなどのOSが行う端末内で動作するアプリケーション同士のサービス呼び出しのための登録情報の一例であるIntentsを、Local Intentsと記載する。
図5は、Local Intentsの全体構成を例示する図である。
図5において、500は、情報処理端末の一例であるモバイル端末500である。モバイル端末500において、503は、Local Intents技術を利用して機能を提供する連携先アプリケーションである。501は、上記連携先アプリケーションの機能を利用する連携元アプリケーションである。502は、連携元アプリケーション501からの要求を連携先アプリケーション503に渡し、連携先アプリケーション503からの結果を連携元アプリケーション501に渡す役割をする制御部である。なお、制御部502は、例えばオペレーティングシステム(OS)などによって実現することが可能である。
図6は、Local Intentsを利用した機能提供に関する基本動作を説明するためのシーケンス図である。
S601で、モバイル端末500に対するユーザ操作等に応じて、連携先アプリケーション503は、モバイル端末500にインストールされ、制御部502に連携先アプリケーション503が提供する機能の情報を登録する。
図7は、S601において、連携先アプリケーション503がインストールされるときに連携先アプリケーション503が提供する機能を制御部502に登録するためのマニフェストファイルの一部を例示する図である。
マニフェストファイル700には、<application>タグを記載する。<application>タグには、連携先アプリケーション503が提供する機能を特定する情報等を記載する。<activity>タグには、連携先アプリケーション503が提供する1つの機能に関する情報を記載する。連携先アプリケーション503が複数の機能を提供する場合は、<activity>タグを、提供する機能の数だけ記載する。
<intent−filer>タグには、本機能がどのようなLocal Intentsの要求を受け付けることができ、どのようなデータを扱えるかを制御部502に伝えるための情報を記載する。具体的には、<intent−filer>タグ内には、<action>、<category>、<data>タグを記載する。
actionは、本機能がどのようなLocal Intentの要求を受け付けることができるかを示す。また、categoryは、本機能の種類を表す付加的な情報を示す。dataは、本機能が扱うことが可能なデータなどの種類を示す。すなわち、dataは、actionに対して扱えるデータ型などを示す。本例のでは、acitivityの名前が「SendAcitivity」である機能が、データを送信する(intent.action.SEND)ためのLocal Intentの要求を受け付けることが示されている。また、<data>タグの記載によって、扱えるデータは、あらゆるフォーマット(*)の画像データであることが示されている。
以下、図6の説明に戻る。
S602で、連携元アプリケーション501は、ボタン押下などのユーザ操作を受け付けると、制御部502に対してアプリケーション連携処理要求として、後述のLocal Intentの処理要求を渡す。ここで、S602で連携元アプリケーション501が、ボタン押下の操作を受け付けるためのソースコードの例について図8を用いて説明する。
図8は、S602で、連携元アプリケーション501がボタン押下の操作を受け付けるためのソースコードの一部を例示する図である。
ソースコード800は、ボタン押下を受け付けた際に実行するonClick()と、制御部502からLocal Intentの処理要求に対する結果を受信したときに実行するonActivityResult()の2つの関数を含む。
連携元アプリケーション501は、UIに表示するボタンが押下されると、onClick()関数を実行する。onClick()関数では、Local Intentの処理要求を作成する。具体的には、onClick()関数では、新規のLocal Intentオブジェクトを作成し、これを引数にしてstartActivityForResult()関数を呼び出す。この関数を実行すると、制御部502にLocal Intentの処理要求が渡る。制御部502は、自身に登録されているアプリケーションの提供機能の中から、指定されたLocal Intentのactionとtypeが一致する提供機能を提供するアプリケーションを抽出し、一覧表示させることで、ユーザに選択を要求する。図8の例であれば、actionが「ACTION_SEND」であり、あらゆるフォーマット(*)の画像データを処理可能なアプリケーションが一覧表示される。つまり、上記S601で登録された連携先アプリケーション503も該一覧に表示される。
再び、図6の説明に戻る。
S603で、startActivityForResult()関数が実行されると、制御部502は、上述したように指定されたLocal Intentを処理可能なアプリケーションを一覧表示する。ユーザにより一覧から連携先アプリケーション503が選択されると、S604で、制御部502は、該選択された連携先アプリケーション503へ、Local Intentの処理要求を渡す。この際、制御部502は、該処理要求に、Local Intentオブジェクトの内容を含める。
S605で、連携先アプリケーション503は、上記S604で渡されたLocal Intentの処理要求からLocal Intentのオブジェクトを取り出し、提供する機能(連携元アプリケーション501が要求した機能)を実現する。例えば、連携先アプリケーション503は、Local Intentのオブジェクトから画像データを取り出し、自身の管理する領域に画像データを保存する、などの処理を行う。以上のように、Local Intent処理要求からLocal Intentオブジェクトを取り出し、解析して処理することを、以降ではLocal Intentを処理すると記載する。
S606で、連携先アプリケーション503は、Local Intentの処理が終了すると、その処理結果を制御部502に通知する。この通知を受けると、制御部502は、S607で、図8に示したコールバック関数onActivityResult()を呼び出す。UA102は、コールバック関数onActivityResult()によって連携元アプリケーション501へ処理結果を返す。
以上の処理により、連携元アプリケーション501は、制御部502を介して、連携先アプリケーション503が提供する機能を呼び出すことが可能となる。
<本発明の実施例におけるシステム構成>
図9は、本発明の一実施例に係るモバイル端末とWeb Serverなどのネットワークにおける接続関係を示す図である。
図9において、901は、情報処理端末の一例としてのモバイル端末のデバイス(Device)である。モバイル端末901には、Webブラウザがインストールされており、無線LANや屋外の携帯データ通信キャリア(以後、携帯キャリア)が提供する無線ネットワークにアクセスすることで様々なサービスを利用することができる。
903は無線基地局を表している。無線基地局903は、携帯キャリアが提供する無線通信の基地局である。904はインターネット(Internet)であり、902はインターネット904上でサービスを提供するWebサーバ(Web Server)を表している。モバイル端末901は、無線基地局903の提供するネットワークを介してインターネット904へアクセスし、さらにはWebサーバ902が提供するサービスにアクセスすることができる。Webサーバ902は、例えば、写真を共有するなど一般的なフォトサービス(PhotoService)を提供しており、Web Intentsの仕組みを用いたサービスも提供している。そのため、Webサーバ902は、図1におけるサービス103に相当する。なお、インターネット904は、LANやインターネットやその組み合わせなどを想定する。接続形態としては、有線や無線を問わない。
<本実施例のモバイル端末901のハードウェア構成例>
図10(A)は、図9におけるモバイル端末901のハードウェア構成を例示するブロック図である。
モバイル端末901は、例えば、スマートフォンやタブレットコンピュータなどであり、小型端末用のオペレーティングシステムや、通話、データ通信を制御するプログラムが動いている。モバイル端末901におけるハードウェアの各構成要素は、システムバス1001に接続されている。ROM1003には、モバイル端末901におけるオペレーティングシステム及び、通話、データ通信を制御するアプリケーション等のプログラムが格納されており、これらのプログラムはCPU1002で実行される。なお、データ通信を制御するアプリケーションとしては、Mailソフト(電子メールソフト)やWebブラウザなどがある。
RAM1004は、プログラムを実行するためのワークメモリエリアである。また、RAM1004は、WebブラウザがWeb Serverから取得してきたWebページデータやWebサービスにアクセスするための認証情報などを一時記憶するためのメモリでもある。記憶装置1009は、フラッシュメモリ等の不揮発性の記憶装置であり、モバイル端末901の再起動後も保持しておく必要のある各種動作モード設定や、稼働ログなどが記憶される。
ネットワークコントローラ(Network Controller)1005は、ホームネットワーク(Home Network)等の無線LANに参加するための無線LAN通信部1011と、携帯キャリアの提供するネットワークに参加するための携帯電話データ通信部1012の通信制御を行う。
音声制御部1006は、主に通話アプリケーションが起動しユーザが電話をしているときに利用する。マイク・スピーカ1013にて音声データの入出力を行い、音声制御部1006は、その制御プログラムとの仲介を行っている。表示制御部1007は、モバイル端末901のディスプレイ1014にて出力する情報の制御を行っている。入力制御部1008は、モバイル端末901のボタンやタッチパネル1015にてユーザが指示した情報の制御を行っている。これらの音声制御部1006、表示制御部1007、入力制御部1008を利用して、モバイル端末901上でのアプリケーションは、ネットワーク通信情報やモバイル端末901のさまざまな情報をユーザに提供する。
位置検出制御部1010は、GPSセンサー1016からモバイル端末901の位置情報を取得しオペレーティングシステムに提供する。これらの制御は、CPU1002で動くオペレーティングシステムにて制御される。
<本実施形態のWebサーバ902のハードウェア構成例>
図10(B)は、Webサーバ902のハードウェア構成を例示する図である。
図10(B)に示すように、Webサーバ902では、CPU1051、RAM1052、ROM1053、Network I/F1055、HDD1056がシステムバス1059を介して互いに通信可能に接続されている。また、LCD等の表示装置1057、キーボード等の入力装置1054、及びマウス等のポインティングデバイス1058も、システムバス1059を介して互いに通信可能に接続されている。
ROM1053或いはハードディスクドライブ(HDD)1056には、オペレーティングシステム等の制御プログラムが格納されている。なお、HDD1056の代わりに、ソリッドステートドライブ(SSD)等の他の記憶装置を設けてもよい。CPU1051は、前記制御プログラムを必要に応じてROM1053或いはHDD1056からRAM1052上へ読み出して実行することで、コンピュータとしての機能を発揮する。また、CPU1051は、表示装置1057を介して各種情報の表示を行うと共に、入力装置1054やポインティングデバイス1058からユーザ指示等を受け付ける。さらに、CPU1051は、ネットワークインタフェース(NetworkI/F)1055を介してネットワークに接続して他の装置との通信を行う。
<本実施例のモバイル端末901のソフトウェア構成例>
図11(A)は、モバイル端末901のソフトウェア(処理部)の構成の一例を示す図である。
モバイル端末901において、連携元アプリケーション1110、制御部1120、プロキシーアプリケーション1130、Webブラウザ1140、および各処理部は、モバイル端末901のROM1003に保存されたファイルとして存在する。これらは、モバイル端末901の起動時や各処理部実行時に、制御部1120やその他処理部(即ちCPU1002)によってRAM1004にロードされて実行され、モバイル端末901に各種機能を実現させるプログラムモジュールである。
連携元アプリケーション1110は、Local Intentの処理要求を作成して他のアプリケーションと連携することが可能である。そのため、連携元アプリケーション1110は、図5の連携元アプリケーション501に相当する。
制御部1120は、Local Intentの処理要求をプロキシーアプリケーション1130など他のアプリケーションに渡す役割をする。また、制御部1120は、他のアプリケーションからの結果を連携元アプリケーション1110に渡す役割もする。そのため、制御部1120は、図5の制御部502に相当する。
プロキシーアプリケーション1130は、Local Intentの処理要求を受け付けて処理を行う。そのため、プロキシーアプリケーション1130は、図5の連携先アプリケーション503に相当する。また、プロキシーアプリケーション1130は、HTTP(HyperText Transfer Protocol)リクエストに応答して処理を実行するプログラムとして実装される。さらに、プロキシーアプリケーション1130は、Web Intentの処理要求を作成して他のWebアプリケーションと連携することが可能である。そのため、プロキシーアプリケーション1130は、図1のクライアント101にも相当する。
プロキシーアプリケーション1130は、プレゼンテーション部1131、Intent変換部1132、Local Intent処理要求作成部1133、変換テーブル管理部1134を有する。
プレゼンテーション部1131は、後述する通信部1136を介して受け取ったページ取得要求などに応じてHTML文書を作成するソフトウェアモジュールである。Intent変換部1132は、Local Intentの処理要求を解析し、Local Intentの処理要求を、Web Intentの処理要求に変換するソフトウェアモジュールである。また、Intent変換部1132は、Web Intentの処理結果をLocal Intentの処理結果に変換する。
Local Intent処理要求作成部1133(以下、処理要求作成部1133)は、Local Intentの処理要求を作成するソフトウェアモジュールである。例えば、処理要求作成部1133は、特定のURLにアクセスするようにウェブブラウザプログラム(Webブラウザ1140)を起動するためのLocal Intentの処理要求を作成する。変換テーブル管理部1134は、後述する変換テーブル格納部1135から、Local Intentの処理要求をWeb Intentの処理要求に変換するために必要な情報を取得するソフトウェアモジュールである。
変換テーブル格納部1135は、Local Intentの処理要求をWeb Intentの処理要求に変換するために必要な情報を記憶管理する。具体的には、後述する図12(A)に示すような、Action変換テーブル1200を記憶管理する。本実施例では、変換テーブル格納部1135は、Action変換テーブル1200を記憶しているが、Local Intentの処理要求をWeb Intentの処理要求に変換するための情報であればその他の情報を記憶管理するように構成してもよい。
通信部1136は、Webサーバ機能を有しており、外部機器からのHTTPリクエストメッセージを受信し、プロキシーアプリケーション1130のプレゼンテーション部1131にリクエストの内容を通知するソフトウェアモジュールである。また、通信部1136は、プレゼンテーション部1131からの要求を受けてHTTPのレスポンスメッセージを外部機器に送信する。
Webブラウザ1140は、プロキシーアプリケーション1130などクライアント101の役割をするアプリケーションからの処理要求を、サービス103の役割をする他のWebアプリケーションに渡す役割をする。また、Webブラウザ1140は、サービス103の役割をする他のWebアプリケーションからの処理結果をクライアント101の役割をするアプリケーションに渡す役割をする。そのため、Webブラウザ1140は、図1のUA102に相当する。
Webブラウザ1140は、通信部1141、表示部1142、解析部1143、サービス管理部1144を有する。通信部1141は、他の処理部からの要求を受けてHTTPのリクエストメッセージを外部機器に送信する。また、通信部1141は、外部機器からのHTTPレスポンスメッセージを受信し、後述する解析部1143にレスポンスの内容を通知するソフトウェアモジュールである。
表示部1142は、HTML文書をレンダリングするソフトウェアモジュールである。また、表示部1142は、他の処理部の要求に応じて、Web Intentsサービスの提供機能の選択を受け付ける画面を表示する。解析部1143は、HTML文書を解析するソフトウェアモジュールである。また、解析部1143は、Web Intent処理要求であるECMAScriptも解析する。
サービス管理部1144は、後述のWeb Intentsサービス格納部1145から登録済みのWeb Intentsサービスを特定する情報を取得したり、格納したりするソフトウェアモジュールである。Web Intentsサービス格納部1145(以下、サービス格納部1145)は、データを記憶管理し、サービス管理部1144からの要求に応じてデータの格納と取り出しを行う。サービス格納部1145は、後述する図12(B)に示すような、登録済Web Intentsサービステーブル1230を記憶管理する。
<本実施形態のWebサーバ902のソフトウェア構成例>
図11(B)は、Webサーバ902のソフトウェア(処理部)の構成の一例を示す図である。
Webサーバ902において、Webアプリケーション1150および各処理部は、Webサーバ902のROM1053あるいはHDD1056に保存されたファイルとして存在する。これらは実行時にOSやその各処理部を利用する他の処理部(即ちCPU1051)によってRAM1052にロードされ実行されるプログラムモジュールである。
Webアプリケーション1150は、例えば、写真などの画像データを保管して、共有するなど一般的なフォトサービス(PhotoService)を提供するアプリケーションである。また、Webアプリケーション1150は、Web Intents技術を利用してサービスを提供するWeb Intentsサービスの機能を有する。そのため、Webアプリケーション1150は、図1のサービス103に相当する。さらに、Webアプリケーション1150は、HTTPリクエストに応答して処理を実行するプログラムとして実装される。
Webアプリケーション1150は、Web Intent処理部1152、プレゼンテーション部1153、画像管理部1154を有する。Web Intent処理部1152は、Web Intentオブジェクトを解析し、処理するソフトウェアモジュールである。プレゼンテーション部1153は、後述する通信部1151を介して受け取ったページ取得要求などに応じてHTML文書を作成するソフトウェアモジュールである。画像管理部1154は、他の処理部からの要求に応じて画像データ格納部1155から画像データを取得したり、格納したりするソフトウェアモジュールである。
画像データ格納部1155は、データを記憶管理し、画像管理部1154からの要求に応じてデータの格納と取り出しを行う。通信部1151は、外部機器からのHTTPリクエストメッセージを受信しプレゼンテーション部1153にリクエストの内容を通知するソフトウェアモジュールである。また、通信部1151は、Webサーバ機能を有しており、プレゼンテーション部1153からの要求を受けてHTTPのレスポンスメッセージを外部機器に送信する。画像データ格納部1155では、後述する図12(C)に示すような、画像データ管理テーブル1250を記憶管理する。なお、画像データ格納部1155は、Webサーバ902とは別の機器上にあってもよい。
<本実施形態の各格納部が管理するテーブル>
図12(A)は、モバイル端末901の変換テーブル格納部1135が管理するテーブル構成の一例を示す図である。なお、図12(A)のテーブル構成は一例であり本例とは異なるテーブル構成であってもよい。
Action変換テーブル1200で管理する情報は、「Action ID」、「Local Intents action」、「Web Intents action」である。「Action ID」は、Local Intentのactionを一意に識別するためのIDである。「Local Intents action」は、Local Intentの処理要求のactionを示している。「Web Intents action」は、Web Intentsのactionを示している。
Action変換テーブル1200の「Action ID」が「1」であるレコードを例に説明を行う。このレコードでは、Local Intentsのactionが「ACTION_SEND」である場合、Web Intentの処理要求では「http://Web Intents.org/share」に変換する必要があることを示している。なお、本例では多くのLocal Intentsのactionを変換できるようにしているが、本発明を用いて呼び出したい機能の「action」のみを変換できるように構成しておけばよい。例えば図7で示したマニフェストファイルで宣言した「action」のみを変換できるように構成してもよい。
図12(B)は、モバイル端末901のサービス格納部1145が管理するテーブル構成の一例である。なお、図12(B)のテーブル構成は一例であり、本例とは異なるテーブル構成であってもよい。
登録済Web Intentsサービステーブル1230(以下、登録済サービステーブル1230)は、Webブラウザ1140が仲介することができるWeb Intentsサービスの提供機能を管理する。登録済サービステーブル1230で管理する情報は、「ServiceID」、「action」、「type」、「href」、「disposition」、「baseURI」等である。
「ServiceID」は、Webブラウザ1140内でWeb Intentsサービスの提供機能を一意に識別するためのIDである。「action」は、提供機能のカテゴリを示すものであり、どのような機能、サービスを提供するかを示す情報である。「type」は、提供機能が扱えるデータなどの種類を示すものであり、actionに対して何を扱えるかを示している。「href」は、提供機能の相対URLを示す。「title」は、提供機能のタイトルを示すものである。また、「disposition」は、呼び出された提供機能がどのように表示されるかを示す。「baseURI」は、提供機能の基準となるURLを示す。
例えば、登録済サービステーブル1230のServiceIDが「1」であるレコードを例にして説明する。このレコードでは、Webブラウザ1240は、「http://aaa.com/aaa_share.html」にWeb Intentの処理要求を仲介できることが分かる。
図12(C)は、Webサーバ902の画像データ格納部1155が管理するテーブル構成の一例である。なお、図12(C)のテーブル構成は一例であり、本例とは異なるテーブル構成であってもよい。
画像データ管理テーブル1250は、Webアプリケーション1150が扱う画像データを管理するテーブルである。画像データ管理テーブル1250が管理する情報は、「ImageID」、「File」等である。「ImageID」は、Webアプリケーション1150内で画像データを一意に識別するためのIDである。「File」は、画像データのファイル名を表している。つまり、画像データ管理テーブル1250の例では、「image125.jpg」と「image435.jpg」の2つの画像データのファイルを管理していることになる。
<本実施形態のプロキシーアプリケーション1130のインストール>
以下、図13のシーケンス図を用いて、プロキシーアプリケーション1130をモバイル端末901にインストールする動作について説明する。
図13は、プロキシーアプリケーション1130をモバイル端末901にインストールする動作を例示するシーケンス図である。
まず、ユーザ操作等を受け付けて、モバイル端末901にプロキシーアプリケーション1130のインストールを開始する。S1301で、プロキシーアプリケーション1130は、制御部1120に自身が提供する機能の情報の登録を依頼する。S1302で、制御部1120は、プロキシーアプリケーション1130が提供する機能の情報を登録する処理を行い、該登録結果をプロキシーアプリケーション1130に通知する。
なお、ここでは、プロキシーアプリケーション1130のマニフェストファイルは、例えば図7で説明したマニフェストファイル700と同じものとする。つまり、acitivityの名前が「SendAcitivity」である機能を持ち、データを送信する(intent.action.SEND)ためのLocal Intentの処理要求を受け付けることができる。そして、あらゆるフォーマット(*)の画像データを扱うことが可能である。
S1303で、プロキシーアプリケーション1130の処理要求作成部1133は、Webブラウザ1140を起動するためのLocal Intentの処理要求を作成して制御部1120に処理を依頼する。この際、Webブラウザ1140がアクセスするURLとして、プロキシーアプリケーション1130が公開する、Web Intentsサービスを登録するためのページを指定する。指定するURLはlocalhostとなる。
S1304で、制御部1120は、上記S1303で指定されたURLにアクセスするようにWebブラウザ1140を起動する。起動されたWebブラウザ1140は、S1305で、上記S1304で指定されたURLに対してHTTPリクエストとしてHTMLの取得要求を送信する。つまり、S1305において、Webブラウザ1140は、上記S1303で指定したプロキシーアプリケーション1130が公開するページにアクセスする。この際、具体的には、Webブラウザ1140からのHTTPリクエストは、通信部1136を介してプロキシーアプリケーション1130に渡る。
S1306で、プロキシーアプリケーション1130は、Web Intentsサービスの登録用マークアップを作成する。なお、本例で作成するWeb Intentsサービスの登録用マークアップは、Webアプリケーション1150がWeb Intentsサービスの提供機能を登録するためのものである。S1307で、プロキシーアプリケーション1130は、上記S1306で作成した登録用マークアップを含むHTML文書をHTTPレスポンスとして、Webブラウザ1140に送信する。
Webブラウザ1140は、上記S1307のHTML文書を受信すると、S1308で、該HTML文書に含まれる登録用マークアップを解析し、UA102として、Web Intentsサービスの提供機能を自身に登録する。具体的には、Webブラウザ1140の解析部1143が登録用マークアップの解析を行い、Web Intentsサービスの特定を行う。その後、Webブラウザ1140のサービス管理部1144が必要な情報をサービス格納部1145の登録済サービステーブル1230に登録する。
以上のようにしてプロキシーアプリケーション1130のインストールが行われる。なお、上記S1303〜S1308で示した処理は、本件における必須な構成ではない。しかし、このようにインストール時にWeb Intentsサービスの提供機能をWebブラウザ1140に登録することで、連携を行う際に連携先のWeb IntentsサービスがWebブラウザに1つも登録されていないという現象を回避することができる。また、プロキシーアプリケーション1130を開発したベンダーがお奨めするWeb IntentsサービスをWebブラウザ1140に登録することもできる。
<本実施例のアプリケーションの連携>
以下、図14乃至図17を用いて、連携元アプリケーション1110とWebアプリケーション1150が連携する動作について説明する。
図14は、連携元アプリケーション1110とWebアプリケーション1150が連携する一連の動作を例示するシーケンス図である。
まず、ユーザ操作に応じて、連携元アプリケーション1110は、図15(A)のUIを表示する。
図15は、連携元アプリケーション1110とWebアプリケーション1150が連携する場合にモバイル端末901のディスプレイ1014に表示されるUI画面を例示する図である。
図15(A)のUIは、連携元アプリケーション1110から「image001.jpg」1502を他のアプリケーションに送信するためのUIを示す。図15(A)のUIにおいて、ユーザからの「送信する」ボタン1501の押下を受け付けると、連携元アプリケーション1110は、図14のS1401の処理を行う。
S1401で、連携元アプリケーション1110は、Local Intentの処理要求を作成して、そのLocal Intentの処理要求を、制御部1120に渡す。なお、ここで連携元アプリケーション1110がLocal Intentの処理要求を作成するためのソースコードは、例えば図8で示したソースコード800と同じであるとする。つまり、actionとして「ACTION_SEND」を扱うことができ、あらゆる画像データのフォーマットを処理できるアプリケーションとの連携を要求している。なお、上記S1401の処理は図6のS602に対応する。
制御部1120は、上記S1401のLocal Intentの処理要求を受信すると、該Local Intentの処理要求を解析する。そして、制御部1120は、自身に登録されているアプリケーションの提供機能の中から、指定されたLocal Intentのactionとtypeが一致するアプリケーションの提供機能を抽出し、該提供機能のアプリ名を、図15(B)のように一覧表示させることでユーザに選択を要求する。
図15(B)のUIでは、プロキシーアプリケーション1130とメールアプリケーションが選択肢1511,1512として表示されている。これらのアプリケーションが上記S1401で受信したLocal Intentの処理要求を処理可能であることが分かる。ユーザにより図15(B)のUIの一覧からプロキシーアプリケーション1130(選択肢1511)が選択されたことを受け付けると、制御部1120は、S1402の処理を実行する。
S1402で、制御部1120は、上記S1401で連繋元アプリケーション110から渡されたLocal Intentの処理要求を、連携先アプリケーションとしてのプロキシーアプリケーション1130に渡す(これにより、「ACTION_SEND」の実行を要求する)。なお、この処理は、図6のS604に対応する。
プロキシーアプリケーション1130は、上記S1402のLocal Intentの処理要求を受信すると、S1403の処理を実行する。S1403で、プロキシーアプリケーション1130の処理要求作成部1133は、Local Intentの処理要求を作成して制御部1120に渡す。
なお、上記S1403で作成するLocal Intentの処理要求は、プロキシーアプリケーション1130が公開するページ(Webサイト)にアクセスするようにWebブラウザ1140を起動するためのLocal Intentの処理要求である。ここで指定するプロキシーアプリケーション1130が公開するページは、クライアント101として、Web Intentsサービスの提供機能を呼び出すためのページ(Webサイト)である。
S1404で、制御部1120は、上記S1403で指定されたURLにアクセスするようにWebブラウザ1140を起動する。S1405で、Webブラウザ1140は、上記S1404で指定されたURLに対してHTTPリクエストとしてHTML文書の取得要求を送信する。つまり、Webブラウザ1140は、上記S1403で指定したプロキシーアプリケーション1130が公開するページにアクセスする。この際、具体的には、Webブラウザ1140からのHTTPリクエストは、通信部1136を介してプロキシーアプリケーション1130に渡る。
S1406で、プロキシーアプリケーション1130は、上記S1402で受け取ったLocal Intentの処理要求から、Web Intentの処理要求を作成する。ここで、図16を用いて、S1406におけるプロキシーアプリケーション1130の処理について説明する。
図16は、S1406におけるプロキシーアプリケーション1130の処理を例示するフローチャートである。なお、このフローチャートの各ステップの処理はモバイル端末901のCPU1002がROM1003等の不揮発性の記憶装置に記憶された本発明に特有な制御プログラムを読み込み実行することに応じて実現されるものとする。
S1601で、プレゼンテーション部1131は、HTTPのリクエスト(図14のS1405)を受信したかを監視する。そして、HTTPのリクエストを受信していないと判定した場合(S1601でNoの場合)、プレゼンテーション部1131は、S1601の監視を続ける。一方、プレゼンテーション部1131がHTTPのリクエストを受信したと判定した場合(S1601でYesの場合)、Intent変換部1132が、S1602を実行する。
S1602で、Intent変換部1132は、図14のS1402で受け取ったLocal Intentの処理要求を読み込み、S1603に処理を遷移させる。S1603で、Intent変換部1132は、上記Local Intentの処理要求のactionを、Web Intentsのactionに変換し、S1604に処理を遷移させる。
より具体的には、Intent変換部1132は、変換テーブル管理部1134に対して、上記S1402で受け取ったLocal Intentの処理要求のactionを渡す。変換テーブル管理部1134は、変換テーブル格納部1135で管理されるAction変換テーブル1200から上記S1402で受け取ったLocal Intentの処理要求のactionに紐づくWeb Intentsのactionを取得する。そして、変換テーブル管理部1134は、取得したWeb IntentsのactionをIntent変換部1132に渡す。例えば、上記S1402で受け取ったLocal Intentの処理要求のactionが「ACTION_SEND」であった場合、「http://Web Intents.org/share」に変換される。
S1604で、Intent変換部1132は、上記S1402で受け取ったLocal Intentの処理要求のtypeをWeb Intentsのtypeに変換し、S1605に処理を遷移させる。本実施例では、Local Intents、Web Intentsともに、typeはMIME(Multipurpose Internet Mail Extensions)のContent−Typeの形で記載されている。そのため、Local Intentの処理要求のtypeに記載されている内容をそのままWeb Intentの処理要求に使用する。
例えば、図4で示したLocal Intentの処理要求のtypeは、「image/*」であるため、Web Intentの処理要求としても「image/*」を使用する。なお、typeについても別の形式で記載されるような場合は、actionの場合と同じく、変換テーブル格納部1135にtypeを変換するテーブルを持つように構成してもよい。以上のように、Intent変換部1132は、Local Intentの処理要求に含まれる指定内容の一部を、UAの中継機能による登録処理に対応する機能情報に含まれる分類情報(actionに記載される情報)やデータ種類の情報(typeに記載される情報)等の形式に変換する。
S1605で、Intent変換部1132は、上記S1603,S1604で変換したaction、typeを用いてWeb Intentの処理要求を作成し、本フローチャートの処理を終了する。なお、本例では、上記S1402で受け取ったLocal Intentの処理要求の内容が図8で示したLocal Intentの処理要求であるとする。そして、上記S1406で作成したWeb Intentの処理要求は、図4で示したものとなる。以上のようにして、Local Intentの処理要求からWeb Intentの処理要求を作成する。
以下、図14の説明に戻る。
S1407で、プレゼンテーション部1131は、クライアント101として、通信部1136を介して、上記S1406で作成したWeb Intentの処理要求を含むHTML文書を、HTTPレスポンスとして、UA102としてのWebブラウザ1140に送信する。なお、この処理は図2のS204に対応する。
S1408で、Webブラウザ1140は、UA102として、上記S1407で受信したHTML文書を表示する。具体的には、Webブラウザ1140の解析部1143が、上記HTML文書を解析し、表示部1142がHTML文書の表示を行う。
ここで、図15(C)のUIは、上記S1408でWebブラウザ1140がUA102として表示するUIである。図15(C)のUIにおいては、「共有する」ボタン1521は、IDが「share−photo」であり、ボタン押下すると図4で示したWeb Intent処理要求に含まれる無名関数が実行される。つまり、ユーザ操作により「共有する」ボタン1521が押下されたことを受け付けて、Webブラウザ1140は、UA102として、S1409の処理を実行する。なお、この処理は図2のS205に対応する。
S1409で、UA102としてのWebブラウザ1140は、図4で示した無名関数を実行し、UA102としてのWebブラウザ1140に登録されているWeb Intentsサービスの提供機能の一覧を表示する。より詳細には、サービス管理部1144は、サービス格納部1145の登録済サービステーブル1230から、情報を取得する。その取得する情報とは、Web Intent処理要求で指定されたactionとtypeに合致するWeb Intentsサービスの提供機能を特定する情報である。例えば、Web Intent処理要求が図4で示したものであった場合は、actionが「share」であり、typeが「image/*」である。そのため、サービス管理部1144は、登録済サービステーブル1230のServiceIDが「1」と「3」であるレコードの情報を取得する。
図15(D)は、上記S1409においてWebブラウザ1140がサービスの提供機能の一覧表示を行うUIの一例である。図15(D)のUIでは、登録済サービステーブル1230のServiceIDが「1」と「3」であるWeb Intentsサービスの提供機能を呼び出すためのボタン(選択肢としてのボタン1531,1532)が表示されている。図15(D)のUIにおいて「Image share service」ボタン1531が押下されると、UA102としてのWebブラウザ1140は、S1410の処理を実行する。
なお、本例では、上記S1406で作成するWeb Intentの処理要求を図4で示したものとしたが、別の例として、以下、上記S1406で作成するWeb Intentの処理要求を図17とした場合について説明する。
図17は、S1406にて作成されるWeb Intentの処理要求を含むHTML文書を例示する図である。図17のWeb Intentの処理要求は、ボタン押下時に無名関数を実行するのではなく、当該HTMLページをloadしたときに無名関数を実行するように記載されている。そのため、上記S1408で示した図15(C)のようなUIが表示されることなく、無名関数が実行され、S1409で表示した図15(D)のUIが表示されることになる。このようにすることで、図15(C)のUIでは必要だった「共有する」ボタンを押下するというユーザ操作の手間を省くことができる。
以下、図14の説明に戻る。
S1410で、Webブラウザ1140は、UA102として、サービス103としてのWebサーバ902のWebアプリケーション1150に、上記S1407で受け取ったWeb Intentの処理要求をHTTPリクエストとして送信する。その際、送信するデータには、上記S1409で実行した図4(又は図17)の無名関数によって作成されたWeb Intentオブジェクトも含める。なお、この処理は図2のS207に対応する。
上記S1410のHTTPリクエストを受信すると、Webアプリケーション1150は、S1411の処理を実行する。S1411で、Webアプリケーション1150は、サービス103として、上記S1410で受信したWeb Intentの処理要求からWeb Intentオブジェクトを取り出し、提供機能の処理として、Web Intentオブジェクトに含まれる画像データの保存を行う。より詳細には、Webアプリケーション1150のWeb Intent処理部1152は、受信したWeb Intentの処理要求を解析し、Web Intentオブジェクトに含まれる画像データを取得して、画像管理部1154に渡す。画像管理部1154は、受け取った画像データを、画像データ格納部1155の画像データ管理テーブル1250に登録する。つまり、本例であると、図15(A)で連携元アプリケーション1110が表示していた「image001.jpg」1502の画像データが、サービス103としてのWebサーバ902の画像データ格納部1155に登録される。なお、上記S1411の処理は図2のS208に対応する。
Webサーバ902のWebアプリケーション1150は、サービス103としてのWeb Intentの処理が終了すると、S1412の処理を実行する。
S1412で、Webサーバ902のWebアプリケーション1150は、サービス103として、Web Intentの処理結果を、クライアント101としてのプロキシーアプリケーション1130に伝えるECMAScriptを含む応答を、UA102としてのWebブラウザ1140に返す。なお、この処理は図2のS209に対応する。
Webブラウザ1140は、UA102として、上記S1412の応答を受信すると、S1413の処理を実行する。S1413で、Webブラウザ1140は、UA102として、上記S1412の応答に含まれるECMAScriptを実行し、startActivety()関数の引数で指定されたコールバック関数onSuccess()を呼び出す。なお、この処理は図2のS210に対応する。
S1414で、Webブラウザ1140は、UA102として、上記S1413で呼び出したコールバック関数onSuccess()によって、クライアント101としてのプロキシーアプリケーション1130へ処理結果を返す。なお、この処理は図2のS211に対応する。
プロキシーアプリケーション1130は、UA102として、上記S1414の処理結果を受信すると、S1415の処理を実行する。S1415で、プロキシーアプリケーション1130のIntent変換部1132は、連携先アプリケーション503として、上記S1414で受け取ったWeb Intentの処理結果に応じてLocal Intentの処理結果を作成する。ここでは、上記S1414で受け取った結果は成功であるとし、成功を示す識別子をLocal Intentの処理結果に含めるものとする。なお、上記S1414で受け取った結果は失敗の場合、失敗を示す識別子をLocal Intentの処理結果に含めるものとする。
S1416で、プロキシーアプリケーション1130は、連携先アプリケーションとして、上記S1415で作成したLocal Intentの処理結果を、制御部1120に通知する。なお、この処理は、図6のS606に対応する。
制御部1120は、上記S1416の通知を受け取ると、S1417の処理を実行する。S1417で、制御部1120は、図8のソースコード800で示したコールバック関数onActivityResult()を呼び出し、連携元アプリケーション1110に、上記S1416のLocal Intent処理結果を通知する。なお、この処理は、図6のS607に対応する。
以上のように、本実施例のプロキシーアプリケーション1130は、情報処理端末901内のアプリケーションの処理実行要求をWebアプリケーションが解析可能な処理実行要求に変換し、仲介する。これにより、Web Intentsに未対応の情報処理端末内で動作するアプリケーション連携の仕組み(例えばAndroidのIntentsのようなLocal Intents)から、Web Intentsなどのネットワーク上のウェブサービス連携を利用することができる。従って、モバイル端末等の情報処理端末内のアプリケーションと、ネットワーク上のサービス(インターネット上のWebアプリケーション)とを、容易に連携することが可能となる。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
(他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施例の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。