14 ポイント 投稿者 GN⁺ 2024-01-14 | 1件のコメント | WhatsAppで共有
  • データとモデルを使ってすばやく試せるノートブック
  • セル単位で実行、自動計算と更新
  • 隠れた状態がなく、常に再実行可能
  • Pythonファイルとして保存されるためGit-Friendly
  • ノートブックをパイプライン化したり、インタラクティブなWebアプリとしてデプロイ可能

リアクティブプログラミング環境

  • marimoは、ノートブックのコード、出力、プログラム状態の一貫性を保証する。
  • セルを実行すると、marimoがその変数を参照しているセルを自動更新し、手動でセルを再実行する際のミスを防ぐ。
  • セルを削除すると、marimoがプログラムメモリからその変数を取り除き、隠れた状態をなくす。
  • ノートブックは変数参照に基づく決定的な順序で実行され、ページ上のセル位置には依存しない。
  • スライダー、ドロップダウン、データフレーム変換器のようなUI要素とやり取りすると、その値を使うセルが自動的に最新の値で再実行される。
  • marimoはコードを静的解析し、実行が必要なセルだけを実行することで性能を向上させる。
  • marimoには、GitHub Copilot、Blackコードフォーマッティング、HTMLエクスポート、高速なコード補完、VS Code拡張機能など、さまざまな便利機能が含まれる。

クイックスタート

  • インストール: ターミナルで pip install marimo または conda install -c conda-forge marimo を実行してmarimoをインストールする。
  • ノートブック作成: marimo editor で空のノートブックを作成し、marimo edit your_notebook.py で特定名のノートブックを編集する。
  • アプリ実行: marimo run your_notebook.py を実行して、Webアプリとしてノートブックを動かす。このアプリはmarimoクラウドにデプロイされる。
  • スクリプトとして実行: python your_notebook.py を実行してmarimoノートブックをスクリプトとして動かす。
  • Jupyterノートブックの自動変換: CLIを使ってJupyterノートブックをmarimoノートブックへ自動変換する。
  • チュートリアル: marimo tutorial --help を実行して、すべてのチュートリアルを一覧表示する。

さらに詳しく

  • marimoは初心者でも簡単に始められ、上級ユーザー向けの多様な機能も提供する。
  • たとえば、marimoで作られた埋め込み可視化ツール(動画)を確認できる。
  • ドキュメント、examples/ フォルダ、ギャラリーから、さらに多くの情報を得られる。

インスピレーション

  • marimoは、再現可能で、インタラクティブで、共有可能なPythonプログラムとしてPythonノートブックを再発明する。
  • 使うツールが思考様式を形作るという信念のもと、Pythonコミュニティにより良いプログラミング環境を提供したいと考えている。
  • Pluto.jl、ObservableHQ、Bret Victorのエッセイなど、多くの場所やプロジェクトから着想を得ている。
  • marimoは、IPyflow、streamlit、TensorFlow、PyTorch、JAX、Reactなどの機能的・宣言的・リアクティブプログラミングのアイデアが多様なツールを改善していく、より大きなリアクティブデータフロープログラミング運動の一部である。

GN⁺の意見

  • marimoは、従来のJupyterノートブックのようなツールの限界を克服しようとする革新的なリアクティブPythonノートブックであり、データやモデルの実験、ノートブックの正確性への確信、さらにパイプラインやインタラクティブなWebアプリとしての実用化を可能にする。
  • このツールはコードの一貫性と再現性を重視し、ユーザーインターフェース要素との相互作用を簡素化することで、プログラミング体験を改善する。
  • marimoは、データサイエンス、研究、教育分野での協業と共有を容易にし、コミュニティ形成を通じてユーザー同士の相互作用と知識共有を促進するプラットフォームを提供する。

1件のコメント

 
GN⁺ 2024-01-14
Hacker Newsの意見
  • JupyterとObservableノートブックのユーザーとして、Observableにはセルのリアクティブ性が不足していると感じていたが、この問題をうまく解決していると思う。Marimoのファイル形式がPythonなのも良いし、Apache 2ライセンスなのも気に入っている。GitHub Copilotの機能発見には感心した。

    • JupyterとObservableノートブックのユーザーが、セルのリアクティブ性の問題をうまく解決したMarimoに好意的な反応を示し、ファイル形式がPythonである点やApache 2ライセンス、GitHub Copilotの機能を高く評価している。
  • Jupyter Notebookを使う共同作業者との仕事では、環境設定とJupyterの隠れた状態が問題だった。このプロジェクトは後者の問題を解決しようとしているが、その代わりに柔軟性を犠牲にしている。再現性を重視するなら、これは妥協点になりうる。requirements.txtは別の問題に対する標準的な解決策だが、使うのが面倒だ。

    • Jupyter Notebookの環境設定と隠れた状態の問題を指摘し、このプロジェクトは後者を解決しようとしているものの、柔軟性が下がる可能性があると言及している。requirements.txtの利用は煩雑だと感じており、よりよい解決策を望んでいる。
  • ついに誰かがこれに取り組んでくれていてうれしい。Vscode拡張機能はあるが、Vscodeの既存のノートブックインターフェースではなく、ブラウザ全体のビューを開く点は残念だ。パッケージ管理と本番コードのデプロイについての考えも共有している。

    • Vscode拡張機能への期待と物足りなさを表しつつ、パッケージ管理とコードデプロイの重要性を強調している。プロジェクトへの貢献意欲も示している。
  • プラットフォームについていくつか質問がある。インタラクティブウィジェット、Jupyterエコシステムへの依存関係や相互作用について説明してほしい。

    • プラットフォームのインタラクティブウィジェット対応や、Jupyterエコシステムとの関係について知りたがっており、自分のウィジェットをこのプラットフォームへ移植することにも関心を示している。
  • Jupytext拡張機能は過小評価されていると思う。Jupyterのgitとの相互作用の問題や、ライブラリファイル作成を妨げるプログラミング慣行の問題を解決してくれる。この新しいプロジェクトのリアクティブな更新は、初心者や複雑なプロジェクトに役立ちそうだ。

    • Jupytext拡張機能の有用性を強調し、この新しいプロジェクトのリアクティブな更新がプログラミング初心者や複雑なプロジェクトの助けになるだろうと期待している。
  • 依存関係の一覧が短く、tornado以外には多くの追加依存を引き込まない。とても便利でクールなプロジェクトに見える。

    • プロジェクトの依存関係リストは簡潔で、tornadoを除けば大きな負担はないと評価している。プロジェクトの有用さと魅力を称賛している。
  • Marimoは素晴らしいと思う。markdownでmermaid.jsをサポートすることを検討しているのか気になる。

    • Marimoに対して好意的な反応を示し、markdownでのmermaid.jsサポート追加の可能性を尋ねている。
  • Marimoの創設者であるAkshayとMylesのファンだ。Jupyterの競合が現れたことで、科学ツールのエコシステムに良い影響があることを期待している。

    • Marimoとその創設者たちを支持し、このような競争が科学ツールのエコシステムに前向きな変化をもたらすことを期待している。
  • Quartoは、このスレッドで言及されているJupyterの問題の多くを解決していると思う。NIHでもQuartoの利用が推奨されており、トレーニングも提供されている。

    • QuartoがJupyterのさまざまな問題を解決しうると述べ、NIHでQuartoの利用が推奨され、研修も提供されていることを共有している。
  • 同じ変数を何度も定義するのはエラーだ。理由は明らかだ。ただし、その変数が最初に使われるセルでしか使われないなら、変数名の再利用は可能であるべきだ。

    • 変数の再定義がエラーになることを指摘しつつ、特定の条件下では変数名の再利用を許可すべきだという意見を示している。