自分には一番縁がないと思っていたのに、気が付くともう5年もMATLABを弄くっている。いまだに成果が出ていないのは恐ろしいが、さすがにこればっかりやっているので何か書いてみたくなった次第である。読者の参考になるかどうかはまったく保証できない。
MATLABの R2016a から導入された Live Editor/Live Script は、Jupyter Notebook (Python) の真似のようだが、コードと図が一画面上で直結して見えるのはかなり便利が良い。これまで、ある一部のコードで生成された図をディスプレイの上に折り重なったウインドウから「どれだったっけかな?」と探しだすのにかなりの労力を使っていたらしい、ということに気が付かされる。また画面上のボタンを押すと、図がコード・セクションの下から右横へサッと移動するのも、思いの外便利である。導入されたばかりだけあってGUI周りはまだ開発途上の感じだが、R2016bのプレスリリースではかなり力を入れて性能を向上されている様子。
従来は、大量の図を自動生成した場合にそれを閲覧するのに一番よい方法としてたどり着いたのが、publish機能によるhtml書き出しだった。ウェブブラウザ上であればスクロールも快適だし、ちょうどLive Editorに似てコード・セクションのすぐ下に図が表示されるのも良かった。publish機能の難点は、一遍全部できあがってから一発で書き出しをしなければならないので、インタプリタ型言語としてのMATLABの特長である、コマンドウィンドウでちょこちょこ直しながら開発する、というスタイルとはそのままでは相容れないものだったことだ。通常のスクリプトとしてコードを書いて、「できた」と思ってから publish でhtml自動生成して大量の図をブラウザで見る、という使い方だった。
Live Editorはちょうどこの部分の不自由さの隙間を埋めるような感じではなかろうか。コードの下、あるいは横に図を出しながら、セクション毎にちょこちょこ直しながら開発する。
コードの使用例を他人へ紹介する際には、Live Scriptはとても良いと思う。従来のpublishで作ったhtmlも良かったが、実際に実行できる、というのは大きい。ただし、せっかく人から貰った Live Scriptもうっかりすると図を全部消してしまうこともあり得る。この辺は取り扱い方に工夫が要りそう。
短所あるいは注意点として挙げられるのは、細かいGUIの仕様などを除けば、以下の点だろうか。
-
scriptの編集にはよいが、関数の中身のデバッグには向かない。エラーが赤く表示されたら、その行をコマンドウィンドウで実行してエラーを吐かせて問題のある行へ移動して直す、という感じにならざるを得ない。
-
どのくらいのoverheadがあるのか分からないが、実効速度は遅くなっているものと思われる。試しに、下のコードを実行させると、Command Window での平均が 0.0135 秒に対して、Live Editorでは 0.0294 秒なので、何をさせるかによっても違うだろうが、単純予想としてはおよそスピードが半分になっている。時間のかかる計算を含むコードをLive Editorで書いていると反応が遅くてちょっと不愉快かもしれない。
for i = 1:1000
tic
a = rand(1000);
clear a
t(i) = toc;
end
disp(mean(t))
- ヴァージョン管理を行うときに、ちょっと面倒である。図を含んだ.mlxファイルは数メガバイトになることがしょっちゅうあり、これを頻繁に編集してGitにコミットしていくと、ディスクスペースをかなり食ってしまうこと請け合い。開発は .mlxで行っても、ヴァージョン管理は.mlxから書き出した .m の通常のスクリプトの形で差分をとって行うほうがよいように思われる。ただ、この作業が自動化されていないので、.mlxのほうを .gitignore で無視するようにしていて、.mに書き出すのを忘れると、せっかくの編集内容がレポジトリに残らない、という危険な事態を招く。ここはぜひ一工夫して、.mlxを保存する際に自動的に .mを更新保存する、というオプションを用意して欲しいところ。