Jupyter LabおよびExtensionの紹介

自己紹介

  • 大橋(@wrist)
  • PyData Osakaオーガナイザーの一味
  • メーカー勤務(音響信号処理屋)
  • 近況: バタフライキーボードのbが壊れた

本日の実行環境

  • Docker上で動作
  • docker pull wrist/jupyterlab-custom:latest

本日の内容

  • Jupyter Labの簡単な歴史
  • Jupyter Lab単体機能の紹介
  • Extensionの紹介

Jupyter Labの簡単な歴史

Jupyter lab単体機能の紹介

個人的にJupyter Notebookに求めるもの

  • markdown/ipynbでのブログ執筆
  • ipynbのスライドへの変換
  • vimキーバインド

キーバインドの設定

  • デフォルトで用意
    • Settings -> Text Editor Key Map
    • Sublime Text, vim, emacs

vimキーバインド

  • markdown編集などのみに適用
    • cell編集でvimキーバインドが使いたい場合はExtensionが必要
  • chrome/safariで使うのが無難?
    • firefoxだとescが効かない

ショートカット

  • ipynbではjupyter notebookのショートカットがそのまま使える
    • 移動 j,k
    • 選択 J,K
    • 挿入 a,b
    • コピペ c,x,v
    • セルタイプ変更 m, y
    • ドキュメント表示 shift+tab
In [1]:
# sumにカーソルをあてて`shift+tab`
y = sum([1, 2, 3])
y
Out[1]:
6
In [2]:
import scipy as sp
import scipy.signal as sg

labの機能のショートカット(一部)

  • コマンドパレット
    • shift+command+c
  • タブの移動
    • shift+ctrl+]
  • サイドバーの開閉
    • command+B

slide type変更のショートカットがないのが辛い

Drag&Dropによるセル編集

  • ipynb間でも可能

画像のペーストによる挿入

  • セルにはクリップボード上の画像をcommand+vで挿入可能
  • win+shift+sshift+ctrl+command+4で選択してキャプチャした矩形画像を挿入

image.png

プレビュー関連

Markdownのプレビュー

  • markdownファイルを右クリック
    • Show Markdown Previewを選択

リッチな補完

  • 補完が見やすい

image.png

ipynbのSlideへの変換

  • 各セルにサイドバー -> スパナアイコン -> Slide Typeを設定
  • File -> Export Notebook As... -> Reveal.jsでスライド生成
  • RISEはまだ使えない模様
    • リアルタイム修正ができない

image.png

ipynbへのメタデータの付与

  • スパナアイコン -> Advanced Tools -> Notebook Metadataで付与可能

Extensionの紹介

Extensionの種類

  • lab extension
    • フロントエンド側で動作するExtension
    • jupyter labextension install ...
  • server extension
    • サーバー側で動作するExtension
    • pip install jupyterlab_git
    • jupyter serverextension enable --py jupyterlab_git

Extension情報

Extension Manger

  • GUIでインストールが可能
  • コマンドパレットからEnable Extension Managerを実行
  • サイドバーからExtensionのインストールが可能に

@jupyter/toc

  • 目次をサイドバーに表示可能
  • アウトラインが分かりやすくなる

image.png

インストール方法

https://github.com/jupyterlab/jupyterlab-toc

jupyter labextension install @jupyter/toc

@jupyter/git

  • サイドバーからgit操作が可能
  • nbdimeによる差分表示

サイドバー

  • GUI操作でgit関連操作が可能

image.png

差分表示

  • 一番右の2つのアイコン
    • チェックポイントからの差分
    • HEADからの差分

image.png

インストール方法

https://github.com/jupyterlab/jupyterlab-git

pip install jupyterlab_git
jupyter serverextension enable --py jupyterlab_git
jupyter labextension install @jupyterlab/git
jupyter lab build

jupyterlab-vim

  • cellの中でもvimキーバインドが使える
    • 割と使い勝手が変わるので好みによる
  • セルからの脱出
    • shift+ctrl+esc
  • セルの確定
    • ctrl+enter(エクステンションに関係なく使用可能)

コロンをセルの中で押した場合の様子

image.png

インストール方法

https://github.com/jwkvam/jupyterlab-vim

jupyter labextension install jupyterlab_vim

@lckr/jupyterlab_variableinspector

  • 変数の一覧表示を実現
    • numpyなどにも対応
    • matrix表示可能
    • _に辞書を格納してるっぽい
      • 直前の出力が参照できなくなる

インストール方法

https://github.com/lckr/jupyterlab-variableInspector

jupyter labextension install @lckr/jupyterlab_variableinspector

使用方法

  • 右クリックメニュー
    • Open Variable Inspectorを選択

image.png

In [3]:
import numpy as np

x = 1
a = np.random.randn(10, 20)

変数一覧表示

image.png

ndarrayのmatrix表示

image.png

@ryantam626/jupyterlab_code_formatter

  • 各種コード整形ライブラリをセルに適用
    • コマンドパレットやipynb上部アイコンから使用

コマンドパレットから使用

image.png

アイコンから使用

  • 右から3番目のアイコン

image.png

インストール方法

https://github.com/ryantam626/jupyterlab_code_formatter

jupyter labextension install @lckr/jupyterlab_variableinspector

環境構築用のDockerfileの例

FROM jupyter/scipy-notebook
MAINTAINER Hiromasa OHASHI <stoicheia1986@gmail.com>

RUN pip install jupyterlab_git jupyterlab_code_formatter autopep8 black
RUN jupyter serverextension enable --py jupyterlab_git
RUN jupyter serverextension enable --py jupyterlab_code_formatter

RUN jupyter labextension install \
  @jupyterlab/toc @jupyterlab/git \
  @lckr/jupyterlab_variableinspector \
  @ryantam626/jupyterlab_code_formatter

RUN jupyter lab build

まとめ

  • Jupyter Labの基本的な機能とExtensionを紹介
  • 他にも色々便利な機能などあると思いますのでご意見ください