公式のWindows用インストール手順だとうまく動かなかったので備忘録。
こんなすげーもの無料で使えていいんじゃろか。以下がそのやり方です。
Wolfram Engineを使えるようにする
Wolfram EngineはMathematicaのコマンドライン版みたいなやつ。個人利用なら無償でいける。
- https://www.wolfram.com/engine/ からダウンロードしてインストール。
- 時間がかかるので、待ってる間にライセンスを取得しておく。
- https://www.wolfram.com/engine/free-license/index.php.ja から無料ライセンスを取得。
- Wolframのアカウントがない場合は作らされる。すでにある場合はログインしてから先に進めばOK。
インストールの終わったWolfram Engineを起動するとアカウント情報を入れろと出てくるので、さっきライセンスを取得したWolframアカウントのログイン情報を入力。
すると使える状態になる。
| なんとなく100!とガウス積分をやらせるのが習わしみたいになっている |
Jupyterをインストール
Jupyterはブラウザからプログラムを実行して結果が返ってくるみたいなフロントエンド(だと理解している)。ちょっと高級な見た目をしたREPL。
機械学習でよく出てくるGoogle Colaboratoryの中身がこいつらしい。
- https://jupyter.org/install の手順の通りに実施する。
- pythonを入れて、pipでjupyterをインストールする。
- 手順にある通りjupyter labをコマンドで叩いてJupyterLab(Jupyter Notebookを内包するIDEみたいなやつ)がブラウザで起動することを確認。
Jupyter NotebookからWolfram Engineを使えるようにする(失敗した公式手順)
ここで詰まった。とりあえず以下が公式手順。
- https://github.com/WolframResearch/WolframLanguageForJupyter を確認
- このリポジトリはWolfram公式が出しているもの。インストール手順などがREADMEにある。
- ↑のリポジトリをclone
- Windowsの場合はcloneではなくzipで取得して展開せよと書かれているが、どう違うのかはよくわからない。たぶんどっちでもいい。
- clone先のディレクトリでpowershellを開いて .\configure-jupyter.wls add する
- 実際にやってもコマンドの説明リストが出るだけで、うまく登録してくれない。
- コマンドプロンプトで同じことをしてみてもやはり登録してくれない
>.\configure-jupyter.wls add
configure-jupyter.wls add ["\absolute\path\to\Wolfram-Engine-binary--not-wolframscript"]
adds a Wolfram Engine, either attached to the current invocation, or at the provided absolute Wolfram Engine binary path, to a Jupyter binary on PATH
configure-jupyter.wls add "\absolute\path\to\Wolfram-Engine-binary--not-wolframscript" "path\to\Jupyter-binary"
adds the provided absolute Wolfram Engine binary path to the provided Jupyter binary path
configure-jupyter.wls remove ["\absolute\path\to\Wolfram-Engine-binary--not-wolframscript"]
removes the Wolfram Engine, either attached to the current invocation, or at the provided absolute Wolfram Engine binary path, from a Jupyter binary on PATH
configure-jupyter.wls remove "\absolute\path\to\Wolfram-Engine-binary--not-wolframscript" "path\to\Jupyter-binary"
removes the provided absolute Wolfram Engine binary path from the provided Jupyter binary path
configure-jupyter.wls clear ["path\to\Jupyter-binary"]
removes all Wolfram Engines found on a Jupyter binary on PATH, or optional provided Jupyter binary path
configure-jupyter.wls build
builds the WolframLanguageForJupyter paclet in the project directory
↑コマンドの説明が出て終わり
>jupyter kernelspec list Available kernels: python3 C:\Users\*****\.pyenv\pyenv-win\versions\3.12.9\share\jupyter\kernels\python3
↑wolframがリストに出てこない
最終的に成功した手順
コマンド説明の通りに、Wolfram EngineのパスとJupyterのパスを両方手動で与えるのがよさそうだった。
- 管理者権限のコマンドプロンプトを立ち上げる
- 効くのかわからないが念のため
- wolframscript -file configure-jupyter.wls add [WolframEngineのパス] [Jupyterのパス] の形でコマンド実行する
- wolframscript -file は .wls (Wolfram Script) ファイルをWolframEngineで直接実行するという書き方。関連付けが失敗していた場合の対策。
- WolframEngineのパスとは wolframscript.exe ではなく WolframKernel.exe のパスのこと。説明ではWolfram Engineのパスと表記されているが、WolframEngine.exeはないので混乱する。
>wolframscript -file configure-jupyter.wls add "C:\Program Files\Wolfram Research\Wolfram Engine\15.0\WolframKernel.exe" "C:\Users\*****\.pyenv\pyenv-win\versions\3.12.9\Scripts\jupyter.exe" >
↑数秒待たされたあと、成功したっぽい反応
>jupyter kernelspec list
Available kernels:
wolframlanguage15 C:\Users\*****\AppData\Roaming\jupyter\kernels\wolframlanguage15
python3 C:\Users\*****\.pyenv\pyenv-win\versions\3.12.9\share\jupyter\kernels\python3
↑wolframがリストに増えた
実際にJupyterLabからMathematicaを試してみる
Wolfram Languageのアイコンが選べるようになっている。
選んで開始すると見慣れたノートブックフロントエンドが立ち上がる。
式を入力し Shift+Enter すると評価された結果が返ってくる。
JupyterLabの良いところ:グラフが描ける
Wolfram Engineのコマンドライン画面ではグラフが表示されなかったが、JupyterLab上ではグラフ画像まで一緒に見ることができる。
ちゃんと滑らかな曲線ぽく描画されている。中身はPNG画像のようだ。試してないけどMathematicaそのままならSVG出力とかもできると思う。
3Dグラフも描ける。これはガンマ関数の絶対値。
補足
3Dグラフについては、本家Mathematicaと違いグラフィックスをぐりぐりドラッグして視点変更するーとかができない。なので視点変更したい場合は、プロットオプションとして固定の数値を与えるのが普通の使い方になる。
ただ、WebGL用の形式でエクスポートしてHTML書き出しするという裏技で、マウスでグリグリ3D的な体験は得られるようだ。かなり面倒そうなので毎回手軽にできるかというと微妙だが……。
マニュアル回転でなくても良い場合、最初からアニメーションを定義してしまう方法がある。以下はAIが出してきたデモで、人間は特に触らずとも全自動で動き続けている。
ただし、事前に全フレーム描画して40MBくらいのアニメーションPNGを生成してきたので、結果が見えるまでにかなり(1分以上?)時間がかかった。
コメント