(57)【要約】【課題】アプリケーション間のメッセージ送受信の確実性を高める。【解決手段】メッセージを発行（送信）するガジェットが初期化完了後に発行を行ったとき、メッセージをメッセージキューに一旦保存する（Ｓ４４）。その後、メッセージを購読（受信）するガジェットの中から、メッセージキューからメッセージを送信していないガジェットを順次選定する（Ｓ４５）。そして、選定ガジェットが初期化済みかつ購読済み（Ｓ４６〜Ｓ４９）となれば、メッセージキューからメッセージを取り出し（Ｓ５０）、選定ガジェットにメッセージを送信する（Ｓ５１）。即ち、メッセージを購読するガジェットが購読を行うまで、メッセージを発行するガジェットから発行されたメッセージをメッセージキューで保存する。【選択図】図１８
2012198735.tif 000002
【特許請求の範囲】
【請求項１】
第１のアプリケーションがメッセージを発行する際に、該メッセージを記憶手段に記憶し、
前記第１のアプリケーションが発行するメッセージを取得するアプリケーションとして登録された第２のアプリケーションが、前記第１のアプリケーションと前記第２のアプリケーションとの間のメッセージの送受信を仲介する通信ハブにメッセージの取得処理を行うと、前記記憶手段に記憶された前記メッセージを前記第２のアプリケーションに送信する、
処理をコンピュータに実行させることを特徴とするメッセージ管理プログラム。
【請求項２】
前記記憶手段は、前記第１のアプリケーション及び前記第２のアプリケーションの初期化順序を規定した初期化シーケンステーブルを更に記憶し、
前記コンピュータは、前記初期化シーケンステーブルに規定された初期化順序に基いて、前記第１のアプリケーション及び前記第２のアプリケーションの初期化を開始する、
ことを特徴とする請求項１に記載のメッセージ管理プログラム。
【請求項３】
前記初期化シーケンステーブルには、前記第２のアプリケーションの初期化開始が、前記第１のアプリケーションの初期化開始より早くなるように、前記初期化順序が規定されている、ことを特徴とする請求項２に記載のメッセージ管理プログラム。
【請求項４】
前記コンピュータに、
前記第１のアプリケーション及び前記第２のアプリケーションの初期化開始からメッセージを発行又は取得するまでの所要時間を計測し、
前記所要時間に基いて、前記初期化シーケンステーブルに規定された初期化順序を更新する、
処理を更に実行させることを特徴とする請求項２又は請求項３に記載のメッセージ管理プログラム。
【請求項５】
コンピュータが、
第１のアプリケーションがメッセージを発行する際に、該メッセージを記憶手段に記憶し、
前記第１のアプリケーションが発行するメッセージを取得するアプリケーションとして登録された第２のアプリケーションが、前記第１のアプリケーションと前記第２のアプリケーションとの間のメッセージの送受信を仲介する通信ハブにメッセージの取得処理を行うと、前記記憶手段に記憶された前記メッセージを前記第２のアプリケーションに送信する、
処理を実行することを特徴とするメッセージ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション間で送受信されるメッセージを管理する技術に関する。
【背景技術】
【０００２】
昨今、Ｗｅｂページやデスクトップ画面上に配置可能なアプリケーションとして、個人や企業などの開発者から提供される「ガジェット（別名；ウィジェット）」が普及してきている。そして、複数のガジェットを組み合わせてＷｅｂアプリケーションを作成する技術として、複数のガジェットを連携させて動作させるための「通信ハブ（ＨＵＢ）」という仕組みがある。ＨＵＢは、メッセージを送信するガジェットからメッセージを受信し、メッセージを受信するガジェットにこのメッセージを送信する。このような仕組みで動作するＨＵＢを利用することで、セキュリティをある程度確保しつつ、ガジェット間におけるメッセージの送受信を実現することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２７１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術においては、例えば、メッセージを受信するガジェットが初期化を完了していない状態で、メッセージを送信するガジェットからメッセージが送信されたときなど、ガジェット間のメッセージ送受信ができない場合がある。この場合、メッセージを送信するガジェットからＨＵＢにメッセージが届いたとき、このメッセージを受信するガジェットがないために、メッセージが破棄されてしまい、所定のガジェットにメッセージが届かないという問題が発生する。その理由としては、複数のガジェットの初期化が非同期で行われるため、ガジェットの初期化完了の順番が保証されず、また、ＨＵＢを利用したガジェット間のメッセージ送受信では、メッセージを受信するガジェットが購読（Subscribe）を完了していないと、メッセージを受信できないなどのためである。ここで、「購読を完了する」とは、具体的には、トピック名及びメッセージ受信時に起動するコールバック関数を引数としてSubscribeメソッドを呼び出すことをいう。
【０００５】
そこで、１つの側面では、本発明は、アプリケーション間のメッセージ送受信の確実性を高めることが可能なメッセージ管理技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
コンピュータは、第１のアプリケーションがメッセージを発行する際に、このメッセージを記憶手段に記憶する。そして、コンピュータは、第１のアプリケーションが発行するメッセージを取得するアプリケーションとして登録された第２のアプリケーションが、第１のアプリケーションと第２のアプリケーションとの間のメッセージの送受信を仲介する通信ハブにメッセージの取得処理を行うと、記憶手段に記憶されたメッセージを第２のアプリケーションに送信する。
【発明の効果】
【０００７】
１態様によれば、アプリケーション間のメッセージ送受信の確実性が高められる。
【図面の簡単な説明】
【０００８】
【図１】情報システムの一例を示す概要図である。
【図２】クライアント及びサーバの内部構造を説明するブロック図である。
【図３】Ｗｅｂアプリケーションの一例を示す説明図である。
【図４】ガジェット間におけるメッセージの送受信手順を示す説明図である。
【図５】クライアントにおける各種機能を説明するブロック図である。
【図６】初期化シーケンステーブルのデータ構造図である。
【図７】連携関係テーブルのデータ構造図である。
【図８】優先度テーブルのデータ構造図である。
【図９】削除規則テーブルのデータ構造図である。
【図１０】アクセス実績テーブルのデータ構造図である。
【図１１】初期化ステータステーブルのデータ構造図である。
【図１２】ガジェットステータステーブルのデータ構造図である。
【図１３】メッセージキューに保存されるメッセージのデータ構造図である。
【図１４】ガジェット生成処理の一例を示すフローチャートである。
【図１５】ガジェット生成処理の一例を示すフローチャートである。
【図１６】初期設定処理の一例を示すフローチャートである。
【図１７】購読処理の一例を示すフローチャートである。
【図１８】発行処理の一例を示すフローチャートである。
【図１９】メッセージ削除処理の一例を示すフローチャートである。
【図２０】初期化シーケンス更新処理の一例を示すフローチャートである。
【図２１】初期化シーケンステーブルの初期設定による効果の説明図である。
【図２２】初期化シーケンステーブルの更新による効果の説明図である。
【図２３】第１実施例における連携関係テーブルの説明図である。
【図２４】第１実施例における初期化シーケンステーブルの説明図である。
【図２５】第２実施例における初期状態の各種テーブルを示し、（Ａ）は初期化シーケンステーブル、（Ｂ）はアクセス実績テーブルの説明図である。
【図２６】第２実施例における初期シーケンステーブルを示し、（Ａ）は待ち時間に応じて更新された優先度、（Ｂ）は購読ガジェットの優先度を上げた優先度の説明図である。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳細に説明する。
図１は、本実施形態に係る情報システムの一例を示す。
【００１０】
情報システムは、ユーザがＷｅｂアプリケーションを利用するための少なくとも１台のクライアント１００と、Ｗｅｂアプリケーションのソースコード及びガジェットを提供するための少なくとも１台のサーバ２００と、を有する。クライアント１００とサーバ２００とは、インターネット及びイントラネットなどのネットワーク３００を介して相互に接続される。
【００１１】
クライアント１００及びサーバ２００は、図２に示すように、メモリＡ、ＣＰＵ（Central Processing Unit）Ｂ、ハードディスクＣ（記憶手段）、表示装置Ｄ、リムーバブルディスクＥを読み込むドライブ装置Ｆ、入力装置Ｇ、ネットワーク３００に接続するための通信装置ＨがバスＩで接続されたコンピュータである。表示装置Ｄは、例えば、ＬＣＤ（Liquid Crystal Display）などのディスプレイである。リムーバブルディスクＥは、例えば、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory）などの可搬記録媒体である。なお、リムーバブルディスクＥに代えて、フラッシュメモリを内蔵したＵＳＢ（Universal Serial Bus）メモリなどを使用することもできる。入力装置Ｇは、例えば、マウスとキーボードである。通信装置Ｈは、例えば、ＮＩＣ（Network Interface Card）である。
【００１２】
クライアント１００は、ハードディスクＣに格納されたブラウザプログラムを起動することで、図３に示すようなＷｅｂアプリケーション４００が表示装置Ｄに表示される。Ｗｅｂアプリケーション４００は、複数のガジェットを組み合わせて構築される。図３に示すＷｅｂアプリケーション４００では、キーワードランキングを提供するガジェット４００Ａ、ニュースを提供するガジェット４００Ｂ、乗り換え案内を提供するガジェット４００Ｃ及び天気情報を提供するガジェット４００Ｄが独立したガジェットである。
【００１３】
また、クライアント１００では、ガジェット間におけるメッセージの送受信を実現するため、図４に示すような手順を実行する、通信ハブ（ＨＵＢ）４１０と称される機能が具現化される。ＨＵＢ４１０は、ガジェット間のメッセージの送受信を仲介する。メッセージを購読（受信）する機能を持つ購読ガジェット４２０（第２のアプリケーション）は、コンテンツの生成などが完了した初期化完了後の任意のタイミングで、例えば、トピック名及びメッセージ受信時に起動するコールバック関数を引数とした“Subscribeメソッド”を呼び出すことで、ＨＵＢ４１０に対して登録を行う（手順(1)）。また、メッセージを発行（送信）する機能を持つ発行ガジェット４３０（第１のアプリケーション）は、例えば、トピック名及びメッセージを引数として“Publishメソッド”を呼び出すことで、ＨＵＢ４１０に対して登録（Publish）を行う（手順(2)）。ＨＵＢ４１０は、発行されたメッセージの発行ガジェット４３０の確認を行い、管理対象であるガジェットであれば、同一のトピックを購読している購読ガジェット４２０にメッセージを送信する（手順(3)）。そして、メッセージを受信した購読ガジェット４２０は、コールバック関数を利用してメッセージを処理する。
【００１４】
クライアント１００は、ハードディスクＣに格納されたメッセージ管理プログラムを起動することで、図５に示すように、ＨＵＢ生成部１１０、ガジェット生成部１２０、メッセージ削除部１３０、購読処理部１４０、発行処理部１５０及び初期化シーケンス更新部１６０を夫々具現化する。ここで、メッセージ管理プログラムは、リムーバブルディスクＥをドライブ装置Ｆで読み込むことで、ハードディスクＣに格納される。なお、メッセージ管理プログラムは、ネットワーク３００を介して接続されたサーバなどから読み込むこともできる。
【００１５】
ＨＵＢ生成部１１０は、ユーザがＷｅｂアプリケーションを起動したことを契機として、メッセージを保存するためのメッセージキューを備えたＨＵＢ４１０を生成する。ガジェット生成部１２０は、ユーザがＷｅｂアプリケーションを起動したことを契機として、ガジェットを所定規則に則って順次初期化すると共に、メッセージ削除部１３０を起動する。メッセージ削除部１３０は、所定規則に則ってＨＵＢ４１０のメッセージキューからメッセージを削除する。購読処理部１４０は、購読ガジェット４２０が購読を行ったことを契機として、ＨＵＢ４１０に対する購読処理を行う。発行処理部１５０は、発行ガジェット４３０が発行を行ったことを契機として、ＨＵＢ４１０を経由して、同一トピックを購読する購読ガジェット４２０にメッセージを送信する。初期化シーケンス更新部１６０は、購読ガジェット４２０の購読実績及び発行ガジェット４３０の発行実績に基づいて、Ｗｅｂアプリケーションを構築するガジェットの初期化順序を更新する。
【００１６】
クライアント１００のハードディスクＣは、図６〜図１２に示すように、初期化シーケンステーブル４４０、連携関係テーブル４５０、優先度テーブル４６０、削除規則テーブル４７０、アクセス実績テーブル４８０、初期化ステータステーブル４９０及びガジェットステータステーブル５００を夫々格納する。
【００１７】
初期化シーケンステーブル４４０は、ガジェットの初期化順序を規定し、図６に示すように、ガジェットを特定するガジェットＩＤと、ガジェットの初期化順序を示す優先度と
、を関連付けたレコードの集合である。
【００１８】
連携関係テーブル４５０は、ガジェット間の連携関係を規定し、図７に示すように、ガジェットＩＤと、ガジェット間で送受信するメッセージを特定するトピックと、連携関係を規定する連携タイプと、メッセージの送信規則を規定する送信指定と、を関連付けたレコードの集合である。連携タイプには、購読ガジェット４２０の場合“Subscribe”が格納され、発行ガジェット４３０の場合“Publish”が格納される。また、送信指定には、「送信パターン（New／Old／All）＋数値（メッセージ数：All以外の場合）」という形式のデータが格納される。ここで、Newは最新のメッセージ、Oldは最古のメッセージ、Allはすべてのメッセージを示し、例えば、最新の１件のメッセージを送信する場合には“New1”、古い方から数えて２件のメッセージを送信する場合には“Old2”となる。ここで、連携関係テーブル４５０が、送信規則テーブルの一例として挙げられる。
【００１９】
優先度テーブル４６０は、ガジェットの初期化優先度を規定し、図８に示すように、ガジェットの連携タイプと、優先度と、を関連付けたレコードの集合である。連携タイプには、購読ガジェット４２０を示す“Subscribe”、発行ガジェット４３０を示す“Publish”、他のガジェットとの連携関係がない“Undefined”が格納される。また、優先度には、ガジェットの初期化を開始する優先度（順番）が格納される。優先度テーブル４６０においては、メッセージ送受信の確実性を担保すべく、連携タイプが“Subscribe”、“Publish”及び“Undefined”の順番に優先度が付されている。
【００２０】
削除規則テーブル４７０は、ＨＵＢ４１０に保存されているメッセージの削除規則を規定し、図９に示すように、メッセージを削除する時間間隔を示す削除間隔（所定時間）と、メッセージを削除した最終削除時刻と、を関連付けたレコードの集合である。
【００２１】
アクセス実績テーブル４８０は、ガジェットのアクセス実績を保持し、図１０に示すように、ガジェットＩＤと、トピックと、連携タイプと、アクセスがあったか否かを示すフラグと、初期化開始から購読又は発行を行うまでに要した待ち時間（所要時間）と、を関連付けたレコードの集合である。ここで、フラグには、アクセスがない場合“False”、アクセスがあった場合“True”が格納される。
【００２２】
初期化ステータステーブル４９０は、ガジェットの初期化が開始されたか否かを把握する情報を保持し、図１１に示すように、ガジェットＩＤと、ステータスと、を関連付けたレコードの集合である。ここで、ステータスには、ガジェットの初期化が開始された場合“True”（初期化済）が格納され、ガジェットの初期化が開始されていない場合“False”（未初期化）が格納される。
【００２３】
なお、初期化ステータステーブル４９０は、Ｗｅｂアプリケーションを提供するサーバ２００から、Ｗｅｂアプリケーションと共に取得されてもよい。このようにすれば、各Ｗｅｂアプリケーションに適した初期設定が行われた、初期化ステータステーブル４９０を初めから利用することができる。
【００２４】
ガジェットステータステーブル５００は、ガジェットが購読又は発行を行ったか否かを把握する情報を保持し、図１２に示すように、ガジェットＩＤと、ステータスと、を関連付けたレコードの集合である。ここで、ステータスには、ガジェットが購読を行った場合“Subscribed”（購読済）が格納され、ガジェットが発行を行った場合“Published”（発行済）が格納される。ガジェットが購読又は発行を行っていない場合には、ステータスは空欄とされる。なお、ガジェットステータステーブル５００は、初期化ステータステーブル４９０にマージしてもよい。
【００２５】
また、クライアント１００のハードディスクＣは、図１３に示すようなメッセージを保存するメッセージキュー５１０を具現化する。メッセージは、メッセージを特定するメッセージＩＤと、トピックと、発行ガジェット４３０から発行されたメッセージ本体と、メッセージの発行時刻と、を関連付けたレコードである。
【００２６】
図１４及び図１５は、クライアント１００において、ユーザがＷｅｂアプリケーションを起動する操作を行ったことを契機として、ＨＵＢ生成部１１０及びガジェット生成部１２０が協働して実行するガジェット生成処理の一例を示す。
【００２７】
ステップ１（図では「Ｓ１」と略記する。以下同様。）では、ガジェット生成部１２０が、Ｗｅｂアプリケーションを提供するサーバからソースコードを読み込む。ここで、Ｗｅｂアプリケーションを提供するサーバは、例えば、ＷｅｂアプリケーションのＵＲＬ（Uniform Resource Locator）から特定することができる。
【００２８】
ステップ２では、ガジェット生成部１２０が、Ｗｅｂアプリケーションのロード完了時に発生する“onloadイベント”があるまで待機する。
ステップ３では、ＨＵＢ生成部１１０が、Ｗｅｂアプリケーションで使用するＨＵＢ４１０を生成する。
【００２９】
ステップ４では、ガジェット生成部１２０が、Ｗｅｂアプリケーションに関する初期化シーケンステーブル４４０（図６参照）がハードディスクＣに格納されているか否か、即ち、ガジェットの初期化順序が規定済みであるか否かを判定する。そして、ガジェット生成部１２０は、初期化シーケンステーブル４４０がハードディスクＣに格納されていないと判定すれば処理をステップ５へと進める一方（Ｙｅｓ）、初期化シーケンステーブル４４０がハードディスクＣに格納されていると判定すれば処理をステップ９へと進める（Ｎｏ）。
【００３０】
ステップ５では、ガジェット生成部１２０が、Ｗｅｂアプリケーションのソースコードに記述されたガジェットＩＤの順番通りにガジェットの初期化が開始されるように、初期化シーケンステーブル４４０を生成する。
【００３１】
ステップ６では、ガジェット生成部１２０が、ハードディスクＣから連携関係テーブル４５０（図７参照）を読み込む。
ステップ７では、ガジェット生成部１２０が、連携関係テーブル４５０にガジェットＩＤが登録されているか否か、即ち、ガジェット間の連携があるか否かを判定する。そして、ガジェット生成部１２０は、連携関係テーブル４５０にガジェットＩＤが登録されていると判定すれば処理をステップ８へと進める一方（Ｙｅｓ）、連携関係テーブル４５０にガジェットＩＤが登録されていないと判定すれば処理をステップ１０へと進める（Ｎｏ）。
【００３２】
ステップ８では、ガジェット生成部１２０が、初期化シーケンステーブル４４０を初期設定するためのサブルーチン（図１６参照）を実行する。
ステップ９では、ガジェット生成部１２０が、ハードディスクＣから初期化シーケンステーブル４４０を読み込む。
【００３３】
ステップ１０では、ガジェット生成部１２０が、ガジェットの初期化が開始されたか否かを把握するために、図１１に示す初期化ステータステーブル４９０のステータスを“False”（未初期化）で初期化する。
【００３４】
ステップ１１では、ガジェット生成部１２０が、初期化シーケンステーブル４４０に記
述された優先度に従って、ガジェットの初期化を順次開始する。
ステップ１２では、ガジェット生成部１２０が、初期化を開始したガジェットについて、初期化ステータステーブル４９０のステータスを“True”（初期化済）に更新する。
【００３５】
ステップ１３では、ガジェット生成部１２０が、Ｗｅｂアプリケーションを構築するすべてのガジェットの初期化を開始したか否か、即ち、初期化シーケンステーブル４４０に記述された最後のガジェットまで初期化を開始したか否かを判定する。そして、ガジェット生成部１２０は、すべてのガジェットの初期化を開始したと判定すれば処理をステップ１４へと進める一方（Ｙｅｓ）、すべてのガジェットの初期化を開始していないと判定すれば処理をステップ１１へと戻す（Ｎｏ）。
【００３６】
ステップ１４では、ガジェット生成部１２０が、メッセージ削除部１３０を起動する。
図１６は、ガジェット生成部１２０が実行する、初期化シーケンステーブル４４０を初期設定するための初期設定処理（サブルーチン）の一例を示す。
【００３７】
ステップ２１では、ガジェット生成部１２０が、Ｗｅｂアプリケーションのソースコードに記述された順番通りにすべてのガジェットＩＤを取得する。
ステップ２２では、ガジェット生成部１２０が、ステップ２１で取得したガジェットＩＤの順番にガジェットＩＤを順次選定する。
【００３８】
ステップ２３では、ガジェット生成部１２０が、ステップ６で読み込んだ連携関係テーブル４５０を参照し、ガジェットＩＤに関連付けられた連携タイプを取得する。
ステップ２４では、ガジェット生成部１２０が、ハードディスクＣに格納された優先度テーブル４６０を参照し、ステップ２３で取得した連携タイプの優先度を取得する。
【００３９】
ステップ２５では、ガジェット生成部１２０が、ステップ２２で選定したガジェットＩＤについて、初期化シーケンステーブル４４０の優先度をステップ２４で取得した優先度に更新する（書き換える）。
【００４０】
ステップ２６では、ガジェット生成部１２０が、すべてのガジェットＩＤについて優先度を更新したか否か、即ち、ステップ２１で取得した最後のガジェットＩＤまで処理したか否かを判定する。そして、ガジェット生成部１２０は、すべてのガジェットＩＤについて優先度を更新したと判定すれば処理をステップ２７へと進める一方（Ｙｅｓ）、すべてのガジェットＩＤについて優先度を更新していないと判定すれば処理をステップ２２へと戻す（Ｎｏ）。
【００４１】
ステップ２７では、ガジェット生成部１２０が、初期化シーケンステーブル４４０をハードディスクＣに保存する。
かかるガジェット生成処理によれば、クライアント１００においてＷｅｂアプリケーションが起動されたときに、初期化シーケンステーブル４４０が存在していれば、その初期化シーケンステーブル４４０に従って、ガジェットの初期化が順次開始される。
【００４２】
一方、初期化シーケンステーブル４４０が存在していなければ、Ｗｅｂアプリケーションのソースコードに応じて初期設定された初期化シーケンステーブル４４０が生成される。また、購読ガジェットの初期化開始が発行ガジェットの初期化開始より早くなるように、初期化シーケンステーブル４４０が更新される。そして、初期化シーケンステーブル４４０に従って、ガジェットの初期化が順次開始される。
【００４３】
このため、発行ガジェットが発行を行ったときに、購読ガジェットが購読を行っていない確率を低減でき、ガジェット間のメッセージ送受信の効率を向上させることができる。
図１７は、クライアント１００において、ガジェットが初期化完了後に購読を行ったことを契機として、購読処理部１４０が実行する購読処理の一例を示す。
【００４４】
ステップ３１では、購読処理部１４０が、ガジェットの存在をＨＵＢ４１０に通知する。これにより、ＨＵＢ４１０は、購読を行ったガジェットが管理対象であることを認識できる。
【００４５】
ステップ３２では、購読処理部１４０が、ガジェットが購読又は発行を行ったか否かを把握するために、図１２に示すガジェットステータステーブル５００のステータスを“Subscribed”（購読済）で更新する。
【００４６】
ステップ３３では、購読処理部１４０が、購読を行ったガジェットＩＤについて、初期化開始から購読を行ったときまでの経過時間に基づいて、ハードディスクＣに格納されたアクセス実績テーブル４８０を更新する。
【００４７】
かかる購読処理によれば、ガジェットが購読を行うと、その存在をＨＵＢ４１０に知らしめるべく、ガジェットの存在がＨＵＢ４１０に通知される。このため、ＨＵＢ４１０は、購読を行ったガジェットが管理対象であることを認識し、ガジェット間のメッセージ送受信を管理できるようになる。また、ガジェットが購読を行ったことを把握可能とすべく、ガジェットステータステーブル５００のステータスが“Subscribed”（購読済）に更新されると共に、アクセス実績テーブル４８０が適宜更新される。
【００４８】
図１８は、クライアント１００において、ガジェットが初期完了後に発行を行ったことを契機として、発行処理部１５０が実行する発行処理の一例を示す。
ステップ４１では、発行処理部１５０が、発行を行ったガジェットＩＤについて、ガジェットステータステーブル５００のスタータスを“Published”（発行済）で更新する。
【００４９】
ステップ４２では、発行処理部１５０が、ガジェットＩＤにより特定されるガジェットが初めてメッセージを送信する初回送信であるか否かを判定する。そして、発行処理部１５０は、初回送信であると判定すれば処理をステップ４３へと進める一方（Ｙｅｓ）、初回送信でないと判定すれば処理をステップ４４へと進める（Ｎｏ）。
【００５０】
ステップ４３では、発行処理部１５０が、発行を行ったガジェットＩＤについて、初期化開始から発行を行ったときまでの経過時間に基づいて、ハードディスクＣに格納されたアクセス実績テーブル４８０を更新する。
【００５１】
ステップ４４では、発行処理部１５０が、ガジェットが送信しようとするメッセージをＨＵＢ４１０のメッセージキュー５１０に保存する。
ステップ４５では、発行処理部１５０が、ハードディスクＣに格納された連携関係テーブル４５０及びガジェットステータステーブル５００を参照し、メッセージを購読するガジェットＩＤの中からメッセージを送信していないガジェットＩＤを順次選定する。即ち、発行処理部１５０は、連携関係テーブル４５０の連携タイプが“Subscribe”になっているガジェットＩＤの中から、ガジェットステータステーブル５００のステータスが“Subscribed”になっていないガジェットＩＤを順次選定する。
【００５２】
ステップ４６では、発行処理部１５０が、ハードディスクＣから初期化ステータステーブル４９０を読み込む。
ステップ４７では、発行処理部１５０が、初期化ステータステーブル４９０のステータスに基づいて、ステップ４５で選定したガジェットＩＤにより特定されるガジェット（選定ガジェット）が初期化済みであるか否かを判定する。そして、発行処理部１５０は、選
定ガジェットが初期化済みであると判定すれば処理をステップ４８へと進める一方（Ｙｅｓ）、選定ガジェットが初期化済みでないと判定すれば処理をステップ４６へと戻す（Ｎｏ）。なお、発行処理部１５０が処理をステップ４６へと戻すとき、任意に設定された時間だけ待機するようにしてもよい。
【００５３】
ステップ４８では、発行処理部１５０が、ハードディスクＣからガジェットステータステーブル５００を読み込む。
ステップ４９では、発行処理部１５０が、ガジェットステータステーブル５００のステータスに基づいて、選定ガジェットが購読済みであるか否かを判定する。そして、発行処理部１５０は、選定ガジェットが購読済みであると判定すれば処理をステップ５０へと進める一方（Ｙｅｓ）、選定ガジェットが購読済みでないと判定すれば処理をステップ４８へと戻す（Ｎｏ）。なお、発行処理部１５０が処理をステップ４８へと戻すとき、任意に設定された時間だけ待機するようにしてもよい。
【００５４】
ステップ５０では、発行処理部１５０が、連携関係テーブル４５０の送信指定に従って、ＨＵＢ４１０のメッセージキュー５１０からメッセージを取り出す。
ステップ５１では、発行処理部１５０が、選定ガジェットに対してメッセージを送信する。
【００５５】
ステップ５２では、発行処理部１５０が、すべての選定ガジェットにメッセージを送信したか否か、即ち、最後に選定したガジェットにメッセージを送信したか否かを判定する。そして、発行処理部１５０は、すべての選定ガジェットにメッセージを送信したと判定すれば処理をステップ５３へと進める一方（Ｙｅｓ）、すべての選定ガジェットにメッセージを送信していないと判定すれば処理をステップ４５へと戻す（Ｎｏ）。
【００５６】
ステップ５３では、発行処理部１５０が、ＨＵＢ４１０のメッセージキュー５１０からメッセージを削除する。
かかる発行処理によれば、ガジェットが発行を行うと、そのガジェットから送信されるメッセージがメッセージキュー５１０に保存される。そして、このメッセージを購読するガジェットが初期化完了後に購読を行うと、メッセージキュー５１０に保存されているメッセージが送信される。要するに、メッセージを購読するガジェットが購読を行い、メッセージを受信できるようになるまで、メッセージの送信が遅延される。このため、ガジェットが発行を行ったときにメッセージを受信可能なガジェットがなくても、そのメッセージが破棄されることがなく、その後購読ガジェットにメッセージが送信される。よって、ガジェット間のメッセージ送受信を確実ならしめることができる。なお、ガジェットがメッセージを受信できるか否かは、購読済みであるか否かにより判定できるため、ステップ４６及びステップ４７の処理を省略してもよい。
【００５７】
図１９は、ガジェット生成処理においてメッセージ削除部１３０が起動されたことを契機として、メッセージ削除部１３０が実行するメッセージ削除処理の一例を示す。
ステップ６１では、メッセージ削除部１３０が、ハードディスクＣから削除規則テーブル４７０（図９参照）を読み込む。
【００５８】
ステップ６２では、メッセージ削除部１３０が、例えば、クライアント１００の計時機能を利用して、削除規則テーブル４７０の最終削除時刻から削除間隔経過しているか否か、即ち、メッセージを削除する時刻（削除時刻）になったか否かを判定する。そして、メッセージ削除部１３０は、メッセージの削除時刻であると判定すれば処理をステップ６３へと進める一方（Ｙｅｓ）、メッセージの削除時刻でないと判定すれば処理をステップ６５へと進める（Ｎｏ）。
【００５９】
ステップ６３では、メッセージ削除部１３０が、ＨＵＢ４１０のメッセージキュー５１０に保存されているすべてのメッセージを削除する。
ステップ６４では、メッセージ削除部１３０が、ハードディスクＣに格納されている削除規則テーブル４７０の最終削除時刻を更新する。
【００６０】
ステップ６５では、メッセージ削除部１３０が、所定時間（例えば、10秒）待機する。
かかるメッセージ削除処理によれば、削除規則テーブル４７０に格納された削除間隔（所定時間）ごとに、ＨＵＢ４１０のメッセージキュー５１０に保存されているメッセージがすべて削除される。このため、ＨＵＢ４１０のメッセージキュー５１０がオーバフローすることを抑制できる。なお、ＨＵＢ４１０のメッセージキュー５１０からメッセージを削除する条件として、日時、メッセージ数、メッセージサイズなどを加えてもよい。
【００６１】
図２０は、クライアント１００において、ブラウザ終了時又は他のＵＲＬを同じブラウザで開いたときなど、“unloadイベント”が発生したことを契機として、初期化シーケンス更新部１６０が実行する初期化シーケンス更新処理を示す。
【００６２】
ステップ７１では、初期化シーケンス更新部１６０が、ハードディスクＣから初期化シーケンステーブル４４０を読み込む。
ステップ７２では、初期化シーケンス更新部１６０が、ハードディスクＣからアクセス実績テーブル４８０を読み込む。
【００６３】
ステップ７３では、初期化シーケンス更新部１６０が、初期化シーケンステーブル４４０の各ガジェットＩＤについて、アクセス実績テーブル４８０の待ち時間が短い順番に優先度を付与する。
【００６４】
ステップ７４では、初期化シーケンス更新部１６０が、アクセス実績テーブル４８０を参照し、同一のトピックを対象とする複数のガジェットが存在するか否か、即ち、初期化シーケンステーブル４４０を更新する必要があるか否かを判定する。そして、初期化シーケンス更新部１６０は、同一のトピックを対象とする複数のガジェットが存在すると判定すれば処理をステップ７５へと進める一方（Ｙｅｓ）、同一のトピックを対象とする複数のガジェットが存在しないと判定すれば処理をステップ７６へと進める（Ｎｏ）。
【００６５】
ステップ７５では、初期化シーケンス更新部１６０が、同一のトピックを対象とする購読ガジェットについて、同一優先度の発行ガジェットよりも１つ上の優先度に更新する。
ステップ７６では、初期化シーケンス更新部１６０が、初期化シーケンステーブル４４０をハードディスクＣに保存する。
【００６６】
かかる初期化シーケンス更新処理によれば、発行ガジェット及び購読ガジェットの初期化開始から発行又は購読を行うまでの所要時間に基づいて、初期化シーケンステーブル４４０が最適化される。
【００６７】
即ち、購読ガジェットの初期化を優先した場合、図２１に示すように、メッセージを受信できるようになるタイミングを短縮できる効果がある。しかし、すべての購読ガジェットは、例えば、ガジェット表示後にボタンクリックなどのユーザ操作を契機として購読を行うなど、必ずしも初期化完了直後に購読を行うとは限らない。このような場合、ガジェットの初期化完了直後にメッセージを受信する必要がないため、購読ガジェットであっても、ガジェットの初期化完了直後にメッセージを受信する必要があるガジェットよりも初期化優先度を低くすべきである。そこで、図２２に示すように、初期化完了直後にメッセージを受信する必要があるガジェットの初期化開始を早めることで、ガジェットがメッセージを受信できるようになるタイミングをさらに短縮することができる。
【００６８】
次に、本実施形態に対する理解を容易ならしめることを目的として、具体的な事例を想定した実施例について説明する。
［第１実施例（初期化シーケンステーブルの初期設定）］
本実施例の前提として、Ｗｅｂアプリケーションのソースコードには、“Gadget1”、“Gadget2”及び“Gadget3”がこの順番で記述され、連携関係テーブル４５０は、図２３に示すデータ構造をとり、優先度テーブル４６０は、図８に示すデータ構造をとっているものとする。
【００６９】
まず、“Gadget1”について、連携関係テーブル４５０が参照され、“Gadget1”に関連付けられた連携タイプ“Publish”が取得される。また、優先度テーブル４６０が参照され、連携タイプ“Publish”に関連付けられた優先度“２”が取得される。そして、図２４に示すように、“Gadget1”の優先度に“２”が格納される。
【００７０】
次に、“Gadget2”について、連携関係テーブル４５０が参照され、“Gadget2”に関連付けられた連携タイプ“Subscribe”が取得される。また、優先度テーブル４６０が参照され、連携タイプ“Subscribe”に関連付けられた優先度“１”が取得される。そして、図２４に示すように、“Gadget2”の優先度に“１”が格納される。
【００７１】
さらに、“Gadget3”について、連携関係テーブル４５０が参照され、“Gadget3”は他のガジェットとの連携がないので、その連携タイプ“Undefined”が取得される。また、優先度テーブル４６０が参照され、連携タイプ“Undefined”に関連付けられた優先度“３”が取得される。そして、図２４に示すように、“Gadget3”の優先度に“３”が格納される。
【００７２】
要するに、初期化シーケンステーブル４４０の初期設定においては、Ｗｅｂアプリケーションのソースコードに記述された各ガジェットについて、購読ガジェット、発行ガジェット及び連携関係がないガジェットの順番で優先度が付される。なお、購読ガジェット、発行ガジェット及び連携関係がないガジェットが複数存在する場合には、同一優先度が付されることとなる。この場合には、同一優先度のガジェットについて、初期化シーケンステーブル４４０に格納されている順番に初期化を開始すればよい。
【００７３】
［第２実施例（初期化シーケンステーブルの更新）］
本実施例の前提として、初期化シーケンステーブル４４０は、図２５（Ａ）に示すデータ構造をとり、また、アクセス実績テーブル４８０は、図２５（Ｂ）に示すデータ構造をとっているものとする。
【００７４】
まず、アクセス実績テーブル４８０が参照され、待ち時間が短い順に優先度を付与、即ち、図２６（Ａ）に示すように、“Gadget3”の優先度を“１”、“Gadget4”の優先度を“２”に設定すると共に、“Gadget1”、“Gadget2”及び“Gadget5”の優先度を順次繰り下げる。次に、連携関係を有する“Gadget1”及び“Gadget2”、並びに、“Gadget3”及び“Gadget4”の優先度について、図２６（Ｂ）に示すように、連携タイプが“Subscribe”となっている“Gadget2”及び“Gadget4”の優先度を、連携タイプが“Publish”となっている“Gadget1”及び“Gadget3”よりも１つ上げる。
【００７５】
要するに、初期化シーケンステーブル４４０の更新においては、Ｗｅｂアプリケーションのソースコードに記述された各ガジェットについて、初期化開始から発行又は購読が行われるまでの所要時間が短い購読ガジェットの優先度が高くなるように、優先度が最適化される。
【００７６】
以上の第１実施例及び第２実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）第１のアプリケーションがメッセージを発行する際に、該メッセージを記憶手段に記憶し、前記第１のアプリケーションが発行するメッセージを取得するアプリケーションとして登録された第２のアプリケーションが、前記第１のアプリケーションと前記第２のアプリケーションとの間のメッセージの送受信を仲介する通信ハブにメッセージの取得処理を行うと、前記記憶手段に記憶された前記メッセージを前記第２のアプリケーションに送信する、処理をコンピュータに実行させることを特徴とするメッセージ管理プログラム。
【００７７】
（付記２）前記記憶手段は、前記メッセージの送信規則を規定した送信規則テーブルを更に記憶し、前記コンピュータは、前記送信規則テーブルに規定された送信規則に基づいて、前記メッセージキューに保存されているメッセージを送信する、ことを特徴とする付記１に記載のメッセージ管理プログラム。
【００７８】
（付記３）前記記憶手段は、前記第１のアプリケーション及び前記第２のアプリケーションの初期化順序を規定した初期化シーケンステーブルを更に記憶し、前記コンピュータは、前記初期化シーケンステーブルに規定された初期化順序に基いて、前記第１のアプリケーション及び前記第２のアプリケーションの初期化を開始する、ことを特徴とする付記１又は付記２に記載のメッセージ管理プログラム。
【００７９】
（付記４）前記初期化シーケンステーブルは、前記第１のアプリケーション及び前記第２のアプリケーションを提供するサーバから取得される、ことを特徴とする付記３に記載のメッセージ管理プログラム。
【００８０】
（付記５）前記初期化シーケンステーブルには、前記第２のアプリケーションの初期化開始が、前記第１のアプリケーションの初期化開始より早くなるように、前記初期化順序が規定されている、ことを特徴とする付記３又は付記４に記載のメッセージ管理プログラム。
【００８１】
（付記６）前記コンピュータに、前記第１のアプリケーション及び前記第２のアプリケーションの初期化開始からメッセージを発行又は取得するまでの所要時間を計測し、前記所要時間に基いて、前記初期化シーケンステーブルに規定された初期化順序を更新する、
処理を更に実行させることを特徴とする付記３〜付記５のいずれか１つに記載のメッセージ管理プログラム。
【００８２】
（付記７）前記コンピュータに、前記記憶手段に記憶されたメッセージを所定時間ごとに削除する、処理を更に実行させることを特徴とする付記１〜付記６のいずれか１つに記載のメッセージ管理プログラム。
【００８３】
（付記８）前記記憶手段は、前記所定時間を規定した削除規則テーブルを更に記憶し、前記コンピュータは、前記削除規則テーブルに規定された所定時間ごとに、前記記憶手段に記憶されたメッセージを削除する、ことを特徴とする付記７記載のメッセージ管理プログラム。
【００８４】
（付記９）コンピュータが、第１のアプリケーションがメッセージを発行する際に、該メッセージを記憶手段に記憶し、前記第１のアプリケーションが発行するメッセージを取得するアプリケーションとして登録された第２のアプリケーションが、前記第１のアプリケーションと前記第２のアプリケーションとの間のメッセージの送受信を仲介する通信ハブにメッセージの取得処理を行うと、前記記憶手段に記憶された前記メッセージを前記第２のアプリケーションに送信する、処理を実行することを特徴とするメッセージ管理方法。
【符号の説明】
【００８５】
１００  クライアント
１３０  メッセージ削除部
１４０  購読処理部
１５０  発行処理部
１６０  初期化シーケンス更新部
２００  サーバ
４００  アプリケーション
４００Ａ〜４００Ｄ  ガジェット
４２０  購読ガジェット
４３０  発行ガジェット
４４０  初期化シーケンステーブル
４５０  連携関係テーブル
４６０  優先度テーブル
４７０  削除規則テーブル
４８０  アクセス実績テーブル
５１０  メッセージキュー
Ｃ  ハードディスク
【図１】
2012198735.tif 000003
【図２】
2012198735.tif 000004
【図４】
2012198735.tif 000005
【図５】
2012198735.tif 000006
【図６】
2012198735.tif 000007
【図７】
2012198735.tif 000008
【図８】
2012198735.tif 000009
【図９】
2012198735.tif 000010
【図１０】
2012198735.tif 000011
【図１１】
2012198735.tif 000012
【図１２】
2012198735.tif 000013
【図１３】
2012198735.tif 000014
【図１４】
2012198735.tif 000015
【図１５】
2012198735.tif 000016
【図１６】
2012198735.tif 000017
【図１７】
2012198735.tif 000018
【図１８】
2012198735.tif 000019
【図１９】
2012198735.tif 000020
【図２０】
2012198735.tif 000021
【図２１】
2012198735.tif 000022
【図２２】
2012198735.tif 000023
【図２３】
2012198735.tif 000024
【図２４】
2012198735.tif 000025
【図２５】
2012198735.tif 000026
【図２６】
2012198735.tif 000027
【図３】
2012198735.tif 000028