はじめに
JupyterLabに拡張機能の仕組みが提供されたようなので,試しに拡張機能を作ってみました.
まだ安定版ではないようなので,この記事の内容は今後不正確になる可能性が高いです.
JupyterLabについて
JupyterLabは,Jupyter Notebookをベースに拡張したものです.
Jupyter Notebookとの違いとしては,以下のような画面の分割機能やタブ機能があります.
普段は,Jupyter Notebookを使っており,そろそろJupyterLabに乗り換えたいなーと思ってます.
JupyterLabの拡張機能について
拡張機能の仕組みは,できてから日が浅いようでドキュメントもほとんどないです.
今回は,以下のページを参考にしました.
- JupyterLab Tutorial Documentation : JupyterLabの一般的なチュートリアル
- JupyterLab Extension Builder : JupyterLabの拡張機能を作るツール
- Jupyter Widgets JupyterLab Extension : JupyterLabの拡張機能のプロジェクトは,これ以外見当たらなかった
- Enable Third Party Extensions #814
拡張機能作成の全体の流れ
まずは,拡張機能のプロジェクトディレクトリを作ります.今回は,samplelabextensionという名前で作ります.
1 | mkdir samplelabextension |
プロジェクトに必要なライブラリをインストール
1 | npm install --save jupyterlab |
次に,samplelabextension/src ディレクトリ下に拡張機能のスクリプトを書きます.
今回は,独自のhtmlを表示する拡張機能とし,typescriptで書きました.
- samplelabextension/src/tsconfig.json : typescriptの設定
- samplelabextension/src/plugin.ts : 拡張機能のエントリーポイントとなるスクリプト
- samplelabextension/src/html.ts : 表示するhtml
このスクリプトは後でjavascriptに変換して samplelabextension/lib ディレクトリ下に保存されます.
samplelabextension/scripts/buildExtension.js を使って, 拡張機能のスクリプトをビルドします.
1 | var path = require('path'); |
あとは,package.jsonのscriptsに色々書いたり,
1 | "scripts": { |
setup.pyに色々書いたり,MANIFEST.inを書いたり,
samplelabextension/samplelabextension/__init__.py を書いたり,
samplelabextension/samplelabextension/_version.py を書いたりすれば終わりです.
ビルドして,
1 | npm run build |
拡張機能としてインストールすれば,使えるようになります.
1 | jupyter labextension install --py samplelabextension |
JupyterLabを起動すれば,新たなCommandsが追加され,独自のhtmlを表示できています.