JupyterLabの始め方と自己流カスタマイズ

JupyterLabはまだJupyter Notebookより認知度が低いのか、検索してもNotebookに比べて日本語の情報が出てきません。
そこで、苦労した点も含めて、今一度導入方法をまとめておこうと思います。
MacでHomebrewとpipを使っている人向けです。

JupyterLabとは

Jupyter Notebookの後継版で、基本的な使い方は同じです。
データの可視化が容易にできたり、Markdownでメモを記述できたりします。
公式によると、JupyterLabに移行していくと書かれているので、これから導入される方はJupyterLabをおすすめします。

インストール

  • JupyterLabのインストール

    pip3 install jupyterlab  

    バージョン管理をせずに、Homebrewで入れたPython3をそのまま使っている人は、'3'を付けないとPython2用の場所に入ってしまいます。
    pyenv等仮想環境をactivateしてあれば、どっちでもよかったと思います。
    Anacondaでもconda等で入れられると思いますが、そもそもAnacondaの初期装備でないパッケージを色々入れたい人は、Anacondaを使うべきではないと思います。

  • Node.jsのインストール
    私の環境では、JupyterLab起動時にNode.jsが必要だと言われたので、インストールしました。
    まず、Node.jsのバージョン管理ツールであるnodebrewを入れます。

    brew install nodebrew  

    次に、新しい安定版を入手します。

    mkdir -p ~/.nodebrew/src  
    nodebrew install-binary stable  

    バージョンを指定する必要がある場合は、stableのところをバージョンに置き換えます。
    ここで、nodebrew lsと打つとインストールされたバージョンが確認できるので、

    nodebrew use v13.0.1   #vの後ろの番号は適宜置き換え  

    などと打って、先ほどインストールしたバージョンを有効化します。
    最後に、~/.bashrcに以下を追記してパスを通します。

    export PATH=$HOME/.nodebrew/current/bin:$PATH  

    .bashrcをsourceした後にnode -vで有効化したバージョンが表示されればOK。

JupyterLabの起動

さていよいよ起動です。
作業ディレクトリに移動してjupyter labと打てば、ブラウザ上にJupyterLabが起動するはずです。
しなければ、terminalに表示されているhttp://localhost:8888/?token=*****というURLをブラウザにコピペして立ち上げてください。
セッションを閉じるときは、上部のFileタブからShut Downを選びます。

JupyterLabのカスタマイズ

もう既に気に入らない点があります。
まずは起動時の挙動。どうせなら、指定した新規ブラウザで開いてほしいです。
次に、Shut Downのショートカットが用意されていないこと。終了時に毎回クリックしに行っていたのでは面倒です。
というわけで色々カスタマイズしていきましょう。

  • Notebookのセッティング
    上部のSettingsタブ中のAdvanced Settings Editorから様々な設定を行うことができます。
    とりあえずその内のNotebookの設定を編集します。
    "lineNumbers": false"lineNumbers": true #行番号表示
    "lineWrap"(右端で折り返すか),"matchBrackets"(対応するカッコを補完するか)等はお好みで。

  • Jupyterlab Code Formatterのセッティング
    文法チェッカーや整形ツールを使っていれば、ここで指定できます。
    autopep8を使っている場合は

    {  
      "autopep8": {  
          "max_line_length": 120,  
          "ignore": [    
          ]  
      }  
    }  

    というように記入していきます。

  • Keyboard Shortcutsのセッティング
    ここが一番苦労しました。
    変えられる部分が多すぎて、どこを変えるかわからないし、探しても情報が出てきませんでした。
    追加したのは以下の2つです。

    {  
      "shortcuts": [  
          {  
              "command": "jupyterlab_code_formatter:autopep8",  
              "keys": [  
                  "Ctrl B"  
              ],  
              "selector": ".jp-Notebook.jp-mod-editMode"  
          },  
          {  
              "command": "filemenu:shutdown",  
              "keys": [  
                  "Ctrl Q"  
              ],  
              "selector": "body"  
          }  
      ]  
    }  

    割り当てるキーは競合しない適当なものを選んでください。
    1番目はautopep8で整形をするショートカットです。
    2番目がShut Downのショートカットです。
    こうしておけば、^ Q+command Wで、シャットダウン→ブラウザを閉じるという動作がキーボード上で完結します。

  • 起動ブラウザの設定
    最後に起動時の挙動をカスタマイズします。
    terminal上でjupyter notebook --generate-configと打つと、~/.jupyter/jupyter_notebook_config.pyというファイルが生成されるので、中身を書き換えます。
    c.NotebookApp.browser =という箇所があるので、

    c.NotebookApp.browser = u'/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome %s --new-window'  

    と書けば、起動時にChromeで新規ウィンドウが立ち上がります。

最後にどうでもいい蛇足

なぜこんな記事を書いたかというと、最近論文で忙しく、機械学習に手が回っていないためです。
決してサボっているわけではありませんというアピールです。
記事中で何か間違いがあれば、ぜひご指摘ください。