Tutorial Marimo: Notebook Python Reaktif dan Reproducible

# Marimo: Notebook Python yang Reaktif dan Reproducible Marimo adalah notebook Python yang menyimpan isinya sebagai berkas `.py` biasa dan menjalankan sel secara reaktif, mirip cara spreadsheet mengh...

By Ruby Abdullah · · tutorial
MarimoNotebookReactiveData ScienceReproducibilityPython

Marimo: Notebook Python yang Reaktif dan Reproducible

Marimo adalah notebook Python yang menyimpan isinya sebagai berkas .py biasa dan menjalankan sel secara reaktif, mirip cara spreadsheet menghitung ulang rumus yang saling bergantung. Marimo dirancang untuk mengatasi masalah yang sering muncul pada alur kerja notebook tradisional, terutama hidden state dan eksekusi yang tidak berurutan. Tutorial ini menjelaskan apa itu Marimo, mengapa modelnya berbeda dari Jupyter, dan cara membangun notebook eksplorasi data interaktif yang juga bisa dijalankan sebagai skrip maupun sebagai aplikasi web.

Mengapa Perlu Notebook Lain?

Notebook populer untuk eksplorasi, pengajaran, dan pelaporan. Namun notebook juga terkenal dengan satu kelas bug tertentu yang berasal dari cara kerja model notebook klasik. Sebelum melihat fitur Marimo, ada baiknya kita namai dulu masalah yang ingin diselesaikannya.

Hidden State

Pada sesi Jupyter pada umumnya, kernel menyimpan setiap variabel yang pernah Anda definisikan, bahkan setelah sel yang membuatnya dihapus. Sebuah notebook bisa tampak berfungsi hanya karena sel yang kini sudah dihapus pernah dijalankan. Buka kembali nanti, jalankan dari atas ke bawah, dan notebook itu gagal. Kode yang terlihat tidak lagi cocok dengan keadaan runtime.

Eksekusi Tidak Berurutan

Jupyter mengizinkan Anda menjalankan sel dalam urutan apa pun. Penghitung In [n] mencatat urutan yang kebetulan Anda pakai, bukan urutan yang reproducible. Dua orang yang menjalankan notebook yang sama bisa memperoleh hasil berbeda tergantung sel mana yang mereka jalankan dan kapan.

Diff dan Version Control yang Buruk

Berkas .ipynb adalah JSON yang menyatukan kode sumber, penghitung eksekusi, dan output ter-encode base64 (gambar, tabel) dalam satu dokumen. Perubahan kode satu baris saja bisa menghasilkan diff yang besar dan berisik. Meninjau pull request notebook menjadi merepotkan, dan konflik merge sering terjadi.

Sulit Digunakan Ulang

Mengubah notebook menjadi skrip atau modul biasanya berarti menyalin sel ke berkas .py dan merapikan urutan eksekusi secara manual. Notebook itu sendiri tidak bisa langsung diimpor atau dijalankan sebagai program.

Marimo mengambil sikap berbeda pada setiap poin ini. Bagian berikut menjelaskan caranya.

Instalasi dan Langkah Awal

Marimo adalah paket Python standar.

pip install marimo

Pastikan instalasi dan periksa versinya:

marimo --version

Buat notebook baru:

marimo new

Buka notebook yang sudah ada di editor:

marimo edit notebook.py

Editor berjalan di browser, tetapi berkas notebook tersimpan di disk sebagai Python biasa. Jika Anda sudah punya notebook Jupyter, konversikan:

marimo convert oldanalysis.ipynb > newanalysis.py

Untuk menyajikan notebook sebagai aplikasi interaktif yang hanya bisa dibaca, bukan dokumen yang bisa diedit:

marimo run notebook.py

Dalam mode run, sel kode disembunyikan dan hanya UI serta output yang ditampilkan. Berkas yang sama adalah dokumen editor, aplikasi, sekaligus skrip. Tidak ada langkah ekspor terpisah untuk mendapatkan program yang berfungsi.

Format Berkas .py

Notebook Marimo adalah berkas Python biasa. Setiap sel adalah fungsi yang didekorasi dengan @app.cell, dan berkas diakhiri dengan blok runner kecil. Notebook minimal terlihat seperti ini:

import marimo

app = marimo.App()

@app.cell

def ():

import marimo as mo

return (mo,)

@app.cell

def (mo):

x = 21

mo.md(f"x is {x}")

return (x,)

if name == "main":

app.run()

Ada dua hal yang patut diperhatikan. Pertama, ini adalah Python valid yang bisa Anda lint, format dengan alat seperti Black atau Ruff, dan tinjau dalam diff biasa. Perubahan kode tampil sebagai perubahan kode, bukan sebagai gumpalan JSON. Kedua, argumen fungsi dan nilai kembalian bukan boilerplate yang Anda rawat manual. Marimo menghasilkannya dari variabel yang dibaca dan didefinisikan setiap sel. Deklarasi itulah yang menggerakkan model reaktif.

Model Eksekusi Reaktif

Inilah gagasan inti Marimo dan pembeda paling jelas dari Jupyter.

Artikel Terkait

Tutorial Kedro: Pipeline Data Science yang Reproducible dan Terstruktur

Kedro: Pipeline Data Science yang Reproducible dan Mudah Dirawat Sebagian besar proyek data science dimulai dari satu no...

DuckDB: Database Analitik In-Process untuk Data Science

DuckDB: Database Analitik In-Process untuk Data Science DuckDB adalah database analitik in-process yang dirancang khusus...

Tutorial Polars: DataFrame Library Ultra-Cepat untuk Data Science

Polars - Tutorial Lengkap Library DataFrame Ultra-Cepat Daftar Isi Pendahuluan Prasyarat Dasar-Dasar Polars [Evaluasi La...

Tutorial Feature Engineering Masterclass: Teknik Feature untuk ML

Tutorial 14: Masterclass Rekayasa Fitur (Feature Engineering) Daftar Isi Pendahuluan Prasyarat Mengapa Rekayasa Fitur Pe...