\documentclass{jarticle} \title{\bf Open XM(タイトル未定)} \author{ Maekawa \\ Noro \\ : \\ : \\ } \date{ 1999年, 11月25日} %\pagestyle{empty} \begin{document} \maketitle \section{OpenXM の計算モデル} OpenXM は数学ソフト間でメッセージを交換するための規約である。 OpenXM とは Open message eXchange protocol for Mathematics の略である。 数学ソフト間でメッセージをやりとりさせることにより、 ある数学ソフトから他の数学ソフトを呼び出して計算を行なったり、 他のマシンで計算を行なわせたりできるようにする。 発端は野呂正行と高山信毅により、 asir と kan/sm1 を 相互に呼び出す機能を実装したことである。 現在の目標は、フリーの数学ソフトを相互に接続して 好きな言語から簡単に他の数学ソフトを使えるようにすることである。 発端となった asir と kan/sm1 での実装時には、 お互いに相手側のコマンド文字列を送っていた。 この方法は現在の OpenXM 規約でも可能であり、 使いやすくはあるが、効率的であるとはいい難い。 さらに、この方法では相手側のソフトが asir なのか kan/sm1 なのかを 判別して、相手側に合わせてコマンド文字列を作成する必要がある。 これ以外の方法として、 OpenXM 規約では共通表現形式による メッセージを用意している。 OpenXM 規約独自のデータ形式である CMO 形式(Common Mathematical Object format) 以外にも、 MP や OpenMath の XML, binary 表現形式といった他の形式をも 扱えるようにしてある。 \section{OpenXM のメッセージの構造} OpenXM で規定しているメッセージは論理的に OX 層、 SM 層、 CMO 層に分けることができる。 この中で、メッセージとして送ることが可能なのは OX 層で定義されたものだけであり、 SM 層、 CMO 層で定義されているデータは OX 層で定義されているデータの一部に埋め込まれて 送られる。 SM 層、 CMO 層で定義されているデータ以外にも 前述の MP や OpenMath の XML, binary 表現も OX 層に埋め込まれて送られるわけであるが、 どのようなデータが埋め込まれているかは、 OX 層の先頭の tag を見れば判別できるようになっている。 \section{OpenXM の計算の進行方法} OpenXM 規約でのメッセージの交換はサーバとクライアントの間で 行なわれる。クライアントからサーバへ計算させたいデータを メッセージとして送り、次いでサーバに行なわせたい動作に 対応したデータを送ることによって、計算などの、なんらかの動作を サーバに行なわせる。サーバは結果の送信も命令されなければ 行なうことはなく、クライアントは結果を受け取らずにサーバに次々と 計算を行なわせることも可能である。なお、サーバに対する動作に対応した データは SM 層で定義されており、 SM 層以外のデータではサーバは データを受け取る以外の動作をしないことになっている。 サーバはスタックを持っていると仮定されており、受け取った メッセージはすべてスタックに積まれる。ここで、 SM 層で定義された データを受け取った場合には、それに対応する動作を行なう。 このとき、必要があればサーバはスタックからデータを取り出す。 \section{CMO のデータ構造} \section{MathCap について} \section{security 対策} \section{他のプロジェクト} \section{現在提供されているソフトウェア} \end{document}