(57)【要約】【課題】  通信する装置の機能や用途・目的に応じて適切なマーシャリング方式を自動的に決定することが可能な技術を提供する。【解決手段】    通信データを整形してサーバ装置と通信する情報処理装置は、前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信手段と、受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、を備える。【選択図】  図４
2010117867.tif 000002
【特許請求の範囲】
【請求項１】
通信データを整形してサーバ装置と通信する情報処理装置であって、
前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信手段と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、
前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
マーシャリング方式の優先順位を記載した優先順位情報を記憶する記憶手段をさらに備え、
前記決定手段は、受信した前記一覧情報が示すマーシャリング方式のうち、前記優先順位情報において最も優先順位が高いものを、前記使用するマーシャリング方式として決定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記受信手段は、さらに、前記サーバ装置のプラットフォームを識別するプラットフォーム情報を前記サーバ装置から受信し、
前記決定手段は、さらに前記プラットフォーム情報に基づいて、前記使用するマーシャリング方式を決定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記記憶手段が記憶する前記優先順位情報は、プラットフォームの種類ごとにマーシャリング方式の優先順位を記載し、
前記決定手段は、受信した前記一覧情報が示すマーシャリング方式のうち、前記優先順位情報において、前記プラットフォーム情報が示すプラットフォームの種類に対応する優先順位が最も高いものを、前記使用するマーシャリング方式として決定する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記サーバ装置との通信ポリシーの選択を受け付ける受付手段をさらに備え、
前記記憶手段は、それぞれ通信ポリシーに対応する複数の前記優先順位情報を記憶し、
前記決定手段は、受信した前記一覧情報が示すマーシャリング方式のうち、前記選択を受け付けた通信ポリシーに対応する優先順位情報において、前記プラットフォーム情報が示すプラットフォームの種類に対応する優先順位が最も高いものを、前記使用するマーシャリング方式として決定する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
通信データを整形してサーバ装置と通信する情報処理装置の情報処理方法であって、
前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信工程と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定工程と、
前記サーバ装置と送受信する通信データを、前記決定工程において決定されたマーシャリング方式で整形する整形工程と、
を備えることを特徴とする情報処理方法。
【請求項７】
通信データを整形して通信を行う、サーバ装置とクライアント装置とを有する通信システムであって、
前記サーバ装置は、前記クライアント装置からの要求に応じて、当該サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該クライアント装置に送信する送信手段を備え、
前記クライアント装置は、
前記一覧情報を前記サーバ装置から受信する受信手段と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、
前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、
を備えることを特徴とする通信システム。
【請求項８】
コンピュータを請求項１から５のいずれか１項に記載の情報処理装置として機能させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置及びその方法、通信システム、プログラム、記憶媒体に関し、特に、アーキテクチャが異なる計算機間で通信を行う際に通信データを整形する技術に関する。
【背景技術】
【０００２】
コンピュータを用いた制御システムにおいては、複数のプログラムを同時並行的に動かして所望の制御を行うケースが多い（マルチタスク、マルチプロセス）。このとき、複数のプログラム間でデータが受け渡されるが、ＣＰＵアーキテクチャやオペレーティングシステムが異なる計算機間では、意味的（論理的）には同一のデータであっても計算機ごとに主記憶上に保存されるデータの並びが異なることが一般的である。このため、システム間におけるデータの受け渡しに際してデータレイアウトの変換が必要になる。
【０００３】
データレイアウトは計算機が採用しているＣＰＵアーキテクチャと、計算機が採用しているコンパイラ等によって決定される。計算機が採用しているＣＰＵアーキテクチャとコンパイラの組み合わせを本稿ではプラットフォームと呼ぶことにする。
【０００４】
計算機上での具体的なデータレイアウトは以下の３つによって決定される。
・データ長：int, float, boolなどの型ごとに割り当てられる記憶容量。
例えば、Ｃ言語においては、同じint型でもプラットフォームによってデータ長が異なる。
・エンディアン：複数バイトからなるデータ型を主記憶に格納するバイト順。
例えば、１０進数で１０００という値を表現するときに、主記憶上で
０xE８ ０x０３ ０x００ ０x００と配置する方法（リトルエンディアン）。
【０００５】
０x００ ０x００ ０x０３ ０xE８と配置する方法（ビッグエンディアン）。
のいずれかが今日一般に用いられている。
・アラインメント：例えば３２ビットＣＰＵでは、主記憶装置から４バイトを一度に読み出すことができるため、データ項目の先頭アドレスを４の倍数に揃え、主記憶アクセス高速化をはかる手法がとられている。この場合４バイトに満たないデータは、後方に隙間（パディング）が発生する。
【０００６】
上記のうちエンディアンはＣＰＵによって決定され、データ長とアラインメントはコンパイラによって決定される。
【０００７】
異なるプラットフォーム間の通信では上記のそれぞれのレイアウト要因について変換処理が必要となる。変換処理の手順はシステムごとに若干の差異があるが、ここではその一例を示す。
・データ長：intなど、Ｃ言語の組み込み型はプラットフォームごとにサイズが異なるので、int16、int32など、明示的にサイズを規定したデータ型を独自に定義し、通信においてはそれらの独自型を使って送信データを構成することがよく行われる。
・エンディアン：送信側と受信側のエンディアンが異なる場合は、データ項目ごとにバイト順を逆転させる処理が必要となる。変換処理は送信側か受信側のどちらかで行えばよいが、変換の要否を判定するには事前に互いのエンディアンを知る必要がある。このため、ネットワーク上に流すデータは常にビッグエンディアンに変換するという規約（ネットワークバイトオーダ）で運用しているシステムも存在する。
・アラインメント：データ送信時にパディングを抜いた形式に変換しておき（シリアライズ）、受信側でパディングを挿入して（デシリアライズ）自身のアラインメントに合致するように整形する。
【０００８】
このようなエンディアンやアラインメントなどのデータレイアウトの変換処理のことをマーシャリングと呼ぶ。
【０００９】
実際の開発に際してはマーシャリング処理をアプリケーションロジックに組み込むことは通常せず、マーシャリングを専門に処理する仲介プログラム（スタブ、スケルトン）を作成し、制御プログラムとリンクして利用する。仲介プログラムはＩＤＬ（Interface Definition Language）等で記述されたインタフェース記述からＩＤＬコンパイラによりソースコードを自動生成する方式が一般的である。
【００１０】
通信相手が固定的な場合は、通信相手にあわせて予め定められたマーシャリング処理を行うことで、プログラム同士の通信が実現できる。しかし、複数の制御プログラムを汎用的に扱うアプリケーションにおいて、制御プログラムに与えるデータ構造を変更したり、新しい制御プログラムを追加したりする場合は、その都度対象プログラムの仲介プログラムを作成する必要がある。さらに、それをリンクするために、アプリケーションを再構築する必要がある。
【００１１】
一方、組み込みシステムではマーシャリングに要する処理コストを抑える目的で、通信プラットフォームの組み合わせごとに最適化した複数のマーシャリング方式を用意している場合がある。このような環境においては、レスポンスを軽くしたい、特定のマーシャリングルーチンのテストを行いたいなど、目的によってマーシャリング方式を切り替えて使用するニーズが存在する。しかし、目的に対する最適なマーシャリング方式は自プラットフォームと接続先プラットフォームとの組み合わせによって変わるため、目的に合わせた最適なマーシャリング方式を選択する必要がある。
【００１２】
また、組み込みシステムの開発においては、安価で開発環境の充実した汎用ＰＣでの開発および単体テストと、ＣＰＵが異なる実機でのテストを反復して行うことが多い。この場合、同一プログラムでも稼動プラットフォームが頻繁に変更されるため、マーシャリングの方式が安定しない。したがって、このような環境においても、プラットフォームの変更に伴う設定変更やアプリケーションの再構築を行わずにすむようにしたい。
【００１３】
特許文献１には、複数のマーシャリング方式の中から実際に使用するものを実行時に決定する構成が開示されている。また、特許文献２および特許文献３には、サーバ側の負荷が最小になるようにマーシャリング手順を最適化する構成が開示されている。
【特許文献１】特登録０２９７８８０７号公報
【特許文献２】特開２０００−２０４９０号公報
【特許文献３】特開２００１−１６７０５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかし、特許文献１の構成では、サーバ側サービスと、利用するマーシャリング方式とが、命名サーバ内にて１対１で関連付けられている。このため、このような構成では、クライアントの機能や通信の用途・目的に応じて最適なマーシャリング方式をクライアント側で柔軟に選択することができない。
【００１５】
また、特許文献２、特許文献３の構成においてもサーバの負荷を下げることはできるが、通信する装置の機能や通信の用途・目的に応じて最適なマーシャリング方式を柔軟に選択することができない。
【００１６】
本発明は上記課題に鑑みなされたものであり、通信する装置の機能や用途・目的に応じて適切なマーシャリング方式を自動的に決定することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明による情報処理装置は以下の構成を備える。即ち、
通信データを整形してサーバ装置と通信する情報処理装置であって、
前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信手段と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、
前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、
を備える。
【００１８】
また、本発明による情報処理方法は以下の構成を備える。即ち、
通信データを整形してサーバ装置と通信する情報処理装置の情報処理方法であって、
前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信工程と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定工程と、
前記サーバ装置と送受信する通信データを、前記決定工程において決定されたマーシャリング方式で整形する整形工程と、
を備える。
【００１９】
また、本発明による通信システムは以下の構成を備える。即ち、
通信データを整形して通信を行う、サーバ装置とクライアント装置とを有する通信システムであって、
前記サーバ装置は、前記クライアント装置からの要求に応じて、当該サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該クライアント装置に送信する送信手段を備え、
前記クライアント装置は、
前記一覧情報を前記サーバ装置から受信する受信手段と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、
前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、
を備える。
【発明の効果】
【００２０】
本発明によれば、通信する装置の機能や用途・目的に応じて適切なマーシャリング方式を自動的に決定することが可能な技術を提供することができる。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。また、本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００２２】
（装置制御システム）
図１は本実施形態に係る装置制御システム（通信システム）の構成例を示す図である。図１において、クライアント１００とサーバ３００が通信媒体４０１で接続されている。また、クライアント２００とサーバ３００が通信媒体４０２で接続されている。
【００２３】
ここでクライアント１００のプラットフォームをＡ、クライアント２００のプラットフォームをＢ、サーバ３００のプラットフォームをＣとする。プラットフォームＡはリトルエンディアンのＣＰＵ上で動作する汎用ＰＣ用のＯＳである。プラットフォームＢはリトルエンディアンのＣＰＵ上で動作するＵＮＩＸ（登録商標）系ＯＳである。プラットフォームＣはビッグエンディアンのＣＰＵ上で動作するリアルタイムＯＳである。
【００２４】
本実施形態において、クライアント２００とサーバ３００は組み込みの制御機器である。組み込み機器に実装されるマーシャリング機構は、リアルタイム性能を確保する必要があるため、従来技術で構築される。具体的には、この両者間の通信におけるマーシャリングは、マーシャリングを専門に処理する仲介プログラムであるスタブ２０２とスケルトン３０２の間で行われる。ここで、スタブ２０２とスケルトン３０２は、インタフェース記述言語（Interface Definition Language）などで記述されたＩＤＬ５０２をＩＤＬコンパイラ５０１に読み込ませて生成される。なお、スケルトン３０２は、サーバ３００が使用可能なマーシャリング方式のリスト３０２ａを保持している。
【００２５】
スタブ２０２はクライアントアプリケーション２０１とリンクされ、スケルトン３０２はサーバアプリケーション３０３とリンクされている。クライアント２００とサーバ３００との通信は、クライアント側の通信制御部２０３とサーバ側の通信制御部３０１を介して行われる。この通信機構は、データのやり取りのほか、クライアントからサーバに対する遠隔関数呼び出し（ＲＰＣ：Remote Procedure Call）にも使用される。
【００２６】
装置制御アプリケーション１０１は、クライアント１００上で動作するアプリケーションである。本実施形態において、装置制御アプリケーション１０１は、サーバアプリケーション３０３に接続して、サーバ３００上のプログラムのテストやデバッグを行う用途に用いられる。例えば、サーバ３００の状態を監視したり、クライアントアプリケーション２０１がサーバアプリケーション３０３に対して呼び出す遠隔関数呼び出しをクライアントアプリケーション２０１の代わりに実行したりする。組み込み機器はそれ自体に入力装置、表示装置を備えていないものも多いため、このような形態でテスト、デバッグが行われることが多い。
【００２７】
装置制御アプリケーション１０１は、スタブプログラムを静的にリンクしない。代わりに、ＩＤＬコンパイラ５０１によって生成された接続対象のサーバアプリケーション３０３のインタフェース情報１１０を、実行時に外部（５０１）から読み込んで、通信に使用するメッセージの仕様を決定する。このようにして、インタフェース情報１１０に情報を追加することにより、多種のサーバアプリケーションへの通信が可能となる汎用性が実現される。
【００２８】
本実施形態に係るクライアント１００は、サーバ３００との通信に使用するマーシャリング方式を決定するための複数のストラテジを予め記憶しておき、いずれかのストラテジを選択して、そのストラテジに基づいてマーシャリング方式を決定する。１０８はクライアント１００が記憶する複数のストラテジ情報である。本実施形態では、サーバの負荷が最小になるマーシャリング方式を選択するといったポリシーごとに、使用するマーシャリング方式の優先順位が規定されている。ストラテジ情報の詳細は後述する。
【００２９】
１０２は、複数のストラテジ情報１０８から使用するストラテジを選択するストラテジ選択部である。ストラテジ選択部１０２が選択したストラテジは、以下、マーシャリング方式決定ストラテジ１０３と呼ぶ。
【００３０】
１０４はマーシャリング方式決定ストラテジ１０３に基づいて使用するマーシャリング方式１０５を決定するマーシャリング方式決定部である。
【００３１】
１０６は装置制御アプリケーション１０１がサーバと送受信するデータに、決定されたマーシャリング方式１０５に基づいてマーシャリング処理を行うデータ整形部である。このようにして、装置制御アプリケーション１０１がサーバと送受信するデータは、データ整形部１０６でマーシャリング処理が施されて、通信制御部１０７によりサーバと送受信される。
【００３２】
１０９はプラットフォーム情報であり、プラットフォームごとに、プラットフォームの識別子、エンディアンのタイプ、データ型ごとのデータ長やアラインメント等を特定する。１１０はインタフェース情報であり、接続対象のサーバアプリケーション３０３のインタフェースに関する情報を記述する。
【００３３】
（ハードウェア構成）
上記のクライアント１００、クライアント２００、サーバ３００は、パーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）、携帯情報端末（ＰＤＡ）等の情報処理装置で実現される。そこでこれらの情報処理装置のハードウェア構成について、図１１を参照して説明する。図１１は、本実施形態に係る情報処理装置のハードウェア構成例を模式的に示したブロック図である。
【００３４】
図１１において、９９０はＣＰＵである。ＣＰＵ９９０は、後述するハードディスク装置９９５に格納されているアプリケーションプログラム、オペレーティングシステム（ＯＳ）や制御プログラム等を実行し、ＲＡＭ９９２にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【００３５】
９９１はＲＯＭであり、内部には基本Ｉ／Ｏプログラム等のプログラム、基本処理において使用するフォントデータ、テンプレート用データ等の各種データを記憶する。９９２は各種データを一時記憶するためのＲＡＭであり、ＣＰＵ９９０の主メモリ、ワークエリア等として機能する。
【００３６】
９９３は記録媒体へのアクセスを実現するための外部記憶ドライブであり、メディア（記録媒体）９９４に記憶されたプログラム等を本コンピュータシステムにロードすることができる。尚、メディア９９４には、例えば、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤ、ＵＳＢメモリ、ＭＯ、フラッシュメモリ等が含まれる。
【００３７】
９９５は外部記憶装置であり、本実施形態では大容量メモリとして機能するハードディスク装置（以下、ＨＤと呼ぶ）を用いている。ＨＤ９９５には、アプリケーションプログラム、ＯＳ、制御プログラム、関連プログラム等が格納される。
【００３８】
９９６は指示入力装置であり、キーボードやポインティングデバイス（マウス等）、タッチパネル等がこれに相当する。指示入力装置９９６を用いて、ユーザは、本実施形態に係る情報処理装置に対して、装置を制御するコマンド等を入力指示する。
【００３９】
９９７はディスプレイであり、指示入力装置９９６から入力されたコマンドや、それに対する情報処理装置の応答出力等を表示したりするものである。
【００４０】
９９９はシステムバスであり、情報処理装置内のデータの流れを司るものである。９９８はインターフェイス（以下、Ｉ／Ｆという）であり、このＩ／Ｆ９９８を介して外部装置とのデータのやり取りを行う。
【００４１】
尚、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【００４２】
本実施形態では、メディア９９４から本実施形態に係るプログラム及び関連データを直接ＲＡＭ９９２にロードして実行させる例を想定するが、これに限られない。例えば、本実施形態に係るプログラムを動作させる度に、既にプログラムがインストールされているＨＤ９９５からＲＡＭ９９２にロードするようにしてもよい。また、本実施形態に係るプログラムをＲＯＭ９９１に記録しておき、これをメモリマップの一部をなすように構成し、直接ＣＰＵ９９０で実行することも可能である。
【００４３】
また、本実施形態では、説明の便宜のため、本実施形態に係る情報処理装置を１つの装置で実現した構成について述べるが、複数の装置にリソースを分散した構成によって実現してもよい。例えば、記憶や演算のリソースを複数の装置に分散した形に構成してもよい。或いは、情報処理装置上で仮想的に実現される構成要素毎にリソースを分散し、並列処理を行うようにしてもよい。
【００４４】
（インタフェース情報例）
図２はインタフェース情報の一例を示す図である。図２の例では、インタフェースＸが、２階層の深さレベルを有する、合計６つのデータ項目から構成されている。
【００４５】
（マーシャリング方式例）
図３は本実施形態で定義されているマーシャリング方式の一覧を例示する図である。図３のように、本実施形態では、３つのマーシャリング方式例を規定している。
・NONSERIAL_SAMEORDERは、サーバ側プラットフォームのネイティブのデータレイアウトでデータを送受信する方式である。この方式では、サーバ側の処理は最も軽いが、同一プラットフォーム間通信でない場合はクライアント側でマーシャリング処理が必要となる。
・SERIALIZE_SAMEORDERは、データをシリアライズし、エンディアンはサーバ側に合わせて送受信する方式である。この方式では、サーバ側はデータのデシリアライズのみ行う。
・SERIALIZE_DIFFORDERは、データをシリアライズし、サーバ側と異なるエンディアンでデータを送受信する方式である。この方式は、エンディアンの異なるＣＰＵ間の通信で、エンディアン変換をサーバ側で行う場合に用いられる。
【００４６】
本実施形態では通信を行うプラットフォームの組み合わせによってマーシャリング方式が決定される。クライアント２００とサーバ３００はＣＰＵアーキテクチャが異なるため、スタブ２０２とスケルトン３０２の間の通信ではSERIALIZE_DIFFORDERが使用される。スタブ２０２は通信を行う相手が固定（サーバ３００のスケルトン３０２のみ）であるため、実装されるマーシャリング方式はSERIALIZE_DIFFORDERのみである。一方、スケルトン３０２はクライアント２００以外のクライアントからの接続も想定している場合、複数のマーシャリング方式に対応する。例えば、サーバアプリケーション３０３が同じサーバ３００内の別プログラムとも通信を行う場合、スケルトン３０２はNONSERIAL_SAMEORDERにも対応する。
【００４７】
なお、図３にあげたマーシャリング方式は一例でありこれに限られない。例えば、データのシリアライズを行わないが、サーバ側と異なるエンディアンでデータを送受信する方式を使用してもよい。
【００４８】
（マーシャリング方式決定処理）
図４は、クライアント１００のマーシャリング方式決定部１０４が、サーバプログラム３０３との通信に使用するマーシャリング方式を決定する処理のフローチャートである。図４の各ステップはクライアント１００のＣＰＵの制御に基づいて実行される。
【００４９】
ステップＳ１００１において、通信に先立って初期化処理を行う。初期化処理では、クライアント１００は、サーバ３００のスケルトンに、エンディアン、プラットフォーム、使用可能マーシャリング方式を問い合わせる。装置制御アプリケーション１０１がマーシャリングを行って通信をするためには、サーバ３００のエンディアン、アラインメントおよびスケルトン３０２が使用可能なマーシャリング方式に関する情報が必要なためである。
【００５０】
初期化処理では、装置制御アプリケーション１０１からサーバアプリケーション３０３に初期化要求メッセージを送信する。初期化要求メッセージを受信すると、サーバアプリケーション３０３は、サーバ３００のプラットフォーム情報（プラットフォーム識別子）および使用可能なマーシャリング方式リスト（一覧情報）３０２ａを含んだ返信メッセージを返す。
【００５１】
なお、この初期化処理中に交換されるメッセージは仕組み上マーシャリングが不可能なため、マーシャリングが不要になるよう、エンディアン、アラインメントの影響を受けない形式で事前に規定されたレイアウトで通信される。
【００５２】
ステップＳ１００２において、マーシャリング方式決定部１０４は、スケルトン３０２からの返信メッセージ中のプラットフォーム識別子を読み取り、当該識別子を持つプラットフォーム情報がプラットフォーム情報１０９の中にあるか確認する。
【００５３】
図５は初期化要求メッセージに対するサーバからの返信メッセージのレイアウト例を示す図である。図５の例ではビット単位でレイアウトを規定しているためエンディアン、アラインメントの影響を受けない。
【００５４】
図５の例では、先頭２ビットにサーバのプラットフォーム識別子を記述している。図５の例では、１〜２ビット目の各ビットの意味は以下のとおりである。
・００：プラットフォームＡ。
・０１：プラットフォームＢ。
・１０：プラットフォームＣ。
【００５５】
３ビット目にサーバのＣＰＵエンディアンを記述している。例えば、３ビット目のビット値０はリトルエンディアンを示し、ビット値１はビッグエンディアンを示す。
【００５６】
５〜７ビット目に各マーシャリング方式の使用可否を記述している。図５の例では、５ビット目がNONSERIAL_SAMEORDERの使用可否、６ビット目がSERIALIZE_SAMEORDERの使用可否、７ビット目がSERIALIZE_DIFFORDERの使用可否を示している。ビットが立っている（値が１）場合、対応するマーシャリング方式が当該スケルトンにおいて使用可能であることを意味している。
【００５７】
プラットフォームが判明すればＣＰＵエンディアンはおのずと決定するため、３ビット目のエンディアン情報は冗長であるが、未知のプラットフォーム識別子への対応のために情報を持たせてある。図５の例では、９ビット目以降にメッセージ本文が格納される。
【００５８】
ステップＳ１００２においてプラットフォーム情報１０９の中に当該識別子が見つからない場合は、未知のプラットフォームであると判定してステップＳ１００３に進む。既知である場合は後述するようにステップＳ１００４に進む。
【００５９】
ステップＳ１００３では、返信メッセージ中の使用可能マーシャリング方式を確認した上で、SERIALIZE_SAMEORDERが使用可能であるか確認する。使用可能である場合は、Ｓ１００４において、使用するマーシャリング方式をSERIALIZE_SAMEORDERと決定し、処理を終了する。
【００６０】
SERIALIZE_SAMEORDERが使用不可である場合は、ステップＳ１００５において、SERIALIZE_DIFFORDERが使用可能であるか確認する。使用可能である場合は、Ｓ１００６において、使用するマーシャリング方式をSERIALIZE_DIFFORDERと決定し、処理を終了する。
【００６１】
SERIALIZE_DIFFORDERも使用不可の場合は、ステップＳ１００７においてエラーとして終了する。
【００６２】
このように、サーバのプラットフォームが未知の場合、マーシャリング方式が決定したら、メッセージは常にシリアライズし、返信メッセージ中の相手方エンディアン情報を確認し、必要に応じてエンディアン変換を行う。
【００６３】
この初期化メッセージの交換により、装置制御アプリケーション１０１は、サーバ３００のプラットフォームとサーバアプリケーション３０３に対して使用可能なマーシャリング方式を知ることができる。なお、この初期化メッセージ交換はスタブ２０２とスケルトン３０２の間でも行われるが、スタブ２０２は使用するマーシャリング方式が静的に決定しているため、その決定において返信メッセージ内の情報は特に利用されない。
【００６４】
一方、ステップＳ１００２において、プラットフォーム情報１０９中からプラットフォームを特定できた場合は、ステップＳ１００８に進む。ステップＳ１００８では、マーシャリング方式ストラテジ１０３の中から、特定できたプラットフォーム（例えば、プラットフォームＣ）に対応する優先順位情報を取得する。
【００６５】
次に、ステップＳ１００９において、マーシャリング方式決定ストラテジ１０３の中から、優先順位の高いマーシャリング方式から順に、返信メッセージと照合して使用可能であるか評価する。
【００６６】
使用可能なマーシャリング方式が見つかった場合は、ステップＳ１０１０において、そのマーシャリング方式を使用する方式として決定し、それ以降の評価を打ち切る。一方、使用可能なマーシャリング方式が存在しない場合はステップＳ１０１１においてエラーとして終了する。
【００６７】
クライアント１００は、上述のように決定したマーシャリング方式を使用して、通信データを整形してサーバ３００と通信を行う。
【００６８】
上記のように、クライアント１００は、通信データを整形してサーバ３００と通信する際に、サーバ３００が対応しているマーシャリング方式の一覧を示す一覧情報をサーバ３００に要求する。そして、一覧情報をサーバ３００から受信すると、受信した一覧情報に基づいて、使用するマーシャリング方式を決定して、サーバ３００と送受信する通信データを、決定したマーシャリング方式で整形する。このため、本実施形態の構成によれば、クライアント１００、サーバ３００の機能や用途・目的に応じて適切なマーシャリング方式を自動的に決定することが可能である。
【００６９】
また、クライアント１００は、マーシャリング方式の優先順位を記載したストラテジ情報（優先順位情報）をＨＤ９９５等の記憶装置に記憶している。そして、受信した一覧情報が示すマーシャリング方式のうち、ストラテジ情報において最も優先順位が高いものを、使用するマーシャリング方式として決定する。このため、本実施形態によれば、適切なストラテジ情報を予め用意しておくことによって、用途に応じた適切なマーシャリング方式を自動的に決定することができる。
【００７０】
また、クライアント１００は、サーバ３００のプラットフォームを識別するプラットフォーム情報をサーバ３００から受信し、このプラットフォーム情報にも基づいて、使用するマーシャリング方式を決定する。このため、サーバ３００のプラットフォームに応じた適切なマーシャリング方式を自動的に決定することができる。
【００７１】
また、ストラテジ情報は、プラットフォームの種類ごとにマーシャリング方式の優先順位を記載している。そして、クライアント１００は、受信した一覧情報が示すマーシャリング方式のうち、ストラテジ情報において、サーバ３００のプラットフォームの種類に対応する優先順位が最も高いものを、使用するマーシャリング方式として決定する。このため、サーバ３００のプラットフォームと、クライアント１００の方針に応じて適切なマーシャリング方式を自動的に決定することができる。
【００７２】
クライアント１００は、ストラテジ選択部１０２において、サーバ装置との通信ポリシーの選択を受け付ける受付処理を行う。そして、クライアント１００は、それぞれ通信ポリシーに対応する複数のストラテジ情報を記憶している。このような構成において、クライアント１００は、選択された通信ポリシーに対応するストラテジ情報において、サーバ３００のプラットフォームの種類に対応する優先順位が最も高いものを、使用するマーシャリング方式として決定する。このため、クライアント１００とサーバ３００の間の通信ポリシーに応じて最適なマーシャリング方式を自動的に決定することができる。
【００７３】
（マーシャリング方式決定ストラテジ例）
図６はマーシャリング方式決定ストラテジ１０３の一例を示す図である。マーシャリング方式決定ストラテジは複数用意しておき、装置制御アプリケーションの使用目的に応じて選択できるようにしておく。例えば、サーバの負荷を下げたい場合にはLIGHTEN_SERVERを選択する。また、クライアントアプリケーション２０１から呼び出される遠隔関数呼び出しを装置制御アプリケーション１０１から実行したい場合はEMULATE_Bを選択する。本実施形態では、ストラテジ選択部１０２を用いて、ストラテジ情報１０８の中から実際に使用するマーシャリング方式決定ストラテジ１０３を選択する。
【００７４】
（プラットフォーム情報例）
図７は、プラットフォーム情報の一例を示す図である。プラットフォーム情報１０９には、プラットフォームごとに、初期化要求メッセージに対するサーバからの返信メッセージにおける識別子、ＣＰＵエンディアン、アラインメント規則が記述される。アラインメント規則はNONSERIAL_SAMEORDERで通信する際のデータ整形に用いられる。
【００７５】
（マーシャリング処理例）
図８は本実施形態において、プラットフォームＡがクライアントとして動作する場合、クライアント側に発生するマーシャリング処理内容の一例を示す図である。例えば、プラットフォームＣのサーバ３００にNONSERIAL_SAMEORDERで接続する場合は、通信メッセージ内の項目ごとにバイト順を逆転させるエンディアン変換を行う。また、プラットフォーム情報１０９に記述されたＣ式のアラインメント規則にしたがってアラインメント変換を行う。
【００７６】
一方、サーバ３００側は受信したメッセージを自プラットフォームの規定のレイアウトに戻す処理（アンマーシャリング）が必要である。NONSERIAL_SAMEORDERで通信を行っている場合、受信したメッセージがすでに規定のレイアウトになっているのでアンマーシャリングは必要ない。SERIALIZE_SAMEORDERで通信を行っている場合は、自プラットフォームのアラインメント規則に従ってデータにパディングを挿入する。SERIALIZE_DIFFORDERで通信を行っている場合は、項目ごとにエンディアン変換を行った上で、自プラットフォームのアラインメント規則に従ってデータにパディングを挿入する。したがって、サーバ側では相手プラットフォームに関係なくアンマーシャリングに要する処理コストは、NONSERIAL_SAMEORDER＜SERIALIZE_SAMEORDER＜SERIALIZE_DIFFORDERとなる。
【００７７】
（マーシャリング方式決定優先順位例）
図９は本実施形態において、プラットフォームＡがクライアントとして動作し、LIGHTEN_SERVERストラテジを選択した場合のマーシャリング方式決定優先順位の一例を示す図である。前述の理由により、サーバ側の負荷を軽くするというストラテジにおける優先順位は、NONSERIAL_SAMEORDER＞SERIALIZE_SAMEORDER＞SERIALIZE_DIFFORDERとなる。
【００７８】
図１０は本実施形態において、プラットフォームＡがクライアントとして動作し、LIGHTEN_CLIENTストラテジを選択した場合のマーシャリング方式決定優先順位の一例を示す図である。ここでプラットフォームＢに対する決定優先順位について、一例として説明する。クライアントの処理をなるべく軽くするというストラテジから、データアラインメントはサーバ側に合わせるのではなく、シリアライズして送信し、サーバ側でアンマーシャリングを行う。エンディアンはＡとＢで同じなため、エンディアン変換を行う必要がないので最も優先すべきマーシャリング方式はSERIALIZE_SAMEORDERとなる。さらに他のマーシャリング方式の優先順位を考えると、NONSERIAL_SAMEORDERとSERIALIZE_DIFFORDERのどちらがクライアント負荷を軽くするかはデータアラインメントの差異の大きさに依存し、一概に言えない。本実施形態ではエンディアン変換を行う負荷のほうが、サーバ側のデータアラインメントに合わせてデータを整形する負荷よりも軽いと仮定する。その場合のマーシャリング方式決定優先順位はSERIALIZE_SAMEORDER＞SERIALIZE_DIFFORDER＞NONSERIAL_SAMEORDERとなる。
【００７９】
上記のように、本実施形態によれば、複数のマーシャリング方式選択ストラテジとストラテジ選択部を持つことによって、装置制御アプリケーションの使用目的に最適なマーシャリング方式の選択を自動化することが可能となる。
【００８０】
また、実行時にサーバに対して動作プラットフォームと使用可能マーシャリング方式を問い合わせ、実行時にマーシャリング方式を決定する。このため、サーバの動作プラットフォームを変更してもクライアント側の装置制御アプリケーションの再構築や設定変更が不要となる。
【００８１】
また、本実施形態では、インタフェースを定義したインタフェース情報を実行時に外部から読み込む。このため、送受信データの項目が変更になってもインタフェース情報を差し替えるだけでよく、装置制御アプリケーションの再構築が不要となる。
【００８２】
本実施形態に係る構成は、装置制御アプリケーションが稼動するクライアントにおいて、使用可能な複数のマーシャリング方式のうち一つを決定するためのマーシャリング方式決定部を備える。このため、本実施形態の構成によれば、通信実行時に適切なマーシャリング方式を自動的に決定して実行することができる。
【００８３】
また、前記のマーシャリング方式決定部がマーシャリング方式を選択するための具体的な基準を定義したマーシャリング方式決定ストラテジを備える。ここでマーシャリング方式決定ストラテジはマーシャリング方式の決定優先順位を数値化したデータの形式でもよいし、マーシャリング方式の決定ロジックを実装したプログラムモジュールの形式でもよい。マーシャリング方式決定ストラテジは装置制御アプリケーションの使用目的に応じてマーシャリング方式の決定優先順位を変化させたものを複数用意しておく。マーシャリング方式決定ストラテジ群は装置制御アプリケーションに静的に組み込んでもよいし、実行時に外部記憶から読み込んでもよい。このため、ストラテジに応じて最適なマーシャリング方式を自動的に決定させることができる。
【００８４】
また、前記の複数のマーシャリング方式決定ストラテジの中から実行時に使用するストラテジを決定するためのストラテジ選択部を備える。ストラテジ選択部は、装置制御アプリケーションの起動引数であってもよいし、装置制御アプリケーションがＧＵＩを持つ場合はコンボボックスのような選択部品を用いてもよい。このため、通信の用途・目的に応じて適切なストラテジ自体を選択して、マーシャリング方式を自動決定させることができる。
【００８５】
また、送受信データの項目を定義したインタフェース定義を外部から読み込み、マーシャリング方式決定ストラテジによって決定されたマーシャリング方式に従って送受信データを加工するデータ整形部を備える。このため、自動決定されたマーシャリング方式に基づいて、通信データを整形することができる。
【００８６】
また、整形された送信データを制御対象プログラムに送信する通信制御部を備える。このため、整形された通信データをサーバ３００と送受信することができる。
【００８７】
また、通信開始時において、クライアントからサーバに対して初期化要求メッセージを送信し、サーバからの返信メッセージにはサーバの動作プラットフォームおよび使用可能なマーシャリング方式の一覧が記載され、クライアントに通知される。このため、クライアントはマーシャリング方式の一覧に基づいて最適なマーシャリング方式を決定することができる。
【００８８】
上記の仕組みにより、目的に合わせた最適なマーシャリング方式を自動選択することが可能になる。
【００８９】
＜＜その他の実施形態＞＞
また、本発明の目的は、コンピュータプログラムやコンピュータプログラムを格納したコンピュータ読み取り可能な記録媒体によっても実現可能である。例えば、次のようにすることによっても本発明の目的は達成される。すなわち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明の技術的範囲に含まれる。
【００９０】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も本発明の技術的範囲に含まれることは言うまでもない。
【００９１】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の各機能が実現される場合も、本発明の技術的範囲に含まれる。
【００９２】
なお、本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートで示される処理を実行するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００９３】
【図１】装置制御システムの構成例を示す図である。
【図２】インタフェース情報の一例を示す図である。
【図３】マーシャリング方式の一覧を例示する図である。
【図４】通信に使用するマーシャリング方式を決定する処理のフローチャートである。
【図５】初期化要求メッセージに対するサーバからの返信メッセージのレイアウト例を示す図である。
【図６】マーシャリング方式決定ストラテジの一例を示す図である。
【図７】プラットフォーム情報の一例を示す図である。
【図８】マーシャリング処理内容の一例を示す図である。
【図９】マーシャリング方式決定優先順位の一例を示す図である。
【図１０】マーシャリング方式決定優先順位の一例を示す図である。
【図１１】情報処理装置のハードウェア構成例を模式的に示したブロック図である。
【図１】
2010117867.tif 000003
【図２】
2010117867.tif 000004
【図３】
2010117867.tif 000005
【図４】
2010117867.tif 000006
【図５】
2010117867.tif 000007
【図６】
2010117867.tif 000008
【図７】
2010117867.tif 000009
【図８】
2010117867.tif 000010
【図９】
2010117867.tif 000011
【図１０】
2010117867.tif 000012
【図１１】
2010117867.tif 000013