Google Colabは便利ですが、長く使っていると「Jupyter Notebook (.ipynb) の辛さ」に直面することがあります。
- Gitで差分(diff)を見ても、JSONの変更ばかりでコードの変更点が分からない
- 実行順序によって変数の状態が変わり、「昨日は動いたのに…」が発生する
- 試行錯誤の末、他人(あるいは未来の自分)が解読不能なノートブックが出来上がる
そこで、marimo を導入してみます。marimoの説明がよくまとまった記事があったので以下を参考に!
marimoは .py ファイル として保存され、リアクティブ(変数の依存関係に合わせてセルが自動更新される)な次世代のPythonノートブックです。
この記事では、ColabのGPUインスタンス上でmarimoを快適に動かすための手順をまとめます。
手順
1. Colabのランタイム設定
まずはColab側でGPUを有効にします。
メニューの ランタイム → ランタイムのタイプを変更 → T4 GPU (または使用したいGPU) を選択します。
2. marimoのインストール
セルで以下を実行します。
!pip -q install -U marimo
3. marimoの起動(Headlessモード + トークン設定)
Colabはリモート環境なので、ブラウザを立ち上げずにバックグラウンドでサーバーを起動します。セキュリティのためにトークンも生成します。
import secrets
# ポート番号(競合する場合は8889などに変更)
PORT = 8888
# 推測されにくいトークンを生成
TOKEN = secrets.token_urlsafe(16)
NOTEBOOK = "/content/notebook.py" # 保存するファイル名
print(f"TOKEN: {TOKEN}")
# 既存のプロセスがあればキルして再起動(再実行用)
!pkill -f "marimo" || true
# marimoをバックグラウンドで起動
!marimo edit {NOTEBOOK} --headless --host 127.0.0.1 --port {PORT} --token-password "{TOKEN}" > /content/marimo.log 2>&1 &
# 起動ログの確認
!tail -n 10 /content/marimo.log
4. プロキシURLの発行と接続
Colab上でWebアプリを表示するために google.colab.kernel.proxyPort を使用します。
インライン表示(IFrame)だとWebSocketが不安定になることがあるため、別タブでの表示を推奨します。
from google.colab.output import eval_js
proxy_url = eval_js(f"google.colab.kernel.proxyPort({PORT})")
print("以下のURLを【別タブ】で開いてください:")
print(f"{proxy_url}/?access_token={TOKEN}")
出力されたURLをクリックすると、別タブでmarimoのエディタが開きます。
上記のURLをクリックすると↓
このようにmarimoの画面が開きます。

5. 動作確認
marimoのエディタ上で新しいセルを作成し、以下を実行してGPUが見えていれば成功です。
import torch
print(f"CUDA Available: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"Device: {torch.cuda.get_device_name(0)}")
T4 GPUが見えていますね!
まとめ
これで、ColabのGPUパワーを使いつつ、管理しやすい .py 形式で実験を進められます。
marimoは他にも「スクリプトとしてそのまま実行可能」「Streamlitのようにアプリとして共有可能」といった特徴があるので、研究や開発のプロトタイピングに活用してみてください。

