marimo(マリモ)はJupyterに代わるPythonノートブックツールです。ファイルがJupyterの*.ipynbのようなJSONではなく、そのまま実行できる*.pyです。また、セルの実行順序がグローバル変数の依存関係によって自動的に定まります。
インストールは
pip install marimo
または推奨パッケージも含めてインストールするなら
pip install "marimo[recommended]"
とします。インストールしたら
marimo edit test.py
と打ち込むと、カレントディレクトリの test.py に紐付けられたノートブックがデフォルトのブラウザで開きます。test.py が存在しないか空の場合は、ノートブックも空です。カレントディレクトリに __marimo__ というディレクトリができて、その中にセッション情報が書き込まれます。
最初は空のセルが一つあるはずですので、その中に例えば
3+4
のような計算式を書き込んで、Jupyter や Google Colaboratory と同様に Ctrl + Enter(Macでは ⌘ + Enter)すると、セルが実行され、計算結果 7 が現れます。
ノートブックの下には「PYTHON」「MARKDOWN」「SQL」「GENERATE WITH AI」というボタンがあります。「PYTHON」をクリックすると、Pythonコードを書き込むためのセルが追加されます(あるいは実行する際に Shift + Enter とすれば、実行後に新しいセルができ、そこにカーソルが移ります)。
もう一つやってみましょう。
import sys sys.version
これを同様に実行すると、動いているPythonのバージョン情報が表示されます。
import matplotlib.pyplot as plt
plt.plot([-1, 1])
plt.title("グラフ")
でグラフが出ます。日本語もちゃんと表示されることをご確認ください。
セルに書き込んだ内容は、最初に指定した test.py に自動保存されるはずです(あるいは右側の下にある 💾 のアイコンをクリックすると保存されます)。上の例は、おおよそ次のような感じで保存されます。
import marimo
__generated_with = "0.17.7"
app = marimo.App(width="medium")
@app.cell
def _():
3+4
return
@app.cell
def _():
import sys
sys.version
return
@app.cell
def _():
import matplotlib.pyplot as plt
plt.plot([-1, 1])
plt.title("グラフ")
return
if __name__ == "__main__":
app.run()
marimoの便利な機能として、次のようにスライダーが簡単に作れます。
import marimo as mo slider = mo.ui.slider(1, 10, value=1, label="n") slider
スライダーの値を他のセルで使うと、インタラクティブな図が作れます。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 201)
plt.plot(x, np.sin(slider.value * x))
plt.title(f"sin {slider.value}x")
OpenAI APIなどを設定すると、AIにコードを書いてもらうこともできます。設定内容は、設定ファイル ~/.config/marimo/marimo.toml に保存されます。
終わったら、ノートブックの右上にある×ボタン(Shutdown)で閉じます。シャットダウンせずにブラウザのページを閉じた場合は、最初に打ち込んだコマンド marimo edit test.py は Ctrl + C で停止します。
既存の*.ipynbファイルは marimo convert foo.ipynb -o foo.py でmarimo用Pythonファイルに変換できます。逆は marimo export ipynb foo.py -o foo.ipynb です。marimo convert foo.py -o bar.py で一般のPythonファイルをmarimo用Pythonファイルにすることもできます。
グローバル変数はセルをまたいで意味を持ちますが、JupyterやGoogle Colabと違って、別のセルで再定義することはできません。例えば
x = 2 x = x + 1
は大丈夫ですが、
x = 2
と
x = x + 1
が別のセルにあったらエラーになります。特にデータフレームを表す df などは少しずつ再定義することがよくあるので、注意が必要です。
!pwd など ! や % で始まるコマンドは使えません。基本的にシェルコマンドは最下部のボタンでターミナルを開いて打ち込み、% で始まるマジックコマンドは Coming from Jupyter の指示に従って書き換える必要があります。