2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Marimo x DuckDB x S3(minio)で気軽に分析する

2
Last updated at Posted at 2025-07-31

Marimo NotebookとDuck DBを用いて手軽に分析環境を整えます。

Marimo Notebookとは

この記事で説明されている通り、Jupyter Notebookに変わる新しいNotebookとして最近注目を集めています。特に新規性が高い点は、セル間の依存関係を自動的に検知して再実行するためNotebookの再現性を高く保つことができる点です。

他にも、生成AIとの連携やuvなどのパッケージマネージャをうまく扱うことができたり、モダンなNotebook環境と言えると思います。

Marimo Notebook x DuckDB

Marimo NotebookはPythonだけでなく、DBとの接続を容易に行うことが可能です。

image.png

検証

今回はDuckDBを用いてS3(minio)上のparquetファイルを分析します。

と言っても手順は以下の記事とほとんどおなじです。

S3互換ストレージであるMinio環境をセットアップします。
(詳細は↑記事)

compose.yml
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の作成で微妙にエラーが出てる気もしますが先に進みます
image.png

SQLを書いてデータが取得できました
image.png

Marimoではデータフレームの可視化をリッチに表示可能なため、ソートやフィルタリング、統計情報などが簡単にわかります。

image.png
image.png

また、SQLの出力はpolarsのDataFrameとして扱うことができるので、SQLからシームレスにPythonへと移行することができます。

終わりに

DuckDBを利用したアドホック分析は手軽で便利ですが、Marimoと併用することで両者のメリットを活用することができます。SQLとリッチなViewerでデータを理解しつつ、必要に応じてPythonで加工。ある程度方向性が見えたら生成AIに学習スクリプトを書かせる、みたいなことが簡単にできるわけです。その一連の動作に再現性が保証されるのもありがたいです。

wasm notebookを利用することでduckdb x opfsなど利用可能性を考えていましたが、pyodide上動くpython-duckdbだったので無理でした。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?