kiyoon/jupynium.nvim

Selenium-automated Jupyter Notebook that is synchronised with Neovim in real-time.

Jupynium.nvim – Neovim内でJupyter Notebookをライブプレビュー

概要 – Jupytext形式のファイル(*.ju.py, *.ju.*)を編集し、その変更をFirefoxで開いているJupyter Notebookに即座に反映させるNeovimプラグインです。Pythonベースの軽量サーバーがSeleniumを介してノートブックと通信するため、ノートブックのUIを直接操作する必要がなく、カーネル拡張も不要です。

重要性 – ターミナルエディタを主戦場とするデータサイエンティストや開発者が、Neovimの操作性を維持したまま、ノートブックの強力なインタラクティブ機能を利用できるようになります。同期は一方向(Neovim → ブラウザ)であるため、ワークフローがシンプルに保たれ、ノートブックUI上での手動編集との競合を防ぎます。


コアコンセプト

コンポーネント 役割
Neovimプラグイン (Lua) *.ju.* ファイルを検出し、コマンド、キーマップ、統合機能(補完、折りたたみ)を提供します。
Jupyniumサーバー (Python) Neovimからの編集イベントを受け取り、Selenium経由でFirefoxを操作してノートブックのフロントエンドを更新します。
Selenium + geckodriver ブラウザの自動化を行います。Seleniumの制約上、Firefoxのみサポートされています。
Jupytextパーセント形式 プラグインが解析・同期するディスク上のファイル形式(コードセルは # %%、Markdownは # %% [md])。

主な機能 (READMEより)

  • ライブプレビュー – Neovimで入力すると、ブラウザ上の対応するノートブックセルが即座に更新されます。
  • ノートブック側のインストール不要 – Jupyter拡張機能やカーネルの変更は不要で、すべてフロントエンド経由で動作します。
  • あらゆるカーネルをサポート – UIを操作する仕組みのため、Python、R、その他Jupyterがサポートする言語で使用可能です。
  • リモート対応 – ノートブックサーバーがリモートにあっても、ローカルのNeovimから同期可能です(サーバーからブラウザにアクセスできればOK)。
  • 自動ファイル処理.ipynb コピーの自動ダウンロード、同期済みタブの自動クローズ、アクティブセルへの自動スクロール機能。
  • 高度な統合nvim-cmp / blink.cmp の補完ソース、nvim-ufo による折りたたみ、LSP風のホバー情報表示。
  • カスタマイズ可能なキーバインドとテキストオブジェクト – デフォルトのショートカット(<space>x で実行、<space>c でクリアなど)は変更可能です。
  • 拡張可能なLua APIJupynium_execute_javascript を使用して、ノートブックのコンテキストで任意のJavaScriptを実行できます。

インストールチェックリスト (READMEより)

  1. システム要件
    • Neovim ≥ 0.8
    • Firefox + 対応する geckodriver
    • Python ≥ 3.9 (または uv/Conda による仮想環境)
    • Jupyter Notebook ≥ 6.2 (クラシックインターフェース; Notebook 7は未サポート)
  2. Python側 – プラグインのPythonパッケージをインストールします(pip3 install --user .uv/Condaを使用)。
  3. Neovim側 – お好みのプラグインマネージャー(vim-plug, packer.nvim, lazy.nvim など)で追加し、Pythonパッケージをインストールするビルドステップを実行します。
  4. UI補助 (任意)rcarriga/nvim-notifystevearc/dressing.nvim を使うと通知や選択ダイアログが洗練されます。
  5. 設定init.luarequire("jupynium").setup({ … }) を呼び出します。デフォルト設定で動作しますが、Condaユーザーは python_host をCondaの実行パスに向ける必要があります。

クイックスタートワークフロー

1. <name>.ju.py という名前のファイルを開きます(または設定したパターン)。
2. :JupyniumStartAndAttachToServer   → Firefoxを起動し、ノートブックUIを開きます。
3. :JupyniumStartSync                → Untitled.ipynb タブを作成し、同期を開始します。
4. ファイルを編集 – `# %%` でコードセル、`# %% [md]` でMarkdownを開始します。
5. <space>x を押して現在のセルを実行します(複数選択も可能)。
6. 完了したら :JupyniumDownloadIpynb で .ipynb を保存するか、自動ダウンロードオプションを活用します。

変更はNeovimからブラウザへ流れるため、ノートブックを直接編集することは推奨されません。


主なユースケース

  • データサイエンスのスクリプト作成 – 愛用するターミナルエディタを離れることなくノートブックをテストできます。
  • 教育 / ライブコーディング – Neovimで入力しながら、クリーンなノートブックのプレビューをリアルタイムで表示できます。
  • リモートノートブック – 大学のJupyterHubなど、リモートサーバー上のノートブックをローカルのNeovimから操作できます。
  • 多言語プロジェクト – UI操作のみを行うため、RやJuliaなど、あらゆるJupyterカーネルで利用可能です。

READMEに記載されている制限事項

  • Firefoxのみサポート(他のブラウザではSeleniumのインタラクションが壊れます)。
  • Notebook 7(新しい "nbclassic" UI)は未サポート。クラシックなNotebook 6インターフェースが必要です。
  • 同期方向は Neovim → ブラウザのみ です。ブラウザ側での変更は無視されます。
  • JupyterLabでは動作しません。

今後の展望

  • Notebook 7サポートの進捗についてはリポジトリのIssueを確認してください。
  • Lua API (Jupynium_execute_javascript) を活用して、変数インスペクションなどのカスタムアクションを作成してみてください。
  • 補完プラグイン (nvim-cmp, blink.cmp) と組み合わせて、Neovim内でカーネル側の補完を利用しましょう。

結論 – Jupynium.nvimは、強力なインタラクティブなノートブックUIと効率的なNeovimエディタの架け橋となり、ターミナルを離れることなくノートブックセルの作成、実行、プレビューを可能にします。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト