以下、図面を参照しながら本発明の実施形態を詳細に説明する。以下では、「アプリケーションプログラム」を、「アプリケーション」又は「アプリ」とも記載する。また、以下の説明では、アプリに記述された命令で指定される処理を実行することを、単に「アプリを実行」又は「アプリの実行」と呼ぶことがある。
図1は、本実施形態の一実施形態による放送通信連携システム1の全体構成図である。放送通信連携システム1は、放送送出装置2と、サービスサーバ3と、受信装置4と、連携端末5とを有する。放送送出装置2及びサービスサーバ3は送信側の装置であり、受信装置4及び連携端末5は、受信側の装置である。
放送送出装置2は、放送信号を送出する。サービスサーバ3は、アプリ本体やアプリで利用するコンテンツデータを、インターネットを介して受信側の装置へ配信する。アプリ本体とは、アプリケーションのプログラムである。受信装置4は、例えば、ハイブリッドキャスト対応テレビである。連携端末5は、例えば、スマートフォンやタブレット端末などの端末装置である。受信装置4及び連携端末5は、インターネットを介してサービスサーバ3と相互に通信できる。また、受信装置4と連携端末5は、無線LAN(Local Area Network)等のローカルネットワークを介して接続する。
放送通信連携サービスの形態は複数存在するが、本実施形態の放送通信連携システム1では、ハイブリッドキャスト技術仕様(非特許文献1、2)に基づき、受信装置4において、デジタル放送サービスとインターネットサービスとが連携動作することを想定する。受信装置4が、放送またはインターネットにより配信されるアプリを実行することで、インターネット上のコンテンツを取得できるようになり、ユーザが放送通信連携サービスを利用できるようになる。さらに、ハイブリッドキャスト技術仕様に則り、受信装置4と連携端末5にインストールした端末側連携アプリとが連携動作する。
なお、本実施形態においては、受信装置4において動作するアプリは、放送事業者が配信する放送マネージドアプリとする。放送マネージドアプリは、放送送出装置2から送信される放送サービスの制御信号に基づいて、起動、終了、強制終了などのライフサイクルが制御される。
連携端末5に実装される端末側連携アプリは、通信により接続される他の装置である受信装置4と連携して動作するコンパニオンアプリである。端末側連携アプリは、受信装置4により実行される放送マネージドアプリと連携動作する1以上のサービスアプリを実行する。
放送マネージドアプリとサービスアプリとは連携動作することにより、ユーザへ提供するサービスを実行する。サービスとは、ユーザが連携端末5に行った操作に従って動作した結果の画像、映像、音声を、連携端末5に、又は、受信装置4及び連携端末5に出力することである。サービスの実行には、受信装置4が有する受信機機能から取得した情報などが利用される。受信機機能は、放送信号を受信し、ユーザにより選択されたチャンネルの番組映像や音声などのコンテンツデータを放送信号から取得し、デコードして出力する一連の機能である。ユーザに提供するサービスは任意であるが、一例として、SNS(ソーシャルネットワークサービス)、天気予報やニュースなどの情報の提供、外国語字幕の提供、テレビ映像とは異なる角度からの映像の提示などがある。
本実施形態では、端末側連携アプリにおいて実行されるサービスアプリがウェブアプリである場合を例に説明する。ウェブアプリとは、ウェブブラウザにより実行されるアプリである。ウェブアプリは、任意の手段により連携端末5に実装される。例えば、ウェブアプリは、放送マネージドアプリから取得が指示されたアプリでもよく、ユーザ操作により取得したアプリでもよく、連携端末5に予め実装されたアプリでもよい。放送マネージドアプリ及びウェブアプリのプログラムは、例えば、HTML(Hypertext Markup Language)により記述される。
図2は、受信装置4及び連携端末5のスタック図である。受信装置4は、ハードウェア、OS(Operation System)、レジデント及びアプリ実行部の4層から構成される。アプリ実行部は、例えばHTML5ブラウザであり、放送マネージドアプリを実行する。OS上で実行されるレジデントには、メモリに常駐するソフトウェアによる放送の受信機機能が搭載される。アプリ実行部で実行される放送マネージドアプリは、非特許文献1により規定される拡張API(Application Program Interface)を通してレジデントの受信機機能にアクセスすることができる。ハードウェアは、CPU(central processing unit)、各種メモリ、チューナー、デコーダ、通信装置、表示装置、入力装置などを含む。
連携端末5は、ハードウェア、OS及びネイティブアプリ実行部の3層から構成される。ネイティブアプリ実行部は、iOS(登録商標)やAndroid(登録商標)など端末のOSが提供するアプリを実行する。ネイティブアプリ実行部では、複数のネイティブアプリが動作可能である。ネイティブアプリは、特定のOSやプラットフォームで実行可能なプログラムである。本実施形態における端末側連携アプリはネイティブアプリであり、ネイティブアプリ実行部において動作する。なお、端末側連携アプリは、ネイティブアプリでなくてもよい。例えば、端末側連携アプリは、ネイティブアプリから、ネイティブアプリではないブラウザを呼び出し、ブラウザによりウェブアプリを実行させてもよい。ハードウェアは、CPU、各種メモリ、通信装置、表示装置、入力装置などを含む。
ハイブリッドキャストにおける端末連携機能は、受信装置4のアプリ実行部で動作する放送マネージドアプリと、連携端末5のネイティブアプリ実行部が実行する端末側連携アプリの内部で動作するウェブアプリの間で実現される。放送マネージドアプリとウェブアプリとの間では、非特許文献1で規定される拡張APIを用いてテキストメッセージを送信する。テキストメッセージには、任意のメッセージ内容を記述することができる。例えば、メッセージ内容は、アプリに対する各種の実行命令や、アプリが動作する際に用いられる付加的な情報などでもよい。
図3は、受信装置4の内部構成を示すブロック図であり、本実施形態と関係する機能ブロックのみを抽出して示してある。同図に示す受信装置4は、放送受信部401、分離部402、映像復号部403、音声復号部404、データ放送実行部405、通信入出力部406、リモコン入力制御部407、電源制御部408、アプリ実行部409、アプリ制御部410、放送通信連携部411、端末連携部412、映像合成部413、映像表示部414、音声合成部415及び音声出力部416を備えて構成される。
放送受信部401は、チューナーであり、放送送出装置2から送出された放送信号を受信し、復調する。分離部402は、放送受信部401が受信し、復調した放送信号を、映像データ、音声データなどのコンテンツデータや、コンテンツデータ以外のデータに分離する。コンテンツ以外のデータには、例えば、データ放送や、受信チャンネル、番組情報が記述されたSI(Service Information)や、イベントメッセージなどが含まれる。映像復号部403は、映像データを復号する。音声復号部404は、音声データを復号する。データ放送実行部405は、BML(Broadcast Markup Language)ブラウザであり、データ放送を実行する。
通信入出力部406は、通信ネットワークに接続するためのインターフェースである。通信入出力部406は、インターネットなどを介してアプリマーケット、アカウント管理サーバ、アプリ配信サーバなどのサービスサーバ3と接続する。また、通信入出力部406は、無線LANなどのローカルネットワークを介して連携端末5と接続する。リモコン入力制御部407は、リモコン(リモートコントローラ)からユーザがリモコンに行った操作を示すデータを受信する。電源制御部408は、受信装置4の電源の制御を行う。
アプリ実行部409は、放送マネージドアプリを実行するウェブ(Web)ブラウザである。放送マネージドアプリは、1以上のサービスの機能を提供する。アプリ制御部410は、放送信号から分離されたデータに含まれる情報に基づいて、放送マネージドアプリの起動や終了などの制御を行う。例えば、アプリ制御部410は、現在選択されている放送事業者(チャンネル)の放送マネージドアプリを、放送信号から分離されたAITに設定されている情報などに基づいて制御する。アプリ制御部410は、起動した放送マネージドアプリの識別情報を端末連携部412に通知する。
放送通信連携部411は、放送マネージドアプリにおいて放送又は通信により取得したコンテンツを連携動作させるために、アプリ実行部409に対して拡張APIで規定される機能を提供する。具体的には、放送通信連携部411は、受信中の放送信号に含まれるSIやイベントメッセージなどの情報や受信装置4が備える機能などへのアクセス手段を提供する。端末連携部412は、連携端末5とのペアリング処理と、受信装置4の放送マネージドアプリと連携端末5のウェブアプリ間の通信を仲介する処理とを行う。端末連携部412は、後述する図5に示す連携端末5の端末連携部531とペアで動作する。端末連携部412は、起動された放送マネージドアプリの識別情報を連携端末5に通知する。
映像合成部413は、映像復号部403が復号した放送番組の映像データと、データ放送実行部405やアプリ実行部409の処理結果に基づき出力された映像データとを合成し、映像表示部414に出力する。映像表示部414は、一般的なディスプレイであり、映像合成部413が合成した映像データの映像を表示する。
音声合成部415は、音声復号部404が復号した放送番組の音声データと、データ放送実行部405やアプリ実行部409の処理結果に基づき出力された音声データとを合成し、音声出力部416に出力する。音声出力部416は、一般的なスピーカーであり、音声合成部415が合成した音声データを音声により出力する。
図4は、アプリ実行部409の詳細な構成を示す機能ブロック図である。アプリ実行部409は、サービス実行部421、サービス実行管理部422及びメッセージ制御部423を有する。なお、アプリ実行部409は複数のサービス実行部421を備え得るが、同時に動作する放送マネージドアプリは一つのみとする。同図では、アプリ実行部409が備える複数のサービス実行部421をそれぞれ、サービス実行部421−1、421−2、421−3、…と記載している。
サービス実行部421は、アプリ制御部410による制御に基づき、放送マネージドアプリに含まれるサービス機能を実行する。サービス実行管理部422は、各サービス実行部421の起動及び終了の制御や状態管理を行い、複数のサービス実行部421を並列に実行させる。
メッセージ制御部423は、サービス実行部421が実行する放送マネージドアプリのサービス機能と連携端末5が実行するウェブアプリとの間のメッセージを適切に送受信するための制御を行う。メッセージ制御部423は、サービス識別管理部4231、メッセージ受信部4232、メッセージ判定部4233、メッセージ分配部4234及び送信元サービス設定部4235を有する。
サービス識別管理部4231は、サービス実行部421の識別子と、そのサービス実行部421により実行されるサービスの識別子との対応表を例えばリスト形式で管理する。サービスの識別子は、予め決められる。なお、各放送マネージドアプリは、プレフィックスを付加することなどにより、送信先のアドレスとして、サービス毎に予め決められた識別子を、メッセージの一部に付加して送受信を行う。
メッセージ受信部4232は、連携端末5からのメッセージ、及び、サービス実行部421からのメッセージを受信する。メッセージ受信部4232は、受信したメッセージを、メッセージ判定部4233及びメッセージ分配部4234に送信する。なお、メッセージ受信部4232は、メッセージ判定部4233に宛先の判定に必要な情報のみを送信してもよい。
メッセージ判定部4233は、メッセージ受信部4232から受信したメッセージに付加されたサービスの識別子と、サービス識別管理部4231に記憶される対応表とを照合してメッセージの送信先を決定し、メッセージ分配部4234に通知する。メッセージ判定部4233は、メッセージに付加された送信元のサービスの識別子と送信先のサービスの識別子とが同一の場合は連携端末5を送信先とし、異なる場合はサービス実行部421を送信先とする。また、メッセージ判定部4233は、実施形態によっては、サービス間の通信チャンネルを確立するための識別子の発行や、その識別子に基づいたメッセージの送信先の決定を行う。
メッセージ分配部4234は、メッセージ受信部4232から受信したメッセージを、メッセージ判定部4233が決定した送信先に送信する。送信元サービス設定部4235は、サービス実行部421が連携端末5または他のサービス実行部421に対して送信するメッセージに、そのサービス実行部421において実行中の放送マネージドアプリのサービスの識別子を付加する。
図5は、連携端末5の構成を示す機能ブロック図であり、本実施形態と関係する機能ブロックのみを抽出して示してある。同図においては、端末側連携アプリを中心とした機能構成を示す。連携端末5は、ハードウェア部51、OS部52、連携アプリ実行制御部53及び他アプリ実行制御部54を有する。
ハードウェア部51は、CPU、各種メモリ、通信装置、ディスプレイ(表示装置)、ユーザ操作を入力するための入力デバイス(入力装置)などの各種ハードウェアからなる。ディスプレイがタッチパネルである場合、入力デバイスは、タッチパネルに配されたタッチセンサである。ハードウェア部51は、通信装置により実現される通信入出力部511を有する。
通信入出力部511は、通信ネットワークに接続するためのインターフェースである。通信入出力部511は、インターネットなどを介してサービスサーバ3と接続する。また、通信入出力部511は、無線LANなどのローカルネットワークを介して受信装置4と接続する。OS部52は、OSにより実現され、端末全体を制御し、連携アプリ実行制御部53及び他アプリ実行制御部54に、ハードウェア部51へのインターフェースを提供する。
連携アプリ実行制御部53は、CPUがメモリに記憶された端末側連携アプリを読み出して実行することにより実現される。連携アプリ実行制御部53は、端末連携部531、サービス実行部532、サービス実行管理部533、メッセージ制御部534及びアプリ間連携部535を有する。複数のサービス実行部532をそれぞれ、サービス実行部532−1、532−2、532−3、…と記載することで区別する。
端末連携部531は、受信装置4とのペアリング処理と、受信装置4の放送マネージドアプリと連携端末5のウェブアプリ間の通信を仲介する処理とを行う。端末連携部531は、受信装置4の端末連携部412とペアで動作する。
サービス実行部532は、個々のサービスを提供するためのウェブアプリを実行する。サービス実行部532の実装方法としては、Android(登録商標)搭載端末におけるWebView、iOS搭載端末におけるUIWebViewなどが挙げられる。サービス実行部532は複数存在することを前提としており、各サービス実行部532には一意の識別子が割り当てられ、サービスの識別子としても用いられる。各サービス実行部532は、以下のようなウェブアプリを実行する。
(1)現在実際にサービスが提供されている受信装置4の放送マネージドアプリと連携したウェブアプリ。なお、このウェブアプリを実行するのは一つのサービス実行部532である。
(2)複数の放送局が配信する放送マネージドアプリと連携して共通に利用することができるウェブアプリ。
(3)受信装置4と連携しないウェブアプリ。
なお、サービス実行部532は、動作中に他アプリ起動コマンドを発行することがある。他アプリ起動コマンドとは、起動対象の他アプリの起動を指示するためのコマンドである。
サービス実行管理部533は、各サービス実行部532、又は、サービス実行部532上で実行されるウェブアプリの起動及び終了の制御や状態管理を行い、複数のサービス実行部532を並列に実行させる。サービス実行管理部533は、受信装置4からの指示又はユーザ操作に基づいて、サービス実行部532の起動及び終了の制御や、フォアグラウンドでの動作又はバックグラウンドでの動作など状態の変更を行う。また、サービス実行管理部533は、他アプリ実行制御部54の起動の制御及び起動中の他アプリ実行制御部54からの指示に基づくサービス実行部532の起動の制御を行う。
ハイブリッドキャストでは、受信装置4と連携端末5との間でテキストメッセージを送受信するためのAPIが規定されている。メッセージ制御部534は、受信装置4が実行する放送マネージドアプリと連携端末5の各サービス実行部532が実行するウェブアプリとの間、および、サービス実行部532の間のメッセージを適切に送受信するための制御を行う。
アプリ間連携部535は、サービス実行部532と他アプリ実行制御部54とを連携させる。アプリ間連携部535は、サービス実行部532が発行した他アプリ起動コマンド、又は受信装置4から受信した他アプリ起動コマンドで指定される他アプリを他アプリ実行制御部54に起動させる。サービス実行部532は、発行した他アプリ起動コマンドをサービス実行管理部533に出力する。
他方、アプリ間連携部535は、他アプリ実行制御部54が発行したサービス起動コマンドをサービス実行管理部533に出力する。サービス起動コマンドとは、提供対象のサービスを提供するためのウェブアプリの起動を指示するためのコマンドである。サービス実行管理部533は、アプリ間連携部535から入力されたサービス起動コマンドで指定されるサービスを提供するウェブアプリを特定し、特定したウェブアプリを起動させる。
他アプリ実行制御部54は、CPUがメモリに記憶された他アプリを読み出して実行することにより実現される。他アプリ実行制御部54は、アプリ間連携部535から入力される他アプリ起動コマンドで指示される他アプリ、又は入力デバイスから入力される操作信号で指示される他アプリを起動する。他アプリ実行制御部54は、他アプリの実行中においてサービス起動コマンドを発行することがある。他アプリ実行制御部54は、発行したサービス起動コマンドをアプリ間連携部535に出力する。
次に、メッセージ制御部534の詳細を、図6を用いて説明する。
図6は、メッセージ制御部534の詳細な構成を示す機能ブロック図である。メッセージ制御部534は、サービス識別管理部5341、メッセージ受信部5342、メッセージ判定部5343、メッセージ分配部5344及び送信元サービス設定部5345を有する。
サービス識別管理部5341は、サービス実行部532の識別子と、そのサービス実行部532が実行するウェブアプリにより提供されるサービスであるウェブサービスの識別子との対応表を例えばリスト形式で管理する。ウェブサービスの識別子は、予め決められる。なお、各ウェブサービスは、プレフィックスを付加することなどにより、送信先のアドレスとして、ウェブサービス毎に予め決められた識別子を、メッセージの一部に付加して送受信を行う。
メッセージ受信部5342は、受信装置4からのメッセージ、及び、各サービス実行部532からのメッセージを受信する。メッセージ受信部5342は、受信したメッセージを、メッセージ判定部5343及びメッセージ分配部5344に送信する。なお、メッセージ受信部5342は、メッセージ判定部5343に宛先の判定に必要な情報のみを送信してもよい。
メッセージ判定部5343は、メッセージ受信部5342から受信したメッセージに付加されたサービスの識別子と、サービス識別管理部5341に記憶される対応表とを照合してメッセージの送信先を決定し、メッセージ分配部5344に通知する。メッセージ判定部5343は、メッセージに付加された送信元のサービスの識別子と送信先のサービスの識別子とが同一の場合は受信装置4を送信先とし、異なる場合はサービス実行部532を送信先とする。また、メッセージ判定部5343は、実施形態によっては、サービス間の通信チャンネルを確立するための識別子の発行や、その識別子に基づいたメッセージの送信先の決定を行う。
メッセージ分配部5344は、メッセージ受信部5342から受信したメッセージを、メッセージ判定部5343が決定した送信先に送信する。送信元サービス設定部5345は、サービス実行部532が受信装置4または他のサービス実行部532に対して送信するメッセージに、送信元のサービス実行部532の識別子を付加する。
上述したように、受信装置4で実行される放送マネージドアプリは一つである。そこで、複数のサービスを一つの放送マネージドアプリで実行するために、一つのHTML文書(アプリケーションプログラム)内に複数のサービスそれぞれを実行させるためのプログラムを記述する。例えば、放送局Aが提供する現行の放送マネージドアプリでのサービスAに加え、放送局Aと放送局Bとが共通に提供するサービスXを同時に運用することを想定する。このとき、放送局Aが提供するサービスAのHTML文書内と、放送局Bが提供する放送マネージドアプリのサービスBのHTML文書内に、サービスXの機能をJavaScript(登録商標)等で記述する。さらに、複数のサービスで個々にデバイス間でメッセージを送受信するため、連携端末5のサービス実行管理部533と同等の機能を有するサービス実行管理部422の機能、連携端末5のメッセージ制御部534と同等の機能を有するメッセージ制御部423の機能を、サービスAとサービスBの両方のサービスのHTML文書内にサービスXの機能と同様に記述する。サービス実行管理部422の機能には、サービス実行部421の起動や終了などの制御、サービスごとに画面に表示するか否かの制御が含まれる。
次に、放送マネージドアプリの記述例について説明する。図7は、放送マネージドアプリの記述例を示す図である。同図は、放送局Aの放送マネージドアプリを、HTML文書として記述した例である。同図に示すように、divでサービスA、サービスXのそれぞれ表示する要素をグループ化し、idを指定する(serviceA、common_serviceX)。サービス実行部421で実行される各サービスの機能は、JavaScript(登録商標)で記述し、head部分にインクルードする(serviceA.js、common_serviceX)。さらに、サービス実行管理部422によるサービス実行部421の起動や終了などの制御機能(common_appcontrol.js)、メッセージ制御部423の機能(common_messaging.js)、及び、サービス実行管理部422によるサービス毎の表示の制御機能(common_viewcontrol.js)も同様にインクルードする。このようにHTML文書として記述された放送マネージドアプリをアプリ実行部409が実行することにより、アプリ実行部409は、サービス実行部421、サービス実行管理部422及びメッセージ制御部423として動作する。これにより、受信装置4上の放送マネージドアプリと、連携端末5上のコンパニオンアプリ双方に同等の機能が導入されるため、複数のサービスを一対の受信装置4と連携端末5上で利用できるようになる。
なお、サービス実行管理部422、メッセージ制御部423及びサービス実行部421として動作する機能部が、予め受信装置4のアプリ実行部409に実装されていてもよい。
連携端末5のサービス実行管理部533は、受信装置4からの指示、又は、連携端末5にユーザが入力した指示に従って、サービス実行部532によるウェブアプリの起動又は停止を行う。具体的には、受信装置4のアプリ実行部409が実行している放送マネージドアプリからサービス起動指示が出力されると、端末連携部412は連携端末5を送信先とし、通信入出力部406を介してサービス起動指示を送信する。サービス起動指示には、起動対象のウェブアプリを特定する情報が含まれる。連携端末5の端末連携部531は、通信入出力部511を介して受信したサービス起動指示をサービス実行管理部533へ出力する。サービス実行管理部533は、受信したサービス起動指示により起動が指示されたウェブアプリを起動する。あるいは、連携端末5の入力デバイスによりユーザが起動対象のウェブアプリの情報を入力すると、サービス実行管理部533は、その起動対象のウェブアプリを起動する。これにより、連携アプリ実行制御部53において、サービス実行部532が動作する。
図8は、メッセージの例を示す。
図8(a)は、受信装置4において放送マネージドアプリのサービスPの機能を実行しているサービス実行部421から、連携端末5の端末側連携アプリにおいてサービスPのウェブアプリを実行しているサービス実行部532へ送信されるメッセージM11を示す。図8(b)は、連携端末5の端末側連携アプリにおいてサービスPのウェブアプリを実行しているサービス実行部532から、同じく端末側連携アプリにおいてサービスQのウェブアプリを実行しているサービス実行部532に送信されるメッセージM21を示す。メッセージM11は、放送マネージドアプリのサービスPの機能を実行しているサービス実行部421により記述されるメッセージであり、メッセージM12は、サービスPのウェブアプリを実行しているサービス実行部532において記述されるメッセージである。メッセージM11、M21には、送信先のサービスの識別子(dst:ServiceP、dst:ServiceQ)、メッセージ本体(message)が記述される。
図8(c)に示すメッセージM12及び図8(d)に示すメッセージM22は、連携端末5のメッセージ受信部5342が受信するメッセージである。メッセージM12は、メッセージM11に送信元のサービスPの識別子(src:ServiceP)が付加されたものであり、メッセージM22は、メッセージM21に送信元のサービスPの識別子(src:ServiceP)が付加されたものである。
具体的には、受信装置4の送信元サービス設定部4235が、メッセージM11に送信元のサービスPの識別子を追加し、メッセージM12となる。メッセージM12の場合は、放送マネージドアプリを実行することにより生成されるメッセージ制御部423が有する送信元サービス設定部4235の機能(図7におけるcommon_messaging.js)によって、送信元のサービスの識別子が設定される。一方、メッセージM22の場合は、連携端末5の送信元サービス設定部5345が、メッセージM21に送信元のサービスPの識別子を付加する。
なお、メッセージのフォーマットはこれらの記述例に限らない。また、本実施形態では、送信元のサービスの識別子と送信先のサービスの識別子のみを記述したが、受信装置4もしくは連携端末5を送信先として記述しても構わない。
図9及び図10は、メッセージ制御部423及びメッセージ制御部534の動作を示す処理フローである。以下では、メッセージ制御部534を例にして説明するが、メッセージ制御部423も同様に動作する。
図9は、メッセージ受信時の処理フローを示す。連携端末5の端末連携部531は、通信入出力部511を介して受信装置4から受信したメッセージを、メッセージ受信部5342に出力する。メッセージ受信部5342は、端末連携部531からメッセージを受信する(ステップS105)。メッセージ受信部5342は、受信したメッセージから送信先のサービスの識別子及び送信元のサービスの識別子を検出する(ステップS110)。メッセージ受信部5342は、メッセージが読み出した送信先のサービスの識別子及び送信元のサービスの識別子をメッセージ判定部5343に通知し、メッセージ全体をメッセージ分配部5344に通知する(ステップS115)。
メッセージ判定部5343は、サービス識別管理部5341に、送信先のサービスの識別子により特定されるサービスをサービス実行部532が実行しているか否かの照合を依頼する(ステップS120)。サービス識別管理部5341は、メッセージ判定部5343から通知された送信先のサービスの識別子と対応付けて対応表に登録されているサービス実行部532の識別子を取得する。サービス識別管理部5341は、サービス実行部532の識別子が取得できた場合はその識別子を設定した照合結果を、取得できなかった場合はサービス実行部532がないことを示す照合結果を出力する。
メッセージ判定部5343は、サービス識別管理部5341から、送信先のサービスの識別子により特定されるサービスを実行するサービス実行部532があることを示す照合結果を受信したと判断すると(ステップS125:はい)、ステップS130の処理を行う。すなわち、メッセージ判定部5343は、メッセージ分配部5344に対して、メッセージに記述された送信先のサービスの識別子により特定されるウェブサービスを実行しているサービス実行部532に、メッセージを送信するよう通知する(ステップS130)。メッセージ分配部5344は、メッセージ判定部5343の指示に従い、メッセージに記述された送信先のサービスの識別子により特定されるサービス実行部532に、メッセージを送信する(ステップS135)。
一方、メッセージ判定部5343は、サービス識別管理部5341から送信先のサービスの識別子により特定されるサービスを実行するサービス実行部532がないことを示す照合結果を受信したと判断すると(ステップS125:いいえ)、ステップS140の処理を行う。すなわち、メッセージ判定部5343は、エラーをメッセージの送信元に返送するなど、所定のエラー処理を行う(ステップS140)。
図10は、メッセージ発行時の処理フローを示す。サービス実行部532は、メッセージを設定し、送信元サービス設定部5345に通知する(ステップS205)。送信元サービス設定部5345は、受信したメッセージに対して、送信元の識別子として、メッセージの送信元のサービス実行部532が実行しているサービスの識別子を追加し、メッセージ受信部5342に通知する(ステップS210)。メッセージ受信部5342は、メッセージから読み出した送信先のサービスの識別子及び送信元のサービスの識別子をメッセージ判定部5343に通知し、メッセージ全体をメッセージ分配部5344に通知する(ステップS215)。
メッセージ判定部5343は、送信先と送信元の識別子が同一か否かを判定する(ステップS220)。メッセージ判定部5343は、送信先と送信元の識別子が同一と判定した場合(ステップS225:はい)、メッセージ分配部5344に対して、端末連携部531を経由して受信装置4にメッセージを送信するよう通知する(ステップS230)。メッセージ分配部5344は、メッセージ判定部5343の指示に従い、メッセージを端末連携部531に出力し、端末連携部531は、メッセージ分配部5344から受信したメッセージを、通信入出力部511を介して受信装置4に送信する(ステップS240)。
一方、メッセージ判定部5343は、送信先と送信元の識別子が同一ではないと判定した場合(ステップS225:いいえ)、ステップS235の処理を行う。すなわち、メッセージ判定部5343は、サービス識別管理部5341から、メッセージに記述された送信先のサービスの識別子に対応して対応表に登録されているサービス実行部532の識別子を読み出す。メッセージ判定部5343は、読み出した識別子により特定されるサービス実行部532、つまり、メッセージに記述された送信先のサービスの識別子により特定されるウェブサービスを実行しているサービス実行部532へメッセージを送信するよう、メッセージ分配部5344に通知する(ステップS235)。メッセージ分配部5344は、メッセージ判定部5343により送信先として指示されたサービス実行部532に、メッセージを送信する(ステップS240)。
図11は、受信装置4と連携端末5の間のシーケンス図である。受信装置4のサービス実行部421は、連携端末5において実行されるサービスの識別子を宛先に設定したメッセージを発行する(ステップS305)。送信元サービス設定部4235は、サービス実行部421から受信したメッセージに送信元のサービスの識別子を設定し、メッセージ受信部4232に出力する(ステップS310)。メッセージ受信部4232は、メッセージから取得した送信元のサービスの識別子及び送信先のサービスの識別子をメッセージ判定部4233に通知し(ステップS315)、メッセージ全体をメッセージ分配部4234に通知する(ステップS320)。メッセージ判定部4233は、送信元のサービスの識別子及び送信先のサービスの識別子が同一であるため、連携端末5にメッセージを送信するようメッセージ分配部4234に通知する(ステップS325)。メッセージ分配部4234は、メッセージを端末連携部412に出力し(ステップS330)、端末連携部412は、メッセージを、通信入出力部406を介して連携端末5に送信する。
連携端末5の通信入出力部511は、受信装置4から受信したメッセージを端末連携部531に出力する(ステップS335)。メッセージ受信部5342は、端末連携部531からメッセージを受信する(ステップS340)。メッセージ受信部5342は、メッセージから取得した送信元のサービスの識別子及び送信先のサービスの識別子をメッセージ判定部5343に通知し(ステップS345)、メッセージ全体をメッセージ分配部5344に通知する(ステップS350)。メッセージ判定部5343は、送信先のサービスの識別子により特定されるウェブサービスが存在することを示す照合結果をサービス識別管理部5341から受信すると、ステップS355の処理を行う。すなわち、メッセージ判定部5343は、送信先のサービスの識別子により特定されるウェブサービスを実行しているサービス実行部532へメッセージを出力するようメッセージ分配部5344に指示する(ステップS355)。メッセージ分配部5344は、メッセージ判定部5343に指示されたサービス実行部532へメッセージを出力する(ステップS360)。
図11では、受信装置4から連携端末5へのメッセージの送信例を示したが、連携端末5から受信装置4へのメッセージ送信も同様の手順で実行できる。
図12は、連携端末5のウェブアプリ間でメッセージを送信する場合のシーケンス図である。同図では、サービス実行部532−1をサービス実行部(1)、サービス実行部532−2をサービス実行部(2)と記載している。
サービス実行部532−1は、サービス実行部532−2が実行しているサービスの識別子を宛先に設定したメッセージを発行する(ステップS405)。送信元サービス設定部5345は、サービス実行部532−1から受信したメッセージに送信元のサービスの識別子を設定し、メッセージ受信部5342に出力する(ステップS410)。メッセージ受信部5342は、メッセージから取得した送信元のサービスの識別子及び送信先のサービスの識別子をメッセージ判定部5343に通知し(ステップS415)、メッセージ全体をメッセージ分配部5344に通知する(ステップS420)。メッセージ判定部5343は、送信元のサービスの識別子及び送信先のサービスの識別子が異なるため、送信先のサービスの識別子により特定されるウェブサービスを実行しているサービス実行部532−2にメッセージを送信するようメッセージ分配部5344に通知する(ステップS425)。メッセージ分配部5344は、メッセージ判定部5343に指示されたサービス実行部532−2へメッセージを出力する(ステップS430)。
図12では、連携端末5のウェブアプリ間でメッセージを送信する場合ついて示しているが、受信装置4のサービス実行部421間でメッセージを送信する場合についても同様の手順で実行できる。
上述した、図8〜図12の例では、全てのメッセージに送信元のサービスの識別子と送信先のサービスの識別子を付加して送信していたが、サービス間のチャンネルの識別子を付加する実施形態をとっても構わない。この場合、受信装置4の放送マネージドアプリのサービスと連携端末5のウェブサービスとの間、又は、連携端末5におけるウェブサービス間で、メッセージングを開始する前に、接続処理を実行してサービス間のチャンネルを確立する。以降、受信装置4及び連携端末5は、接続解除の処理が実行されるまでは、確立したチャンネルにおいて割り当てられたセッションの識別子に基づき、送信元と送信先の識別子を付加せずにメッセージを送信する。
図13は、受信装置4の放送マネージドアプリのサービスと連携端末5のウェブサービスとの間でセッションの識別子に基づきメッセージを送信する場合のメッセージの設定例を示す図である。図13(a)は、接続登録メッセージM31を、図13(b)は接続登録確認メッセージM32を、図13(c)は接続解除メッセージM33を、図13(d)は接続解除確認メッセージM34を、図13(e)はメッセージ本体が設定されたメッセージM35を示す。
接続登録メッセージM31、接続登録確認メッセージM32、接続解除メッセージM33、接続解除確認メッセージM34、メッセージM35には、type属性が含まれている。このtype属性により、メッセージが登録(publish)/登録確認(subscribe)/接続解除(unpublish)/接続解除確認(unsubscribe)/メッセージ本体(body)のいずれであるかが識別可能である。
また、接続登録メッセージM31、接続登録確認メッセージM32、接続解除メッセージM33、接続解除確認メッセージM34には、送信元のサービスの識別子(src)及び送信先のサービスの識別子(dst)が設定され、接続登録確認メッセージM32及び接続解除確認メッセージM34には、さらに、確立したチャンネルに割当てられたセッションの識別子(subscribe_ID)が記述される。メッセージ本体(message)が設定されたメッセージM35には、送信元及び送信先は設定されず、セッションの識別子(subscribe_ID)とメッセージの内容(message)が記述される。
図14及び図15は、受信装置4と連携端末5の間でセッションの識別子に基づきメッセージを送信する場合のシーケンス図である。
図14は、接続登録処理のシーケンスを示す。受信装置4のサービス実行部421は、接続登録メッセージを発行する(ステップS505)。サービス実行部421が発行した接続登録メッセージには、接続登録メッセージであることを示す「publish」が設定されたtype属性と、送信先のサービスの識別子が設定されたdst属性とが含まれる。送信元サービス設定部4235は、このメッセージに、送信元のサービスの識別子を設定したsrc属性を追加する。送信元サービス設定部4235は、src属性が追加された接続登録メッセージをメッセージ受信部4232に出力する(ステップS510)。
メッセージ受信部4232は、接続登録メッセージに設定されている送信先のサービスの識別子及び送信元のサービスの識別子をメッセージ判定部4233に通知し(ステップS515)、接続登録メッセージ全体をメッセージ分配部4234に通知する(ステップS520)。メッセージ判定部4233は、送信先と送信元のサービスの識別子が同一であるため、連携端末5にメッセージを送信するようメッセージ分配部4234に通知する(ステップS525)。メッセージ分配部4234は、接続登録メッセージを端末連携部412に出力し(ステップS530)、端末連携部412は、メッセージ分配部4234から受信した接続登録メッセージを、通信入出力部406を介して連携端末5に送信する。
連携端末5の通信入出力部511は、受信装置4からメッセージを受信し、端末連携部531に出力する(ステップS535)。メッセージ受信部5342は、端末連携部531からメッセージを受信する(ステップS540)。メッセージ受信部5342は、受信したメッセージをメッセージ判定部5343に出力する(ステップS545)。メッセージ判定部5343は、受信したメッセージのtype属性により接続登録メッセージであると判断すると、subscribe_IDを発行し、送信元及び送信先のサービスの識別子と対応付けて記憶する。なお、接続が解除される度に新規のsubscribe_IDを発番してもよく、送信元と送信先のペアに対して予め決定したsubscribe_IDを割り当てても構わない。さらに、メッセージ判定部5343は、接続登録確認メッセージを生成する。接続登録確認メッセージには、接続登録確認メッセージを示す「subscribe」が設定されたtype属性と、発行したsubscribe_IDと、接続登録メッセージに設定されていたdst属性及びsrc属性とが含まれる。メッセージ判定部5343は、生成した接続登録確認メッセージをメッセージ分配部5344に通知し、受信装置4へ送信するよう指示する(ステップS550)。
メッセージ分配部5344は、接続登録確認メッセージを端末連携部531に出力し(ステップS555)、端末連携部531は、接続登録確認メッセージを、通信入出力部511を介して受信装置4に送信する(ステップS560)。
受信装置4の通信入出力部406は、連携端末5から受信したメッセージを端末連携部412に出力する。メッセージ受信部4232は、端末連携部412からメッセージを受信する(ステップS565)。メッセージ受信部4232は、受信したメッセージのtype属性から接続登録確認メッセージであると判断する。メッセージ受信部4232は、接続登録確認メッセージから取得したsubscribe_IDと、送信元及び送信先のサービスの識別子をメッセージ判定部4233に出力する(ステップS570)。メッセージ判定部4233は、subscribe_IDと、送信元及び送信先のサービスの識別子とを対応付けて登録する。さらに、メッセージ受信部4232は、接続登録確認メッセージを、送信先のサービスの識別子により特定される放送マネージドアプリを実行しているサービス実行部421にsubscribe_IDを通知する(ステップS575)。
図15は、メッセージ送信処理のシーケンスを示す。受信装置4のサービス実行部421は、メッセージ本体を設定したメッセージを発行する(ステップS605)。メッセージには、メッセージ本体であることを示す「body」が設定されたtype属性と、送信先のサービスに応じたsubscribe_IDと、メッセージ内容とが含まれる。送信元サービス設定部4235は、サービス実行部421から受信したメッセージに送信元のサービスの識別子を設定する。なお、送信元のサービスの識別子の設定は行わなくてもよい。送信元サービス設定部4235は、送信元のサービスの識別子が設定されたメッセージを、メッセージ受信部4232に出力する(ステップS610)。
メッセージ受信部4232は、メッセージに設定されているsubscribe_IDをメッセージ判定部4233に通知し(ステップS615)、メッセージ全体をメッセージ分配部4234に通知する(ステップS620)。メッセージ判定部4233は、subscribe_IDに対応して記憶される送信先及び送信元のサービスの識別子が同一であるため、連携端末5にメッセージを送信するようメッセージ分配部4234に通知する(ステップS625)。メッセージ分配部4234は、メッセージを端末連携部412に出力し(ステップS630)、端末連携部412は、メッセージ分配部4234から受信したメッセージを、通信入出力部406を介して連携端末5に送信する。
連携端末5の通信入出力部511は、受信装置4から受信したメッセージを端末連携部531に出力する(ステップS635)。メッセージ受信部5342は、端末連携部531からメッセージを受信する(ステップS640)。メッセージ受信部5342は、受信したメッセージのtypeによりメッセージ本体であると判断すると、メッセージから読み出したsubscribe_IDをメッセージ判定部5343に出力し(ステップS645)、メッセージをメッセージ分配部5344に出力する(ステップS650)。メッセージ判定部5343は、subscribe_IDに対応した送信元及び送信先のサービスの識別子が同じであるため、送信先のサービスの識別子により特定されるサービスを実行しているサービス実行部532へメッセージを出力するようメッセージ分配部5344に指示する(ステップS655)。メッセージ分配部5344は、メッセージ判定部5343に指示されたサービス実行部532へメッセージを出力する(ステップS660)。
図14及び図15では、受信装置4から連携端末5へのメッセージの送信例を示したが、連携端末5から受信装置4へのメッセージ送信も同様の手順で実行できる。
図16は、連携端末5のウェブアプリ間でセッションの識別子に基づきメッセージを送信する場合のメッセージの記述例を示す図である。図16(a)は、接続登録メッセージM41を、図16(b)は接続登録確認メッセージM42を、図16(c)は接続解除メッセージM43を、図16(d)は接続解除確認メッセージM44を、図16(e)はメッセージ本体が設定されたメッセージM45を示す。M41〜M45のメッセージに含まれる属性はそれぞれ、図13に示すM31〜M35のメッセージと同様である。
すなわち、接続登録メッセージM41、接続登録確認メッセージM42、接続解除メッセージM43、接続解除確認メッセージM44、メッセージM45には、type属性が含まれている。また、接続登録メッセージM41、接続登録確認メッセージM42、接続解除メッセージM43、接続解除確認メッセージM44には、送信元のサービスの識別子(src)及び送信先のサービスの識別子(dst)が設定され、接続登録確認メッセージM42及び接続解除確認メッセージM44には、さらに、確立したチャンネルに割当てられたセッションの識別子(subscribe_ID)が記述される。メッセージ本体(message)が設定されたメッセージM45には、送信元及び送信先は設定されず、セッションの識別子(subscribe_ID)とメッセージの内容(message)が記述される。
図17及び図18は、連携端末5のウェブアプリ間でセッションの識別子に基づきメッセージを送信する場合のシーケンス図である。このシーケンスは、図14及び図15に示すシーケンスと基本的な手順の差異はない。ただし、受信装置4と連携端末5との間でメッセージを送信する場合、連携端末5は、メッセージ分配部5344から端末連携部531を経由して送受信を行うが、ウェブアプリ間の場合は、メッセージ分配部5344から連携端末5内のメッセージ受信部5342にメッセージを送信し、以降、同様の処理が実行される。
図17は、連携端末5のウェブアプリ間の接続登録処理のシーケンスを示す。連携端末5のサービス実行部532−1は、接続登録メッセージを発行する(ステップS705)。サービス実行部532−1が発行した接続登録メッセージには、接続登録メッセージであることを示す「publish」が設定されたtype属性と、サービス実行部532−2により実行される送信先のサービスの識別子が設定されたdst属性とが含まれる。送信元サービス設定部5345は、このメッセージに、送信元のサービスの識別子を設定したsrc属性を追加する。送信元サービス設定部5345は、src属性が追加された接続登録メッセージをメッセージ受信部5342に出力する(ステップS710)。
メッセージ受信部5342は、接続登録メッセージに設定されている送信先のサービスの識別子及び送信元のサービスの識別子をメッセージ判定部5343に通知し(ステップS715)、接続登録メッセージ全体をメッセージ分配部5344に通知する(ステップS720)。メッセージ判定部5343は、送信先と送信元のサービスの識別子が異なるため、メッセージ受信部5342にメッセージを送信するようメッセージ分配部5344に通知する(ステップS725)。メッセージ分配部5344は、接続登録メッセージをメッセージ受信部5342に出力する(ステップS730)。
メッセージ受信部5342は、受信したメッセージをメッセージ判定部5343に出力する(ステップS735)。メッセージ判定部5343は、受信したメッセージのtypeにより接続登録メッセージであると判断すると、subscribe_IDを発行し、送信元及び送信先のサービスの識別子と対応付けて記憶する。さらに、メッセージ判定部5343は、接続登録確認メッセージを生成する。メッセージ判定部5343は、生成した接続登録確認メッセージをメッセージ分配部5344に通知し、メッセージ受信部5342へ送信するよう指示する(ステップS740)。メッセージ分配部5344は、接続登録確認メッセージをメッセージ受信部5342に出力する(ステップS745)。
メッセージ受信部5342は、受信した接続登録確認メッセージから取得したsubscribe_IDと、送信元及び送信先のサービスの識別子をメッセージ判定部5343に出力する(ステップS750)。メッセージ判定部5343は、subscribe_IDと、送信元及び送信先のサービスの識別子とを対応付けて登録する。さらに、メッセージ受信部5342は、接続登録確認メッセージを、送信先のサービスの識別子により特定されるウェブアプリを実行しているサービス実行部532−1にsubscribe_IDを通知する(ステップS755)。
図18は、連携端末5のウェブアプリ間のメッセージ送信処理のシーケンスを示す。連携端末5のサービス実行部532−1は、メッセージ本体を設定したメッセージを発行する(ステップS805)。送信元サービス設定部5345は、サービス実行部532−1から受信したメッセージに送信元のサービスの識別子を設定する。なお、送信元のサービスの識別子の設定は行わなくてもよい。送信元サービス設定部5345は、送信元のサービスの識別子が設定されたメッセージを、メッセージ受信部5342に出力する(ステップS810)。
メッセージ受信部5342は、メッセージに設定されているsubscribe_IDをメッセージ判定部5343に通知し(ステップS815)、メッセージ全体をメッセージ分配部5344に通知する(ステップS820)。メッセージ判定部5343は、subscribe_IDに対応して記憶される送信先及び送信元のサービスの識別子が異なるため、送信先のサービスの識別子により特定されるウェブサービスを実行しているサービス実行部532−2にメッセージを送信するようメッセージ分配部5344に通知する(ステップS825)。メッセージ分配部5344は、メッセージ判定部5343に指示されたサービス実行部532−2へメッセージを出力する(ステップS830)。
図17及び図18では、連携端末5のウェブアプリ間でメッセージを送信する場合ついて示しているが、受信装置4において放送マネージドアプリから他のアプリへのメッセージ送信についても同様の手順で実行できる。
次に、端末連携部531、サービス実行管理部533及びアプリ間連携部535の関係について説明する。図19は、端末連携部531、サービス実行管理部533及びアプリ間連携部535の関係を示す図である。
端末連携部531は、受信装置4とのペアリング処理を実行して、受信装置4との接続を確立する。ペアリング処理において、例えば、IEEE802.11、IEEE802.15.1などに規定された通信方式が利用可能である。受信装置4のサービス実行部421は、動作中において他アプリ起動コマンドを発行することがある。端末連携部531は、受信装置4から他アプリ起動コマンドを受信するとき、受信した他アプリ起動コマンドをサービス実行管理部533に出力する。
サービス実行管理部533には、サービス実行部532又は端末連携部531から他アプリ起動コマンドが入力されることがある。サービス実行管理部533は、入力されるコマンドのうち、他アプリを示す識別情報として、所定のURL(Uniform Resource Locator)スキーム(例えば、extra app//:…)が含まれるコマンドを他アプリ起動コマンドとして識別する。サービス実行管理部533は、他アプリ起動コマンドをアプリ間連携部535に出力する。
サービス実行管理部533には、アプリ間連携部535からサービス起動コマンドが入力されることがある。サービス実行管理部533は、サービス起動コマンドが示すサービスを提供するためのウェブアプリを、起動対象のウェブアプリとして特定する。サービス起動コマンドには、実行対象のサービスを示すサービス識別子が含まれてもよい。サービス実行管理部533は、特定したウェブアプリを起動し、そのウェブアプリを実行するサービス実行部532を生成する。
アプリ間連携部535は、サービス実行管理部533から入力される他アプリ起動コマンドのデータ形式を、連携アプリ内形式からアプリ間連携形式に変換する。連携アプリ内形式とは、連携アプリ実行制御部53の各構成部において処理可能とするデータ形式である。連携アプリ内形式として、上述したメッセージ(例えば、図16)と同様の形式が用いられてもよい。アプリ間連携形式とは、他アプリ実行制御部54において処理可能とするデータ形式である。連携アプリ内形式のコマンドは、他アプリ実行制御部54がその処理を行う際に利用可能な形式のコマンドである。従って、アプリ間連携形式は、他アプリの仕様に依存する。アプリ間連携部535は、変換により得られた他アプリ起動コマンドを他アプリ実行制御部54に出力する。他アプリ実行制御部54は、他アプリ起動コマンドで指定される他アプリを起動させる。他アプリ実行制御部54は、他アプリの実行中において、サービス起動コマンドを発行することがある。他アプリ実行制御部54は、発行したサービス起動コマンドをアプリ間連携部535に送信する。アプリ間連携部535は、他アプリ実行制御部54から入力されるサービス起動コマンドのデータ形式を、アプリ間連携形式から連携アプリ内形式に変換する。アプリ間連携部535は、変換により得られたサービス起動コマンドをサービス実行管理部533に出力する。
次に、アプリ間連携部535の詳細を、図20を用いて説明する。
図20は、アプリ間連携部535の詳細な構成を示す機能ブロック図である。
アプリ間連携部535は、アプリ間連携処理部5351、アプリ間連携条件管理部5352及びアプリ間連携通信部5353を有する。
アプリ間連携処理部5351は、サービス実行管理部533から入力される他アプリ起動コマンドの形式を、連携アプリ内形式からアプリ間連携形式に変換する。アプリ間連携処理部5351は、例えば、他アプリ起動コマンドを解釈し、起動対象の他アプリを特定するURLスキーム 「extra app://…」と起動条件を示すパラメータ「params」を検出する。パラメータとして、例えば、他アプリ又はその動作に用いるデータの所在を示すURLが指定される。アプリ間連携処理部5351は、検出した他アプリと起動条件の情報を含んだアプリ間連携形式のコマンドを変換後のコマンドとして構成する。アプリ間連携処理部5351は、変換した他アプリ起動コマンドをアプリ間連携通信部5353に出力する。
アプリ間連携処理部5351は、アプリ間連携通信部5353から入力されるサービス起動コマンドの形式を、アプリ間連携形式から連携アプリ内形式に変換する。アプリ間連携処理部5351は、サービス起動コマンドを解釈し、送信元の他アプリを示す識別子と起動対象のサービスを示すサービス識別子を検出する。アプリ間連携処理部5351は、検出したサービス識別子を含む連携アプリ内形式のコマンドを変換後のコマンドとして構成する。アプリ間連携処理部5351は、変換した連携アプリ内形式のサービス起動コマンドをサービス実行管理部533に出力する。
また、アプリ間連携処理部5351は、アプリ間連携条件管理部5352にサービス起動コマンドで指示されるサービスを提供するウェブアプリの起動の可否を照会してもよい。その際、アプリ間連携処理部5351は、そのサービス起動コマンドで指示されるサービス及び他アプリについて起動可否判定リクエストを生成する。アプリ間連携処理部5351は、生成した起動可否判定リクエストをアプリ間連携条件管理部5352に出力する。アプリ間連携処理部5351は、起動可否判定リクエストに対する応答として実行可否判定がアプリ間連携条件管理部5352から入力される。起動可否判定が起動可を示すとき、アプリ間連携処理部5351は、変換後のサービス起動コマンドをサービス実行管理部533に出力する。起動可否判定が起動不可を示すとき、アプリ間連携処理部5351は、所定のエラー処理をサービス実行管理部533に実行させる。サービス実行管理部533は、エラー処理として、例えば、エラー画面をディスプレイに表示させる。エラー画面には、エラーの事由を示すエラーメッセージが表されてもよい。サービス実行管理部533は、エラー処理として、予め設定したサービス(デフォルトサービス)を提供するためのアプリを起動してもよい。
アプリ間連携条件管理部5352は、連携条件データ(条件管理表)を管理する。連携条件データは、サービス実行部532で実行するウェブアプリと他アプリとの連携の可否を示すデータである。より具体的には、連携条件データは、サービス起動コマンドの送信元の他アプリ毎のウェブアプリの起動の可否と、起動可とするサービスの範囲(アクセス条件)を示すデータである。アプリ間連携条件管理部5352には、アプリ間連携処理部5351から起動可否判定リクエストが入力される。アプリ間連携条件管理部5352は、自部が記憶している連携条件データを参照して、起動可否判定リクエストで指示される他アプリとサービスについて、そのサービスを提供するウェブアプリの起動の可否を判定する。アプリ間連携条件管理部5352は、その判定結果である起動可否判定をアプリ間連携処理部5351に出力する。連携条件データの例については、後述する。
アプリ間連携通信部5353は、アプリ間連携処理部5351から入力された他アプリ起動コマンドを他アプリ実行制御部54に送信する。また、アプリ間連携通信部5353は、他アプリ実行制御部54から受信したサービス起動コマンドをアプリ間連携処理部5351に出力する。
次に、連携条件データの例について説明する。図21は、連携条件データの一例を示す図である。図21に示す例では、連携条件データは、送信元アプリ毎に連携の可否(連携認可)を示すデータである。送信元アプリの項目において、サービス起動コマンドの送信元である他アプリ実行制御部54で実行している他アプリが示される。連携認可の項目において、起動可否判定リクエストで指定されるサービスを提供するウェブアプリの実行の可否が示される。連携認可の項目に設定された情報が、連携可、つまりウェブアプリの起動可(OK)を示す場合には、さらにアクセス条件の項目が対応付けられていることがある。アクセス条件の項目には、ウェブアプリを起動可(OK)とするサービスを示す情報が設定される。
図21の第2行は、送信元アプリ「AppX」に対応付けて、連携認可の項目に「NG」が設定されていることを示す。この「NG」は、送信元アプリ「AppX」からのサービス起動コマンドで指定されるウェブアプリについて起動不可であることを示す。従って、アプリ間連携条件管理部5352は、送信元アプリ「AppX」からのサービス起動コマンドで指示されるサービスを提供するウェブアプリについて起動不可と判定する。図21の第3行は、送信元アプリ「AppY」に対応付けて、連携認可の項目に「OK」が設定され、アクセス条件の項目に「Service A」が設定されていることを示す。従って、アプリ間連携条件管理部5352は、送信元アプリ「AppX」からのサービス起動コマンドで指示されるサービスAを提供するウェブアプリについて起動可(OK)と判定する。アプリ間連携条件管理部5352は、送信元アプリ「AppX」からのサービス起動コマンドで指定されるサービスA以外のサービス(例えば、サービスB)を提供するウェブアプリについては起動不可(NG)と判定する。図21の第4行は、送信元アプリ「AppZ」に対応付けて、連携認可の項目に「OK」が設定され、アクセス条件の項目に「Service A」と「Service B」が設定されていることを示す。従って、アプリ間連携条件管理部5352は、送信元アプリ「AppX」からのサービス起動コマンドで指示されるサービスA又はサービスBを提供するウェブアプリについて起動可(OK)と判定する。アプリ間連携条件管理部5352は、送信元アプリ「AppX」からのサービス起動コマンドで指示されるサービスA,B以外のサービス(例えば、サービスC)を提供するウェブアプリについて起動不可(NG)と判定する。
なお、図21に示す例では、「NG」が設定されている連携認可の項目に対応付けてアクセス条件の情報が設定されていない。ここで、起動不可(NG)とする送信元アプリからのサービス起動コマンドについて、アプリ間連携条件管理部5352は、サービスに関わらずウェブアプリを起動不可(NG)と判定し、起動不可(NG)を示す起動可否判定をアプリ間連携処理部5351に出力する。この起動可否判定が入力されるとき、アプリ間連携処理部5351は、エラー処理起動コマンドを発行しサービス実行管理部533に出力する。サービス実行管理部533は、アプリ間連携条件管理部5352からエラー処理起動コマンドが入力されるとき、エラー処理として、例えば、所定のエラー画面を表示させるためのサービスアプリを起動させる。また、「OK」が設定されている送信元アプリとする送信元アプリからのサービス起動コマンドについて、連携認可の項目に対応付けてアクセス条件の情報が設定されていない場合、アプリ間連携条件管理部5352は、アプリ間連携条件管理部5352は、起動不可(NG)と判定する。これに対し、アプリ間連携条件管理部5352に、全てのサービスへのアクセスを許可し、ウェブアプリを起動可(OK)と判定させるためには、連携認可の項目に「OK」を設定するとともに、アクセス条件の項目に、例えば「ALL」のような全アクセス許可用の識別子を設定しておけばよい。
次に、連携アプリ実行制御部53のサービス実行部532からの他アプリの起動に係る処理フローについて説明する。図22は、連携アプリ実行制御部53のサービス実行部532からの他アプリの起動に係る処理フローを示す図である。
サービス実行管理部533は、サービス実行部532から入力されるコマンドが他アプリ起動コマンドであるか否かを判定する。サービス実行管理部533は、他アプリ起動コマンドと判定したコマンドをアプリ間連携処理部5351に出力する(ステップS905)。アプリ間連携処理部5351は、サービス実行管理部533から入力された他アプリ起動コマンドを解釈し、アプリ間連携情報として起動対象の他アプリと起動条件の情報を検出する(ステップS910)。アプリ間連携処理部5351は、検出したアプリ間連携情報を含むように、他アプリ起動コマンドの形式を連携アプリ内形式からアプリ間連携形式に変換する(ステップS915)。アプリ間連携処理部5351は、変換した他アプリ起動コマンドをアプリ間連携通信部5353に出力する(ステップS920)。アプリ間連携通信部5353は、アプリ間連携処理部5351から入力された他アプリ起動コマンドを他アプリ実行制御部54に送信する。他アプリ実行制御部54は、アプリ間連携処理部5351から入力された他アプリ起動コマンドのアプリ間連携情報で指示される他アプリを、そのアプリ間連携情報で指示される起動条件に従って起動する(ステップS925)。
次に、他アプリ実行制御部54からの連携アプリ実行制御部53におけるウェブアプリの起動に係る処理フローについて説明する。図23は、他アプリ実行制御部54からの連携アプリ実行制御部53におけるウェブアプリの起動に係る処理フローを示す図である。
アプリ間連携通信部5353は、他アプリ実行制御部54からサービス起動コマンドを受信する(ステップS1005)。アプリ間連携通信部5353は、受信したサービス起動コマンドをアプリ間連携処理部5351に出力する(ステップS1010)。アプリ間連携処理部5351は、アプリ間連携通信部5353から入力されたサービス起動コマンドを解釈し、送信元アプリの識別子と対象サービスのサービス識別子を検出する(ステップS1015)。アプリ間連携処理部5351は、検出した送信元アプリと対象サービスについて、そのサービスを提供するウェブアプリの起動の可否をアプリ間連携条件管理部5352に照会する(ステップS1020)。
アプリ間連携条件管理部5352が起動可(OK)と判定するとき(ステップS1025 OK)、アプリ間連携処理部5351は、検出したサービスを示すサービス識別子を含む連携アプリ内形式のサービス起動コマンドを生成する(ステップS1030)。アプリ間連携処理部5351は、生成した連携アプリ内形式のサービス起動コマンドをサービス実行管理部533に出力する(ステップS1035)。そして、サービス実行管理部533は、アプリ間連携処理部5351から入力されたサービス起動コマンドからサービス識別子を検出する。サービス実行管理部533は、検出したサービス識別子で指定されるサービスを提供するウェブアプリを起動する。
他方、アプリ間連携条件管理部5352が起動不可(NG)と判定するとき(ステップS1025 NG)、サービス実行管理部533に所定のエラー処理を実行させる(ステップS1040)。
以上説明した実施形態によれば、放送通信連携システム1は、受信装置4と、連携端末5(端末装置)とを有する。受信装置4は、放送信号に含まれるコンテンツデータを出力する処理と、放送信号と連携した動作により複数のサービスを提供するアプリケーション(放送マネージドアプリ)を実行する処理とを実行する。連携端末5は、個別のサービスを提供するアプリケーションであるサービスアプリケーション(サービスアプリ、ウェブアプリ)を複数並列で実行させる。受信装置4が実行するアプリケーションに含まれるサービスの機能と、サービスアプリケーションにより提供されるサービスの機能とが連携して、ユーザにサービスを提供する。
連携端末5は、連携アプリ実行制御部53と他アプリ実行制御部54とを備える。連携アプリ実行制御部53は、所定のサービスを提供するアプリケーションであるサービスアプリケーションを実行させる。また、連携アプリ実行制御部53は、サービス実行部532、サービス実行管理部533、アプリ間連携処理部5351及びアプリ間連携通信部5353を備える。サービス実行部532は、所定のサービスに係るアプリであるウェブアプリを実行する。サービス実行部532は、他アプリの起動を示す他アプリ起動コマンドを取得する。アプリ間連携処理部5351は、他アプリ起動コマンドの形式を他アプリ実行制御部において処理可能なアプリ間連携形式に変換する。アプリ間連携通信部5353は、アプリ間連携形式の他アプリ起動コマンドを他アプリ実行制御部54に送信する。他アプリ実行制御部54は、受信装置4と連携して動作する連携アプリとは別個のアプリケーションである他アプリケーションの実行を制御する。
また、アプリ間連携通信部5353は、他アプリ実行制御部54からサービスアプリケーションの起動を示すサービス起動コマンドを受信する。アプリ間連携処理部5351は、サービス起動コマンドの形式を連携アプリ実行制御部53において処理可能なアプリ内連携形式に変換する。連携アプリ実行制御部53は、サービス実行管理部533を備える。サービス実行管理部533は、アプリ内連携形式のサービス起動コマンドが示すサービスに係るアプリを起動させる。
また、連携アプリ実行制御部53は、さらにアプリ間連携条件管理部5352を備える。アプリ間連携条件管理部5352は、少なくとも他アプリ実行制御部54において実行している他アプリとサービス起動コマンドが示すサービスのいずれかに基づいて、そのサービスに係るアプリの起動の可否を判定する。
また、連携アプリ実行制御部53は、さらに端末連携部531を備える。端末連携部531は、受信した放送信号と連携して所定のサービスを提供するウェブアプリを実行する受信装置4との間で接続を確立させる。サービス実行管理部533は、受信装置4から他アプリ起動コマンドを取得する。
以上説明した実施形態によれば、ハイブリッドキャストなどの放送通信連携サービスにおいて、放送マネージドアプリのように受信装置で実行されるアプリが1個(サービス提供者が一つ)、連携端末で実行されるアプリが複数個(サービス提供者が複数)ある場合でも、受信装置において実行される1個のアプリに対して連携端末において実行される複数個のアプリが連携することができる。これにより、現行のハイブリッドキャストの運用において、受信装置の実装を変えることなく、連携端末に実装するコンパニオンアプリ(連携アプリ)を改修するだけで、複数のマルチスクリーンサービスを並列して実行することが可能になる。
また、放送通信連携サービスにおいて、コンパニオンアプリ上で提供されるサービスに係るアプリ又は受信装置上で提供されるサービスに係るアプリから、連携端末において既に存在している外部アプリ(他アプリ)を起動させることができる。そのため、サービス間の連携が促進される。
また、外部アプリからコンパニオンアプリ上で提供されるサービスに係るアプリを起動させることができる。起動したアプリは、受信装置上で提供されるサービスに係るアプリと連携可能であるので、サービス間の連携がさらに促進される。
さらに、外部アプリからのアプリを起動させる際、外部アプリもしくはアプリ起動コマンドで指定されたサービスに応じて、そのアプリの起動の可否が判定される。そのため、アプリの制作者の意図に沿った外部アプリとの連携が実現する。
なお、上述の受信装置4及び連携端末5は、内部にコンピュータシステムを有している。そして、受信装置4及び連携端末5の一部の動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいうコンピュータシステムとは、CPU及び各種メモリやOS、周辺機器等のハードウェアを含むものである。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。