[作業効率化] Jupyterの拡張機能を全部調べてみた

今までも、いくつか拡張機能は使っていたものの、大部分は使わずに過ごしていたため、食わず嫌いはいけないな・・と思いドキュメント読みながら使ってみてまとめます。

20180805_5.png


まえおき


  • 拡張機能(nbextensions)自体や、過去の記事で触れたHinterlandやTable of Contents (2)などはそちらの記事(Jupyter 知っておくと少し便利なTIPS集)をご確認ください。

  • 結構抄訳などしています。(浅く広く。詳細はドキュメントに任せるとして、こんな拡張機能あるのか、程度にご使用ください)

  • nbextensionsを入れたときに最初から入っている拡張機能を対象とします。


    • 全部といっても、nbextensionsの設定画面を表示するための拡張機能だったり、基本的にデフォルトで有効で、且つ変えることがほぼなさそうなものは割愛します。



  • 環境は「Python 3.6.5 :: Anaconda, Inc.」のものを使っています。(Win10環境)

  • 各拡張機能の有効・無効などを切り替えた場合は一度開いているノートをF5などする必要がありますのでご注意ください。


(some) LaTeX environments for Jupyter


  • マークダウンのセルでLaTeXの拡張機能。


    • ※Jupyterデフォルトでも、\$記号で囲むとある程度LaTeXは書けたりはする。



  • 斜体、太字、下線などのLaTeXコマンドが、\$記号など無しにマークダウンのセルで使えます。


    • ※この辺りは、マークダウン記法やHTMLタグでも代替可。



\textit{Jupyter}

\textbf{Jupyter}

\underline{Jupyter}

20180805_1.png


  • 若干、対応していないコマンドや結果の表示が予期せぬものになったりが気になりました。

  • LaTeXで使う括弧の閉じ括弧などを自動で記載してくれたり、入力補完的なオプションがあります。

  • 独自の拡張設定やCSSによるスタイル設定ができるらしいです。


A 2to3 converter


  • セル内のPython2系のコードを3系に置換できます。

  • 追加される、金づちのようなアイコンをクリックすると、現在選択しているセルに対して変換がされます。


    • Shift押しながらクリックすると、全セルが置換されます。



20180805_3.png


  • print文や、2系から3系で名称や階層が変更になったモジュールの対応、3系でstr型に統合されたユニコード指定などの除去などがされる模様。

実行前 :

print 'Jupyter'

import urllib2

req = urllib2.Request()
print u'unicode sample'

実行後 :

print('Jupyter')

import urllib.request, urllib.error, urllib.parse

req = urllib.request.Request()
print('unicode sample')


AddBefore


  • メニューに、現在のセルの上もしくは下に空のセルを追加するメニューを追加する拡張機能。

20180805_4.png


  • ※Escキーを押してコマンドモードにしてaキーを押してセルの前に空のセルを追加したり、セル実行が可能ならAlt + Enterでセルの後に空のセルを追加したり、といったことができるので、慣れればそういったキーボードショートカットの方が早い・・?という印象も。


Autopep8


  • PEP8(Python自体のコーディング規則)に合わせて、セルのコードを整形してくれます。

  • autopep8ライブラリに依存しているようなので、先にそちらをpipで入れておきます。

$ pip install autopep8


  • 他のライブラリ同様、上部のメニューにアイコンが追加されます。他とアイコンが被った場合などに、自分で他のものに変更するオプションが用意されていました。Shift押しながらクリックで、全セルが処理対象になります。

20180805_6.png


  • たとえば、配列などでコンマの後にスペースが入っていないとスペースが挿入されます。

反映前 :

['Jupyter','Python','Jupyter','Python']

反映後 :

['Jupyter', 'Python', 'Jupyter', 'Python']


  • 逆に関数のデフォルト値の部分はイコールなどでスペースを入れないのがPEP8準拠なので、スペースが削除されます。

反映前 :

def sample_func(sample_arg = 1):

pass

反映後 :

def sample_func(sample_arg=1):

pass


  • ※触って試していた感じ、これを通せばPEP8準拠完璧!というものではなさそうで、補助的に考えて使っておくといいかな、という印象です。


AutoSaveTime


  • 何分ごとにノートを自動保存する?という点を調整できます。(2分が初期値な模様)


autoscroll


Cell Filter

セルに設定されているタグでフィルタリングできるよ、とドキュメントに書かれているものの、セルのタグってなんだ・・?という状態なので調べてみると、メニューのView -> Cell Toolbar -> Tags を選択すると、セルごとのタグ設定のUIが表示されるようです。(知らなかった・・)

20180805_8.png


  • タグ設定をした状態で、上部の入力フォームに何か入力すると、その文字列でセルの表示がフィルタリングされます。

20180805_9.png

20180805_10.png


  • 半角スペースを使って複数文字列を設定するとAND条件でフィルタリングされるようです。

20180805_12.png


  • タグのUIの...ボタンを押すと、既にそのセルに設定されているタグ全体の編集や、改行区切りで複数同時追加などができるようです。(他のセルからコピペなどしやすい)

20180805_11.png


Code Font Size


  • 入力のセルのコード部分だけ、フォントサイズを一時的に大きくしたりできるようです。

  • プロジェクターでノートを映すときなどに便利、といったことが書かれています。スライドモードなどでも相性がいいかもしれません?

  • メニューに虫眼鏡アイコンが追加になります。

20180805_13.png


Code prettify


  • ノートのコードを綺麗に整えてくれます。

  • yapfライブラリが必要なので、事前にインストールしておきます。

$ pip install yapf


  • 他と同様、アイコンを設定で変更できます。また、Shiftを押しながらアイコンをクリックすることですべてのセルを対象にすることができます。

20180805_14.png

反映前 :

import numpy as    np

def get_apple_name(apple_id = 3) :
# sample comment
name_list=['a','b', 'c']
pass
def get_orange_name(orange_id=3):
pass

反映後 :

import numpy as np

def get_apple_name(apple_id=3):
# sample comment
name_list = ['a', 'b', 'c']
pass

def get_orange_name(orange_id=3):
pass


  • ※PEP8で、コードの一番上の階層の関数やクラスは2行空けましょう、という記載があります。


Codefolding


  • 以前別記事のコメントでご教示いただいて、触ったりしていた拡張機能。

  • コードセルの左側に矢印が表示され、ブロックを非表示にしたり再度表示したりできます。

def get_apple_name(apple_id):

if apple_id == 1:
return 'ジョナゴールド'
elif apple_id == 2:
return 'つがる'
else:
return 'ふじ'

20180805_15.png


Codefolding in Editor


  • 機能はCodefoldingと同じですが、ノートではなく.pyファイルなどで折り畳みの機能が使えるようになります。

20180805_16.png


CodeMirror mode extensions


  • 使い方の記載がなく把握できなかったため割愛。


Collapsible Headings


  • マークダウンの見出し単位で折り畳みができます。

反映前 :

20180805_17.png

小見出し(h2相当の個所)だけ折りたたんだ例 :

20180805_19.png


  • ※見出しと同じセルに記載したマークダウンのテキストなどはそのまま残ります。


Comment/Uncomment Hotkey


  • コメント / コメント解除のキーボードショートカットが設定できます。

  • 他のエディタなどで長時間作業した後にJupyterを触ると、癖でCtrl + Qでコメントアウトなどしようとしている時があり、且つJupyterでQがノートを閉じるためのショートカットだったりするので、後で職場の環境で変えておこうと思います。(知れてよかった・・)

  • どのキーを割り当てるのかや、コメントアウトする際に行の先頭に#を挿入するのか、インデントを加味して#記号を挿入するのかの設定ができます。

20180805_20.png


  • 複数行選択してコメントアウトしたりもできるようです。

  • なお、今回私はCtrl + Qを割り振りましたが、たとえば既にQキーなどが割り振られているとうまく動いてくれません。そのため、メニューのHelp -> Edit Keyboard ShortcutsからQキーの別の割り振りを解除しています。


contrib_nbextensions_help_item


  • 単純に、Helpメニューに「Jupyter contrib-nbextensions」という、拡張機能のヘルプページへのリンクが追加される、というもののようです。


datestamper


  • メニューにアイコンが追加され、セルに現在の日時を挿入できます。

20180805_21.png


Equation Auto Numbering


  • 同じマークダウンのセル内での各数式で、番号が自動で割り振られるようです。

\begin{equation}

1 + 1 = 2
\end{equation}

\begin{equation}
1 + 1 = 2
\end{equation}

\begin{equation}
1 + 1 = 2
\end{equation}

20180805_23.png


  • ※拡張機能関係ないですが、手動で任意の文字列を付けたい場合は\tag{}と記載します。

\begin{equation}

\tag{Equation 4-13.}
1 + 1 = 2
\end{equation}

20180805_24.png


ExecuteTime


  • timeitのマジックコマンドなどを使わなくても、自動で各セルの実行時間のログを残してくれるようになります。(ノート放置して、あとで見返す際などに便利そうです)

20180805_25.png


Execution Dependencies


  • ノートが長くなった際に、後でカーネルを起動しなおした際に、「〇〇のセルを実行するには××のセルの実行が必要」といった状況を解決するための拡張機能なようです。(全セル実行がとても時間かかる場合などに有益そう?)

  • セルごとのタグ設定が必要なので、メニューのView -> Cell Toolbar -> Tagsをクリックしてタグ設定のUIを表示しておきます。

  • タグ名の先頭に#を記載して、一意なタグ名を指定します。(今回は、初期化用のセルとして#initializer-cellとしました。)

  • そちらのセルの実行が必要なセルに、=>記号と共に依存しているセルのタグを指定します。(今回は=>initializer-cellというタグ名を指定します。)

#initializer-cell:

import numpy as np

x = np.array([1, 2, 3])
y = 6

=>initializer-cell:

x * y


  • カーネルを再起動して、x * yのセルを最初に実行してみると、initializerの方のセルが先に実行され、エラーなく実行できます。

20180805_26.png


Exercise


  • ノート上で問題文をマークダウンで書いて、答えを非表示に、ということができます。

  • ハンズオンの社内研修資料作りなどでいいかも・・と少し思いました。

  • 以下のように問題文のマークダウンと答案をShift押しながら両方のセルをクリックして選択しておいて、メニューのアイコンをクリックします。

20180805_27.png

結果の表示(+部分クリックで答案を表示) :

20180805_29.png


Exercise2


  • 基本的な機能はExerciseと同じです。

  • 相違点は、明示的に答えを表示するラベルのボタンとなることと、この拡張機能とExerciseは同時に使用できるとのことで、1段目にヒントなり数式なりを出して、そののちに答えを出す、みたいな使い方もできるようです。

  • ※色々操作していたら、組み合わせ一時的に各要素が非表示になってしまった、といったことがあったのでご注意ください。(さらに色々操作していたら表示を復帰できました)

初期表示 :

20180805_30.png

1段目表示 :

20180805_31.png

2段目表示 :

20180805_32.png


Export HTML With Embedded Images


  • メニューの File -> Download as 内に「HTML Embedded」という選択肢が増えるようです。

  • 通常のHTMLのダウンロードだと、画像が埋め込みにはなっておらず(matplotlibのグラフ画像などの、エンコードされてHTML内に埋め込まれるものなどを除いて)、共有の際に画像も一緒に展開しないとですが、この機能を使うとHTMLに画像が埋め込まれた状態でダウンロードできるようです。

20180805_33.png


  • ※ノート上でマークダウン形式で画像を表示しているものが対象になるようです。(![<画像名>](<画像のパス>)形式のもの)

ノート上 :

![cat](cat.jpg)

20180805_34.png

普通のHTMLダウンロードだと、指定のパスに画像がないとリンク切れになります :

20180805_35.png

この拡張機能を使うと、HTML内に埋め込まれるため、HTMLファイルだけあれば画像のリンク切れなどを気にせずに扱うことができ、チャット上でHTML共有する際などに便利です :

20180805_36.png


Freeze


  • セルの編集のロックなどの機能が使えるようになります。

  • メニューに、解除(左)・read-only(真ん中)・freeze(右のアスタリスク)のアイコンが追加になります。

20180805_37.png


  • コードのセルでread-onlyに設定すると、薄い黄色の背景となり、セルの実行は可能であるものの、内部のコードを編集したりはできなくなります。

20180805_38.png


  • freezeアイコンをクリックすると、そのセルは薄い青色の背景となり、編集に加えて実行もできなくなります。

20180805_39.png


  • ※背景色は設定で変更できます。

  • マークダウンのセルの場合には、read-onlyではマークダウンの内容の確認までは可(編集は不可)、freezeにするとマークダウンの内容まで確認できなくなります。


Gist-it


  • GithubのGistへのノート公開用のアイコンが追加されるようです。

  • Gistに関してはここでは触れませんので、「Gistsでソースや文書をシェアする」などの記事をご確認ください。

20180812_1.png

20180812_2.png


Help panel


  • Jupyterのキーボードショートカットの一覧を表示するアイコンを追加できるようです。

※デフォルトではアイコンが表示されておらず、「add a toolbar button to open the shortcuts dialog/panel」のオプションにチェックを入れたら表示されました。

20180812_3.png


Hide Header


  • キーボードショートカット(デフォルトではCtrl + H)でヘッダー部分(ノートタイトルや編集メニューやアイコン類など)の表示・非表示を切り替えできるようです。

20180812_5.png


Hide input


  • 入力のセルを非表示にできるようです。

20180812_7.png

20180812_8.png


  • ※ノートで開いた際には表示・非表示の設定が保持されますが、デフォルトだとHTML出力した場合は全て表示の状態で保存されるようです。


    • もし非表示にした状態を保持したい場合には、以下のように引数を調整しながら直接HTML保存のコマンドを実行します。



$ jupyter nbconvert --template=nbextensions --to=html <ノートブックのパス>.ipynb


  • Jupyter上で実行する例 :

!jupyter nbconvert --template=nbextensions --to=html 201808_Jupyterの拡張機能を全部調べてみた.ipynb

[NbConvertApp] Converting notebook 201808_Jupyterの拡張機能を全部調べてみた.ipynb to html

[NbConvertApp] Writing 263146 bytes to 201808_Jupyterの拡張機能を全部調べてみた.html


  • こんな感じに、HTMLでもインプットセルが非表示になります。

20180812_10.png


  • 下のスクショのように、複数のセルをShiftキーを押しながら選択した場合でも、1つのセルしか非表示設定が反映されず、1つ1つ個別に設定する必要がある?ようです。

20180812_9.png


Hide all Input


  • インプットのセルをすべて一括で表示・非表示切り替えられるようです。

  • 以前記事でインプット行を非表示にするスクリプトを書いた気がしますが、こちらで良さそうな感じが・・

20180812_11.png

20180812_12.png


  • Hide input同様、HTML上でも非表示の状態を維持したい場合はコマンド経由で保存を行います。

20180812_13.png


Highlight selected word


  • 現在カーソルが当たっている単語をハイライト(デフォルトでは緑)してくれるようです。

  • 対象を同じセル内のみにするかノート全体にするか、マークダウンのセルを対象とするかなとがオプションで調整できます。

20180812_14.png


Highlighter


  • 選択したマークダウンのテキスト部分、もしくはマークダウンセル全体に対してハイライト設定ができます。

20180812_15.png


  • 上のアイコンをクリックすると、以下のようにハイライトのアイコンが展開されます。

20180812_16.png


  • 文字の選択がされた状態などで上記のアイコンをクリックすると、文字のハイライト設定ができます。

20180812_18.png


  • ※HTML側では、あまり表示が保持されないようです。HTMLを見てみると、以下のようにクラス要素は追加になっているようなので、custom.cssを調整したりすればそれっぽくできそうな感じではあります。

<span class="burk">ut labore et dolore</span>

...
<span class="mark">esse cillum dolore</span>


Initialization cells


  • メニューの View -> Cell Toolbar に Initialization Cell が追加されるので選択します。

20180812_19.png


  • そうすると、各セルにInitialization Cellというチェくボックスが追加されます。

20180812_22.png


  • カーネル起動後、メニューのアイコンを押すと、チェックが入っているセルが実行されます。(import群のセルなどで便利そうですね)

20180812_21.png


isort formatter


  • 同じセル内のimportを、順番をソートしたり、PEP8に合わせた行の空け方(Pythonのビルトインモジュール、サードパーティーのモジュール、自身のプロジェクトのモジュール間で1行空けるなど)に合わせた整形処理をしてくれます。
    ‐ isortライブラリが必要とのことで、事前にインストールしておきます。

$ pip install isort

Successfully installed isort-4.3.4


  • 他の拡張機能と同じように、Shiftを押しながらアイコンをクリックすると全セルが対象になるようです。

20180812_23.png

適用前 :

import my_module

import os
import pandas as pd
import sys
import numpy as np

適用後 :

import os

import sys

import numpy as np
import pandas as pd

import my_module


Keyboard shortcut editor


  • 何やらブラウザでjsのエラーが出ていて使えなかったので割愛。(他のUIからでもキーボードショートカットの編集などはできるので一旦はいいか・・という印象です)


Launch QTConsole


  • Anacondaを使って用意した環境ならQTConsoleが最初から使えるそうなのですが、今記事を書いている環境はminiconda経由だったので、一部ライブラリをインストールしました。pipだけだと最初弾かれたりと、結構エラーが出たりしたので、Anaconda環境で使ったほうがいいかもしれません・・

$ pip install pyqt5

$ pip install qtconsole
$ conda install qtconsole


  • ノート上で起動用のアイコンをクリックすると、コンソールが起動します。

20180812_24.png


  • 今までQTConsoleを使ってこなかったのですが、コンソール上でプロットなどもできるようです。(ただ、Jupyterがあればそんなに使わないかな?という印象も。)

  • 使うとしたら・・ノートで作業している一方で、別のプロセス環境で長時間かかるスクリプトを流し続けたり、といったケースなどでしょうか?


Limit Output


  • 長いアウトプットなどの場合に、一定のしきい値を超えたら表示を省略したりできるようです。

  • 設定画面でしきい値の文字数を設定するか、もしくはノートごとに調整したい場合は以下のようにセルで実行します。

  • 誤って大量のアウトプット出力をしてしまって、一時的にノートが極端に重いといったケースを避けるための保険としていいかもしれません。

from notebook.services.config import ConfigManager

cm = ConfigManager()
_ = cm.update(section_name='notebook', new_data={'limit_output': 1000})


  • わざと少ない文字数制限を設定して試したところ、以下のように出力されました。(改行は1文字分とカウントされるようです)

_ = cm.update(section_name='notebook', new_data={'limit_output': 100})

for i in range(2000):
print(1234567890)

1234567890

1234567890
1234567890
1234567890
1234567890
1234567890
1234567890
1234567890
1234567890
1

limit_output extension: Maximum message size of 100 exceeded with 11880 characters


Live Markdown Preview


  • マークダウンのセルを編集中に、下にプレビューがリアルタイムで表示されます。

  • 少し重たい印象はあります。

20180812_25.png


Load TeX macros


  • 有効にすると、ノートが読み込まれるたびに指定のtexファイルの読み込みとmathjax(ブラウザ環境での数式表示用のライブラリ)の再実行がされるそうです。

  • 共通のtexファイルのマクロなどを扱う際に便利、と記載があります。

  • ノートと同じディレクトリに、latexdefs.texという名前でファイルを設置することで対象となるようです。

  • 詳細はtexファイルを扱ったことがないので省略します。


Move selected cells


  • Alt + ↑キーもしくはAlt + ↓キーで、対象のセルを上下に移動させることができます。

  • Shiftを押しながら複数のセルを選択した場合などにも、まとめて動かすことができます。


Navigation-Hotkeys


  • 一部のキーボード操作による挙動が拡張され、より効率的に作業できるようになるようです。

  • 使い方が悪いのか、他のショートカットの設定と競合しているのか、ドキュメントに乗っているもの全ての挙動を把握できなかったため、把握できた一部を載せておきます。

Edit-mode(セル入力中)時の挙動 :


  • Shift + Enter -> セルを実行し、次のセルにEdit-modeのまま遷移します。


    • ※通常はCommand-mode(セルの入力がされていない状態)に一旦なります。



  • Ctrl + Enter -> セルを実行し、セルの位置は維持したまま、Edit-modeも維持します


    • ※通常はCommand-mode(セルの入力がされていない状態)に一旦なります。



  • Ctrl + y -> セルのタイプをコードとマークダウンを切り替えます。


    • ※通常は一旦コマンドモードに切り替えないと、キーボードショートカットで切り替えはできません。



Command-mode(セルの選択はしているものの、入力していない状態)時の挙動 :


  • Esc -> Command-modeとEdit-modeを、エンターキー無しに切り替えられます。


    • ※通常は、EscキーでEdit-modeからCommand-modeに切り替え、EnterキーでEdit-modeになります。



  • home -> スクロールと共に、一番先頭のセルにセルの選択が移ります。


    • ※通常はブラウザのスクロールのみ。



  • End -> スクロールと共に、最後のセルにセルの選択が移ります。


    • ※通常はブラウザのスクロールのみ。




Nbextensions edit menu item


  • Editメニューの一番下に、nbextensionsの設定画面へのリンク(nbextensions config)が追加されます。

20180812_26.png


nbTranslate


  • マークダウンのセルを、翻訳した状態のセルを追加してくれます。

  • 日本語で書いたノートを、Kaggleでカーネル公開などする際に手っ取り早く英語に変換したりする際に便利かも・・と思いました。

  • スパナのアイコンをクリックすると設定のUIが表示されるので、言語を選択します。

20180812_27.png


  • 今回は日本語から英語に変換したいので、Primary languageにJapanese、Secondary LanguageにEnglishを選択しました。

20180812_28.png


  • マークダウンのセルに、「#テストデータの内容を確認する。」と記載してみて、nbTranslateボタン(もしくはデフォルトではAlt + Tキー)を押してみると、英語のセルが直下に追加されます。

20180812_29.png


  • もう少し長文で試してみます。

20180812_30.png


  • なぜか記号が半角から全角に変換され、マークダウンのリンクが崩れたりしましたが、なかなか良さそうです。

  • デフォルトではGoogle翻訳が使われるようです。


Notify


  • 長時間かかる計算などを流した際に、計算が終わってから指定の時間経過したら、ブラウザの通知を飛ばしてくれるようです。

  • 有効にしてから、ノートをF5すると通知の許可が求められます。

20180812_31.png


  • 計算が終わってから何秒間操作をしないままであれば通知を飛ばすのか設定ができます。

20180812_32.png


  • オプションで音を鳴らしたりの指定もできるようで、「計算終わるまで本でも読んでいよう・・」といったときに便利そうですね。


Printview

20180812_33.png


  • アイコンをクリックするとプリント用の画面が新しいタブで開かれるようです。

  • 基本的に一度HTML変換などがされ、余分な部分(空のセル)が削除されたりします。


Python Markdown


  • マークダウンセル内で、コードのセルのPythonの変数を展開することができます。

  • 展開する際には、{{<対象の変数>}}といったようにマークダウンのセルに記載します。

例 : 以下のように、コードのセルとマークダウンのセルに記載します。

20180812_36.png

実行してみると、マークダウンのセルが以下のように表示されます。

20180812_37.png


  • マークダウン内の共通の記述(リンク先のURLなど)を変数に持って、DRY風に扱っても面白いかもしれません。


    • ドキュメント見る限り、マークダウンオブジェクトや画像オブジェクト、数式のオブジェクトなども扱えるようです。



コードセル例 :

from IPython.display import Markdown

wikipedia_link = Markdown(
'[wikipediaへのリンク](https://ja.wikipedia.org/wiki/Python)')

マークダウンセル例 :

# リンク集

{{wikipedia_link}}

結果の表示 :

20180812_38.png


  • 何かの拍子で、右上に「Not Trusted」と表示されていることがあります。その場合マークダウン中のコードは展開できないため、一度そのNot Trustedボタンを押して、実行を許可するようにします。

20180812_34.png

20180812_35.png


Rubberband


  • Ctrl + Shiftと左クリックしながらドラッグすると、赤い点線が表示され、その領域で複数のセルの選択などを行うことができます。

20180812_40.png


Ruler


  • PEP8で、1行辺り半角78文字程度に収めましょう、との記述がありますが、そのあたりの文字数のところに赤い点線を表示してくれます。(文字数はオプションで変更できます)

20180812_41.png


  • 他のエディタだったり、Colaboratoryだったりではこういった表示がされており便利に感じていたので、積極的に使いたいところです。


Runtools


  • セルの実行の拡張機能です。

  • 既に用意されている機能がメニュー経由などではなく、ノート上のボタンのUIでセル実行関係が実行できるようになります。(Run all cellsなど)

  • また、一部この拡張機能しかない?セルの実行方式もあるようです。(エラーを無視しつつ全セルを実行するなど)

  • アイコンをクリックすると、拡張されたセル実行関係のUIが表示されます。(ドラッグで位置を調整できます)

20180812_42.png

20180812_43.png


  • (なんだかドキュメントよりもUIのデザインが古っぽく見えましたが、ノートでFirefoxを使っていたので、きっとブラウザの影響?でしょう・・)

  • また、セルの左端にクリックできる領域が追加になり、クリックすると緑色、元に戻ったりになったりします。

  • この色が付いたセルのみ実行する、といった制御もできます。

20180812_44.png


Scratchpad


  • ノートを汚さずに、確認などで少し内容を確認したい、といった際に使います。


    • ノート上で書いてからセルを消すのと変わりはありませんが、消し忘れなどを避けることができます。



  • 拡張機能を有効にした後には、ノートの右下にあるアイコン、もしくはCtrl + Bキーで表示・非表示が切り替わります。

20180812_45.png

20180812_46.png


  • Scratchpadのセルでは、Shift + Enterでセルを実行することができます。


ScrollDown


  • Autoscrollがエラーになったのでこちらを使う感じでしょうか。

  • アイコンをクリックすると、アウトプットが多い場合に、iframeが自動でスクロールしていきます。

20180812_48.png

20180812_47.png


Select CodeMirror Keymap


  • ドキュメントみる限り、CodeMirrorのキーボードショートカットをJupyterに反映できる、ということでしょうか。(sublimeとかだとこの辺りでしょうか?)

  • Editメニューからデフォルト、emacs、vim、sublimeから選択できるようです。

20180812_49.png


SKILL for Codemirror



  • SKILL モードなるものを有効化できる、とドキュメントに書かれていますが、Lispに詳しくないため割愛します・・


Skip-Traceback


  • スタックトレースを省略して、シンプルにエラー内容だけ表示してくれるようです。

20180812_51.png


  • 三角アイコンをクリックすると、省略した内容を表示してくれます。


Snippets


  • 自分で設定したスニペットを、ドロップダウンで選択してノートに挿入できるようです。

  • nbextensions/snippets/snippets.json に定義を追加することで反映されます。(JSONのフォーマットなどは設定画面などのドキュメントをご確認ください。)

20180812_52.png


Snippets Menu


  • こちらはSnippetsの拡張機能と異なり、自身で定義したスニペットではなく有名どころのライブラリのスニペットを挿入できるようです。

  • 上部にSnippetsメニューが追加になり、そちらから選びます。

20180812_53.png


  • ライブラリごと、やりたいことごとに辿っていけるので、うっかり忘れてしまったときなど良さそうですね。


spellchecker


  • マークダウンなどのセルで、英語のスペルミスなどを赤くハイライトしてくれます。

20180812_55.png


Split Cells Notebook


  • アイコンを押すか、Command-modeでShift + Sを押すと、セルを半分のサイズにでき、並べて表示することができます。

20180812_56.png


table_beautifier


  • 見栄えが少し変わったり、インデックスやカラムでソートするUIが表示されるます。

import pandas as pd

df = pd.DataFrame(
data=[{'a': 1, 'b': 2, 'c': 3},
{'a': 4, 'b': 5, 'c': 6},
{'a': 7, 'b': 8, 'c': 9}])
df

20180812_57.png


Toggle all line numbers


  • 全セルまとめて行番号の表示・非表示の切り替えができるようです。(拡張前でも、セルを複数選択してCommand-modeでLキーを押すと行番号の表示自体はできます)

20180812_58.png


Tree-filter


  • Tree画面(ファイル一覧画面)で、表示するファイルやフォルダをフィルタリングするUIが追加されます。

20180812_59.png


Variable Inspector


  • アイコンを押すと、現在ノートのカーネル上で生成されている変数の詳細を確認できるUIが表示されます。(サイズを変えたり、ドラッグで移動したりできます)

20180812_60.png

20180812_61.png


zenmode


  • 最後の拡張機能です!(な、長かった・・)

  • アイコンをクリックするとコード以外のUIの表示が少なくなります。(背景も突然変わってびっくり・・(しかも背景がランダムというこだわり感・・))

20180812_62.png

20180812_63.png


総評


  • 軽い気持ちで記事を書き始めたら、大分大変でした・・

  • これ便利そう!というのも結構あり、仕事などでも役立てていきたいところです:sunny: