Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

JupyterNotebook拡張機能「nbextensions」について

はじめに

Jupyter Notebookをより使い勝手をよくするjupyter_contrib_nbextensionsがあります。
Notebook上でいろいろな拡張機能が使えるようになるものですが使用してみて個人的に便利だったものについて紹介します。

インストール

$ pip install jupyter_contrib_nbextensions
$ jupyter contrib nbextension install --user
-- 拡張機能の有効化
$ jupyter nbextensions_configurator enable --user

nbextensionsがインストールされ、Notebookを開くと新しく「Nbextensions」タブが追加されています。 f:id:jspnet:20201004182730p:plain

これを選択すると用意されている拡張機能が一覧表示されます。
使用したい機能のチェックすることで利用することができます。
f:id:jspnet:20201004182927p:plain

Autopep8

PEP8(python Enhancement Proposal 8)と呼ばれるPythonのコーディング規約があり、
Autopep8では、記載したコードをPEPに準拠する形で整形してくれる拡張機能です。

利用するためには、「autopep8」もインストールされていないと動かないためインストールします。

$ pip install autopep8

nbextensionのAutopep8をチェックすると、Notebookのツールバーにアイコンが追加されます。
コードを記述したセルを選択しアイコンをクリックすると、セル内のコードがPEP8準拠で自動的に修正されます。
また、Shiftキーを押しながらアイコンをクリックすることで、Notebookのすべてのセルを修正してくれます。

f:id:jspnet:20201004183627p:plain

Live Markdown Preview

Notebook上でのMarkDownでのドキュメント作成は少し手間です。
MarkDownでコードを書いたら実行しないとレンダリングされないため、
確認のため「コードを書く⇒実行」を何回も繰り返すことも多いです。

この機能はコードを記載したセルの下部にレンダリングされたものをリアルタイムで表示してくれます。
特に専用のアイコン等はなく、nbextensionのLive Markdown Previewをチェックするだけで
自動的にMarkDownがリアルタイムでレンダリングされるようになります。

f:id:jspnet:20201004194756p:plain

Scratchpad

複雑な処理を実装する場合、お試しで実装したコードを実行したいときがあります。
その場合、別のセルを用意してコードを記述して実行して確認後、
セルを削除して元のセルに戻るとようなやり方をしています。

そこで便利なのがScratchpadという、その場でコードを実行できるスクラッチパッドです。
nbextensionのScratchpadをチェックしNotebookの右下の▲ボタンをクリックすると
右側にスクラッチパットが表示されます。

セルが1つ用意されておりそこにコードを記述して「CTRL」+「Enter」で実行すると、
その場で実行されて結果を表示してくれます。
なお、同じNotebookのカーネルを使用しているためNotebook本体に影響を与えます。
なので、変数等を上書きする処理を実行した場合Notebook本体も書き換わるので注意が必要です。

f:id:jspnet:20201004195242p:plain f:id:jspnet:20201004195444p:plain

最後に

これまで個人的に便利だった機能について紹介しました。
他にもまだ試せていない機能がたくさんあるので試してまた紹介したいと思います。

参考

jupyter-contrib-nbextensions.readthedocs.io