再現性が高く、Git対応で、スクリプトやアプリとしても展開できる リアクティブなPythonノートブック。
marimoはリアクティブなPythonノートブックです。セルを実行したり、UIエレメントと対話することで、依存するセルが自動的に実行される(または古い状態としてマークされる)ため、コードと出力の一貫性が保たれます。marimoノートブックは純粋なPythonとして保存され、スクリプトとして実行したり、アプリケーションとしてデプロイすることができます。
主な特徴
- 🚀 オールインワン:
jupyter
、streamlit
、jupytext
、ipywidgets
、papermill
などの代替として - ⚡️ リアクティブ: セルを実行すると、marimoは依存するすべてのセルをリアクティブに実行、または古い状態としてマーク
- 🖐️ インタラクティブ: スライダー、テーブル、プロットなどのUI要素をPythonにバインド - コールバック不要
- 🔬 再現性: 隠れた状態なし、決定論的な実行、ビルトインのパッケージ管理
- 🏃 実行可能: CLIの引数でパラメータ化されたPythonスクリプトとして実行
- 🛜 共有可能: インタラクティブなWebアプリやスライドとしてデプロイ、WASMでブラウザ上で実行
- 🛢️ データ処理向け: SQLでデータフレームやデータベースを照会、データフレームのフィルタリングと検索
- 🐍 Git対応: ノートブックは
.py
ファイルとして保存 - ⌨️ モダンなエディタ: GitHub Copilot、AIアシスタント、vimキーバインド、変数エクスプローラーなど多数の機能
pip install marimo && marimo tutorial intro
オンラインプレイグラウンドで試してみましょう!完全にブラウザ上で動作します。
CLIの基本を学ぶにはクイックスタートへジャンプ。
marimoは、ノートブックのコード、出力、プログラムの状態の一貫性を保証します。これにより、Jupyterなどの従来のノートブックに関連する多くの問題を解決します。
リアクティブなプログラミング環境 セルを実行すると、marimoはその変数を参照するセルを自動的に実行し、セルを手動で再実行するというエラーが起きやすいタスクを排除します。セルを削除すると、marimoはそのセルの変数をプログラムメモリから削除し、隠れた状態を排除します。
重い処理のノートブックにも対応 marimoでは、ランタイムを遅延実行するように設定できます。影響を受けるセルを自動実行する代わりに、古い状態としてマークします。これにより、プログラムの状態を保証しながら、重い処理のセルが誤って実行されることを防ぎます。
同期されたUI要素 スライダー、ドロップダウン、データフレーム変換、チャットインターフェースなどのUI要素と対話すると、それらを使用するセルが最新の値で自動的に再実行されます。
インタラクティブなデータフレーム 数百万行のデータを高速にページング、検索、フィルタリング、ソートできます。コード不要です。
パフォーマンスの高いランタイム marimoは、コードを静的に分析することで、実行が必要なセルのみを実行します。
動的なマークダウンとSQL マークダウンを使用して、Pythonのデータに依存する動的なストーリーを作成できます。または、Pythonの値に依存するSQLクエリを作成し、データフレーム、データベース、CSV、Google Sheets、その他のデータソースに対して実行できます。組み込みのSQLエンジンは結果をPythonデータフレームとして返します。
マークダウンやSQLを使用していても、ノートブックは純粋なPythonのままです。
決定論的な実行順序 ノートブックは、セルのページ上の位置ではなく、変数の参照に基づいて決定論的な順序で実行されます。伝えたいストーリーに合わせてノートブックを整理できます。
ビルトインのパッケージ管理 marimoには、すべての主要なパッケージマネージャーのビルトインサポートがあり、インポート時にパッケージをインストールできます。marimoはパッケージの依存関係をノートブックファイルにシリアライズし、隔離された仮想環境サンドボックスに自動インストールすることもできます。
オールインワン marimoには、GitHub Copilot、AIアシスタント、Ruffコードフォーマッティング、HTMLエクスポート、高速なコード補完、VS Code拡張機能、インタラクティブなデータフレームビューアー、その他多くの機能が付属しています。
インストール ターミナルで以下を実行:
pip install marimo # または conda install -c conda-forge marimo
marimo tutorial intro
ノートブックの作成
以下のコマンドでノートブックを作成・編集:
marimo edit
アプリとして実行 Pythonコードを非表示かつ編集不可の状態でWebアプリとして実行:
marimo run your_notebook.py
スクリプトとして実行 コマンドラインでノートブックをスクリプトとして実行:
python your_notebook.py
Jupyterノートブックの自動変換 CLIを使用してJupyterノートブックをmarimoノートブックに自動変換:
marimo convert your_notebook.ipynb > your_notebook.py
またはWeb変換ツールを使用することもできます。
チュートリアル 全てのチュートリアルを表示:
marimo tutorial --help
ドキュメントのFAQをご覧ください。
marimoは簡単に始められ、パワーユーザーのための機能も豊富です。 例えば、こちらはmarimoで作成した埋め込み可視化ツール (動画)です:
詳しくはドキュメント、examples/
フォルダ、ギャラリーをご覧ください。
チュートリアル | 入力 | プロット | Layout |
すべての貢献を歓迎します!専門家でなくても助けることができます。 CONTRIBUTING.md をご覧ください。
質問がありますか? Discord! でお問い合わせください。
コミュニティ
私たちはコミュニティを構築しています。ぜひ一緒に交流しましょう!
- 🌟 GitHubでスターを付ける
- 💬 Discordでチャットする
- 📧 ニュースレターを購読する
- ☁️ クラウドのウェイトリストに登録する
- ✏️ GitHubディスカッションを開始する
- 🦋 Blueskyでフォローする
- 🐦 Twitterでフォローする
- 🕴️ LinkedInでフォローする
marimoは、エラーが発生しやすいJSONのスクラッチパッドではなく、再現可能でインタラクティブかつ共有可能なPythonプログラムとして、Pythonノートブックを再発明したものです。
私たちは、使用するツールが思考の仕方を形作ると信じています。より良いツールは、より良い思考をもたらします。marimoを通じて、Pythonコミュニティに研究を行い、それを伝えるための、コードを試し、共有するための、計算科学を学び、教えるための、より良いプログラミング環境を提供したいと考えています。
私たちのインスピレーションは、 Pluto.jl, ObservableHQ, Bret Victor's essays など、多くの場所やプロジェクトから得ています。 marimoは、リアクティブデータフロープログラミングへの大きな流れの一部です。 IPyflow,streamlit, TensorFlow, PyTorch, JAX, React など、関数型、宣言型、リアクティブプログラミングのアイデアが、幅広いツールをより良いものへと変革しています。