marimo

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 種類のセルがあります。

Markdown セルでは一般的な Markdown が使えます。画像は ![alt](path/to/image.png) のように書いて表示できます。

Jupyter との重要な違い

marimo は Jupyter と似ていますが、初心者に影響が大きい違いがあります。

実行順の考え方

ファイル形式

Git 管理・レビュー・再利用で扱いやすいです。

`!` でシェルコマンド実行はできる?

結論: できません

Jupyter の !ls!pip install のような記法は marimo では使えません。シェル操作が必要な場合は次のどちらかにします。

例:

import subprocess
subprocess.run(["ls", "-l"], check=False)

2. VS Code と併用する

marimo のノートブックは .py なので、VS Code で通常の Python と同じように編集できます。典型的には次の運用になります。

  1. VS Code で analysis.py を編集する

  2. ターミナルで marimo edit analysis.py を実行する

  3. ブラウザで実行結果・グラフを確認する

リモートサーバでの利用

リモートサーバ上で marimo を動かし、手元の PC から操作する方法です。

方法A: VS Code Remote - SSH (推奨)

VS Code の Remote - SSH を使うと、サーバ内で marimo を起動しつつ、手元で操作しやすくなります。

  1. 手元の VS Code に拡張機能 Remote - SSH をインストールする

  2. サーバに SSH 接続する
  3. サーバ側で marimo edit analysis.py を実行する

  4. VS Code のポート転送機能(Forwarded Ports)を使ってブラウザで開く

方法B: SSH ポートフォワード

  1. サーバ側: ポートを固定して起動します。

    •    [user@server ~]$ marimo edit analysis.py --host 0.0.0.0 --port 8888
  2. 手元の PC: 別ターミナルでポートフォワードします。

    •    [local ~]$ ssh -N -L 8888:localhost:8888 user@server
  3. 手元のブラウザ: http://localhost:8888 にアクセスします。

ssh にアクセスできず困ったら

killall -9 ssh

便利なショートカットキー

marimo の UI は更新される可能性があるため、まずは以下だけ覚えておくとよいです。

(セル操作のショートカットは UI のバージョンにより変わることがあるため、画面上のヘルプ表示を参照してください)

まとめ

KAGRA/Subgroups/PEM/PythonMemoJP/marimo (last edited 2026-01-06 09:57:47 by tatsuki.washimi)