MATLAB ユーザーコミュニティー

MATLAB & Simulink ユーザーコミュニティー向け日本語ブログ

MathWorks 版 MATLAB kernel for Jupyter はじめました

※この投稿は 2023 年 1 月 30 日に The MATLAB blog (Mike Croucher) に投稿されたものの抄訳です。


MATLAB の Live Scripts と同じように、Jupyter Notebooks でもリッチテキスト、コード、データ、計算結果を1つのファイルにまとめることができます。ただ Jupyter は、Python、R、さらには C++ や Fortran などのコンパイル言語などさまざまな言語をサポートしており、計算機科学の領域で広く普及しています。
私は Jupyter と呼ばれる以前から Project Jupyter の熱狂的なユーザーです。私が MathWorks に入社して製品開発に関わるメンバーと知り合ったとき、みんなに最初にした質問が「いつになったら Jupyter をサポートするんですか?」でした。そして、ついにその時が来ました・・1 月 27 日に MathWorks が GitHub: jupyter-matlab-proxy をアップデート。MATLAB Kernel for Jupyter を公開しました。PyPI でも公開されているので、pip でインストールできます。
このパッケージは以前からありましたが、過去には JupyterHub のような環境からブラウザで MATLAB にアクセスする機能のみをサポートしていました。今回のアップデートでは、Jupyter Notebook で MATLAB kernel for Jupyter を介して MATLAB のコードを実行することもできるようになりました。 MathWorks に入社したときからずっと要望を挙げていた機能でした。 このリリースでようやく、Jupyter Notebook  での MATLAB 利用を MathWorks がサポートしていると言えます。

 

ちょっと言いにくいんですが・・まだ Windows では使えません

詳細に入る前に Windows 版はまだであることに触れておきたいと思います。今回の機能は jupyter-server-proxy を使用していますが、それが現在 Windows をサポートしていないのが理由です。(詳細:Windows support · Issue #147 · jupyterhub/jupyter-server-proxy · GitHub)すなわち Windows マシンに MATLAB Jupyter Kernel をインストールして、ローカルの Windows 版の MATLAB を使うことはできません。
もちろん、Jupyter は Web ベースのシステムであり、リモートサーバにインストールすることができるため、Windows ユーザがこの Kernel を体験する方法はいくらでもあります。例えば、近い将来、HPCクラスタや Science Gateways に登場することも期待しています。また MATLAB を含むすべてを Docker コンテナで実行し、Windows から使用することも可能です。現在、将来のリリースで Windows 環境をサポートするための手段を評価しています。

 

Kernel のインストール

公式のインストール方法は GitHub – mathworks/jupyter-matlab-proxy: MATLAB Integration for Jupyter にあります。
私のメインマシンは Windows なので、今回は MathWorks Cloud Center を使用して Linux が動作する AWS VM 上で MATLAB を起動することにします。この記事の執筆時点では、Ubuntu 20.04 と MATLAB R2022b がインストールされています。
pip install jupyterlab
で Jupyter Lab をインストールし
pip install jupyter-matlab-proxy
で MATLAB Kernel Package をインストールします。これらはユーザー権限で実行されたので、すべてがシステムの PATH にない /home/ubuntu/.local/bin/ にインストールされました。.bashrcファイルに次の行を追加して準備完了です。
export PATH=$PATH:/home/ubuntu/.local/bin/

 

Jupyter Lab でできること – MATLAB kernel + ブラウザ版 MATLAB + コンソール

すべてがうまくいったとすると、Jupyter Lab を起動したときに Web ブラウザに表示されるのは次のようになります。

3 つ紹介したいことがあります。

1つ目は、みんなが待ち望んでいた Jupyter notebook のための MATLAB kernel です。これをクリックすると、MATLAB を kernel として実行する新しい Notebookが表示されます。いくつか試しにコマンドを実行してみます。

 

次は「MATLABを開く」ボタンです。最初にこれを見たときは、ローカルにインストールした MATLAB 実行ファイルへのリンクかなと思いましたが、このボタンは Web 版の MATLAB を起動します。これは MATLAB Online と似ていますが、私のハードウェア(リモートで実行している場合は、接続しているサーバーのハードウェア)で実行される点が異なります。

 

ワークスペースをよく見てみると、上の Notebook で作成した変数であることがわかります。つまり Web 版の MATLAB と Notebook が同じ MATLAB のインスタンスに接続されているんです。この 2 つの環境を自由に行き来することができます。

最後にコンソール版の MATLAB kernel 。ここでも、上で触れた 2 つと同じ MATLAB のインスタンスに接続されています。

 

ライセンスについて

初めて Jupyter Notebook で MATLAB コマンドを実行しようとしたときに、ライセンスダイアログが表示されます。
ライセンスに紐づいた MathWorks Account に一度サインインするだけです。マシンを再起動しても Jupyter Lab を再起動しても、再びライセンスダイアログが出てくることはありません。Jupyter 連携でサポートされているライセンスを持っていることが必要で、残念ながらすべてのライセンス形態に対応しているわけではありません。例えば、執筆時点では、MATLAB Home はサポートされていません。サポートされているライセンス形態を含む詳細なライセンス情報は、main – jupyter-matlab-proxy/MATLAB-Licensing-Info.md at main · mathworks/jupyter-matlab-proxy · GitHub で確認してみてください。

 

MATLAB kernel for Jupyter の機能

Jupyter Notebook を使ったことがある人なら、ほとんど期待通りのものが得られると思います。これは Jupyter ですが、MATLAB のコードを含んでいます。下の図では、欲しい結果を得るために why コマンドを数回実行したことがわかると思います・・
プロットはインラインで描画され、静的なプロットです。
Symbolic Math Toolbox から返された式は LaTeX でレンダリングされます。
テーブルや辞書などの他のオブジェクトは、MATLAB コマンドウィンドウでの表示と同様の方法でレンダリングされます。
また、タブ補完もあります。例えば、「ran」と入力し、Tab キーを押すと、以下のような選択項目が表示されました。
Kernel の機能は時間をかけてここからさらに追加される予定です。もしご要望がございましたら、ここで Issue を作成するか、jupyter-support@mathworks.com にメールを送るか、または以下のコメント欄で興味のある機能を教えてください。

 

ちょっと驚くかもしれない制約

現時点では Windows をサポートしていないという大きな問題はすでに取り上げましたが、他の言語で Jupyter を使用するのに慣れているのであれば、他にも知っておいた方が良いことがいくつかあります。
複数の Notebook に対して MATLAB は 1 つだけ実行されます(Python カーネルで Jupyter を使ったことがあるなら、すべてのノートブックが独自の Python プロセスを持つ状況に慣れていると思います)。今回の MATLAB kernel は、実行するすべての Notebook が同じ MATLAB、そして同じワークスペースを共有します。
現在 Notebook ではサポートされていない MATLAB コマンドは以下の通りです。
  • ユーザーからの対話的な入力を要求するコマンド。例:input と keyboard
  • MATLAB デバッガーコマンド。例:dbstep、dbup、dbstack。
  • 別のブラウザタブを開く必要があるコマンド。例:doc、appdesigner。
  • アニメーションを作成するコマンド。例:movie、vibes。
  • MATLAB R2022a およびそれ以前のバージョンでは、LASTERR および LASTERROR は Notebook で実行された MATLAB のエラーを取得できません。
  • ローカルライセンスの MATLAB は現在サポートされていません。ユーザーは、オンラインライセンスまたはネットワークライセンス マネージャを使用してログインする必要があります。
制約の詳細については GitHub – mathworks/jupyter-matlab-proxy: MATLAB Integration for Jupyter で確認ください。

 

フィードバックお待ちしています

さて、これでひとまずおしまい。新しい MATLAB kernel for Jupyter のいくつかの機能と制限のクイックツアーでした。Jupyter エコシステムの長年のサポーターでありユーザーとして、今回の MathWorks としてのサポートには個人的に感激しています。
これは最初の一歩であり、さらに多くのことを行っていく予定です。コメント欄でご意見をお聞かせください。技術的な問題に遭遇したり、機能強化の要望がある場合は、Issue を作成するか、jupyter-support@mathworks.com にメールを送ってください。

 

|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.