配列の形状(Shape)のコメントを付けるJupyter Notebook拡張を作った

加筆(2019/12/12)

注意 JupyterNotebook拡張は使いづらかったので,IPython拡張としてリニューアルしました. こちらを使ってください.

github.com

このページを読む代わりに,下の記事を読むことをお勧めします. (検索順位はこのページの方が高いので微妙な気持ちです・・・) shiba6v.hatenablog.com

概要

下の図のように,Pythonのコードに配列の形状(Shape)だったりクラスだったりをコードに付け加えるJupyter Notebook拡張を作りました. 今度こそ超便利.

f:id:shiba6v:20190804173242p:plain

GitHubリポジトリはこちらです. github.com

はじめに

以前,NumPyやPyTorchで使える超便利ツールを作った の記事でShape Commentatorを作ったことを紹介しました.

このShape Commentatorは実行時の情報を抜き出すという都合上,使い方が煩雑でした.(ブログの説明がかなり長いのはそういうことです・・・)

このせいで自分でも本当に困った時しか使わなくなってしまい,もっと便利にしたい,できればJupyter Notebookの拡張機能として使えるようにしたいと思って作りました.

インストール

Shape Commentatorをpipでインストールし,Jupyter Notebook 拡張としてインストールします.

nbextensionsが入っていない場合は,jupyter_contrib_nbextensions 公式ドキュメントからインストールしてください.

pip install -U shape_commentator
jupyter nbextension install https://github.com/shiba6v/jupyter-shape-commentator/archive/master.zip --user

そして,nbextensionsの設定からJupyter Shape CommentatorをOnにします. nbextensions

これで準備は完了です.

使う

コメントをつけたいセルを選んで, Shape のボタンを押すだけでOKです!

コメントを消したいときは Shape のボタンを押せばOKです.消えるコメントはShape Commentatorで付けたコメントだけで,通常のコメントが消えることはありません.

f:id:shiba6v:20190804173242p:plain

補足

Shape Commentatorで付けたコメントは,通常のコメントとの区別のために「 #_ 」 というように「 # 」の後に「 _ 」を入れています. いずれはPEP484に準拠したいですが,一旦このように妥協しています.

デモ

例えば,ニューラルネットワークのコードでforwardの中のShapeがわからなくなっても簡単に見ることができます.

デモはPyTorchで書いていますがPandasやChainerでも使えます."shape"というattributeが生えていれば何でも良いのです.

今後

今回Jupyter Notebook拡張を書いたことでやっと楽に使えるレベルまで達したと思います.(個人の感想です.)

今後も機能を追加していけたらいいと思っています.

Shape Commentator使った!などの感想をTwitterしてくださった方,バグ報告のissueが立ててくださった方,感想をくれたお友達に感謝します.