[Glue!] Glue Logic の概要


Glue Logic の目的

生産機器の制御システムを効率よく作ろうとする場合、 生産の現場では同時に数多くの作業が並行して行なわれるために、 並列に実行される複数の計算機プロセスがそれぞれ担当する機器を制御し、 それらのプロセスを協調的に動作させられる様にする事が望ましい。

Glue Logic は、 並列に動作する各種の機器制御プロセス間を取り持ち、 それらが互いに協調して動作できる「場」を提供する事を目的としている。

また、作成したソフトウェアのモジュール性を高め、 あるモジュールの変更が他のモジュールに可能な限り影響を与えない様にする事によって、 ソフトウェアの life cycle を延長し、その開発コストを低減すると同時に、 生産システムの運用中にその制御ソフトウェアの改良を行なえるようにする事によって、 制御している生産システムで製造しようとする製品の仕様変更や 新製品の追加などに動的に追随できるようにする事をもねらっている。

なお、 Glue Logic では計算機上で機器制御のために稼働するプロセスの事を 「分散エージェント」あるいは単に「エージェント」と呼び、 製造工程等を表現する「プロセス」と混乱しない様にしている。


Glue Logic の主な特徴

情報の共有

Glue Logic は複数のエージェントが共有する情報をデータベースに納め、 これを各エージェントからの要求に応じて参照・変更する。 この時、同時に複数のデータを参照・変更する事ができるため、 これによりデータベース内の情報の整合性を維持する事ができる。

データベース内の情報は全て名前を付けられており、 エージェントはこの名前を使って情報を指し示す。 名前はその指定の仕方によって構造を表現する事もでき、 互いに関連のある情報を組織的に表現する事ができる。

変更通知メッセージ

各エージェントは各々の処理に関連の深い情報が変化した時に、 その情報が変化したという通知を得られるように、 あらかじめ Glue Logic に登録しておく事ができる。 この機能を利用する事により、 (たとえば一定時間間隔で) 情報の変化を常に監視しておく必要がなくなるため、 ネットワーク上のトラフィックを激減させるとともに、 必要な時に必要最小限の CPU パワーでシステムを維持できるようになる。

モジュラー・プログラミング

各エージェントは全く独立に開発する事ができ、 完成して実行を始めた時点で協調作業の「場」に参加して稼働する。 このため、エージェントの追加・変更・削除や、 実機とシミュレータとの切替えなどを、 たとえシステムの稼働中であっても、 他のエージェントに何らの影響を与える事なく行なう事ができる。

また、エージェント同士のやりとりは、 全てプログラミング言語とは独立した Glue Logic を介して行なわれるので、 複数のプログラミング言語で記述されたエージェントを混在させる事ができる。

情報隠蔽 (Information Hiding)

各エージェントが他のエージェントの提供する機能を利用しようとする時には、 そのエージェントが subscribe している名前を書き換えるだけで良い。 これによって目的とするエージェントがその名前の内容を読み込み、 対応する動作を行なう事ができる。
この様にしてエージェント間のメッセージの交換を実現する事ができ、 機能を利用するクライアント・エージェントは 機能を提供するサーバ・エージェントに 依頼内容を含むメッセージを送るための名前さえ知っていれば充分である。

Glue Logic では、 あるエージェントが主たるメッセージの受け口として subscribe している名前の事を "anchor name" あるいは「アンカー名」または単に「アンカー」と呼んでいる。

サーバ・エージェントは、 同じアンカー名に書き込まれたメッセージに反応する事ができる限り、 ネットワーク内のどの計算機上で稼働していてもかまわないし、 さらにはエージェントがネットワーク内で移動する事すら可能である。 また、一つのアンカー名に書き込まれたメッセージに対して 複数のサーバ・エージェントがサービスする事も可能であり、 この場合には機能の追加を既存のエージェントの変更によってではなく、 同じアンカー名を持つエージェントの追加によって実現する事になる。

すなわち、 Glue Logic においては、 アンカー名によってサーバ・エージェントそのものを仮想化しているのである。


 [M.T. HomePage]  [written & copyrighted by Masayuki Takata]