marimo
Contents
marimo とは?
marimo は Python 用のノートブック環境です。コードをセル単位で実行し、結果やグラフをその場に表示できます。Jupyter と似ていますが、marimo はセル間の依存関係を解析し、必要なセルだけを再実行する *リアクティブ実行モデル* を採用している点が大きな違いです。
また、ノートブックは .ipynb ではなく *通常の Python ファイル (.py)* として保存されるため、Git 差分が読みやすく、スクリプトとしても扱いやすいのが利点です。
インストール
解析環境(仮想環境)にインストールします。
mamba install -c conda-forge marimo
1. ローカルで使う (推奨: まずはここから)
ブラウザ上で動作する標準インターフェースです。JupyterLab と同様に、ローカルでサーバを立ち上げてブラウザで操作します。
起動
作業ディレクトリで以下を実行します。
marimo edit
ブラウザが開き、marimo の編集画面が表示されます。
新しいノートブックの作成
空の Python ファイルを作ってから起動するのが分かりやすいです。
touch analysis.py marimo edit analysis.py
作成されるノートブックは .py 形式で保存されます。
終了方法
ブラウザを閉じ、ターミナルに戻って Ctrl + C を押すとサーバが停止します。
---
marimo のセル (Code / Markdown)
marimo には主に 2 種類のセルがあります。
- *Code セル*: Python コードを書くセル
- *Markdown セル*: 説明やメモ、数式、画像などを書くセル
Markdown セルでは一般的な Markdown が使えます。画像は  のように書いて表示できます。
Jupyter との重要な違い
marimo は Jupyter と似ていますが、初心者に影響が大きい違いがあります。
実行順の考え方
Jupyter: セルは好きな順番で実行できる(実行順によって状態が壊れやすい)
marimo: 依存関係に基づいて必要なセルだけが更新される(状態の一貫性を保ちやすい)
ファイル形式
Jupyter: .ipynb(JSON)
marimo: .py(通常の Python)
Git 管理・レビュー・再利用で扱いやすいです。
`!` でシェルコマンド実行はできる?
結論: できません。
Jupyter の !ls や !pip install のような記法は marimo では使えません。シェル操作が必要な場合は次のどちらかにします。
- ターミナルで直接実行する
Python の subprocess でコマンドを呼ぶ
例:
import subprocess subprocess.run(["ls", "-l"], check=False)
2. VS Code と併用する
marimo のノートブックは .py なので、VS Code で通常の Python と同じように編集できます。典型的には次の運用になります。
VS Code で analysis.py を編集する
ターミナルで marimo edit analysis.py を実行する
- ブラウザで実行結果・グラフを確認する
リモートサーバでの利用
リモートサーバ上で marimo を動かし、手元の PC から操作する方法です。
方法A: VS Code Remote - SSH (推奨)
VS Code の Remote - SSH を使うと、サーバ内で marimo を起動しつつ、手元で操作しやすくなります。
手元の VS Code に拡張機能 Remote - SSH をインストールする
- サーバに SSH 接続する
サーバ側で marimo edit analysis.py を実行する
- VS Code のポート転送機能(Forwarded Ports)を使ってブラウザで開く
方法B: SSH ポートフォワード
サーバ側: ポートを固定して起動します。
[user@server ~]$ marimo edit analysis.py --host 0.0.0.0 --port 8888
手元の PC: 別ターミナルでポートフォワードします。
[local ~]$ ssh -N -L 8888:localhost:8888 user@server
手元のブラウザ: http://localhost:8888 にアクセスします。
ssh にアクセスできず困ったら
killall -9 ssh
便利なショートカットキー
marimo の UI は更新される可能性があるため、まずは以下だけ覚えておくとよいです。
Ctrl + S: 保存
Ctrl + C: ターミナル側でサーバ停止(ブラウザを閉じた後)
(セル操作のショートカットは UI のバージョンにより変わることがあるため、画面上のヘルプ表示を参照してください)
まとめ
marimo は Python のノートブック環境で、実行順に依存しにくい のが強み
ノートブックが .py で保存され、Git 管理や再利用がしやすい
Jupyter の ! によるシェル実行はできないため、ターミナルや subprocess を使う
