Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

Maxima のWASMを使ったブラウザ内での実行

久しぶりに(このブログのタイトルにもなっている)Maximaの話題です。

Maximaをブラウザの中でローカルに動かすことに成功しているようです。

 

https://maxima-on-wasm.pages.dev/

ChromeなどのブラウザでアクセスするとMaximaが起動した画面が表示されます。入力プロンプトの後ろをクリックするとMaximaのコマンドを入力できてきちんと処理が実行されます。こんな感じです。

さらにブラウザの中でgnuplotも動いており、それと組み合わさって2Dや3Dのグラフ生成も動作します。

 

そしてその動作は全てブラウザ側で動作しており、サーバはWebサーバとしてファイルをホストしているだけです。計算も全てブラウザで行われておりサーバは関係しません。

 

この辺の仕組みを説明してみます。まずEmbeddable Common Lispというリスプ処理系がWASM(ウェブアッセンブリー)と呼ばれる技術に少し前に対応しました。WASMはブラウザ上で動く標準化された高効率な仮想機械言語です。MaximaはもともとECL上でも動作していたので、ECLのWASM対応を使って、今回MaximaもWASMに対応させた、ということになります。WebサーバはWASMにコンパイルされたMaximaのファイルをホストしているだけです。

WASM対応のgnuplotもすでにあったのでそれを組み合わせてグラフ出力も対応したそうです。

 

ざっと試したところPC, Android, MacGoogle Chrome, MacSafariでは同じように動きました。さすがのマルチプラットフォームです。下記はAndroid Chromeでの実行画面です。フォントの大きさが少し変ですが、それ以外は全く同じです。