■「無料MathematicaPlayer+IronRuby+AJAX」で数式処理フロントエンドを作ってみよう
3行で書ける(WEBブラウザ・インターフェースの)数式処理フロントエンド
ウルフラム・リサーチから無料で配布されているMathematica Playerには、最高に高度な数式処理プログラムである Mathematicaのエンジンが内蔵されています。そこで、そのMathematicaのエンジン部である MathKernel(Mathematica Playerと一緒に配布されている)を.NETのインターフェースを用いて操作し、(.NETによるRuby実装である)IronRubyで自由自在に数式処理をすることに挑戦してきました。その準備作業や使い方は、「無料配布のMathematicaカーネルをIronRubyから自由自在に使ってみよう」から始まる、いくつもの(ラクガキ)記事を読めばわかると思います。
今日は、以前書いたコードを少し書き直してみました。ひとつは、Mathematicaで数式処理をするノード(サーバ)を書くためのIronRubyクラスです(mathnode2.rb)。128行ほどの短いコードですが、さすがにここにそのまま引用するには少し長いので、リンクするにとどめておきます(IronRubyのコードは、ここに置いておきました)。
といっても、以前のバージョンから実際にはほとんど変わっていません。httpを介したWEB I/Fに関して、いくつか修正をしたことと、せっかく(速度や機能を犠牲にして)httpを介したI/F仕様にしたのだから、ユーザー・インターフェースを介しても計算環境を簡単に使うことができる(AJAXによる)コマンド&結果表示機能を実装してみた、ということくらいです。もちろん、httpを通信プロトコルに採用しているからといって、「人間が操作することありき」で作成したわけではありません。単に、(たとえば「MathematicaPlayer+IronRubyでMathematica風AJAX WEBアプリ」の動作動画 のように)色々と流用可能だから、実装コードの行数が短くて済みそうだったから、という理由です。
「ユーザー・インターフェースを介しても計算環境を簡単に使うことができる機能」というのを具体的に書けば、AJAXを使ったMathematica Player フロントエンドもIronRubyコード中に実装してみたのです。CSSなどは使わず1ファイルで計算&WEBサーバの機能を実装していますので、色々カスタマイズしがいのあるサンプルではないか、と思います。
たとえば、今日書いた'mathnode2.rb'を使い(利用して)、たとえばこんなIronRubyコードを書いてみます(Mathematica Playerや.NET/LINK、あるいは、IronRubyの準備は前もってしておいてください)。
require 'mathnode2.rb' mathnode=Mathnode.new mathnode.start(ARGV[0].to_i) mathnode.server.joinこのコードを、"freeMathAlpha.rb"という名前でもつけ(このサンプルスクリプトも先のリンク先に置いてあります)、そのスクリプトを起動してみます。
ir.rb freeMathAlpha.rb 80ここで、引数の80は(コマンド受信用として)httpで使うポート番号です。もちろん、80番である必要はありません。
さて、こうすると、Mathematica計算用のノード(サーバ)が起動します。また、これまでに書いてきたように、異なるポートで複数立ち上げることもできます。
この状態で、ためしにブラウザを立ち上げてhttp://localhost/にアクセスしてみましょう(たとえば、80番ポートで立ち上げたのでなく、81番ポートで立ち上げたのであれば、http://localhost:81/にアクセスしてみましょう。すると、ブラウザ上で下のスクリーンショットのような画面が現れ、あなたのブラウザ上でMathematicaを使うことができるようになります。入力も出力も、通常のMathematicaと同じような(似たような)画面構成ですから、Mathematicaを使ったことがある方であれば、簡単に使うことができると思います。
さて、実際に使ってみると、有料版Mathematicaでは使うことができても、Mathematica Player付属のカーネルでは使うことができない関数がいくつもあることに気づかされます。けれど、その一方で、方程式を解いたり・数値処理をする分には、実にたくさんの機能を使うことができることにも、同時に気付かされます。本家 "WolframAlpha"ほどではないにしても、WEBベースの数式演算処理サーバが稼働し始めるのは、なかなかに楽しいものです。
Matheatica Player、Ironruby、.NET/LINK、ブラウザ…どれも無料で使うことができるものばかりです。せっかくですから、一度は遊んでみると面白いのではないでしょうか。WEBブラウザ・インターフェースの数式処理フロントエンドもあることですし、ね。