JupyterLabの拡張機能jupyterlab-lsp v0.8.0の導入方法(macOS)

#修正
4/11 16:46
・v0.8.0への更新に伴い、色々削除や付け加えした。
#自分の環境
・macOS Catalina バージョン10.15.3
・zsh 5.7.1
・pip 20.0.2
・pyenv 1.2.13
・pipenv 2018.11.26
・python 3.7.5
・JupyterLab  2.1.0
#インストール

##JupyterLab
``JupyterLab``本体は

```
$pipenv install jupyterlab  #pipenvの方
$pip install jupyterlab     #pipの方
```
でインストールしました。
##nodebrew
Node.jsをインストールするために、Nodebrewを使用しました。
``nodebrew``とは、``Node.js``のバージョン管理するためのものです。

それではnodebrewのインストール方法です。
(https://github.com/hokaccha/nodebrew)
この公式のインストール方法を参考にしました。

まず、``curl``で``nodebrew``をインストールします。

```
$ curl -L git.io/nodebrew | perl - setup
```

インストール完了後、``PATH``を通します。

```
$echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zshrc
```

(``bash``の方は``.zshrc``を``.bashrc``にしてください)

構成ファイルを再読み込みします。

```
$source ~/.zshrc
```

```
$nodebrew help
```

で確認します。
バージョンなどの情報が出てきたら、インストール成功です。
##Node.js
やっと本題の``Node.js``を``nodebrew``を使用し、インストールします。
JupyterLabの拡張機能はnpmを使用してインストールするので、Node.jsが必要です。

```
$nodebrew install-binary latest 
```
でインストールします。
インストール終了後、

```
$nodebrew ls
v13.12.0
```
でインストールされたバージョンを確認します。（私のバージョンは``v13.12.0``でした。）
次に、使うバージョンを指定します。

```
$nodebrew use v13.12.0
```
``Node.js``のバージョンを確認してみましょう。

```
$node -v
v13.12.0
```
このようになっているはずです。
完了したら、``jupyterLab``を起動します。

```
$jupyter lab
```
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492749/6e91b3ee-5283-5b5c-e1de-5a577b897570.png" width=50%>
起動後、上のパレットのようなアイコンを選択します。
その中の
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492749/7f012d63-dd66-0710-d1e3-bc49396c0642.png" width=50%>
を選択します。
選択するとこのようなポップアップが表示されるので[Enable]を選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492749/2e9a733a-84f7-4d7a-fa05-ba2cb77b09ed.png" width=50%>
そうすると、
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492749/f1d8fb9f-c3ab-fbc6-7a9b-619bc83abb45.png" width=５0%>
このようにチェックマークがつきます。さらに
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492749/06bbbf00-0bf3-6750-1a80-45f18d63f575.png" width=５0%>
このアイコンが追加されます。拡張機能をインストールする際はこのアイコンを選択して、@username/インストールしたい拡張機能で検索するか、
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492749/1a8106c8-7acb-618b-5052-2b3e1e4f26ef.png" width=50%>
ターミナル上で

```
$jupyter labextension install @username/インストールしたい拡張機能
```
このようなコマンドを打つことでインストールすることができます。
##jupyterlab-lsp
本命の拡張機能をインストールします。
（https://github.com/krassowski/jupyterlab-lsp ）公式サイトを参考にインストールします。
まず、jupyter-lspをインストールします。

```
pip install jupyter-lsp
```
次に拡張機能をインストールします。

```
$jupyter labextension install @krassowski/jupyterlab-lsp
```

また、``jupyterlab``上では``@krassowski/jupyterlab-lsp``と検索すればインストールすることができます。お好きな方でインストールしてください。
``jupyterLab``でインストールする際は``Rebuild``と``ページの再読み込み``は忘れず行ってください。
ターミナルでインストールする方もjupyterLabを起動したままの場合は``ページの再読み込み``を行ってください。

次にターミナル上で

```
$pipenv install 'python-language-server[all]' #pipenv の方
$pip install 'python-language-server[all]' #pip の方
```
のどちらかを実行し、インストールします。

その後、jupyterlabのルートディレクトリとなる場所以外でもファイルを開くことができるようにする``.lsp_symlink``を作成します。移動後、開きたい場所のシンボリックリンクを作成します。

```
mkdir .lsp_symlink
cd .lsp_symlink
ln -s /home home
```
これで準備は終了です。
#最後に
以上です。最後になりますが、

Tabを押さずにピリオドを打つだけで自動補完してくれる``jupyterlab-lsp``でpythonプログラミングを楽しみましょう！
#参考サイト
https://qiita.com/simonritchie/items/34504f03947bfb4f54f5
https://github.com/krassowski/jupyterlab-lsp
https://github.com/hokaccha/nodebrew
https://github.com/palantir/python-language-server
https://serverjs.io/tutorials/getting-started/
https://www.npmjs.com/package/jsonrpc-ws-proxy
https://jupyterlab.readthedocs.io/en/stable/user/extensions.html