Skip to content

Latest commit

 

History

History
267 lines (197 loc) · 16.1 KB

File metadata and controls

267 lines (197 loc) · 16.1 KB

再現性が高く、Git に優しく、スクリプトやアプリとして展開できるリアクティブな Python ノートブック。

ドキュメント · Discord · サンプル · ギャラリー · YouTube

English | 繁體中文 | 简体中文 | 日本語 | Español

discord Pepy Total Downloads Conda Downloads

marimo はリアクティブな Python ノートブックです。セルを実行したり UI 要素を操作すると、marimo は依存するセルを自動的に実行する(または影響を受けるセルを古いものとしてマークする)ことで、コードと出力の一貫性を保ちます。marimo のノートブックは純粋な Python として保存され、スクリプトとして実行でき、アプリとしてデプロイできます。

Highlights(主な特徴)

  • 🚀 batteries-included: jupyterstreamlitjupytextipywidgetspapermill などの代替を目指します。
  • ⚡️ reactive: セルを実行すると marimo はリアクティブにすべての依存セルを実行するか、影響を受けるセルを古いものとしてマークします。
  • 🖐️ interactive: スライダー、テーブル、プロットなどを Python にバインドできます(コールバック不要)。
  • 🐍 git-friendly: ノートブックは .py ファイルとして保存されます。
  • 🛢️ designed for data: データフレーム、データベース、ウェアハウス、レイクハウスを SQL でクエリしたり、データフレームをフィルタ・検索できます。
  • 🤖 AI-native: データ作業に特化した AI でセルを生成できます。
  • 🔬 reproducible: 隠れた状態なし、決定論的な実行、組み込みパッケージ管理を備えています。
  • 🏃 executable: ノートブックを Python スクリプトとして実行でき、CLI 引数でパラメータ化できます。
  • 🛜 shareable: インタラクティブな Web アプリとしてデプロイしたり、スライドに変換したり、WASM でブラウザ実行できます。
  • 🧩 reusable: ノートブック間で関数やクラスをインポートして再利用できます。
  • 🧪 testable: ノートブックに対して pytest を実行できます。
  • ⌨️ a modern editor: GitHub Copilot、AI アシスタント、Ruff によるコード整形、高速補完、VS Code 拡張 などのエディタ機能を備えています。
  • 🧑‍💻 use your favorite editor: VS Code や Cursor、neovim、Zed、その他のテキストエディタで編集できます。
pip install marimo && marimo tutorial intro

ブラウザのみで動作するオンラインプレイグラウンドでも marimo を試すことができます: https://marimo.app/l/c7h6pz

クイックスタートは次のセクションを参照してください。

A reactive programming environment

marimo はノートブックのコード、出力、プログラム状態の一貫性を保証します。これにより Jupyter のような従来のノートブックに関連する多くの問題が解決されます(詳細は FAQ を参照)。

A reactive programming environment. セルを実行すると marimo は 反応 し、その変数を参照するセルを自動的に再実行することで、手動でセルを再実行することに起因するミスを防ぎます。セルを削除すると、marimo はその変数をメモリから削除し、隠れた状態を排除します。

Compatible with expensive notebooks. marimo はランタイムを遅延評価に設定でき、影響を受けるセルを自動実行する代わりに古いものとしてマークできます。これにより、高コストなセルの誤実行を防ぎつつプログラム状態の保証を提供します。

Synchronized UI elements. スライダーやドロップダウン、データフレーム変換、チャットインターフェースなどの UI 要素を操作すると、それらを使うセルが自動的に最新の値で再実行されます。

Interactive dataframes. 数百万行のデータをコード不要でページング、検索、フィルタ、ソートできます。

Generate cells with data-aware AI. データに文脈を持った AI アシスタントでコードを生成したり、ノートブック全体をゼロショットで生成できます。システムプロンプトのカスタマイズや独自 API キーの利用、ローカルモデルの使用にも対応します。

Query data with SQL. Python 値に依存する SQL クエリを組み立て、データフレーム、データベース、CSV、Google Sheets などに対して実行できます。組み込みの SQL エンジンは結果を Python のデータフレームとして返します。

ノートブックは SQL を使っていても純粋な Python のままです。

Dynamic markdown. Python 変数でパラメタライズされた Markdown を使って動的なストーリーを作成できます。

Built-in package management. marimo は主要なパッケージマネージャをサポートし、インポート時にパッケージをインストールしたり、ノートブック内に依存関係を埋め込んで再現可能な環境を構築できます。

Deterministic execution order. ノートブックの実行順序はセルのページ上の位置ではなく、変数参照に基づいて決定されます。

Performant runtime. 静的解析により、実行が必要なセルのみを効率的に実行します。

Batteries-included. GitHub Copilot、AI アシスタント、Ruff による整形、HTML 出力、インタラクティブなデータフレームビューア、そして VS Code 拡張 など、多数の便利機能が含まれています。

Quickstart

marimo の基本的な概念を説明するプレイリスト が公式 YouTube にあります。

Installation. ターミナルで次を実行します。

pip install marimo  # または conda install -c conda-forge marimo
marimo tutorial intro

SQL セルや AI 補完などの追加機能を含めてインストールするには、次を実行します。

pip install "marimo[recommended]"

Create notebooks.

ノートブックを作成または編集するには:

marimo edit

Run apps. ノートブックを Web アプリとして実行し、Python コードを非表示にして編集不可にできます:

marimo run your_notebook.py

Execute as scripts. ノートブックをスクリプトとしてコマンドラインから実行できます:

python your_notebook.py

Automatically convert Jupyter notebooks. CLI で Jupyter ノートブックを marimo ノートブックに変換できます:

marimo convert your_notebook.ipynb > your_notebook.py

または ウェブインターフェース を使えます。

Tutorials.

すべてのチュートリアルを一覧表示するには:

marimo tutorial --help

Share cloud-based notebooks.

molab は marimo のクラウドサービスで、ノートブックの共有や実行が可能です。

Questions?

詳細はドキュメントの FAQ を参照してください。

Learn more

marimo は導入が簡単で、パワーユーザーにも多くの機能を提供します。例えば、marimo で作られた埋め込み可視化ツールの例があります(動画)。

詳細は ドキュメント使用例ギャラリー をご覧ください。

Tutorial Inputs Plots Layout

Contributing

貢献を歓迎します。詳しい開始方法は CONTRIBUTING.md を参照してください。

質問がありますか?Discord でお問い合わせください。

Community

コミュニティに参加してください!

A NumFOCUS affiliated project. marimo は NumFOCUS コミュニティに所属しています。

インスピレーション ✨

marimo は、エラーが発生しやすい JSON のスクラッチパッドではなく、再現性が高く、インタラクティブで、共有可能な Python プログラムとしての Python ノートブックの再発明です。

私たちは、使用するツールが思考のあり方を形作ると信じています — より良いツールは、より良い思考を促します。marimo を通じて、研究とその伝達、コードの実験と共有、計算科学の学習と教育に適した、より良いプログラミング環境を Python コミュニティに提供したいと考えています。

私たちのインスピレーションは多くの場所やプロジェクトから来ています。特に Pluto.jlObservableHQ、および Bret Victor のエッセイ から多くを学びました。marimo はリアクティブなデータフロープログラミングへの大きなムーブメントの一部です。IPyflow、streamlit、TensorFlow、PyTorch、JAX、React といったプロジェクトから、関数型・宣言型・リアクティブプログラミングの考え方が多くのツールをより良く変えているのを見ています。