JupyterLabのすすめ

本記事は Julia Advent Calendar 2021 の22日目の記事です.

https://qiita.com/advent-calendar/2021/julia


[JuliaMono](https://juliamono.netlify.app/), とても良いですね. 普段は源ノ角ゴシックCodeを使っていますが, 変数にバーなどのアクセント記号をつけるとフォントの大きさが変になっていたので, それを回避できるのはとてもありがたいです. Advent Calendar の[9日目の記事](https://qiita.com/SatoshiTerasaki/items/20b53ba14ea22d36e4e6)のおかげで知ることができました.

## 背景

Julia ユーザーの中には Jupyter を使っている方が多いかと思いますが, どのように起動していますでしょうか？

もし, Julia の REPL で

```julia
using IJulia
notebook()
```

としているか, ターミナル等で直接

```bash 
jupyter notebook
```

として起動している場合, Jupyter Notebook を利用していることになります. 
Jupyter というキーワードで Google 検索すると, 「Jupyter Notebook の使い方」みたいな記事がたくさん出てくるので, そのようにしている方は多いのではないかと思います.

しかし, [Project Jupyter](https://jupyter.org/) のページを見てみると, 最初に書いてあるのは **JupyterLab** という文字列です. よく読むと, 

> JupyterLab: A Next-Generation Notebook Interface

と書かれており, そこから下へスクロールすると Jupyter Notebook が現れて, 

> Jupyter Notebook: The Classic Notebook Interface

と書かれています. 

この2つがすべてを物語っていると思います. つまり, **Jupyter Notebook は Classic で, JupyterLab が Next-Generation** なのです. これはもう, 「Jupyter Notebook ではなく, JupyterLab を使おう」というメッセージなのではないでしょうか.

そういうわけで, 本記事では, **JupyterLab** をごく簡単に紹介します. より詳しいことは以下の記事が参考になると思います.

https://qiita.com/kirikei/items/a1639954ce5ccaf7ac3c


## JupyterLab でできること

[デモサイト](https://mybinder.org/v2/gh/jupyterlab/jupyterlab-demo/HEAD?urlpath=lab/tree/demo) (起動までちょっと時間がかかる) にアクセスすると, 以下のような画面が表示されると思います.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111178/eed91523-8cd0-e781-165d-0bed6983c0f4.png)


左側の `Lorenz.ipynb` をクリックすると, この notebbok ファイルが起動されますが, それが同じページ内に別ダブで表示されます.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111178/c02f632a-917e-290b-ea78-34d35986a9e6.png)

もし別のファイルを作って起動すれば, さらに別タブで表示されます. Jupyter Notebook の場合, 1つのファイルで1つのページでしたので, 複数のファイルを開く場合は JupyterLabの方が便利であると思います.


また, ダークテーマを簡単に適用することができます. 具体的には, `Settings` -> `Theme` -> `JupyterLab Dark` とクリックしていくだけです.
これによって, 以下のように見た目が変わります.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111178/7a4e7240-c888-8394-8979-dcdb16c9a265.png)

デフォルトでは `JupyterLab Light` と `Dark` の2つしか選択肢がありませんが, JupyterLab には extension manager があるため, そこからテーマを追加することができます. 
詳しくは以下の記事を参照してください.

https://pystyle.info/jupyterlab-list-of-themes/


その他, フォントの変更 (後述) をはじめとして, 柔軟にカスタマイズすることができます. 
つまり, Jupyter Notebook でできることは JupyterLab でもできるし, Jupyter Notebook では簡単にはできないことも色々できる, ということです.
より細かなカスタマイズについては, 前節で引用した記事を参照してください.


## インストールと起動方法

Jupyter のインストールの際に `pip install jupyter` などとしていたり, Julia の パッケージモードで `add IJulia` としていれば, Notebook と一緒に JupyterLab もインストールされているはずなので, 特に行うことはないかと思います,

もし以下の方法で起動できなければ, [公式サイト](https://jupyter.org/install)を参照してください.

JupyterLabを起動するには, ターミナル等で 

```bash 
jupyter lab
```
または

```bash 
jupyter-lab
```

とするか, Julia の REPL で

```julia
using IJulia
jupyterlab()
```

とすることで起動できます. 

関数 `jupyterlab` には 関数 `notebook` と同じように引数を与えることができます. 例えば私は

```julia
jupyterlab(dir=pwd(), detached=true)
```

として起動しています. 詳細は [IJulia のドキュメント](https://julialang.github.io/IJulia.jl/stable/manual/running/) を参照してください.


## フォントの変更

せっかくなので JuliaMono を利用できるようにしましょう. JuliaMono がインストールされている状態で, JupyterLab で `Setting` -> `Advanced Settings Editor` をクリックする (あるいは, `Ctrl` + `,` を押す) ことで, Advanced Settings Editor が開きます.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111178/ce1523d0-1d60-0688-2620-eaf755420736.png)

開いたタブ内の左側のリストから `Notebook` をクリックすると, Notebook に関するデフォルト値が JSON 形式で表示されるので, それを右側の `user Preferences` にコピペして編集することで, いろいろとカスタマイズできます. 

例えば以下を入力して保存することで, フォントとフォントサイズを変更できます.

```json
{
    "codeCellConfig": {
        "fontFamily": "JuliaMono Regular",
        "fontSize": 16
    }
}
```

実際, これにより, 先ほど開いた `Lorenz.ipynb` は以下のように表示されます (例えば `0` の形が変わっています).

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111178/35a3140b-1de3-ed5a-7e4d-83df8818c95d.png)


## Interact.jl を使うときにちょっと困ることがある

[Interact.jl](https://github.com/JuliaGizmos/Interact.jl) とは, スライダーやボタンなどを表示させて, インタラクティブに可視化する機能を提供するパッケージです. 
詳しくは以下の記事が参考になります.

https://qiita.com/SatoshiTerasaki/items/ac48b2a2cb33cd476446

https://zenn.dev/takilog/articles/a4d3c788ca15887a296f


基本的に便利なパッケージですが, JupyterLab をダークテーマにしている場合, 以下のようにスライダーの文字が見えなくなります. 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111178/39c4956d-4d1e-7a85-ed94-2d852fe2a8a4.png)

上の画像にはただスライダーがあるだけに見えますが, 実は左右にテキストがあります. テキスト選択してみると以下のようになります.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111178/b5f865c3-05d3-d0a5-07d5-1cedd128f325.png)

これをカスタマイズする方法があれば, 教えて下さい.
また, 自分の環境に問題があるのかもしれませんが, 一度ページをリロードしないとスライダーが正しく動作しません. 謎です...

## 終わりに

JupyterLab をカスタマイズして快適な Julia ライフを過ごしましょう.