Jupyter を超えるリアクティブ Python ノートブック「marimo」— SQL・AI・アプリ公開まで一気通貫
bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。
(macOS / Linux 環境が必要) Jupyter を超えるリアクティブ Python ノートブック「marimo」— SQL・AI・アプリ公開まで一気通貫
ひとことでいうと
marimo(マリモ)は、セルを変更するとつながっているセルが自動で再実行される「リアクティブ型」の Python ノートブックです。従来の Jupyter Notebook で起きがちだった「セルを消しても変数がメモリに残る」「手動で再実行し忘れる」といった問題を根本から解決しています。ノートブックは .py 形式の普通の Python ファイルとして保存されるため、Git(ソースコードの変更履歴を管理するツール)での差分管理も簡単です。SQL サポート、AI 連携、インタラクティブな UI、Web アプリとしての公開まで一体化しており、jupyter・streamlit・jupytext・ipywidgets・papermill といった複数のツールをまとめて置き換えられます。データを扱う研究者からチームで開発するエンジニアまで、幅広い人に向けた統合開発環境です。
こんな人におすすめ
1. 再現性のある実験管理をしたいデータサイエンティスト・研究者
marimo のノートブックはそのまま Python スクリプトとして実行できます。CLI(コマンドライン、ターミナルから操作する仕組み)の引数でパラメータを指定することもできるため、実験ごとの条件を記録して再現するのが格段に楽になります。「あのとき何を変えたっけ?」という手戻りを減らせます。
2. 社内ダッシュボードやプロトタイプをすばやく作りたいエンジニア
marimo run notebook.py の 1 コマンドだけで、Python のコードを隠したままインタラクティブな Web アプリを公開できます。Streamlit のような別フレームワークをゼロから学ぶ必要がなく、書いたノートブックをそのままアプリにできます。
3. Jupyter をチームで使っているが Git 管理に苦労しているチーム
marimo のノートブックは .py ファイルとして保存されるため、Git の PR(プルリクエスト、コードレビューの仕組み)で差分がすっきり読めます。コンフリクト(編集の競合)の解消も容易です。既存の Jupyter ノートブックは次のコマンドで 1 発変換できます。
marimo convert your_notebook.ipynb > your_notebook.py
インストール・使い方
Step 1: marimo をインストールする
まずはターミナル(文字で命令を送る画面)を開き、次のコマンドをコピー&ペーストして実行します。
pip install marimo
pip(ピップ)は Python のパッケージ管理ツールです。このコマンドを実行すると、marimo の本体がインターネットからダウンロードされてパソコンに追加されます。
SQL 機能や AI 補完など追加機能も一緒に使いたい場合は、こちらを実行します。
pip install "marimo[recommended]"
[recommended] と付けることで、便利なオプション機能をまとめて導入できます。
Step 2: チュートリアルを起動する
marimo tutorial intro
このコマンドを実行すると、ブラウザ(Web ページを見るアプリ)が自動的に開き、インタラクティブなチュートリアルが表示されます。操作しながら marimo の基本を学べるので、まずここから始めるのがおすすめです。
Step 3: 新しいノートブックを作る・既存のファイルを開く
marimo edit
ファイル名を省略すると新しいノートブックが作成されます。既存のファイルを開くには marimo edit your_notebook.py のようにファイル名を指定します。ブラウザ上のエディタでセルを追加・編集できます。
Step 4: ノートブックを Web アプリとして公開する
marimo run your_notebook.py
このコマンド 1 つで、Python のコードを隠したままインタラクティブな Web アプリが立ち上がります。スライダーやドロップダウンなどの UI 部品はそのまま使えます。
Step 5: ノートブックをスクリプトとして実行する
python your_notebook.py
marimo のノートブックは普通の Python ファイルなので、ターミナルから直接実行することもできます。バッチ処理や自動化スクリプトとして利用したいときに便利です。
動かしてみた
Python 3.12 の環境で marimo のリポジトリ(ソースコードの置き場)を確認しました。内部は Python バックエンドと TypeScript/React フロントエンドの両方を含む構成になっています。フロントエンドは pnpm + Turbo で管理されており、docker/Dockerfile も同梱されているため、コンテナ(隔離された実行環境)での利用もすぐに始められます。
docs/ ディレクトリには CLI リファレンス・セキュリティポリシー・フックの仕組みなど詳細なドキュメントが充実しています。pip install marimo でコアパッケージが導入でき、marimo tutorial intro コマンドで即座にチュートリアルが起動します。
セルにスライダーを配置して値を動かすと、参照しているセルが自動的に再計算される様子を手元ですぐに確認できます。リアクティブな動作の最小サンプルは次のとおりです。
import marimo as mo
# スライダー UI 要素
slider = mo.ui.slider(1, 100, value=10)
slider # このセルを出力するとスライダーが表示される
# スライダーの値を使った計算(依存セル)
result = slider.value * 2
mo.md(f"スライダーの値: {slider.value}、2倍: {result}")
スライダーを動かすと result と Markdown の表示が即座に更新されます。これが marimo の「リアクティブ」の核心です。
ブラウザで試す(デモ)
このリポジトリにはブラウザ上で marimo の「リアクティブ計算」を体験できるインタラクティブなデモが用意されています。スライダーを動かしたりテキストを入力すると、リアルタイムで結果が変わる様子を確認できます。実際の marimo 環境では、この動作がノートブック全体の依存グラフに沿って自動的に伝播します。インストールなしで雰囲気を試したい方は、まずブラウザデモから触れてみてください。
はじめの一歩 — 実践のコツ
- まずチュートリアルを 1 周する:
marimo tutorial introを実行してチュートリアルを最後まで動かしましょう。スライダー・テーブル・グラフが連動する様子を体で覚えるのが一番の近道です。 - Jupyter からの移行は変換コマンドで: 既存の
.ipynbファイルはmarimo convert your_notebook.ipynb > your_notebook.pyで変換できます。使い慣れたノートブックを marimo で開いてみるのが移行のスムーズな入口です。 - セルの順番は気にしなくてよい: marimo は変数の依存関係を自動で追跡します。セルが上から下に並んでいなくても正しく動きます。
- アプリ公開は
marimo runだけ: Streamlit など別フレームワークは不要です。書いたノートブックをそのままmarimo runするだけで、共有可能な Web アプリになります。 [recommended]オプションで機能拡張: SQL セルや AI によるコード補完を使いたいときはpip install "marimo[recommended]"で追加パッケージをまとめて入れましょう。- Git には
.pyファイルをコミット: marimo のノートブックは普通の Python ファイルです。.ipynbと違い JSON(テキスト形式のデータ記法)ではないため、差分が人間の目で読めます。
活用例
- 機械学習の実験管理: ハイパーパラメータ(モデルの設定値)をスライダーで調整しながら、モデルの性能をリアルタイムで確認できます。実験結果は
.pyファイルで Git 管理し、再現実行はpython notebook.py1 発で行えます。 - SQL+Python のハイブリッド分析: ビルトインの SQL エンジンを使えば、DataFrame(表形式のデータ構造)やデータベース・CSV・Google Sheets を横断的にクエリできます。結果をそのまま Python で加工してグラフにするまでが 1 つのノートブックで完結します。
- 社内レポートの自動化・ダッシュボード化:
marimo runでノートブックを Web アプリ化すれば、非エンジニアでもスライダーやドロップダウンで絞り込めるダッシュボードを提供できます。エンジニアが常にそばにいなくても操作できる社内ツールを低コストで作れます。 - AI エージェントとの連携: Claude Code などのエージェント CLI と
marimo pair機能で連携すると、AI がノートブックのセルを直接編集・生成することも可能です。プロンプト(AI への指示文)を書くだけでセルが追加される体験が実現します。 - 教育・授業用インタラクティブ資料: スライダーや入力フォームを組み込んだノートブックを
marimo runで共有すれば、学生がブラウザから操作しながら学べる教材になります。コードを隠した状態で公開できるため、教える内容に集中させやすくなります。 - チームのプロトタイプ開発: PoC(概念実証、アイデアが本当に動くかを確認する段階)のコードを marimo で書いておけば、そのままデモアプリとして上司や顧客に見せられます。別途フロントエンドを作らずに済み、開発コストを抑えられます。
用語とポイント解説
リアクティブ実行
あるセルの値が変わると、その値を参照しているセルが自動で再実行される仕組みです。かんたんに言うと、「スプレッドシートのセル参照と同じ動き」です。A1 を書き換えれば B1 が自動更新されるのと同じことが Python コードで起きます。依存関係は手動で設定する必要がなく、変数の参照から自動的に推測されます。
Hidden State(隠し状態)
Jupyter でよく起きる問題で、セルを削除してもそのセルで定義した変数がメモリ(一時記憶)に残り続ける状態のことです。かんたんに言うと、「消したはずのものが裏側でまだ生きている」状態です。marimo ではセルを削除すると変数も同時に削除されるため、この問題が発生しません。
.py 形式での保存
marimo のノートブックは .ipynb(Jupyter のファイル形式、内部が JSON)ではなく、普通の Python ファイル .py として保存されます。かんたんに言うと、「ノートブックがそのままプログラムとして読めるファイル」です。Git の PR で差分がテキストとして表示されるため、コードレビューが格段にしやすくなります。
marimo pair
Claude Code や OpenAI Codex などのエージェント型 AI を marimo ノートブックに接続する機能です。かんたんに言うと、「AI がノートブックのセルを直接書いてくれる連携モード」です。ターミナルでエージェントを起動しながら marimo を開くだけで、AI の編集がリアルタイムにノートブックへ反映されます。
WASM 実行(WebAssembly)
WebAssembly(ウェブアセンブリ)は、ブラウザの中でプログラムを高速に動かすための技術です。かんたんに言うと、「サーバーなしでブラウザだけで Python が動く」仕組みです。marimo ではこの機能を使ってノートブックをブラウザ上で完結して共有できます。相手に Python をインストールしてもらう必要がありません。
molab
marimo が提供するクラウド型ノートブックサービスです。かんたんに言うと、「Google Colab の marimo 版」です。ブラウザからアクセスするだけで、インストールなしに marimo を試せます。チームメンバーとノートブックをオンラインで共有する用途にも使えます。
marimo run
ノートブックファイルを Web アプリとして起動するコマンドです。かんたんに言うと、「ノートブックを一般向けのアプリに変えるコマンド」です。実行すると Python コードが非表示になり、UI パーツだけが表示されたアプリ画面が立ち上がります。Streamlit など別のフレームワークを使わずに済むのが大きなメリットです。
依存グラフ
marimo が内部で管理している、セル同士の「参照関係の地図」です。かんたんに言うと、「どのセルがどのセルの結果を使っているかを表した図」です。あるセルの変数が変わったとき、依存グラフをたどって影響するセルだけを再実行するため、無駄な再計算が起きません。
marimo は、Python ノートブックの「再現性の難しさ」「Git 管理のしにくさ」「アプリ化の手間」という三つの悩みを一度に解決してくれるツールです。ぜひ機械学習の実験管理や社内ダッシュボードの自動化などに活用してみてはいかがでしょうか。