2010-11-09

「計算機代数システム Risa/Asir への招待 (II)」

今日も、昨日に引き続き、小原さんの講演が行われました。

当初、グレブナー基底の話を予定しましたが、昨夜の帰り道で、急きょ話す内容を変えたとのことで、分散計算システム OpenXM のお話をしていただきました。

OpenXM は(主に数学的計算を行う)異なるソフトウェア間で、数学の情報(数式等のデータ)をやりとりしながら非同期的に計算を行うための規約(プロトコル)およびその実装です。神戸大を本拠とする Risa/Asir の開発チームを中心として、プロトコルと実装が開発されています。これまでに、数式処理システム Risa/Asir を中心に, 計算代数システム Kan/sm1, グラフ描画ソフトウェア gnuplot, 多変数連立代数方程式の数値計算ソルバ PHCpack 等を接続する実装が公開されています。

今回のお話では、まず OpenXM を用いた分散計算(有限体上の1変数多項式の因数分解)のデモンストレーションから始まり、OpenXM の計算モデル、クライアントやサーバの構成、通信手順の概要、実装例として、数式処理システム Mathematica との接続などについて説明がありました。

私は、学生時代、数式処理システム GAL を用いた研究に関わり、オリジナルのシステムを作ることの大変さや重要性を間近で見る機会に恵まれましたが、今回のお話を聞いて、OpenXM も、独自に計算モデルやプロトコルを考え、実装してきたことのすごさを感じました。

プロトコルや計算モデルを考えるというのは、実際にどのようなシステムが求められているか、ユーザ(本当の利用者や、利用者が使うシステムを作る開発者)の要件に見合うことが求められ、その上実用性も求められますし、1度作り始めると途中の軌道修正はなかなか困難な場合もありますから、最初の設計が大変重要です。

そういう意味では、設計者には、自分がこれから作ろうとするシステムの行き先を(ある程度は)見通す力が求められます。この点で、OpenXM と、このプロジェクトを続けている方々はやはりすごいなと感じました。

もう一つ、印象に残ったのは、プロジェクトの進み方の自由度の高さです。コミッターと呼ばれる、ソースコードを改変する権限をもつ人達は、基本的に自由にソースコードを加えたり、編集したりできるそうで、新しい機能を加えるために、既存のコードを書き換えたり、新しいコードを加えたりということも、比較的自由に行われているとのことです。

こういう話を聞くと「コードの品質保証は大丈夫?誰が面倒見てるの?」という疑問がすぐにわきます。小原さんに尋ねたところ、答えはこういう内容でした(以下の記述の文責は私にあります)。

「バグを出さない」という意味での品質保証は、基本的にない。ただし「数学的に正しい計算を行う」コードを書くというのが、全体の基本。

バグの制御は特に体系的に行っていない状況で、大きなトラブルが起きていないということは、コミッターの仕事の質の高さを推測できると思います。一方「数学的に正しい計算を行う」部分については、数式処理システムによっては、特定の問題に対して誤った計算結果を返したりする場合があり、これもバグの一種ではありますが、数学的な正しさは、システムに対する信頼性に与える影響も大きいと思います。そういう意味においてこの辺の取り組み方も、なるほどと印象に残りました。

そのような感じで、今日の小原さんのお話にも大いに刺激を受けた後、夕方の研究打ち合わせを経て、夜は、田島先生、小原さんとで、楽しい会話とビールとドイツ料理を堪能し、有意義なひとときを過ごしたのでありました。

0 件のコメント: