(57)【要約】【課題】メッセージ通信システムの開発効率を向上させる。【解決手段】メッセージ通信システムの開発システムは、メモリと、メモリに接続されるプロセッサと、を備える。プロセッサは、複数のテンプレートを示すテンプレート情報を取得し、プロセッサは、複数のテンプレートにより用いられる複数のパラメータの定義を示す定義情報を取得し、プロセッサは、テンプレート情報及び定義情報に基づいて複数のテンプレートを生成し、複数のテンプレートは、メッセージ通信システムにより用いられる複数のファイルに夫々対応し、各テンプレートは、対応するファイルの少なくとも一部を含む。【選択図】図１４
2017146684.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ通信システムの開発システムであって、
メモリと、
前記メモリに接続されるプロセッサと、
を備え、
前記プロセッサは、複数のテンプレートを示すテンプレート情報を取得し、
前記プロセッサは、前記複数のテンプレートにより用いられる複数のパラメータの定義を示す定義情報を取得し、
前記プロセッサは、前記テンプレート情報及び前記定義情報に基づいて前記複数のテンプレートを生成し、
前記複数のテンプレートは、前記メッセージ通信システムにより用いられる複数のファイルに夫々対応し、
各テンプレートは、対応するファイルの少なくとも一部を含む、
開発システム。
【請求項２】
前記プロセッサは、各パラメータの変数名及び変数型を示すパラメータ情報を取得し、
前記プロセッサは、前記パラメータ情報及び前記テンプレート情報に基づいて、前記定義情報を生成し、
前記定義情報は、各パラメータの変数名及び変数型を示す、
請求項１に記載の開発システム。
【請求項３】
前記定義情報が編集されることで、前記複数のパラメータの少なくとも一つの変数値が前記定義情報に含められ、
前記プロセッサは、前記定義情報に基づいて、前記複数のテンプレートを生成する、
請求項２に記載の開発システム。
【請求項４】
各テンプレートは、複数のグループの何れか一つに予め分類され、
前記パラメータ情報は、各パラメータを記述するテンプレートのグループを示し、
前記テンプレート情報は、各テンプレートのグループを示し、
前記定義情報は、各パラメータのグループを示す、
請求項３に記載の開発システム。
【請求項５】
前記パラメータ情報は、別のメッセージ通信システムに用いられ過去に設定されたパラメータの、変数名と、変数型と、対応するグループとを示す、
請求項４に記載の開発システム。
【請求項６】
前記テンプレート情報は、各テンプレートの形式を示し、
前記プロセッサは、前記テンプレート情報からテンプレートを選択し、前記選択されたテンプレートの形式を選択し、前記選択された形式に対応する生成プログラムを取得し、
前記プロセッサは、前記取得された生成プログラムを用いて、前記選択されたテンプレートを生成する、
請求項５に記載の開発システム。
【請求項７】
前記複数のテンプレートは、前記メッセージ通信システムにより受信されるメッセージのテンプレートであるメッセージテンプレートと、前記メッセージ通信システムにより受信されるメッセージの条件であるメッセージ条件を示すメッセージフィルタと、前記条件を満たすメッセージであるメッセージサンプルと、メッセージを処理するプログラムであるメッセージ処理ライブラリと、前記メッセージ通信システムの設定を示すシステム設定ファイルと、前記メッセージ処理ライブラリを用いるプログラムの一部である部分プログラムとの、少なくとも何れかを含む、
請求項１乃至６の何れか一項に記載の開発システム。
【請求項８】
前記定義情報が編集されることで、前記複数のパラメータのうちメッセージに含まれる少なくとも一つのパラメータの値の条件であるパラメータ条件が前記定義情報に含められ、
前記複数のテンプレートは、前記メッセージテンプレートを含み、
前記プロセッサは、前記定義情報に基づいて、前記パラメータ条件を含む前記メッセージテンプレートを生成する、
請求項７に記載の開発システム。
【請求項９】
前記複数のテンプレートは、前記メッセージフィルタを含み、
前記プロセッサは、前記メッセージ条件として前記パラメータ条件を含む前記メッセージフィルタを生成する、
請求項８に記載の開発システム。
【請求項１０】
前記プロセッサは、追加のメッセージフィルタを取得し、
前記プロセッサは、前記追加のメッセージフィルタに含まれるパラメータ条件と、前記メッセージテンプレートに含まれるパラメータ条件との関係を示す生成ルールを取得し、
前記プロセッサは、前記生成ルールに従って、前記追加のメッセージフィルタに含まれる条件と、前記メッセージテンプレートに含まれるパラメータ条件との少なくとも何れかを、前記メッセージフィルタに含めることで、前記メッセージフィルタを生成する、
請求項９に記載の開発システム。
【請求項１１】
前記プロセッサは、前記メッセージフィルタに含まれるパラメータ条件に基づいて、前記メッセージサンプルを生成する、
請求項１０に記載の開発システム。
【請求項１２】
前記パラメータ条件は、正規表現を用いて記述される、
請求項８に記載の開発システム。
【請求項１３】
メッセージ通信システムを開発するための開発システムであって、
メモリと、
前記メモリに接続されるプロセッサと、
を備え、
前記プロセッサは、前記メッセージ通信システムにより受信されるメッセージのテンプレートであるメッセージテンプレートを取得し、
前記メッセージテンプレートは、少なくとも一つのパラメータの値の条件であるパラメータ条件を含み、
前記プロセッサは、前記メッセージテンプレートに基づいて、前記メッセージ通信システムにより処理されるメッセージの条件として前記パラメータ条件を示すメッセージフィルタを生成する、
開発システム。
【請求項１４】
メッセージ通信システムの開発方法であって、
プロセッサが、複数のテンプレートを示すテンプレート情報を取得し、
前記プロセッサが、前記複数のテンプレートにより用いられる複数のパラメータの定義を示す定義情報を取得し、
前記プロセッサが、前記テンプレート情報及び前記定義情報に基づいて前記複数のテンプレートを生成する、
ことを備え、
前記複数のテンプレートは、前記メッセージ通信システムにより用いられる複数のファイルに夫々対応し、
各テンプレートは、対応するファイルの少なくとも一部を含む、
開発方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージ通信システムの開発システムに関する。
【背景技術】
【０００２】
近年、大量のデバイスやセンサからデータを集めて利用する、ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）サービスの普及が進んでいる。
【０００３】
ＩｏＴサービスを展開するためには、デバイスやセンサが無線網やインターネットを介して、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＭＱＴＴ（ＭＱ  Ｔｅｌｅｍｅｔｒｙ  Ｔｒａｎｓｐｏｒｔ）、ＣｏＡＰ（Ｃｏｎｓｔｒａｉｎｅｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）、ＡＭＱＰ（Ａｄｖａｎｃｅｄ  Ｍｅｓｓａｇｅ  Ｑｕｅｕｉｎｇ  Ｐｒｏｔｏｃｏｌ）などの通信プロトコルにしたがって送信するメッセージについて、これを受信して分析や処理を行いデバイスや宛先サーバに送信する、メッセージ通信システムが必要となる。なお、ここでのメッセージは、使用する通信プロトコルに準拠する構文を持ち構造化されたバイト列であり、接続を介して転送される、通信の基本単位を示す。メッセージ通信システムの例として、ゲートウェイ、メッセージキュー、ソフトウェアロードバランサなどが挙げられる。
【０００４】
また、ＩｏＴサービスにおいては、従来の確立したビジネスモデルに基づいて構築されたシステム上のサービスとは異なり、ビジネスモデルが不透明で、価値が見極めにくく、サービス適用効果やサービス利用者の反応を予測することが困難である。そのため、ＩｏＴサービスの開発では、システムを開発してサービスを展開したのち、サービス適用効果やサービス利用者の反応を分析して、システムとサービスをアップデートする、という開発サイクルを、短期間かつ高頻度に回していくことが求められる。
【０００５】
そのため、ＩｏＴサービス実現のためのシステムを開発するシステム開発者、およびシステム上でサービスを展開するシステム運用者の間で、システム開発期間を短縮する手法の適用が広まっている。システム開発期間の短縮化手法として、イテレーションと呼ばれる数週間程度の短い期間ごとに、アプリケーションを小機能単位で開発しアップデートするアジャイル開発や、最初に最低限の機能を有したアプリケーションを短期間で構築してユーザに提供したのちユーザの反応をもとにアイディアを再考してアプリケーションの改良を行うリーンスタートアップや、システム開発者とシステム運用者が連携して開発を進めるＤｅｖＯｐｓなどが普及している。
【０００６】
ＩｏＴサービスを展開するための基盤となるメッセージ通信システムの開発においても、システム開発者とシステム運用者には、高頻度なサービス内容の変更要求に合わせてその都度システムを変更できることが望ましい。一例として、ＩｏＴ向け汎用メッセージ通信プロトコルが複数あるなか、最初は１つのプロトコルに対応するシステムを開発し、その後に別プロトコルに対応するシステムを開発するといったケースが考えられる。
【０００７】
メッセージ通信システムの開発において、システム開発者だけでなくシステム運用者も、システム変更に伴って運用システムの開発が必要になる。システム開発者の開発内容としては、メッセージ処理用ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）ライブラリ作成、プロトコル変換処理プログラム作成、システム構成情報定義ファイル作成などが挙げられる。一方、システム運用者の開発内容としては、プロトコルに対応するメッセージテンプレートに従ったメッセージ作成、プロトコルごとに異なるメッセージ処理ＡＰＩを使ったメッセージ処理プログラム作成、メッセージフィルタリングルール作成などが挙げられる。これらメッセージ通信システムの開発において、システム開発者とシステム運用者は数百にもおよぶパラメータを別々のフォーマットで扱い開発しており、システム開発効率の低さやメンテナンス性の低さが課題であった。
【０００８】
上記の課題に関して、メッセージ通信システムの開発効率を上げつつメンテナンス性を高める方法として、特許文献１、特許文献２が開示されている。
【０００９】
特許文献１（段落００１３−００１４）では、ユーザが再コンパイルを要することなく新たな能力をプロトコルエミュレーションスイーツに付加することが可能で、ユーザからはシステムのシームレスな部分であるように見えるようにした、プロトコルエミュレーション・システムが開示されている。本システムは、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）などの一般フォーマットを使ってプロトコルメッセージ内にフィールドを記述し、機械読み取り可能なテンプレートへと変換するアプリケーションでテンプレートを作成し、テンプレートに基づいてプロトコルメッセージを作成するプロトコル有限状態機械を持つ。この技術は、ユーザがプロトコルごとにメッセージ形式を変えることを不要とし、メッセージ通信システム運用者の開発量減少に貢献する。
【００１０】
また、特許文献２（段落０００１、００１０−００１４）では、抽象構文記法メッセージとＣ言語等のデータ構造の相互変換を行うプログラムルーチンを抽象構文記法で記述されたプロトコルから自動生成するにあたり、カスタマイズを反映させるプロトコル符号化／複合化システムが開示されている。このシステムは、プロトコルを処理するアプリケーションを開発する上で、形式が固定されて変更に大きな工数を要した、インタフェース用構造体の構造、デコーダ、エンコーダについて、カスタマイズルールの入力により容易にカスタマイズ可能なプログラムルーチンを生成する装置を持つ。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１２−１５７０５６号公報
【特許文献２】特開２００４−２３４４０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ＩｏＴサービスの普及に伴いシステム開発の高頻度化と短期間が進むなか、システム開発者とシステム運用者によるメッセージ通信システムの開発において、システム開発効率の低さやメンテナンス性の低さが課題である。
【００１３】
特許文献１のように、プロトコルに依存しないメッセージ作成方法では、システム開発者側がプロトコルメッセージを処理するプログラムを個別に作る必要があり、それらのプログラムの開発効率向上については言及されていない。
【００１４】
特許文献２のように、プロトコル符号化／復号化のプログラム生成装置では、システム開発者側がプロトコル変換処理のプログラムを生成することができるが、そのプログラムに入力するメッセージの準備や、そのプログラムを実行するためのＡＰＩの開発など、メッセージ通信システムに必要となる他の開発物の開発効率向上は達成されない。
【００１５】
即ち、メッセージ通信システム全体の開発の迅速化については検討されていない。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、本発明の一態様である、メッセージ通信システムの開発システムは、メモリと、前記メモリに接続されるプロセッサと、を備える。前記プロセッサは、複数のテンプレートを示すテンプレート情報を取得し、前記プロセッサは、前記複数のテンプレートにより用いられる複数のパラメータの定義を示す定義情報を取得し、前記プロセッサは、前記テンプレート情報及び前記定義情報に基づいて前記複数のテンプレートを生成し、前記複数のテンプレートは、前記メッセージ通信システムにより用いられる複数のファイルに夫々対応し、各テンプレートは、対応するファイルの少なくとも一部を含む。
【発明の効果】
【００１７】
メッセージ通信システムの開発効率を向上させることができる。
【図面の簡単な説明】
【００１８】
【図１】本実施例のメッセージ通信システム１０６及び開発システムの構成を示すブロック図である。
【図２】本実施例のメッセージ通信システム開発サーバ１０５のハードウェア構成と、メッセージ通信システム開発サーバ１０５に保持されるデータとを示すブロック図である。
【図３】本実施例のメッセージ受信サーバ１０８のハードウェア構成と、メッセージ受信サーバ１０８の記憶装置３０４が保持するデータを示すブロック図である。
【図４】本実施例のメッセージ処理サーバ１０９のハードウェア構成と、メッセージ処理サーバ１０９の記憶装置４０４が保持するデータを示すブロック図である。
【図５】本実施例のメッセージ送信サーバ１１０のハードウェア構成と、メッセージ送信サーバの記憶装置５０４が保持するデータを示すブロック図である。
【図６】通信システム実装パラメータ群情報２１３の例を示す。
【図７】パラメータ設定先情報２１４の例を示す。
【図８】通信システム開発プログラム２１２の中間生成ファイルであるプロトコルカスタマイズ定義情報２１５の例を示す。
【図９】システム開発者により編集されたプロトコルカスタマイズ定義情報２１５Ｃの例を示す。
【図１０】通信システム開発プログラム２１２により生成されたメッセージテンプレート２１６Ａの例を示す。
【図１１】システム運用者により編集されたメッセージテンプレート２１６Ｃの例を示す。
【図１２】通信システム開発プログラム２１２により生成されたメッセージフィルタ２１７Ａの例を示す説明図である。
【図１３】フィルタ生成コンパイラ３１６により出力されたメッセージフィルタ２１７Ｅの例を示す。
【図１４】メッセージ通信システム開発サーバ１０５の動作を示すブロック図である。
【図１５】メッセージ受信サーバ１０８におけるメッセージフィルタ更新処理を示すブロック図である。
【図１６】プロトコル定義情報生成部１００１の処理を示すフローチャートである。
【図１７】プロトコルカスタマイズ部１００３の処理を示すフローチャートである。
【図１８】システム開発者による通信システム開発プログラム２１２の使用方法を示すシーケンス図である。
【図１９】システム運用者によるフィルタ生成コンパイラ３１６の使用方法を示すシーケンス図である。
【発明を実施するための形態】
【００１９】
以下の説明では、各種の情報は、テーブル等、どのようなデータ構造で表現されていてもよい。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００２０】
また、以下の説明では、要素の識別情報として、ＩＤが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
【００２１】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたＩＤを使用することがある。
【００２２】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又はインターフェースデバイス（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理又はシステムとしてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ（例えばＣＰＵ）と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００２３】
以下、実施例について図面を参照して説明する。
【００２４】
図１は、本実施例のメッセージ通信システム１０６及び開発システムの構成を示すブロック図である。
【００２５】
本実施例のメッセージ通信システム１０６は、社会インフラ企業などの通信設備網１０７に接続されている。本実施例のメッセージ通信システム１０６は、メッセージキューである。メッセージ通信システム１０６は例えば、メッセージを受信し、メッセージをフィルタリングし、メッセージのデータを変換し、メッセージを送信する。メッセージ通信システム１０６は、メッセージ受信サーバ１０８とメッセージ処理サーバ１０９と、メッセージ送信サーバ１１０と、データストアサーバ１１１と、を含む。
【００２６】
また、通信設備網１０７は、無線網１０３またはインターネット１０４を介して外部のデバイス１０１、センサ１０２、宛先サーバ１１２等に接続されている。
【００２７】
本実施例のメッセージ通信システム１０６は、通信設備網１０７を介してメッセージ通信システム開発サーバ１０５と接続されている。メッセージ通信システム１０６は、メッセージ通信システム開発サーバ１０５により生成されたテンプレートを受信する。
【００２８】
デバイス１０１は、携帯電話端末、タブレット端末、または、ＰＣなど、メッセージ送受信可能な端末装置である。
【００２９】
センサ１０２は、温度、加速度、湿度、光などの変化を感知して信号に変換して送信可能な、メッセージ送受信装置である。
【００３０】
無線網１０３は、社会インフラ企業などが管理する無線ネットワークである。
【００３１】
インターネット１０４は、デバイスやセンサとの間を相互接続する世界的な分散型ネットワークである。
【００３２】
メッセージ受信サーバ１０８は、デバイス１０１またはセンサ１０２から送信されたメッセージについて通信設備網１０７を介して受信し、受信したメッセージをデータストアサーバ１１１に格納する。
【００３３】
メッセージ処理サーバ１０９は、データストアサーバ１１１に問い合わせて、メッセージ受信サーバ１０８が格納した未処理のメッセージを取得し、メッセージを処理したのち、データストアサーバ１１１に保存する。ここで、メッセージ処理とは、たとえばメッセージヘッダのデータ変換や、メッセージ圧縮、などを示す。
【００３４】
メッセージ送信サーバ１１０は、メッセージ処理サーバ１０９を介してデータストアサーバ１１１からメッセージを取得し、通信設備網１０７を介してデバイス１０１、またはセンサ１０２、または宛先サーバ１１２、にメッセージを送信する。
【００３５】
データストアサーバ１１１は、メッセージを格納する装置であり、たとえばキーバリューストア（Ｋｅｙ−Ｖａｌｕｅ  Ｓｔｏｒｅ）やデータグリッドなどである。データストアサーバ１１１は、メッセージの格納、取得、削除、更新などの処理要求を受信して、要求にしたがった処理を行う。
【００３６】
以下の説明におけるメッセージは、デバイス１０１またはセンサ１０２、メッセージ受信サーバ１０８、メッセージ処理サーバ１０９、データストアサーバ１１１、メッセージ処理サーバ１０９、メッセージ送信サーバ１１０、デバイス１０１またはセンサ１０２または宛先サーバ１１２の順に送信される。
【００３７】
ただし、本実施例の処理はこれに限定されず、メッセージは、メッセージ通信システム１０６を経由すれば、いかなる経路で送信されてもよい。たとえば、メッセージ受信サーバ１０８がメッセージを受信したあと、一度データストアサーバ１１１に格納する、というような経路でもよい。
【００３８】
以後、メッセージ受信サーバ１０８、メッセージ処理サーバ１０９、メッセージ送信サーバ１１０の夫々を通信サーバと呼ぶ。メッセージ通信システム開発サーバ１０５は、各通信サーバの機能を実現するために必要なファイル、又はそのファイルの雛形であるテンプレート群２２２を生成する。テンプレート群２２２は、複数のテンプレートを含む。複数のテンプレートは、通信サーバに用いられる複数のファイルに夫々対応する。各テンプレートは、対応するファイルの少なくとも一部を含む。テンプレート群２２２は、メッセージテンプレート２１６と、メッセージフィルタ２１７と、ＡＰＩ実行プログラムサンプルコード２１８と、メッセージ処理ＡＰＩライブラリ２１９と、メッセージ処理プログラム部分コード２２０と、システム設定ファイル２２１との、少なくとも何れかを含む。例えば、メッセージ通信システム開発サーバ１０５が、構造体の定義など、プログラムの一部をテンプレートとして出力することにより、システム開発者及びシステム運用者は、開発コストを低減することができる。各通信サーバは、メッセージ通信システム開発サーバ１０５で生成されたテンプレート群２２２の中から必要なテンプレートをロードする。なお、メッセージフィルタ２１７など、特定のテンプレートは、そのまま通信サーバにより用いられてもよい。
【００３９】
なお、メッセージ通信システム開発サーバ１０５とメッセージ通信システム１０６は必ずしも通信設備網１０７で接続されている必要はない。たとえばメッセージ通信システム開発サーバ１０５は、生成したテンプレート群２２２を、外部ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、外部ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等の記憶媒体に保存したのち、各通信サーバが、その記憶媒体に接続され、テンプレート群２２２をロードしてもよい。
【００４０】
複数の通信サーバ及びメッセージ通信システム開発サーバ１０５は、各々が物理的な計算機によって構成されたサーバ装置であってもよいし、仮想マシンによって構成されてもよい。
【００４１】
また、各サーバ装置の役割が混合されていてもよく、複数の通信サーバ及びメッセージ通信システム開発サーバ１０５の一部又は全部が一つの装置に含まれてもよい。たとえば、実際の開発とその後の運用において、メッセージ受信サーバ１０８とメッセージ送信サーバ１１０が一つのサーバで構成されていてもよく、メッセージ処理サーバ１０９とメッセージ通信システム開発サーバ１０５が一つのサーバで構成されていてもよい。
【００４２】
図２は、本実施例のメッセージ通信システム開発サーバ１０５のハードウェア構成と、メッセージ通信システム開発サーバ１０５に保持されるデータとを示すブロック図である。
【００４３】
メッセージ通信システム開発サーバ１０５は、プロセッサ２０１と、入出力回路インタフェース２０２と、入出力装置２０３と、記憶装置２０４と、これらを接続する内部通信線（たとえば、バス）と、を含む。
【００４４】
プロセッサ２０１は、演算装置及び制御装置である。プロセッサ２０１が記憶装置２０４に格納された通信システム開発プログラム２１２を実行することによって、メッセージ通信システム開発サーバ１０５の機能が実現される。
【００４５】
入出力回路インタフェース２０２は、通信設備網１０７と通信するためのインタフェースである。
【００４６】
入出力装置２０３は、データの入力を受け付けたり、データを出力したり、あるいはその両方を行うための装置である。たとえば、入出力装置２０３は、キーボードやマウスなどからの入力を受け付け、プロセッサ２０１からの情報をディスプレイに表示させる。
【００４７】
記憶装置２０４は、揮発性の記憶装置（ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ａｃｃｅｓｓ  Ｒａｎｄｏｍ  Ｍｅｍｏｒｙ）など）と不揮発性の記憶装置（ＨＤＤ、ＳＳＤなど）と、を含む。
【００４８】
記憶装置２０４は、編集用アプリケーション２１１と、通信システム開発プログラム２１２と、通信システム実装パラメータ群情報２１３と、パラメータ設定先情報２１４と、プロトコルカスタマイズ定義情報２１５と、メッセージテンプレート２１６と、メッセージフィルタ２１７と、ＡＰＩ実行プログラムサンプルコード２１８と、メッセージ処理ＡＰＩライブラリ２１９と、メッセージ処理プログラム部分コード２２０と、システム設定ファイル２２１と、を格納する。
【００４９】
編集用アプリケーション２１１は、システム開発者が通信システム実装パラメータ群情報２１３、パラメータ設定先情報２１４、プロトコルカスタマイズ定義情報２１５などについて、入出力装置２０３を介して編集するためのアプリケーションである。編集用アプリケーション２１１は特定のプログラムに限定されず、一般的なテキストエディタプログラムでもよい。
【００５０】
通信システム開発プログラム２１２は、編集用アプリケーション２１１を用いて編集された通信システム実装パラメータ群情報２１３及びパラメータ設定先情報２１４に基づいて、プロトコルカスタマイズ定義情報２１５を生成する。また、通信システム開発プログラム２１２は、プロトコルカスタマイズ定義情報２１５と、パラメータ設定先情報２１４と、に基づいて、テンプレート群２２２を生成する。テンプレート群２２２は、各通信サーバにロードされて使用される。
【００５１】
通信システム実装パラメータ群情報２１３は、通信システム開発プログラム２１２へ入力されるデータであり、システム開発者により編集可能なデータである。通信システム実装パラメータ群情報２１３は、複数のパラメータを示す。通信システム実装パラメータ群情報２１３には、パラメータ毎の、説明、設定先グループ、変数名、変数型、などが含まれている。通信システム実装パラメータ群情報２１３は、これまで開発されたメッセージ通信システムの情報を履歴情報として残したまま、新規開発するメッセージ通信システムの情報を新たな列に追記できる。これにより、システム開発者は、履歴情報をノウハウとして活用できる。例えば、システム開発者は、履歴情報を参考にしつつ、新規開発するメッセージ通信システム１０６のパラメータに関する情報を、編集用アプリケーション２１１を使って通信システム実装パラメータ群情報２１３へ追加する。これにより、システム開発者は、どんなパラメータが必要か、パラメータをどんな変数名と変数型にすればよいか、などについて、履歴情報を参考に決定することができる。
【００５２】
パラメータ設定先情報２１４は、通信システム開発プログラム２１２へ入力されるデータであり、システム開発者により編集可能なデータである。パラメータ設定先情報２１４は、複数のテンプレートを示す。パラメータ設定先情報２１４には、パラメータの設定先のテンプレートのグループを示す設定先グループ、各設定先グループに含まれるテンプレートの情報、などが含まれている。システム開発者は、開発するメッセージ通信システム１０６ごとのパラメータ設定先情報２１４を準備する必要がある。
【００５３】
プロトコルカスタマイズ定義情報２１５は、通信システム開発プログラム２１２の中間生成ファイルであり、システム開発者により編集可能なデータである。プロトコルカスタマイズ定義情報２１５は、パラメータの定義を示す。プロトコルカスタマイズ定義情報２１５には、開発するメッセージ通信システム１０６で使用される全パラメータについての変数名、設定先グループ、変数型、変数初期値、などが含まれている。通信システム開発プログラム２１２は、システム開発者により編集されたプロトコルカスタマイズ定義情報２１５と、パラメータ設定先情報２１４を再読み込みすることで、テンプレート群２２２を生成する。
【００５４】
通信システム実装パラメータ群情報２１３、パラメータ設定先情報２１４、プロトコルカスタマイズ定義情報２１５は、表やＣＳＶ（Ｃｏｍｍａ−Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅ）など、システム開発者とコンピュータの両方に読み取り可能である一般的なフォーマットで表現される。
【００５５】
メッセージテンプレート２１６は、メッセージ通信システム１０６で送受信するメッセージのテンプレートである。本実施例のメッセージテンプレート２１６は、メッセージ受信サーバ１０８により受信されるメッセージのテンプレートであり、メッセージ通信システム１０６へのメッセージを作成するためにシステム運用者により使用される。メッセージテンプレート２１６は、特定のプロトコルのためのメッセージヘッダとして必要な項目と、メッセージボディとして必要な項目と、について定義する。メッセージを異なるプロトコル間で送受信するとき、メッセージのヘッダを対応するプロトコルに変換する必要がある。このとき、メッセージ変換の際に必要な情報がメッセージのボディに記述されることで、メッセージ処理サーバ１０９がメッセージのボディを読み取ってプロトコルに対応したメッセージを作成することができる。そのため、メッセージテンプレート２１６は、メッセージを異なるプロトコル間で送受信するときメッセージのボディに記述すべき項目について定義する。通信システム開発プログラム２１２により生成されたメッセージテンプレート２１６は、メッセージ受信プログラム３１３で取得し使用されるものとする。
【００５６】
メッセージフィルタ２１７は、メッセージ通信システム１０６で送受信するメッセージについて、想定するプロトコルメッセージの定義に準拠しないメッセージが到着したときに、メッセージを受信しないようフィルタリングするための情報である。メッセージ受信プログラム３１３は、メッセージフィルタ２１７に示されたメッセージ条件に適合するメッセージを処理し、適合しないメッセージを処理しない。メッセージ条件は、少なくとも一つのフィルタリングルール（パラメータ条件）を含む。通信システム開発プログラム２１２により生成されたメッセージフィルタ２１７は、主にメッセージ受信プログラム３１３で使用されるが、これに限定されずどの通信サーバでも使用されることができる。たとえば、メッセージ受信サーバ１０８でなくメッセージ処理サーバ１０９がメッセージフィルタ２１７を読み込むことで、メッセージ受信後のメッセージ処理のタイミングでメッセージをフィルタリングすることができる。
【００５７】
ＡＰＩ実行プログラムサンプルコード２１８は、メッセージ受信サーバ１０８またはメッセージ送信サーバ１１０が、メッセージ処理サーバ１０９に対してメッセージ処理を要求するために、メッセージ処理ＡＰＩを実行するためのプログラムのサンプルである。通信システム開発プログラム２１２により生成されたＡＰＩ実行プログラムサンプルコード２１８は、システム運用者により編集されたのち、メッセージ受信サーバ１０８およびメッセージ送信サーバ１１０により使用される。
【００５８】
メッセージ処理ＡＰＩライブラリ２１９は、メッセージ受信サーバ１０８またはメッセージ送信サーバ１１０がメッセージ処理サーバ１０９に対して実行するメッセージ処理ＡＰＩの関数や変数を定義したライブラリである。メッセージ処理ＡＰＩライブラリ２１９があることで、ＡＰＩ実行プログラムが有効となる。メッセージ処理ＡＰＩライブラリ２１９は、メッセージ受信サーバ１０８、メッセージ処理サーバ１０９、メッセージ送信サーバ１１０で参照される。
【００５９】
メッセージ処理プログラム部分コード２２０は、メッセージ処理サーバ１０９のメッセージ処理プログラム４１２の一部として動作するコードである。たとえば、メッセージのプロトコル変換処理において、変換後のプロトコルメッセージのヘッダとして必要なパラメータを定義したメッセージ構造体宣言、定数定義、などである。メッセージ処理プログラム部分コード２２０はメッセージ処理サーバ１０９において、メッセージ処理プログラム４１２の一部として組み込まれる。
【００６０】
システム設定ファイル２２１は、メッセージ通信システム１０６に必要な設定ファイルである。たとえば、システム設定ファイル２２１は、メッセージ送信から応答までコネクションを維持する時間、各プログラムに割り当てるＣＰＵコア数、接続先サーバのＩＰアドレス／ポート番号、などを示す。システム設定ファイル２２１は、複数ファイルとして存在し、それぞれはメッセージ受信サーバ１０８、メッセージ処理サーバ１０９、メッセージ送信サーバ１１０で参照される。
【００６１】
システム開発者およびシステム運用者は、通信システム開発プログラム２１２を使用することにより、テンプレート群２２２に用いるパラメータを一元的に扱いつつ、テンプレート群２２２を生成することができる。システム開発者およびシステム運用者が、テンプレート群２２２から、メッセージ通信システム１０６を開発することにより、メッセージ通信システム１０６の一貫性が向上する。メッセージ通信システム１０６に変更があるときにも、システム開発者が、通信システム実装パラメータ群情報２１３などの入力情報を編集して再度通信システム開発プログラム２１２を実行することで、速やかにテンプレート群２２２を再生成することができ、メンテナンス性が向上する。また、システム開発者およびシステム運用者は、テンプレート群２２２をベースとして、カスタマイズが必要な部分だけをプログラミングすればよいため、システムの開発効率向上が期待される。
【００６２】
図３は、本実施例のメッセージ受信サーバ１０８のハードウェア構成と、メッセージ受信サーバ１０８の記憶装置３０４が保持するデータを示すブロック図である。
【００６３】
メッセージ受信サーバ１０８は、プロセッサ３０１と、入出力回路インタフェース３０２と、入出力装置３０３と、記憶装置３０４と、これらを接続する内部通信線（たとえば、バス）と、を含む。
【００６４】
プロセッサ３０１は、演算装置及び制御装置である。プロセッサ３０１が、記憶装置３０４に格納されたメッセージ受信プログラム３１３を実行することによって、メッセージ受信サーバ１０８の機能が実現される。
【００６５】
入出力回路インタフェース３０２は、通信設備網１０７と通信するためのインタフェースである。
【００６６】
入出力装置３０３は、データの入力を受け付けたり、データを出力したり、あるいはその両方を行うための装置である。たとえば、入出力装置３０３は、キーボードやマウスなどからの入力を受け付け、プロセッサ３０１からの情報をディスプレイに表示させる。
【００６７】
記憶装置３０４は、揮発性の記憶装置（ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ａｃｃｅｓｓ  Ｒａｎｄｏｍ  Ｍｅｍｏｒｙ）など）と、不揮発性の記憶装置（ＨＤＤ、ＳＳＤなど）と、を含む。
【００６８】
記憶装置３０４は、編集用アプリケーション３１１と、メッセージテンプレート２１６と、メッセージ受信プログラム３１３と、システム設定ファイル２２１と、メッセージ処理ＡＰＩライブラリ２１９と、フィルタ生成コンパイラ３１６と、フィルタ生成ルール３１７と、を含む。
【００６９】
編集用アプリケーション３１１は、システム運用者が、入出力装置３０３を介して、メッセージ受信プログラム３１３、メッセージテンプレート２１６、システム設定ファイル２２１などを、編集するためのアプリケーションである。編集用アプリケーション３１１は、特定のプログラムに限定されず、一般的なテキストエディタプログラムでもよい。
【００７０】
メッセージテンプレート２１６は、メッセージ通信システム１０６で送受信するメッセージのテンプレートである。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ受信サーバ１０８へメッセージテンプレート２１６をロードしたのち、システム運用者自身によるメッセージ記述項目の確認にメッセージテンプレート２１６を使用するほか、後述するメッセージフィルタ２１７生成のためにフィルタ生成コンパイラ３１６に入力する情報として、メッセージテンプレート２１６を編集して使用する。
【００７１】
メッセージ受信プログラム３１３は、デバイス１０１またはセンサ１０２から通信設備網１０７を通じてメッセージを受信したのち、メッセージ処理サーバ１０９のメッセージ処理プログラム４１２にメッセージ処理要求を送信するプログラムである。
【００７２】
メッセージ受信プログラム３１３は、メッセージフィルタ２１７と、ＡＰＩ実行プログラム３２２と、を含む。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ受信サーバ１０８へ、メッセージフィルタ２１７と、ＡＰＩ実行プログラムサンプルコード２１８と、をロードしたのち編集して使用する。ＡＰＩ実行プログラム３２２とは、ＡＰＩ実行プログラムサンプルコード２１８をもとにシステム運用者により編集されたプログラムである。
【００７３】
メッセージ受信プログラム３１３が、デバイス１０１またはセンサ１０２から通信設備網１０７を通じてメッセージを受信する際には、メッセージが規定のフォーマットで記述されているかどうかを判定してフィルタリングするメッセージフィルタ２１７を使用して、既定のフォーマットに準拠したメッセージのみ取得する。また、メッセージ受信プログラム３１３は、メッセージ処理プログラム４１２にメッセージ処理要求を送信する際に、メッセージ処理ＡＰＩライブラリ２１９に記述された関数や変数を使用するＡＰＩ実行プログラム３２２を使用する。
【００７４】
システム設定ファイル２２１は、メッセージ受信プログラム３１３のパラメータ設定値を記述したファイルである。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ受信サーバ１０８へシステム設定ファイル２２１のテンプレートをロードして使用する。
【００７５】
メッセージ処理ＡＰＩライブラリ２１９は、メッセージ処理ＡＰＩの関数や変数を定義したライブラリであり、ＡＰＩ実行プログラム３２２を有効化するためのデータである。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ受信サーバ１０８へメッセージ処理ＡＰＩライブラリ２１９をロードして使用する。
【００７６】
フィルタ生成コンパイラ３１６は、メッセージを受信する上で必須の項目や、メッセージに記述されるべき文字列の正規表現など、メッセージをフィルタリングするためのフィルタリングルールが記述されたメッセージテンプレート２１６に基づいて、メッセージフィルタ２１７を生成する。システム運用者は、最初にメッセージ通信システム開発サーバ１０５からメッセージ受信サーバ１０８へロードしたメッセージテンプレート２１６を編集してフィルタ生成コンパイラ３１６に入力することで、メッセージフィルタ２１７を生成することができる。また、フィルタ生成コンパイラ３１６は、フィルタリングルールが記述されたメッセージテンプレート２１６と、既存のメッセージフィルタ２１７との両方を取得することで、両方のフィルタリングルールが反映されたメッセージフィルタ２１７を生成する。
【００７７】
フィルタ生成ルール３１７は、フィルタ生成コンパイラ３１６が、複数のメッセージテンプレート２１６と、メッセージフィルタ２１７と、を読み込んで新規のメッセージフィルタ２１７を生成する際に、それぞれのファイルに記述されたフィルタリングルールから有効化するルールを決めるための情報である。フィルタ生成ルール３１７は、全てのフィルタリングルールをマージする、最新のファイルのフィルタリングルールを優先する、重複するフィルタリングルールのみ有効化する、などを示す。なお、フィルタ生成ルール３１７は、データファイルとして用意されてもよく、フィルタ生成コンパイラ３１６の引数として入力される形式でもよい。
【００７８】
図４は、本実施例のメッセージ処理サーバ１０９のハードウェア構成と、メッセージ処理サーバ１０９の記憶装置４０４が保持するデータを示すブロック図である。
【００７９】
メッセージ処理サーバ１０９は、プロセッサ４０１と、入出力回路インタフェース４０２と、入出力装置４０３と、記憶装置４０４と、これらを接続する内部通信線（たとえば、バス）と、を含む。
【００８０】
プロセッサ４０１は、演算装置及び制御装置である。プロセッサ４０１が、記憶装置４０４に格納されたメッセージ処理プログラム４１２およびデータストアアクセスプログラム４１５を実行することによって、メッセージ処理サーバ１０９の機能が実現される。
【００８１】
入出力回路インタフェース４０２は、通信設備網１０７と通信するためのインタフェースである。
【００８２】
入出力装置４０３は、データの入力を受け付けたり、データを出力したり、あるいはその両方を行うための装置である。たとえば、入出力装置４０３は、キーボードやマウスなどからの入力を受け付け、プロセッサ４０１からの情報をディスプレイに表示させる。
【００８３】
記憶装置４０４は、揮発性の記憶装置（ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ａｃｃｅｓｓ  Ｒａｎｄｏｍ  Ｍｅｍｏｒｙ）など）と、不揮発性の記憶装置（ＨＤＤ、ＳＳＤなど）と、を含む。
【００８４】
記憶装置４０４は、編集用アプリケーション４１１と、メッセージ処理プログラム４１２と、システム設定ファイル２２１と、メッセージ処理ＡＰＩライブラリ２１９と、データストアアクセスプログラム４１５と、を含む。
【００８５】
編集用アプリケーション４１１は、システム運用者が、入出力装置４０３を介して、メッセージ処理プログラム４１２、データストアアクセスプログラム４１５、システム設定ファイル２２１などを、編集するためのアプリケーションである。編集用アプリケーション４１１は特定のプログラムに限定されず、一般的なテキストエディタプログラムでもよい。
【００８６】
メッセージ処理プログラム４１２は、メッセージ受信サーバ１０８のメッセージ受信プログラム３１３、またはメッセージ送信サーバ１１０のメッセージ送信プログラム５１２から、通信設備網１０７を介してメッセージ処理ＡＰＩ実行要求を受信する。受信後、メッセージ処理プログラム４１２は、メッセージを処理するか、データストアアクセスプログラム４１５を実行するか、あるいはその両方の処理を行う。メッセージ処理とは、たとえばメッセージの格納、メッセージの取得、メッセージの検索、プロトコルに合わせたメッセージ変換、メッセージの圧縮、メッセージの暗号化、などである。
【００８７】
メッセージ処理プログラム４１２は、メッセージ処理プログラム部分コード２２０を含む。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ処理サーバ１０９へメッセージ処理プログラム部分コード２２０をロードしたのち、メッセージ処理プログラムの残りの部分を編集することでメッセージ処理プログラムを用意する。
【００８８】
システム設定ファイル２２１は、メッセージ処理プログラム４１２のパラメータ設定値を含むファイルである。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ処理サーバ１０９へシステム設定ファイル２２１のテンプレートをロードして使用する。
【００８９】
メッセージ処理ＡＰＩライブラリ２１９は、メッセージ処理ＡＰＩの関数や変数を定義したライブラリであり、ＡＰＩ実行プログラムを有効化するためのデータである。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ処理サーバ１０９へメッセージ処理ＡＰＩライブラリ２１９をロードして使用する。
【００９０】
データストアアクセスプログラム４１５は、メッセージ処理プログラム４１２からメッセージの格納、取得、削除、更新、などの要求を受け付け、通信設備網１０７を介してデータストアサーバ１１１とメッセージをやり取りする。
【００９１】
図５は、本実施例のメッセージ送信サーバ１１０のハードウェア構成と、メッセージ送信サーバの記憶装置５０４が保持するデータを示すブロック図である。
【００９２】
メッセージ送信サーバ１１０は、プロセッサ５０１と、入出力回路インタフェース５０２と、入出力装置５０３と、記憶装置５０４と、これらを接続する内部通信線（たとえば、バス）と、を含む。
【００９３】
プロセッサ５０１は、演算装置及び制御装置である。プロセッサ５０１が、記憶装置に格納されたメッセージ送信プログラム５１２を実行することによって、メッセージ送信サーバ１１０の機能が実現される。
【００９４】
入出力回路インタフェース５０２は、通信設備網１０７と通信するためのインタフェースである。
【００９５】
入出力装置５０３は、データの入力を受け付けたり、データを出力したり、あるいはその両方を行うための装置である。たとえば、キーボードやマウスなどの入力を受け付け、ディスプレイに表示させる装置である。
【００９６】
記憶装置５０４は、揮発性の記憶装置（ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ａｃｃｅｓｓ  Ｒａｎｄｏｍ  Ｍｅｍｏｒｙ）など）と、不揮発性の記憶装置（ＨＤＤ、ＳＳＤなど）と、を含む。
【００９７】
記憶装置５０４は、編集用アプリケーション５１１と、メッセージ送信プログラム５１２と、システム設定ファイル２２１と、メッセージ処理ＡＰＩライブラリ２１９と、を含む。
【００９８】
編集用アプリケーション５１１は、システム運用者が、入出力装置５０３を介して、メッセージ送信プログラム５１２や、システム設定ファイル２２１などを、編集するためのアプリケーションである。編集用アプリケーション５１１は特定のプログラムに限定されず、一般的なテキストエディタプログラムでもよい。
【００９９】
メッセージ送信プログラム５１２は、通信設備網１０７を介してメッセージ処理サーバ１０９のメッセージ処理プログラム４１２にメッセージ取得要求を送信し、メッセージ処理サーバ１０９からメッセージを取得する。また、メッセージ取得後、メッセージ送信プログラム５１２は、通信設備網１０７を介してデバイス１０１またはセンサ１０２にそのメッセージを送信する。
【０１００】
メッセージ送信プログラム５１２は、ＡＰＩ実行プログラム５２１を含む。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ送信サーバ１１０へＡＰＩ実行プログラムサンプルコード２１８をロードしたのち編集して使用する。ＡＰＩ実行プログラム５２１は、ＡＰＩ実行プログラムサンプルコード２１８をもとにシステム運用者により編集されたプログラムである。メッセージ送信プログラム５１２は、メッセージ処理プログラム４１２にメッセージ処理要求を送信する際に、メッセージ処理ＡＰＩライブラリ２１９に記述された関数や変数を実行するＡＰＩ実行プログラム５２１を使用する。
【０１０１】
システム設定ファイル２２１は、メッセージ送信プログラム５１２のパラメータ設定値を含むファイルである。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ送信サーバ１１０へシステム設定ファイル２２１のテンプレートをロードして使用する。
【０１０２】
メッセージ処理ＡＰＩライブラリ２１９は、メッセージ処理ＡＰＩの関数や変数を定義したライブラリであり、ＡＰＩ実行プログラム５２１を有効化するためのデータである。システム運用者は、メッセージ通信システム開発サーバ１０５からメッセージ送信サーバ１１０へメッセージ処理ＡＰＩライブラリ２１９をロードして使用する。
【０１０３】
図６は、通信システム実装パラメータ群情報２１３の例を示す。
【０１０４】
通信システム実装パラメータ群情報２１３は、開発するメッセージ通信システム１０６である開発対象システムのパラメータの仕様を定義したデータである。
【０１０５】
通信システム実装パラメータ群情報２１３の各行は、テンプレート群２２２に記述されるパラメータの情報を示す。
【０１０６】
１列目は、パラメータの説明を示すパラメータ説明６１１である。この図の例におけるパラメータ説明６１１として、“最終送信先アドレス”、“接続キープ時間”、“メッセージ送信サーバポート番号”、などがある。
【０１０７】
２列目は、テンプレート群２２２のうち、当該パラメータの設定先のテンプレートのグループである設定先グループ６１２を示す。設定先グループ６１２は、パラメータ設定先情報２１４に記述されている設定先グループのいずれか一つを示す。設定先グループ６１２により、同じテンプレートに設定されるパラメータ群を、グルーピングすることができる。設定先グループ６１２は、システム運用者により設定されるユーザ設定項目を示す“Ｕｓｅｒ”、開発対象システムに対して定義されるシステム定義項目を示す“Ｓｙｓｔ”、メッセージ処理システム１０６の後段の宛先システム（宛先サーバ１１２など）に依存する項目を示す“Ｄｅｓｔ”などである。
【０１０８】
３列目は、当該パラメータのデフォルトの変数型６１３である
【０１０９】
４列目は、当該パラメータのデフォルトの変数名６１４である。
【０１１０】
５列目以降の各列は、一つの開発対象システムに対応する。各列は、変数名と変数型の情報６１５Ａ、６１５Ｂ、…である。たとえば、５列目にはシステム＃１を開発するための変数名と変数型の情報６１５Ａが含まれている。情報６１５Ａのうち、括弧外に示された情報は変数名を示し、括弧内に示された情報は変数型を示す。なお、開発対象システムに対し、先に設定したデフォルトの変数名６１４、変数型６１３を使用する場合、情報６１５は、デフォルトであることがわかる記法で記述される。たとえば、この図の例の情報６１５は、“％ｎａｍｅ％”でデフォルトの変数名６１４を、“％ｔｙｐｅ％”でデフォルトの変数型６１３を呼び出している。
【０１１１】
また、通信システム実装パラメータ群情報２１３に示された複数のパラメータの中に、開発対象システムにおいて、使用しないパラメータがある場合、それに対応する情報６１５には何も記述されない。たとえば、この図の６列目のシステム＃２にて“最終送信先アドレス”が不要であるため、その欄は空白とする。
【０１１２】
通信システム実装パラメータ群情報２１３によれば、システム開発者は、新しいシステムを開発する度に新規の表を用意するのではなく、通信システム実装パラメータ群情報２１３に新たな列を追加する形で運用する。また、システム開発者は、必要なパラメータが判明する度に、通信システム実装パラメータ群情報２１３に新たな行を追加する形で運用する。開発してきたメッセージ通信システム１０６が多いほど、必要なパラメータ、パラメータの命名規則、パラメータの変数型、などの情報が蓄積されるため、システム開発者は、新規のメッセージ通信システム１０６を開発するときに、蓄積された情報を有効活用できる。
【０１１３】
なお、この図では、通信システム実装パラメータ群情報２１３が表形式で記述された場合の例を示したが、この表に含まれる情報が入っていて、かつ情報が判定できれば、記述順が変わっても記述内容が増えてもよく、ＣＳＶ形式など別の一般的なフォーマットで記述されていてもよい。
【０１１４】
図７は、パラメータ設定先情報２１４の例を示す。
【０１１５】
パラメータ設定先情報２１４には、まず、通信システム実装パラメータ群情報２１３の２列目に示した設定先グループ６１２に対応する設定先グループ６２１が含まれる。たとえば、通信システム実装パラメータ群情報２１３に記述された設定先グループ６１２“Ｕｓｅｒ”、“Ｓｙｓｔ”、“Ｄｅｓｔ”は、パラメータ設定先情報２１４において、設定先グループ６２１“［Ｕｓｅｒ］”、“［Ｓｙｓｔ］”、“［Ｄｅｓｔ］”と記述される。
【０１１６】
パラメータ設定先情報２１４にて、設定先グループ６２１の表記の下には、行毎に一つのテンプレートの情報が記述される。一つのテンプレートの情報には、テンプレート名６２２、テンプレートタイプ６２３、付加情報６２３が順に記述される。
【０１１７】
テンプレート名６２２は、パラメータの設定先のテンプレートのファイル名である。テンプレートタイプ６２３は、メッセージテンプレート２１６やシステム設定ファイル２２１などのテンプレートが、どの形式を有するかを判定するための情報である。形式は、例えば、記述言語やテンプレートの目的などを示していてもよい。また、付加情報６２４は、テンプレートタイプ６２３ごとに、パラメータをテンプレートに記述するときにどのように表現するか定義するための情報である。付加情報６２４は例えば、パラメータが構造体であることを示す“ｓｔｒｕｃｔ”、その変数名“ｍｓｇｉｎｆｏ”等を示す。なお、付加情報６２４は省略されてもよい。
【０１１８】
たとえば、“［Ｕｓｅｒ］”グループの１番目のテンプレートの記述は、テンプレート名６２２が“ｍｅｓｓａｇｅ．ｈｔｔｐ”であり、テンプレートタイプ６２３がＨＴＴＰ形式のメッセージテンプレート２１６であることを示している。また、“［Ｕｓｅｒ］”グループの３番目のテンプレートの記述は、テンプレート名６２２が“ｌｏａｄ＿ｆｉｌｅ．ｃ”であり、テンプレートタイプ６２３がＣで記述されたプログラムで、かつ付加情報６２４より構造体“ｍｓｇｉｎｆｏ”の変数であることを示している。
【０１１９】
パラメータ設定先情報２１４は、開発したいメッセージ通信システム１０６ごとに、言い換えると、通信システム実装パラメータ群情報２１３の列ごとに、一つのファイルとして、システム開発者が作成する。これにより、通信システム実装パラメータ群情報２１３の設定先グループによるグルーピングは維持したまま、それぞれの開発対象システムで異なるパラメータ設定先のテンプレートを指定できる。たとえば、パラメータ設定先情報２１４Ａでは“［Ｓｙｓｔ］”グループのパラメータは“ｃｏｎｎｅｃｔ＿ｐｏｏｌ．ｃ”に設定されるが、パラメータ設定先情報２１４Ｂでは“［Ｓｙｓｔ］”グループのパラメータは“ｃｏｎｎｅｃｔ＿ｐｏｏｌ．ｊａｖａ”に設定される。
【０１２０】
なお、この図においては、パラメータ設定先情報２１４をＣＳＶ形式で記述した場合の例を示したが、このパラメータ設定先情報２１４に含まれる情報が入っており、かつその情報を判定できるのであれば、記述順が変わっても記述内容が増えてもよく、表形式など別の一般的なフォーマットで記述されていてもよい。
【０１２１】
パラメータを設定先グループに分類し、テンプレートを設定先グループに分類することにより、システム開発者は、設定先グループ毎に、通信システム実装パラメータ群情報２１３及びパラメータ設定先情報２１４を編集することができる。また、一つのパラメータが複数のテンプレートに設定される場合であっても、システム開発者及びシステム運用者は、パラメータの設定先のテンプレートを設定先グループにより把握することができ、設定すべきパラメータを判断することができる。更に、通信システム開発プログラム２１２は、通信システム実装パラメータ群情報２１３及びパラメータ設定先情報２１４における、設定先グループが整合しているか否かを判定することができる。
【０１２２】
図８は、通信システム開発プログラム２１２の中間生成ファイルであるプロトコルカスタマイズ定義情報２１５の例を示す。
【０１２３】
プロトコルカスタマイズ定義情報２１５は、主に通信システム実装パラメータ群情報２１３の各システム（５列目以降の各列の情報）について、通信システム開発プログラム２１２内のプロトコル定義情報生成部（後述）により個別に出力される。
【０１２４】
プロトコル定義情報生成部から出力されたプロトコルカスタマイズ定義情報２１５の各行において、１番目には変数名７１１が、２番目には設定先グループ７１２が、３番目には変数型７１３が、４番目には変数初期値７１４が記述される。変数名７１１、設定先グループ７１２、変数型７１３は、通信システム実装パラメータ群情報２１３の５列目以降に記述されていた情報が記述される。変数初期値７１４は、最初は変数型ごとに予め定められたデフォルト値が記述される。後述するように、変数初期値７１４はシステム開発者により編集されることができる。
【０１２５】
なお、たとえばシステム＃２の“最終送信先アドレス”のように、通信システム実装パラメータ群情報２１３において空欄で未定義だったパラメータは、プロトコルカスタマイズ定義情報２１５に出力されない。また、たとえば通信システム実装パラメータ群情報２１３のシステム＃１、２の“メッセージ文字数上限”のように、パラメータ設定先情報２１４で定義されていない設定先グループ６１２（“Ｔｅｍｐ”）に属するパラメータは、プロトコルカスタマイズ定義情報２１５に出力されないか、あるいはプロトコルカスタマイズ定義情報２１５のコメントとして出力される。
【０１２６】
図９は、システム開発者により編集されたプロトコルカスタマイズ定義情報２１５Ｃの例を示す。
【０１２７】
プロトコルカスタマイズ定義情報２１５Ｃの各行の変数初期値７１４は、編集用アプリケーション２１１などを用いて、システム開発者によって任意に変更されることができる。変数初期値７１４には変数型７１３に対応した変数や文字列を設定することができる。また、プロトコルカスタマイズ定義情報２１５Ｃにおいて、メッセージテンプレート２１６へ設定する任意のパラメータの変数初期値７１４にフィルタリングルール７１５を記述し、かつパラメータ設定先情報２１４においてそのパラメータの設定先をメッセージフィルタ２１７にしておくことで、後述するようにそのままメッセージフィルタ２１７の定義としても適用することができる。フィルタリングルールは例えば、メッセージフィルタ２１７を通過するメッセージにおける特定のパラメータの条件である。この図におけるフィルタリングルール７１５“ＭＡＴＣＨ％／￥＋８１￥ｄ｛１０｝／％”は、パラメータの文字列が“＋８１”と１０桁の数字であることを示す。フィルタリングルールに、正規表現を用いることで、任意の条件を設定することができる。
【０１２８】
また、システム開発者は、プロトコルカスタマイズ定義情報２１５Ｃには、通信システム実装パラメータ群情報２１３に記述されていないパラメータを直接追記することもできる。但し、追記したパラメータを含むプロトコルカスタマイズ定義情報２１５Ｃからテンプレート群２２２を生成する際、追記したパラメータが所属する設定先グループ７１２はパラメータ設定先情報２１４にも記述されている必要がある。
【０１２９】
システム開発者がプロトコルカスタマイズ定義情報２１５を編集し、プロトコルカスタマイズ定義情報２１５にパラメータの値を含めることにより、通信システム開発プログラム２１２は、パラメータの値をテンプレートに書き込むことができる。
【０１３０】
図１０は、通信システム開発プログラム２１２により生成されたメッセージテンプレート２１６Ａの例を示す。
【０１３１】
メッセージテンプレート２１６Ａの変数の値には、プロトコルカスタマイズ定義情報２１５に記述された変数初期値７１４が記述されている。
【０１３２】
プロトコルカスタマイズ定義情報２１５の変数初期値７１４にフィルタリングルール７１５が記述されている場合、メッセージテンプレート２１６にも同様の表現で記述される。たとえば、この図の例における“ａｄｄｒｅｓｓ−ｖａｌｕｅ”の変数の表現“％ＭＡＴＣＨ／￥＋８１￥ｄ｛１０｝／％”は、文字列が“＋８１”からはじまり、そのあとに１０個の数字が並ぶ正規表現にマッチする必要があることを示す。この表現は、メッセージフィルタ２１７において有効な表現である。
【０１３３】
システム運用者は、メッセージテンプレート２１６Ａに追記することで、後述するようなメッセージテンプレート２１６Ｃを作成し、これを後述するフィルタ生成コンパイラ３１６に通すことで、メッセージフィルタ２１７を生成することができる。
【０１３４】
図１１は、システム運用者により編集されたメッセージテンプレート２１６Ｃの例を示す。
【０１３５】
メッセージテンプレート２１６Ｃには、メッセージフィルタ２１７に適用するためのフィルタリングルールが直接記述されている。
【０１３６】
たとえば、メッセージに特定のパラメータが存在し、かつメッセージフィルタ２１７がそのパラメータの値の文字列長が１０以上である場合のみ受信する場合、システム運用者は、メッセージテンプレート２１６Ｃにおける当該パラメータの値に“％ＥＸＩＳＴ％％ＬＥＮＧＴＨ［１０−］％”と記述する。また、たとえば、メッセージの特定のパラメータの文字列が“２０１６”を含み、かつメッセージフィルタ２１７が“２０１６”から開始される場合のみ受信する場合、システム運用者は、メッセージテンプレート２１６Ｃにおける当該パラメータの値に“％ＩＮＣＬＵＤＥ／＾２０１６／％”と記述する。このようなパラメータの記法は、メッセージにおけるパラメータの値を示すと共に、メッセージフィルタ２１７におけるフィルタリングルールを示すことができる。
【０１３７】
図１２は、通信システム開発プログラム２１２により生成されたメッセージフィルタ２１７Ａの例を示す説明図である。
【０１３８】
メッセージフィルタ２１７の各行には、フィルタリング対象パラメータの変数名９１１と、フィルタリングルール９１２が記述される。
【０１３９】
プロトコルカスタマイズ定義情報２１５に記述された任意の変数名７１１で示されたパラメータを用いる開発対象システムのパラメータ設定先情報２１４に、メッセージテンプレート２１６が登録されており、かつプロトコルカスタマイズ定義情報２１５において当該パラメータに対するフィルタリングルール７１５が記述されている場合、後述するプロトコルカスタマイズ部は、当該パラメータをフィルタリング対象パラメータと判定し、メッセージフィルタ２１７に変数名９１１とフィルタリングルール９１２を記述する。
【０１４０】
システム運用者は、メッセージ受信サーバ１０８において、メッセージフィルタ２１７を直接編集するか、または後述するフィルタ生成コンパイラ３１６にメッセージテンプレート２１６を入力することで、メッセージフィルタ２１７のフィルタリング対象パラメータの変数名９１１とフィルタリングルール９１２を追加することができる。
【０１４１】
図１３は、フィルタ生成コンパイラ３１６により出力されたメッセージフィルタ２１７Ｅの例を示す。
【０１４２】
メッセージ受信サーバ１０８のフィルタ生成コンパイラ３１６は、メッセージテンプレート２１６に基づいて、あるいはメッセージテンプレート２１６及びメッセージフィルタ２１７Ａに基づいて、新規のメッセージフィルタ２１７Ｅを生成する。
【０１４３】
フィルタ生成コンパイラ３１６は、メッセージテンプレート２１６Ａからメッセージテンプレート２１６Ｃへの編集によりフィルタリングルールが追記されたパラメータ（ｐａｐ／ｐｕｓｈ−ｍｅｓｓａｇｅ／ｐｕｓｈ−ｉｄ、／ｐａｐ／ｐｕｓｈ−ｍｅｓｓａｇｅ／ｄｅｌｉｖｅｒ−ｂｅｆｏｒｅ−ｔｉｍｅｓｔａｍｐなど）を抽出し、抽出されたパラメータをフィルタリング対象パラメータとしてメッセージフィルタ２１７Ａに追加することで、メッセージフィルタ２１７Ｅを生成する。
【０１４４】
システム運用者は、メッセージテンプレート２１６Ｃを編集したのち、フィルタ生成コンパイラ３１６に入力することで、メッセージフィルタ２１７Ｅを生成させてもよいし、メッセージフィルタ２１７Ａを直接編集してもよい。前者の場合、システム運用者は、メッセージテンプレート２１６のみを管理して適宜メッセージフィルタ２１７Ｅを生成するという方針をとることができる。
【０１４５】
なお、前述のメッセージテンプレート２１６Ａ、２１６Ｃ、およびメッセージフィルタ２１７Ａ、２１７Ｅの記法は一例であって、フィルタリングルール９１２がフィルタとして認識されることができる表現であれば、記法は特に限定されない。
【０１４６】
図１４は、メッセージ通信システム開発サーバ１０５の動作を示すブロック図である。
【０１４７】
この図は、通信システム開発プログラム２１２の入力ファイル（通信システム実装パラメータ群情報２１３、パラメータ設定先情報２１４）、中間生成ファイル（プロトコルカスタマイズ定義情報２１５）、出力ファイル（メッセージテンプレート２１６、メッセージフィルタ２１７、ＡＰＩ実行プログラムサンプルコード２１８、メッセージ処理ＡＰＩライブラリ２１９、メッセージ処理プログラム部分コード２２０、システム設定ファイル２２１）、出力ファイル設定先（メッセージ受信サーバ１０８、メッセージ処理サーバ１０９、メッセージ送信サーバ１１０）を示す。この図において、実線の矢印は、データの流れを示し、破線の矢印は、システム開発者により編集可能なファイルを示す。
【０１４８】
なお、以降の説明において、メッセージ通信システム開発サーバ１０５におけるデータ編集操作は主にシステム開発者によって実行されることを前提とするが、システム運用者によってデータ編集操作がなされてもよい。
【０１４９】
通信システム開発プログラム２１２は、プロトコル定義情報生成部１００１と、複数のテンプレート作成プログラム１００２と、プロトコルカスタマイズ部１００３とを含む。各テンプレート作成プログラム１００２は、テンプレートタイプに対応する。
【０１５０】
まず、システム開発者は、通信システム実装パラメータ群情報２１３と、パラメータ設定先情報２１４と、を編集し、開発対象システムの仕様を整理する。
【０１５１】
次に、システム開発者は、通信システム実装パラメータ群情報２１３と、パラメータ設定先情報２１４と、を通信システム開発プログラム２１２に入力する。
【０１５２】
通信システム開発プログラム２１２は、通信システム実装パラメータ群情報２１３と、パラメータ設定先情報２１４と、をプロトコル定義情報生成部１００１に入力する。プロトコル定義情報生成部１００１では、開発対象システムごとにプロトコルカスタマイズ定義情報２１５を生成する。プロトコル定義情報生成部１００１の処理のフローチャートは後述する。
【０１５３】
続いてシステム開発者は、プロトコルカスタマイズ定義情報２１５と、パラメータ設定先情報２１４と、パラメータ設定先情報２１４に記述されたテンプレートタイプに対応するテンプレート作成プログラム１００２と、をプロトコルカスタマイズ部１００３に入力する。
【０１５４】
各テンプレート作成プログラム１００２には、プロトコルカスタマイズ定義情報２１５及びパラメータ設定先情報２１４から抽出された情報をファイルへ書き込むことが記述されている。また、テンプレート作成プログラム１００２には、予め設定されたテンプレートの一部を当該ファイルへ書き込むことが記述されていてもよい。プロトコルカスタマイズ部１００３は、テンプレート作成プログラム１００２を用いて、当該テンプレートのファイルを生成する。これにより、プロトコルカスタマイズ部１００３は、テンプレート群２２２（メッセージテンプレート２１６、メッセージフィルタ２１７、ＡＰＩ実行プログラムサンプルコード２１８、メッセージ処理ＡＰＩライブラリ２１９、メッセージ処理プログラム部分コード２２０、システム設定ファイル２２１）を出力する。例えば、プロトコルカスタマイズ部１００３は、メッセージテンプレート２１６のテンプレートタイプに対応するテンプレート作成プログラム１００２を用いて、空のファイルに構造体の定義等を書き込んでも良い。また、例えば、プロトコルカスタマイズ部１００３は、メッセージテンプレート２１６のテンプレートタイプに対応するテンプレート作成プログラム１００２を用いて、予め設定されたメッセージテンプレート２１６の一部を示すファイルに、プロトコルカスタマイズ定義情報２１５から抽出された情報を書き込む。プロトコルカスタマイズ部１００３の処理のフローチャートは後述する。
【０１５５】
システム開発者は、予めテンプレートタイプに対応するテンプレート作成プログラム１００２を編集することにより、通信システム開発プログラム２１２は、テンプレート作成プログラム１００２とパラメータ設定先情報２１４とプロトコルカスタマイズ定義情報２１５とに含まれる情報を、テンプレート群２２２へ書き込むことができる。
【０１５６】
テンプレート群２２２内の各ファイルは、メッセージ受信サーバ１０８、メッセージ処理サーバ１０９、メッセージ送信サーバ１１０のうち、必要とされるサーバによりロードされて使用される。たとえば、メッセージテンプレート２１６と、メッセージフィルタ２１７とが、メッセージ受信サーバ１０８によりロードされる。また、システム設定ファイル２２１は、互いに異なるフォーマットで記述された複数ファイルとして出力される。メッセージ受信サーバ１０８、メッセージ処理サーバ１０９、メッセージ送信サーバ１１０により、システム設定ファイル２２１のうち必要なファイルがロードされる。テンプレート群２２２のロードは、システム開発者による手動またはロードプログラムによる自動の操作であってもよいし、システム運用者による手動またはロードプログラムによる自動の操作であってもよい。
【０１５７】
なお、通信システム開発プログラム２１２がプロトコル定義情報生成部１００１を含まなくてもよい。この場合、プロトコルカスタマイズ部１００３は、システム開発者により編集されたプロトコルカスタマイズ定義情報２１５と、システム開発者により編集されたパラメータ設定先情報２１４に基づいて、テンプレート群２２２を生成する。
【０１５８】
図１５は、メッセージ受信サーバ１０８におけるメッセージフィルタ更新処理を示すブロック図である。
【０１５９】
なお、以降の説明において、メッセージ受信サーバ１０８におけるメッセージフィルタ更新処理は、主にシステム運用者によって実行されることを前提とするが、システム開発者によって実行されてもよい。
【０１６０】
この図において、実線の矢印は、データの流れを示し、破線の矢印は、システム運用者により編集可能なファイルを示す。
【０１６１】
システム運用者は、フィルタ生成コンパイラ３１６に入力するための、メッセージテンプレート２１６と、フィルタ生成ルール３１７と、を編集する。メッセージテンプレート２１６には、メッセージテンプレート２１６Ｃで示した記法などによりフィルタリングルール９１２を記述する。フィルタリングルール９１２として使えるものとして、たとえばパラメータの文字列長の上限、変数の下限、文字列の部分一致、文字列の完全一致、などがある。
【０１６２】
フィルタ生成コンパイラ３１６は、メッセージテンプレート２１６と、フィルタ生成ルール３１７と、を読み込む。フィルタ生成コンパイラ３１６は、フィルタ生成ルール３１７にしたがって、メッセージテンプレート２１６に含まれるフィルタリングルールを抽出し、抽出されたフィルタリングルールを含むメッセージフィルタ２１７Ｅを生成する。
【０１６３】
なお、既存のメッセージフィルタ２１７を更新する場合、フィルタ生成コンパイラ３１６は、追加で既存のメッセージフィルタ２１７（追加のメッセージフィルタ）を読み込んでもよい。フィルタ生成コンパイラ３１６は、フィルタ生成ルール３１７にしたがって、メッセージテンプレート２１６およびメッセージフィルタ２１７に含まれるフィルタリングルールから新たなフィルタリングルールを生成し、メッセージフィルタ２１７内のフィルタリングルールを、生成されたフィルタリングルールに書き換えることで、新規のメッセージフィルタ２１７Ｅを生成する。
【０１６４】
また、フィルタ生成コンパイラ３１６は、フィルタリングルール９１２に違反しないメッセージサンプル１１０３を生成してもよい。
【０１６５】
以上のメッセージフィルタ更新処理により、システム運用者は、メッセージテンプレート２１６に直接フィルタリングルール９１２を追記することで、メッセージフィルタ２１７を運用管理できる。また、システム運用者は、フィルタ生成コンパイラ３１６により出力されるメッセージサンプル１１０３から、フィルタリングを通過するプロトコルメッセージがどのようなものになるかを把握できる。また、システム運用者は、メッセージサンプル１１０３をメッセージとして開発対象システムへ送信することにより、開発対象システムをテストすることができる。
【０１６６】
以下、通信システム開発プログラム２１２の動作について説明する。
【０１６７】
図１６は、プロトコル定義情報生成部１００１の処理を示すフローチャートである。
【０１６８】
プロトコル定義情報生成部１００１は、まずステップ１２０１で、通信システム実装パラメータ群情報２１３を読み込む。続いて、プロトコル定義情報生成部１００１は、ステップ１２０２で、パラメータ設定先情報２１４を読み込む。その後、プロトコル定義情報生成部１００１は、ステップ１２０３を経てステップ１２０４に進む。
【０１６９】
プロトコル定義情報生成部１００１は、ステップ１２０４で、通信システム実装パラメータ群情報２１３内の開発対象システムを示すシステム番号をＮ＝１とし、まずＮ番目の開発対象システム（通信システム実装パラメータ群情報２１３の５列目）をチェック対象システムに設定する。次に、プロトコル定義情報生成部１００１は、通信システム実装パラメータ群情報２１３内のパラメータを示すパラメータ番号（列番号）をＭ＝１とし、Ｍの順に、Ｍ番目のパラメータが設定されているか（空欄ではないか）を判定する（１２０５）。当該パラメータが設定されている（空欄でない）場合、プロトコル定義情報生成部１００１は、ステップ１２０６に進む。当該パラメータが設定されていない（空欄である）場合、プロトコル定義情報生成部１００１は、ステップ１２０９に進む。
【０１７０】
プロトコル定義情報生成部１００１は、ステップ１２０６で、通信システム実装パラメータ群情報２１３のＭ番目のパラメータの設定先グループ６１２がパラメータ設定先情報２１４に記述されているかどうかを判定する。もし設定先グループ６１２がパラメータ設定先情報２１４に記述されていない場合、プロトコル定義情報生成部１００１は、ステップ１２０７に進み、存在しない設定先グループ６１２をエラー出力してステップ１２０９に進む。もし設定先グループ名が記述されている場合、プロトコル定義情報生成部１００１は、Ｎ番目のメッセージ通信システム１０６のためのプロトコルカスタマイズ定義情報２１５にＭ番目のパラメータの情報を追記し（１２０８）、ステップ１２０９に進む。これにより、通信システム開発プログラム２１２は、通信システム実装パラメータ群情報２１３とパラメータ設定先情報２１４が整合しているか否かを確認することができる。
【０１７１】
プロトコル定義情報生成部１００１は、ステップ１２０９において、通信システム実装パラメータ群情報２１３の最終行までステップ１２０５で判定済みかどうか、すなわち全パラメータについてステップ１２０５で判定済みかどうかを判定する。全パラメータについてステップ１２０５で判定済みでなければ、プロトコル定義情報生成部１００１は、ステップ１２１０を経てステップ１２０５に戻り、次のＭ番目のパラメータの設定有無を判定する。全パラメータについてステップ１２０５で判定済みならば、プロトコル定義情報生成部１００１は、ステップ１２１２に進む。
【０１７２】
プロトコル定義情報生成部１００１は、ステップ１２１２で、全ての開発対象システムについてステップ１２０４で設定したかどうか判定する。まだステップ１２０４の対象になっておらず、プロトコルカスタマイズ定義情報２１５が出力されていないメッセージ通信システム１０６のパラメータがある場合、プロトコル定義情報生成部１００１は、ステップ１２１１を経てステップ１２０４に戻り、次のＮ番目のメッセージ通信システム１０６（通信システム実装パラメータ群情報２１３の６列目以降）を判定対象に設定する。全ての開発対象システムについてステップ１２０４で設定済みであり、対応するプロトコルカスタマイズ定義情報２１５が出力されている場合、プロトコル定義情報生成部１００１は、処理を終了する。
【０１７３】
以上のプロトコル定義情報生成部１００１の処理によれば、複数のパラメータを示す通信システム実装パラメータ群情報２１３と、複数のテンプレートを示すパラメータ設定先情報２１４が整合しているか否かを検査し、通信システム実装パラメータ群情報２１３とパラメータ設定先情報２１４に基づいて、複数のパラメータの定義を示すプロトコルカスタマイズ定義情報２１５を生成することができる。
【０１７４】
図１７は、プロトコルカスタマイズ部１００３の処理を示すフローチャートである。
【０１７５】
プロトコルカスタマイズ部１００３は、まずステップ１３０１で、パラメータ設定先情報２１４を読み込む。続いて、プロトコルカスタマイズ部１００３は、ステップ１３０２で、プロトコルカスタマイズ定義情報２１５を読み込む。さらに、プロトコルカスタマイズ部１００３は、ステップ１３０３でテンプレート作成プログラム１００２を読み込む。その後、プロトコルカスタマイズ部１００３は、ステップ１３０４を経てステップ１３０５に進む。
【０１７６】
プロトコルカスタマイズ部１００３は、ステップ１３０５で、プロトコルカスタマイズ定義情報２１５の行番号をＮ＝１とし、パラメータが記述されている行であるＮ行目を読み込む。次に、プロトコルカスタマイズ部１００３は、読み込まれたＮ行目の設定先グループ７１２がパラメータ設定先情報２１４に登録されているか判定する（１３０６）。当該設定先グループがパラメータ設定先情報２１４に登録されていれば、プロトコルカスタマイズ部１００３は、ステップ１３０７を経てステップ１３０８に進む。当該設定先グループがパラメータ設定先情報２１４に未登録ならば、プロトコルカスタマイズ部１００３は、当該設定先グループが存在しない旨のエラーを出力して（１３０９）、ステップ１３１４に進む。
【０１７７】
プロトコルカスタマイズ部１００３は、ステップ１３０７を経たステップ１３０８で、パラメータ設定先情報２１４の当該設定先グループに記述されたテンプレートの情報のＭ＝１行目を読み込む。次に、プロトコルカスタマイズ部１００３は、読み込まれた行に記述されたテンプレートタイプに対応するテンプレート作成プログラム１００２が存在するかどうか判定し（１３１０）、存在する場合にはステップ１３１１に、存在しない場合にはステップ１３１３に進む。
【０１７８】
プロトコルカスタマイズ部１００３は、ステップ１３１１で、当該テンプレートタイプに対応したテンプレート作成プログラム１００２を実行することで、テンプレートを生成する。その後、プロトコルカスタマイズ部１００３は、ステップ１３１３に進む。
【０１７９】
プロトコルカスタマイズ部１００３は、ステップ１３１３で、パラメータ設定先情報２１４の当該設定先グループの中に、他の未生成のテンプレートが存在するかどうかを判定する。まだ未生成のテンプレートが存在する場合、プロトコルカスタマイズ部１００３は、ステップ１３１２を経てステップ１３０８に進み、パラメータ設定先情報２１４のＭ行目を読み込む。全てのテンプレートを生成済みの場合、プロトコルカスタマイズ部１００３は、ステップ１３１４に進む。
【０１８０】
プロトコルカスタマイズ部１００３は、ステップ１３１４で、ステップ１３０５のプロトコルカスタマイズ定義情報２１５の読み込みが最終行まで到達したかどうかを判定する。読込みが最終行まで到達していない場合、プロトコルカスタマイズ部１００３は、ステップ１３１５を経てステップ１３０５に進み、プロトコルカスタマイズ定義情報２１５のＮ行目を読み込む。読込みが最終行まで到達している場合、プロトコルカスタマイズ部１００３は、ステップ１３１１で生成されたテンプレート群２２２を出力したのち（１３１６）、処理を終了する。
【０１８１】
以上のプロトコルカスタマイズ部１００３の処理によれば、通信システム開発プログラム２１２は、複数のテンプレートを示すパラメータ設定先情報２１４と、複数のパラメータを示すプロトコルカスタマイズ定義情報２１５とに基づいて、システム開発者とシステム運用者により用いられるテンプレート群２２２を生成することができる。
【０１８２】
以下、システム開発者及びシステム運用者によるメッセージ通信システム１０６の開発方法について説明する。
【０１８３】
図１８は、システム開発者による通信システム開発プログラム２１２の使用方法を示すシーケンス図である。
【０１８４】
このシーケンスは、前述のプロトコル定義情報生成部１００１の処理とプロトコルカスタマイズ部１００３の処理に対応する。
【０１８５】
まず、システム開発者は、編集用アプリケーション２１１を用いて、開発対象システムの仕様に沿って、通信システム実装パラメータ群情報２１３を編集する（１４０２）。また、システム開発者は、編集用アプリケーション２１１を用いて、パラメータ設定先情報２１４において、通信システム実装パラメータ群情報２１３に記述されたパラメータグループに対応するテンプレート名とテンプレートタイプを記述する（１４０３）。
【０１８６】
次に、システム開発者は、編集した通信システム実装パラメータ群情報２１３とパラメータ設定先情報２１４を、通信システム開発プログラム２１２のプロトコル定義情報生成部１００１に入力する（１４０４）。なお、シーケンス１４０４は、前述のステップ１２０１、１２０２に該当する。
【０１８７】
シーケンス１４０４の後で、プロトコル定義情報生成部１００１は、通信システム実装パラメータ群情報２１３に記述された全ての開発対象システムの全パラメータについて、順番に、パラメータがパラメータ設定先情報２１４に登録されているかどうかを判定する（１４０７）。パラメータが記述されている場合、プロトコル定義情報生成部１００１は、そのパラメータが属するグループがパラメータ設定先情報２１４に登録されているかどうかを判定する（１４０６）。シーケンス１４０６において、通信システム実装パラメータ群情報２１３に記述されたグループがパラメータ設定先情報２１４に未登録で存在しなかった場合、プロトコル定義情報生成部１００１は、その旨をエラー出力する（１４０７）。なお、シーケンス１４０５は前述のステップ１２０５に、シーケンス１４０６は前述のステップ１２０６に、シーケンス１４０７は前述のステップ１２０７に該当する。
【０１８８】
シーケンス１４０６の後で、１４０５、１４０６の判定がともにＹＥＳの場合、プロトコル定義情報生成部１００１は、プロトコルカスタマイズ定義情報２１５に、当該パラメータの、変数名７１１、設定先のグループ７１２、変数型７１３を出力する（１４０８）。なお、シーケンス１４０８は、ステップ１２０８に該当する。シーケンス１４０５からシーケンス１４０８までのループ実行により、プロトコルカスタマイズ定義情報２１５に記述されたパラメータが、プロトコルカスタマイズ定義情報２１５に記述される。
【０１８９】
シーケンス１４０８の後、システム開発者は、編集用アプリケーション２１１を用いて、プロトコルカスタマイズ定義情報２１５に変数初期値７１４を記述したり、変数名７１１を変更したりするなど、必要に応じて編集する（１４０９）。また、システム開発者は、編集用アプリケーション２１１を用いて、テンプレート作成プログラム１００２を編集する（１４１０）。
【０１９０】
その後、システム開発者は、パラメータ設定先情報２１４と、プロトコルカスタマイズ定義情報２１５と、テンプレート作成プログラム１００２と、を通信システム開発プログラム２１２のプロトコルカスタマイズ部１００３に入力する（１４１１）。なお、シーケンス１４１１は、前述のステップ１３０１、１３０２、１３０３に該当する。
【０１９１】
プロトコルカスタマイズ部１００３は、プロトコルカスタマイズ定義情報２１５の各行に記述されたグループがパラメータ設定先情報２１４に含まれるかどうか判定し（１４１２）、含まれない場合はその旨をエラー出力する（１４１３）。含まれる場合、プロトコルカスタマイズ部１００３は、パラメータ設定先情報２１４の設定先グループ６２１のテンプレート名６２２とテンプレートタイプ６２３を読み込み、テンプレートタイプ６２３に対応するテンプレート作成プログラム１００２を実行することで、テンプレート名６２２とテンプレートタイプ６２３に対応するテンプレートを生成する（１４１４）。プロトコルカスタマイズ部１００３は、プロトコルカスタマイズ定義情報２１５の全ての行のパラメータについてシーケンス１４１２、１４１４を実行したのち、シーケンス１４１４によって生成されたテンプレート群２２２を出力する（１４１５）。なお、シーケンス１４１２は前述のステップ１３０６に該当する。シーケンス１４１３は前述のステップ１３０９に該当する。シーケンス１４１４は、前述のステップ１３０８から１３１３までに該当する。シーケンス１４１５は前述のステップ１３１６に該当する。
【０１９２】
以上のシステム開発者による通信システム開発プログラム２１２の使用方法によれば、システム開発者は、システム開発者とシステム運用者の両方のためのテンプレート群２２２を作成することができ、テンプレート群２２２に含まれるパラメータを一元管理することができる。
【０１９３】
図１９は、システム運用者によるフィルタ生成コンパイラ３１６の使用方法を示すシーケンス図である。
【０１９４】
このシーケンスは、前述のメッセージフィルタ更新処理に対応する。
【０１９５】
システム運用者は、編集用アプリケーション３１１を用いて、通信システム開発プログラム２１２により生成されたメッセージテンプレート２１６Ａに、フィルタリングルールを記述することにより、メッセージテンプレート２１６Ｃを生成する（１５０２）。また、システム運用者は、編集用アプリケーション３１１を用いて、フィルタ生成ルール３１７を編集する（１５０３）。
【０１９６】
次に、システム運用者は、編集したメッセージテンプレート２１６Ｃと、フィルタ生成ルール３１７と、必要であればメッセージフィルタ２１７Ａと、をフィルタ生成コンパイラ３１６に入力する（１５０４）。
【０１９７】
メッセージフィルタ２１７Ａが入力された場合、フィルタ生成コンパイラ３１６は、メッセージテンプレート２１６Ｃに記述されたフィルタリングルールが、メッセージフィルタ２１７Ａに記述されたフィルタリングルールに適合しているか否かを判定する（１５０５）。何れかの記述に誤りがあれば（適合していなければ）、フィルタ生成コンパイラ３１６は、その旨をエラー出力する（１５０６）。
【０１９８】
その後、フィルタ生成コンパイラ３１６は、フィルタ生成ルール３１７に従い、
メッセージテンプレート２１６Ｃ及びメッセージフィルタ２１７Ａ内のフィルタリングルールを記述した新規のメッセージフィルタ２１７Ｅを出力する（１５０７）。
【０１９９】
以上のシステム運用者によるフィルタ生成コンパイラ３１６の使用方法によれば、メッセージテンプレート２１６Ｃ及びメッセージフィルタ２１７Ａの少なくとも何れかを用いて、新規のメッセージフィルタ２１７Ｅを作成することができる。
【０２００】
本実施例によれば、メッセージ通信システム１０６の開発においてシステム開発者とシステム運用者の開発対象物の一貫性とメンテナンス性を向上させ、開発効率を改善させることができる。
【０２０１】
用語について説明する。メモリは、記憶装置２０４等に対応する。プロセッサは、プロセッサ２０１等に対応する。パラメータ情報は、通信システム実装パラメータ群情報２１３等に対応する。設定先情報は、パラメータ設定先情報２１４等に対応する。定義情報は、プロトコルカスタマイズ定義情報２１５等に対応する。生成プログラムは、テンプレート作成プログラム１００２等に対応する。生成ルールは、フィルタ生成ルール３１７等に対応する。編集アプリケーションは、編集用アプリケーション２１１、３１１等に対応する。メッセージ処理ライブラリは、メッセージ処理ＡＰＩライブラリ２１９等に対応する。部分プログラムは、ＡＰＩ実行プログラムサンプルコード２１８、メッセージ処理プログラム部分コード２２０等に対応する。
【０２０２】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。たとえば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除または置換をすることが可能である。
【符号の説明】
【０２０３】
１０１…デバイス、  １０２…センサ、  １０３…無線網、  １０４…インターネット、  １０５…メッセージ通信システム開発サーバ、  １０６…メッセージ通信システム、  １０７…通信設備網、  １０８…メッセージ受信サーバ、  １０９…メッセージ処理サーバ、  １１０…メッセージ送信サーバ、  １１１…データストアサーバ、  １１２…宛先サーバ、  ２０１…プロセッサ、  ２０２…入出力回路インタフェース、  ２０３…入出力装置、  ２０４…記憶装置
【図１】
2017146684.tif 000003
【図２】
2017146684.tif 000004
【図３】
2017146684.tif 000005
【図４】
2017146684.tif 000006
【図５】
2017146684.tif 000007
【図６】
2017146684.tif 000008
【図７】
2017146684.tif 000009
【図８】
2017146684.tif 000010
【図９】
2017146684.tif 000011
【図１０】
2017146684.tif 000012
【図１１】
2017146684.tif 000013
【図１２】
2017146684.tif 000014
【図１３】
2017146684.tif 000015
【図１４】
2017146684.tif 000016
【図１５】
2017146684.tif 000017
【図１６】
2017146684.tif 000018
【図１７】
2017146684.tif 000019
【図１８】
2017146684.tif 000020
【図１９】
2017146684.tif 000021