Maxima で綴る数学の旅

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

-その他- Maximaの環境整備(2) Jupyter lab / notebook

f:id:jurupapa:20170505112834j:plain

一昨年の鯉のぼり


やはり今時はMaximaGUIはJupyter lab / notebookが使えると嬉しいのです。Maximaには長い間使われているwxMaximaと言うGUIがあります。jupyterもwxMaximaもどちらもノートブック形式ですが、なぜJupyterなのでしょうか。

  • JupyterはPython, データ処理、AIなどの基盤として幅広く使われ始めています。
  • そのため、解説本もたくさん発行されています。
  • フロントエンドと処理系の間のプロトコルが整備されており、安定しています。
  • プラグイン開発の環境があり、機能追加の仕方が整備されています。
  • Jupyterが幅広く使われているため、Jupyterが出来るエンジニアの層が厚いです。
  • 数式表示は予めMathJaxが組み込まれており、表示は綺麗です。
  • ブラウザ表示のGUIであるため、jupyter + Maximaの環境をサーバ、仮想マシン、コンテナなどヘッドレスな環境にまとめてインストールし、その環境とユーザのブラウザ表示PCを完全に分離することができます。
  • メジャーなので、道具の開発も盛んです。例えば作成したipynbファイルをどこかに公開し、それを綺麗に表示してくれるサービス(jupyter nb viewer)があります。以下は一例です。

    https://nbviewer.jupyter.org/github/YasuakiHonda/euler-maclaurin-sum/blob/master/Euler-Mascheroni.ipynb

 

一方、jupyter + Maximaには残念な点があります。

  • Linux, macOSに比べるとWindowsへのインストールが非常に難しそうであり、出来ないかもしれません。
  • Linux, macOSでもインストールの手順が長く、初めての人には不安です。
  • wxMaximaで.wxmファイルを作ってきた人には、なんのフォーマット変換も用意されていないため、移行が困難です。
  • wxMaximaには様々なコマンドがメニューで呼び出して、GUIで使えるようになっています。知らない数学の分野のコマンドを試すには有難い仕組みです。このような使い勝手はjupyterにはありません。

比較的簡単なLinux (Ubuntu 20.04, Debian 10)でのインストール手順は以下のとおりです。

  • python3を導入。ついでにpython3-pipとpython3-venvを入れて、さらにpip install --upgrade pipでpipを最新にする。
  • pip install jupyter jupyterlabでjupyter notebookとjupyter labをインストール。
  • jupyter notebookコマンドやjupyter labコマンドで確認。
  • sbclは公式サイトから2.0.4をダウンロードし、インストール。
  • ~/.sbclrcに(require :sb-rotate-byte)を加える。
  • quicklisp.lispを公式サイトからダウンロードし、インストール。~/.sbclrcへの初期化コード追加まで実行。
  • (apt install texinfoでmakeinfoをインストールする)
  • Maxima公式サイトから最新版のソースコードをダウンロードして、./configure --enable-sbcl --prefix=/somewhere ; make; make installでビルド&インストール。
  • apt install libczmq-dev
  • githubのjupyter-maximaからプロジェクトをダウンロード。
  • jupyter-maximaディレクトリでmaximaを起動
  • load("load-maxima-jupyter.lisp");
  • jupyter_install();

これでインストール終了です。いったんmaximaを終了し、jupyter notebookを開き新しいノートを作成するとエンジンとしてmaximaを指定できます。

 

現在のところ、このインストール手順は長いし、いろいろな罠があるのでエンジニアの方にしかお勧めできません。今後、これらの手順を実行済みのコンテナの配布などが進むのではないかと期待しています。