[Julia]Pluto.jlを導入してみた
プライベートで書くスクリプトを、PythonからJuliaに移行していくかー、と思い、ライブラリだったりのテスト書きをしていました。
その過程で、インタラクティブなIDE(と言うべきかは怪しいけど、、)もJulia用にPluto.jlと言う物があったので、サクッと入れてみました。
- Pluto.jlとは一体、、
- JupyterLabと比べると、、
の2本立てで、Pluto.jlの所感をまとめていきます。
Pluto.jlとは
Julia + React(Preact)製のインタラクティブIDEです。こうしたアプリケーションは割とフロントエンド側の実装・依存が複雑で読むと「うげー」となっちゃいがちなのですが、Pluto.jlはかなり分かりやすい実装をしているイメージです。依存もCDNで紐付けているので、実行にはJuliaさえあれば大丈夫!
READMEにも書かれている売りは3点で
- reactive - when changing a function or variable, Pluto automatically updates all affected cells.
- lightweight - Pluto is written in pure Julia and is easy to install.
- simple - no hidden workspace state; friendly UI.
特に大きいのは機能にダイレクトに関わる reactive
のポイントかなー、と思っています。書いてある通りなのですが、セルに書かれている関数や変数が変更されると、Plutoでは自動でその変更に合わせて関連するセルをアップデートしてくれます。なので、JupyterLabでありがちな、セルだったりをいじりまくっていたら、メモリ上には変数が残っているが、宣言部が無くなってしまい、次回起動時に動かなくなっちゃった、、と言う事象がブロックされます。
# 下のGIFはPluto.jlのREADMEと同じ物を貼っています
軽量な上、シンプルなUIの上で、ノートブック内の整合性をキープしつつ、スクリプトを書けるのがPluto.jlの良さと感じます。
導入
lightweight
にも書かれている通り、Juliaで書かれているので、難しいことは全く無しにパッケージをインストールすればOKです。
julia> using Pkg; Pkg.add("Pluto")
起動
とても簡単です。
julia> using Pluto; Pluto.run()
これで、ポート 1234
でエディタが立ち上がります。
画面
トップページ
localhost:1234
へ行くと、こんな画面が立ち上がります。
簡素、、笑
新規のノートブックと既存オープン、あとはリモートのファイルを開くサポートもあります。
エディタ
Create
すると、こんな画面が立ち上がります。
これもシンプルです。
バーッと書いていくと、こんな具合で埋まっていきます。
実行結果はセルの上に入っていくんですねー。
上でGIFを貼った通りなのですが、x
の値を変えると、プロットも自動でアップデートされます。
右下の Live Docs
は、変数やファンクションを入れると、その変数型やファンクションのドキュメントを参照出来ます。ファンクションを書く途中でサジェストで出てくる、ぐらいなエディタが多い中で、using
で書いたパッケージのドキュメントも含めて横串検索が効きます。
これ、結構便利なんですよね、、
JupyterLabとの比較
注意
厳密さは無いです!気付いたベースで、、
インタラクティブIDEのJupyterLabとは、ほぼトレードオフな構図なイメージです。
- セットアップの容易さ
- Pluto.jl
- 軽量
- Pluto.jl
- リアクティブ(整合性キープが容易)
- Pluto.jl
- データ分析にまつわる周辺機能が充実
- JupyterLab
- 多言語対応
- JupyterLab
サクッと使えるPluto.jlに対して、色々と手が届く範囲が広くて便利なJupyterLabか、、と言う図の中で、Pluto.jlの場合、リアクティブな点でアドバンテージを稼いでいる印象です。
私も使ってみて、リアクティブでノートブックの中身がこわれない(次回開き直した時に、ちゃんと動く)点が良いなー、と心を掴まれてた人種です。安心感を保ちつつ、自由にサクサク書けるのは精神衛生が最高ですね。
まとめ
おいでよ、Pluto.jlの森。
Discussion