Service2025.05.11
GitHub - marimo-team/marimo: A reactive notebook for Python — run reproducible experiments, query with SQL, execute as a script, deploy as an app, and version with git. Stored as pure Python. All in a modern, AI-native editor.
요약
marimo는 셀 실행이나 UI 요소 상호작용 시 종속 셀을 자동으로 실행하여 코드와 출력을 일관되게 유지하는 반응형 Python 노트북입니다.
이 도구는 숨겨진 상태 없이 재현 가능한 실행을 보장하며, 순수 Python 파일로 저장되어 Git 친화적이고 스크립트 또는 웹 앱으로 배포될 수 있습니다.
marimo는 SQL 지원, AI 기반 코드 생성, 내장 패키지 관리 및 풍부한 대화형 UI 요소를 포함한 광범위한 기능을 제공하여 데이터 작업에 최적화된 올인원 환경을 제공합니다.
상세 내용
marimo는 반응형 Python 노트북으로, 재현 가능한 실험을 실행하고, SQL 쿼리를 수행하며, 스크립트로 실행하거나 애플리케이션으로 배포하고, Git으로 버전 관리할 수 있도록 설계되었습니다. 이는 순수 Python 파일로 저장되며, 현대적이고 AI 친화적인 에디터를 제공합니다. 반응성 (Reactivity): marimo의 핵심은 반응형 프로그래밍 환경입니다.
* 셀을 실행하거나 UI 요소와 상호작용하면, marimo는 해당 셀에 의존하는 모든 셀을 자동으로 실행하거나 'stale'로 표시하여 코드, 출력 및 프로그램 상태의 일관성을 보장합니다. 이는 Jupyter와 같은 전통적인 노트북에서 발생하는 수동 재실행의 오류 발생 가능성을 제거합니다.
* 데이터 흐름(Dataflow): marimo는 변수 참조를 기반으로 하는 결정론적 실행 순서를 따릅니다. 셀의 물리적 위치가 아닌, 변수 간의 종속성을 정적으로 분석하여 필요한 셀만 실행합니다. 이는 와 같이 변수
* 셀을 삭제하면, marimo는 해당 셀의 변수를 프로그램 메모리에서 제거하여 '숨겨진 상태(hidden state)' 문제를 방지합니다.
* 비용이 많이 드는 셀의 경우, 런타임을
* 슬라이더, 드롭다운, 데이터프레임 변환기, 채팅 인터페이스와 같은 UI 요소와 상호작용 시, 이를 사용하는 셀들이 자동으로 최신 값으로 다시 실행됩니다. 재현성 (Reproducibility):
*
* 내장 패키지 관리 기능을 통해 Git 친화성 (Git-friendly):
* 노트북은 배포 및 실행 (Deployable & Executable):
* Python 스크립트(
* 대화형 웹 애플리케이션(
* Jupyter 노트북을 marimo 노트북으로 자동 변환하는 CLI ( AI 네이티브 (AI-native):
* 데이터 작업에 특화된 AI 어시스턴트를 통해 셀을 생성할 수 있습니다. 메모리에 있는 변수에 대한 컨텍스트를 활용하여 전체 노트북을 'zero-shot' 방식으로 생성할 수 있습니다. 시스템 프롬프트 사용자 정의, API 키 연결 및 로컬 모델 사용을 지원합니다. 데이터 중심 (Designed for Data):
* 수백만 개의 행에 대해 페이지 넘김, 검색, 필터링 및 정렬을 빠르게 수행하는
* Python 값에 의존하는 SQL 쿼리를 구성하고 데이터프레임, 데이터베이스, 데이터 웨어하우스/레이크하우스, CSV, Google Sheets 등에서 실행할 수 있으며, 결과는 Python 데이터프레임으로 반환됩니다.
* Python 변수로 매개변수화된 현대적인 에디터 및 생태계 (Modern Editor & Ecosystem):
* GitHub Copilot, AI assistants, Ruff 코드 포맷팅, HTML 내보내기, 빠른 코드 완성, VS Code 확장, 대화형 데이터프레임 뷰어 등 다양한 생산성 기능을 포함합니다.
* VS Code, Cursor, Neovim, Zed 등 선호하는 텍스트 에디터에서 편집할 수 있습니다.
주요 특징 및 핵심 방법론은 다음과 같습니다:
* 데이터 흐름(Dataflow): marimo는 변수 참조를 기반으로 하는 결정론적 실행 순서를 따릅니다. 셀의 물리적 위치가 아닌, 변수 간의 종속성을 정적으로 분석하여 필요한 셀만 실행합니다. 이는 와 같이 변수
A가 B에서 사용되고, B가 C에서 사용되는 경우, A가 변경되면 B와 C만 다시 실행됨을 의미합니다.* 셀을 삭제하면, marimo는 해당 셀의 변수를 프로그램 메모리에서 제거하여 '숨겨진 상태(hidden state)' 문제를 방지합니다.
* 비용이 많이 드는 셀의 경우, 런타임을
lazy 모드로 구성하여 자동으로 실행하는 대신 영향을 받는 셀을 'stale'로 표시하는 옵션을 제공합니다.* 슬라이더, 드롭다운, 데이터프레임 변환기, 채팅 인터페이스와 같은 UI 요소와 상호작용 시, 이를 사용하는 셀들이 자동으로 최신 값으로 다시 실행됩니다.
hidden state가 없고, deterministic execution을 보장하며, built-in package management를 제공합니다.* 내장 패키지 관리 기능을 통해
import 시 패키지를 설치할 수 있으며, 노트북 파일 내에 패키지 요구사항을 직렬화하고 격리된 venv 샌드박스에 자동 설치할 수 있습니다.pure Python (.py 확장자) 파일로 저장됩니다. 이는 .ipynb 파일과 달리 복잡한 JSON 구조가 아니므로, Git을 통한 버전 관리 및 변경 사항 추적이 훨씬 용이합니다. SQL 쿼리도 파이썬 코드 내에 내장됩니다.python your_notebook.py)로 직접 실행할 수 있습니다.* 대화형 웹 애플리케이션(
marimo run your_notebook.py) 또는 슬라이드로 배포할 수 있으며, WASM을 통해 브라우저에서 실행할 수도 있습니다.* Jupyter 노트북을 marimo 노트북으로 자동 변환하는 CLI (
marimo convert) 및 웹 인터페이스를 제공합니다.Interactive dataframes를 제공합니다.* Python 값에 의존하는 SQL 쿼리를 구성하고 데이터프레임, 데이터베이스, 데이터 웨어하우스/레이크하우스, CSV, Google Sheets 등에서 실행할 수 있으며, 결과는 Python 데이터프레임으로 반환됩니다.
* Python 변수로 매개변수화된
Dynamic markdown을 사용하여 동적인 스토리를 전달할 수 있습니다.* VS Code, Cursor, Neovim, Zed 등 선호하는 텍스트 에디터에서 편집할 수 있습니다.
marimo는 Pluto.jl, ObservableHQ, Bret Victor의 에세이 등에서 영감을 받았으며, 반응형 데이터 흐름 프로그래밍이라는 광범위한 움직임의 일부로 Python 노트북을 재현 가능하고, 대화형이며, 공유 가능한 Python 프로그램으로 재창조하는 것을 목표로 합니다.
GitHub
Shared by Anonymous