marimo ノートブックで機械学習 (1)

>100 Views

December 14, 25

スライド概要

新しい Python の notebook 環境である marimo の解説スライドを、marimo を使って作成しました。

profile-image

機械学習・音声認識・プログラミングに関する書籍を執筆しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

2025/12/13 16:55 slide1.py marimo ノートブックで機械学習 (1) DAG Markdown text * item1 * item2 = 127.0.0.1:2718 Python code 1/1

2.

2025/12/13 17:02 slide1.py はじめに このスライドは、marimo(アプリのスライドモード)で作成したものです 1つのマークダウンセルが1ページのスライドになります 印刷は PDF で1ページずつで出力して貼り合わせています 元になった文章は note で公開しています marimo ノートブックで機械学習 (1) 【注意】 marimo を用いたコードは、荒木雅弘 : 『Pythonではじめる機械学習』 (森北出版, 2025)には含まれ ておりません。本ドキュメントは、同書の補足資料です。 127.0.0.1:2718 1/1

3.

2025/12/13 16:56 slide1.py marimo とは 次世代の Python notebook 環境 コードセル間の関係を DAG(有向非巡回グラフ)として管理することで、ある変数の値を変更すると、その変 数に依存するセルが自動的に再実行される この機能によって、変数の値をスライダーやドロップダウンリストでインタラクティブに変更すると、そ の値を利用して計算したデータやグラフ表示が自動的に更新される notebook は Python のコードとして保存されるので、Git やコーディングエージェントとの相性がよい 127.0.0.1:2718 1/1

4.

2025/12/13 16:56 slide1.py marimo に至る道 Jupyter notebook で十分なのでは? Jupyter notebook は、Python の試行錯誤的コーディングに適しているので、初学者の学習に特に有用 しかし、基本設計が 2010 年代初頭のものであり、最新の Python エコシステムや生成 AI が十分に活用で きているとはいえない Python のノートブック環境を、現状の技術を前提に再設計してみては? marimo は、そのようなアプローチのひとつ 127.0.0.1:2718 1/1

5.

2025/12/13 16:57 slide1.py REPL から Jupyter notebook まで Python の試行錯誤的なコーディング環境は、できることが増える方向に発展してきた Markdown text * item1 * item2 >>> data=[6,1,8] >>> sum(data) 15 REPL 127.0.0.1:2718 In [1]: a = !date In [2]: a[0].split(' ')[1:3] Out[2]: ['Nov', '24'] IPython DAG Markdown text * item1 * item2 IPython Jupyter notebook = Python code marimo 1/1

6.

2025/12/13 16:57 slide1.py REPL Read(読み込み) 、Eval(評価)、Print(表示)、Loop(繰り返し) 履歴は上下の矢印キーでたどる 多くの新しい言語で実装されており、文法の確認などに用いる >>> data = [6, 1, 8] >>> sum(data) 15 127.0.0.1:2718 1/1

7.

2025/12/13 16:57 slide1.py IPython REPL の拡張版 入出力が In[1]:/Out[1] 形式の番号付きになるので、特定の出力を Out[1] のように番号で参照できる マジックコマンドはコード実行に対してメタ的に働く(例 : 実行時間を計測する %time) シェルコマンドは Python が動いている OS の機能を呼び出す(例 : !ls) In [1]: a = !date In [2]: a[0].split(' ')[1:3] ['Nov', '24'] 127.0.0.1:2718 1/1

8.

2025/12/13 16:58 slide1.py Jupyter notebook 当初は、IPython に対するブラウザーインターフェース IPython notebook として開発された 後に Julia, Python, R を主要なターゲットとする Jupyter notebook プロジェクトに発展 プログラムを書くコードセルと、Markdown 文書を書くマークダウンセルを組み合わせて、ドキュメントを作 成 コード、Markdown, 出力画像などをひとつの JSON 形式のファイルとして保存 ブラウザ JSON ファイル Markdown text * item1 * item2 { "cells": [ { "cell_type": "markdown", ... { Python 環境 実⾏ IPython = 結果 "cell_type": "code", "execution_count": null, ... 127.0.0.1:2718 ライブラリ 1/1

9.

2025/12/13 16:58 slide1.py なぜ marimo か marimo の特徴 「AI-native で reactive な notebook であり、Git-friendly である」 これらは裏返すと、Jupyter notebook の欠点と見ることができる Jupyter notebook でも、これらの欠点へ対処する方法は試みられている。しかし、継ぎ足しを続けて複雑な構 造物を作るのではなく、現状の技術をベースに Python のノートブック環境をゼロから考えたらどうなるか、 という試みのひとつが marimo だと考えられる 127.0.0.1:2718 1/1

10.

2025/12/13 16:58 slide1.py AI-native である marimo の処理系が直接 LLM を使っているので、現在の LLM が得意なことを、最大限に引き出すようになって いる notebook のコードが LLM にコンテキストとして渡されているので、高精度なコード生成・補完が可能 メモリに保持された変数の値を @変数名 を使って参照できるので、現在の変数の内容を踏まえた質問が可 能 ファイルが Python のコードなので、コーディングエージェントの使用が容易 MCP server, client の機能を持っている バグの修正、コード の改良など コーディング エージェント MCP server Marimo 最新ドキュメント の情報を利⽤ marimo 公式 ドキュメント MCP client Context7 ・ notebookやセルの作成、デバッグ ・変数の値に基づくチャット LLM 127.0.0.1:2718 1/1

11.

2025/12/13 16:58 slide1.py reactive である セルの依存関係が DAG (有向非巡回グラフ) で管理されている あるセルで変数値を変更すると、それに影響を受ける他のセル(のみ)が自動的に再実行される これが「同じ名前を持つ変数や関数を、異なるセルで定義することができない」という marimo 独自のル ールにつながる cell-1 cell-2 x = 2 y = 3 cell-3 cell-4 result1 = x + y result1 z = 4 5 cell-5 result2 = result1 * z result2 20 127.0.0.1:2718 1/1

12.

2025/12/13 16:58 slide1.py Git-friendly である marimo notebook は実行可能な Python コード Git でのバージョン管理に適している コーディングエージェントを用いるときに、GitHub でのプルリクエストが読みやすい プロジェクトとしての管理が容易 実行結果は __marimo__ ディレクトリに書かれるが、ここをリポジトリで管理する必要はない エディタとしてのブラウザの設定は、~/.config/marimo/marimo.toml に保存されるので、プロジェクト をまたいで利用できる 127.0.0.1:2718 1/1

13.

2025/12/13 16:59 slide1.py まとめ marimo への道 REPL, IPython, Jupyter notebook から marimo へ marimo の特徴 AI-native で reactive な notebook であり、Git-friendly である」 127.0.0.1:2718 1/1