もうJupyterに戻れない。次世代Notebook“marimo”を使ったら革命だった

この記事は GMOインターネットグループ Advent Calendar 2025 5日目の記事です。
こんにちは!
GMOインターネット株式会社の杉浦巧です。
今回は最近触って感動したmarimoに関して紹介します!

はじめに

Python で分析や可視化をするとき、セルごとに実行できる Notebook 形式は本当に便利ですよね。
みなさんは普段、どの Notebook を使っていますか?
多くの方は Jupyter や Google Colab を使っているのではないでしょうか。

そんな中、最近 “次世代ノートブック” と呼ばれる marimo を触ってみたところ、あまりにも快適で驚きました。
「え、もう Jupyter に戻れない…」と本気で感じるレベルです。

marimoとは何か?

marimo は オープンソースの Python ノートブック で、
従来のノートブックが抱えていた “再現性” や “バージョン管理のしづらさ” を解決することを目的に作られたツールです。

一言でいえば、

「ノートブックの手軽さ」と「ソフトウェアとしての堅牢さ」を両立させた新しい開発体験を提供してくれる存在です。

公式サイトとリポジトリのリンクを以下にまとめておきます。

https://marimo.io/
https://github.com/marimo-team/marimo

marimoのここがすごい!!

セルの依存関係の自動管理

marimo はノートブック全体を「データフローグラフ」として扱い、あるセルを変更すると、そのセルに依存する部分だけが自動で再実行されます。
そのため「どのセルから実行するべきか」「実行順がバグって壊れた」という Notebook 特有の悩みがなくなります。常に一貫した状態を保てるのが大きな魅力です。

リアクティブ性

コードや値を変更すると、グラフやUIが即座に更新されます。
“実行ボタンを押す” という概念がほぼ不要で、リアクティブアプリのような体験が得られます。UIパーツとコードも自動で同期するため、手間なくインタラクティブな分析環境を構築できます。

Gitフレンドリー

marimo のノートブックは .py ファイルとして保存されるため、Git でのバージョン管理が非常にしやすいです。
差分が綺麗に表示され、レビューやマージがスムーズに行えます。従来の Notebook にありがちな「出力混ざり問題」も回避できます。

DBフレンドリー

SQL の実行、データフレーム操作、データベースとの接続が自然に記述できるようになっています。
データ分析〜集計〜可視化までの一連の流れを marimo 上で完結させることができ、データ関連の作業と相性が非常に良いです。

AIネイティブな設計

marimo は AI 活用を前提にした設計になっており、AI の提案によるコード作成、Chat UI の埋め込み、LLM と連動したインタラクティブアプリの構築などが可能です。
Notebook と AI の組み合わせが自然に扱えるのは大きな強みです。

テスト可能性

marimo のノートブックは Python モジュールとして import できるため、pytest などを使ったユニットテストを簡単に書けます。
Notebook を “本番品質” に寄せるための仕組みが初めから用意されている点が特徴的です。

デモ

今回は marimo を立ち上げて BigQuery と連携し、データを可視化するところまでを紹介します。

インストール&起動

Python環境があればpipでインストールするだけで、簡単に利用できます。

pip install marimo


uvやconda環境の方は以下で追加します。

uv add marimo or conda install -c conda-forge marimo

インストールが完了したら、marimo_notebook を起動してみます。
自動的に .py ファイルが作成されるので、任意の名前を付けてください。

marimo edit my_notebook.py

起動が完了すると、次のように URL が出力されます。
クリックするか、ブラウザにコピーしてアクセスしてください。

(marimo-sample) marimo-sample$ marimo edit my_notebook.py

        Edit my_notebook.py in your browser 📝

        ➜  URL: http://localhost:2718?access_token=q3546u57ektyjrt4u57eiyj

リンクに遷移して以下のような画面になっていれば起動成功です。

Agent設定

このままでも利用できますが、今の時代は AI チャットやコード補完が欲しくなりますよね。
marimo でも、設定を行えば Copilot のような補完を使えるようになります。

まず、左側のメニューから 「Chat with AI」 タブを開き、「AI settings」 をクリックします。
次に 「AI Providers」 タブを選択し、利用したい AI の API キーBase URL を設定してください。

次に AI Models のタブで、利用したいモデルを ON にします。

その後、AI Features タブに戻り、
CODE COMPLETION」と「AI ASSISTANT」の項目で、先ほど ON にしたモデルを選択します。

「CODE COMPLETION」については、GitHub Copilot を使っている場合は Provider から Copilot を選択してください。
好きなモデルを使いたい場合は custom を選択すれば問題ありません。

設定が終わったら、試しに AI with chat で何かプロンプトを入力してみてください。
問題なく応答が返ってくれば設定完了です。

初回実行時は、必要なライブラリがインストールされていない場合に警告が出ることがあります。
その際は、自分の環境に合わせて Install をクリックしてください。私は uv を使ってインストールしました。

従来は Jupyter でセルを使ってインストールしていましたが、marimo では不足ライブラリをワンクリックで入れられるので、地味に嬉しいポイントです。

これで Chat 機能・Generate 機能・Completion 機能 が使えるようになります。

DB接続

今回は、DB の接続先として BigQuery に接続します。
左メニューの Explore data sources から Add database or catalog をクリックしてください。

次に BigQuery を選択し、project_iddatasetCredentials JSON を入力します。

余談ですが、これだけ多くの種類のデータベースをサポートしているのは本当にありがたいですね。

Add をクリックすると、対応するコードがセルに自動生成されます。
そのセルを実行すると、DATASOURCES タブに指定したデータセットがマウントされていることを確認できます。

marimo では Python や Markdown に加えて SQL もサポートしているため、セル内で直接 SQL を実行できるのも便利なポイントです。

SQL セルでは、取得するデータソースと出力先の変数名を指定します。
セルを実行すると、指定した変数が自動的に追加されているのを確認できるはずです。

また、クエリ結果については 簡易的な可視化 も自動で行ってくれます。
普段の業務で SQL を中心にデータ加工をしている方は、こちらの方が扱いやすいと感じるかもしれませんね。

可視化

最後に、取得したデータを可視化してみます。
matplotlib を使っても良いのですが、今回は 手軽にインタラクティブな可視化 を行うため、marimo ライブラリを使って描画してみます。

先ほど SQL で取得したデータを、以下のコードで可視化します。

# セル2
start, end = date.value

filtered = df.filter(
    (pl.col("record_date") >= start) &
    (pl.col("record_date") <= end)
)

mo.ui.altair_chart(
    alt.Chart(filtered.to_pandas())
       .mark_line()
       .encode(x="record_date:T", y="value1:Q")
       .properties(height=300, title="value1 の推移(期間変更で自動更新)")
)

実行すると、以下のようなグラフが表示されます。
また、セル 1 で期間を選択すると、下のグラフの表示範囲が自動で更新されます。

このように UI コンポーネントを簡単に設置できる のも、marimo の大きな強みです。

まとめ

今回は簡単なデモでしたが、使いこなせば BI ツールやアプリケーションとしてデプロイすることも可能です。特に、組織的にデータ分析を行っている環境では、コードで管理できる点などが刺さるポイントだと思います。

一方で、まだ動作が安定しない部分があるのも事実で、大規模に組織導入するには不安定なところも残っています。

marimo は「Notebook の便利さ」と「ソフトウェアとしての堅牢さ」を両立させた、これまでにない開発体験を提供するツールです。セルの依存関係は自動管理され、リアクティブに動作し、Git・データベース・AI とも自然に連携できます。テストや再利用も容易で、Notebook を使い捨てではなく“育てられる資産”へと変えてくれます。

Jupyter や Colab を普段使っている方ほど、「ノートブックでもここまでできるのか」という違いを強く感じるはずです。
新しい選択肢として、一度触ってみていただければと思います。

ブログの著者欄

杉浦 巧

GMOインターネット株式会社

機械学習エンジニア 2023年にGMO NIKKO株式会社へ新卒入社。 2025年にGMOインターネットに転籍 入社後は、グループ横断プロジェクト「AIしあおうぜ!」のアドバイザーを務めるほか、広告効果予測プロジェクトや漫画解析AI、マーケティングミックスモデリング(MMM)、新規事業におけるMLOps構築やモデル開発など、幅広い開発に携わる。 専門は時系列解析や数理最適化。 趣味はバイク、釣り、ベースギターの演奏、料理。

採用情報

関連記事

KEYWORD

TAG

もっとタグを見る

採用情報

SNS FOLLOW

GMOインターネットグループのSNSをフォローして最新情報をチェック