Marimo NotebookとDuck DBを用いて手軽に分析環境を整えます。
Marimo Notebookとは
この記事で説明されている通り、Jupyter Notebookに変わる新しいNotebookとして最近注目を集めています。特に新規性が高い点は、セル間の依存関係を自動的に検知して再実行するためNotebookの再現性を高く保つことができる点です。
他にも、生成AIとの連携やuvなどのパッケージマネージャをうまく扱うことができたり、モダンなNotebook環境と言えると思います。
Marimo Notebook x DuckDB
Marimo NotebookはPythonだけでなく、DBとの接続を容易に行うことが可能です。
検証
今回はDuckDBを用いてS3(minio)上のparquetファイルを分析します。
と言っても手順は以下の記事とほとんどおなじです。
S3互換ストレージであるMinio環境をセットアップします。
(詳細は↑記事)
services:
minio:
container_name: minio-container
image: minio/minio:RELEASE.2025-07-23T15-54-02Z-cpuv1
ports:
- "9000:9000"
- "9001:9001"
environment:
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=minio123
entrypoint: sh
command: -c "minio server /export --address :9000 --console-address :9001"
volumes:
- ./minio/data:/export
marimo notebookの作成
uv add "marimo[recommended]"
uv run marimo edit main.py
duckdbからMinioへと接続します。
SECRETの作成で微妙にエラーが出てる気もしますが先に進みます

Marimoではデータフレームの可視化をリッチに表示可能なため、ソートやフィルタリング、統計情報などが簡単にわかります。
また、SQLの出力はpolarsのDataFrameとして扱うことができるので、SQLからシームレスにPythonへと移行することができます。
終わりに
DuckDBを利用したアドホック分析は手軽で便利ですが、Marimoと併用することで両者のメリットを活用することができます。SQLとリッチなViewerでデータを理解しつつ、必要に応じてPythonで加工。ある程度方向性が見えたら生成AIに学習スクリプトを書かせる、みたいなことが簡単にできるわけです。その一連の動作に再現性が保証されるのもありがたいです。
wasm notebookを利用することでduckdb x opfsなど利用可能性を考えていましたが、pyodide上動くpython-duckdbだったので無理でした。



