Ruby/Mathematica は C言語のライブラリである MathLink(TM) を介して Ruby <-> Mathematica の双方向通信を行なうことを目的として作られた Ruby の拡張ライブラリです。このライブラリを使うことで、Ruby プログラム がある種の計算を Mathematica にバックグラウンドでさせることが可能です。 MathLinkが用意している通信環境のおかげで、計算サーバと Ruby プログラムが 走る計算機を分けることもできます。いろいろな応用が思いつきそうですね。
まだαバージョンです。大変残念なことにハングしたりコアダンプしたりします。 Ruby のレベルで止まるのなら例外を返せば済むのですが、 作者の技量不足のため MathLink のレベルで異常終了するのを まだ防ぐことができていません。 そのため、利用者のデータを守る保証は全くできないです。本当にごめんなさい。
コメント、修正を随時受け付けています。また勝手に改良してくれることを、 (一部の作者は特に)強く望んでいます。
MathLink C Library なんて持ってないよ、と慌てるかもしれませんが、実は Mathematica を標準インストールすると必ずついてきます。もしくは Mathematica のインストール CD-ROM に入っています。
ruby 1.6.4 と Mathematica 4.1 という、README-ja.rd 執筆時で最新の環境で 作成、テストしています。古いバージョンをもはや試せないので、 バージョンが違うとき動くかどうかよくわかりません。 動いたり動かなかったりしたら、報告していただけると大変嬉しいです。 動かなかったときに勝手に修正して下さるともっと嬉しい。 そしてその修正を作者達に送ったり、勝手に修正後のライブラリを普及してくれる ことを強く望んでいます。
やりとりを極小にとどめるために、報告して下さるときについでに
をつけて下さると助かります。これらの情報がないまま、「動かん」とか 「動いた」とかいわれてもフィードバックできないです。作者の一部は core を どう扱っていいか知らないので、コアダンプしたからといって core をメールで 送りつけないで下さい。ごめんなさい。お願いします。勝手に皆様で解析したり、 ライブラリそのものを修正して下さることを望んでおる次第です。
./INSTALL-ja.rd にインストールの方法を書きました。
./VERSION にさりげなく書いてあるはずです。 以下の場所に最新版が置いてあるかもしれません。 <URL:http://narayama.aist-nara.ac.jp/~daisu-ik/ruby/index-j.html>
Ruby/Mathematica ライブラリは今のところ 2 つのモジュールと 1 つのクラスからできています。
Mathematica:: # module 'Mathematica' MathLink:: # submodule 'MathLink' MathLink # class 'MathLink'
クラス MathLink は MathLink C ライブラリが提供するいくつかの関数をラップした 低レベルな通信を行なうメソッド群です。Ruby のおかげで C 言語でプログラムを 書くよりは簡単に、かつ素早く実装ができるでしょう。どうやって作ったらいいかは サンプル ./samples とか Todd のチュートリアル(後述)を見てください。 実装に足りない機能は勝手に付け加えてくれることを期待しています。
モジュール MathLink は MathLink C ライブラリが持っている定数を保持するために 用意しました。``mathlink.h'' に定義されている定数のいくつかを知ってます。
将来、次のような改良を目論んでいますが、いつ実現されるかは神のみ知っています。
Mathematica:: # module Mathematica Mathematica # class Mathematica
クラス Mathematica は MathLink よりもユーザフレンドリかつ Ruby っぽい 通信環境を提供する予定です。できたらいいなあ。
現在の Ruby/Mathematica は MathLink の関数の一部を実装しているにすぎないため プログラムを書くために Mathematica ではなく MathLink の知識が必要です。 作者はそれが残念でなりません。Mathematica の書式を知っているだけで、 使えるようになればいいなあと思っています。
あと CGI とかデータベースとかと組み合わせて使えるようになると面白いと思う。 他にも応用はあるんじゃないでしょうか。
池上 大介 (IKEGAMI Daisuke) <URL:mailto:daisu-ik@is.aist-nara.ac.jp> 奈良先端科学技術大学院大学 情報科学研究科 情報処理学専攻 情報基礎学講座 関研究室
Todd Gayley 氏に。Todd の MathLink チュートリアルはすげえわかりやすかった。 Minero Aoki 氏に。setup.rd は便利ですね。RAA から取り寄せて使おう!
ruby-{list|math} メーリングリストのすべての皆様、IRC #ruby* の皆に。 (ドキュメントを見てもわかるように)ひどい文章しか書けないけど、 こちらの妙な質問に対して、いつも親切なコメントをいただきました。
そして、まつもとゆきひろさんに。感謝しています。 だって Ruby はとっても楽しいもん。
使うためのドキュメントを用意しました。
英語で書いたやつ * ./doc.ja/ 日本語で書いたやつ
MathLink については Mathematica が用意している文書が役に立つでしょう。 特に Todd のチュートリアル。
Mathematica Help Browser でたいていの情報は手に入ります。
Ruby/Mathematica はフリーソフトウエアです。 再配布などの条件はすべて Ruby と同じ条件とします。 理由は、作者が GPL についてよく理解していないからです。 作者はクレジットカードを作るときに裏面の細かな字で書かれた規約を 真面目に読まないです。この性格のせいで現状では理解できていないのだと思います。
Mathematica(TM), MathLink(TM) はそれぞれ Wolfram Research, Inc. の 登録商標です。
setup.rb の配布条件は GNU General Public License (GPL) version 2 に 従うことに注意して下さい。