pipenvを使用したJupyterLabの環境構築

# はじめに
唐突ですが、皆さん、
「 __Python使ってデータ分析とか機械学習してみてぇな！！__ 」と
思ったことはありませんか？( __ありますよね？__ )

まあ… 筆者は今のところ思ったこと無いのですけれども…()

ただ、仮に急にそうなった時のために
「環境構築の方法くらいは知っておいて損はないのでは」と考えた結果、
衝動的に環境構築してみたので、記録として残します。
もしよかったら読んでやってください。

## 実施すること
- JupyterLabのインストール・起動確認
- 拡張機能の導入(日本語化)
- 拡張機能の導入(GitHub連携～リポジトリをクローンする)

## 諸注意
- 本記事を読むにあたり、事前にPythonの環境構築、及び
(拡張機能でGitなどの古いモノを使用する人は)```node.js```のインストールが必要です。

- Pythonの環境構築や```node.js```をインストールするために必要な
パッケージマネージャの設定方法は過去に記事にしたので、以下を参照してください。

https://qiita.com/syutorum001/items/cac70e4b59ee632996e9

-  各コマンドの前に分かり易く入力記号の```$```を
記載していますが、こちらは入力しないでください。

~~2022/04現在、Qiitaに以下の問題があるため
コマンドのコメント「#」をあえて字下げしています、ご了承下さい。~~

2022/05に修正された為、字下げを削除しました。
(発生していた事象参考の為、下記のリンクは残しておきます)

https://github.com/increments/qiita-discussions/discussions/202

## 筆者の環境
- Windows10にてWSL2でUbuntu20.04LTSを使用
- Windows Terminalを使用

Windows Terminalではこのような感じでコマンドを入力していきます。
![スクリーンショット 2022-05-20 220436.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/d5cd4706-34bc-153c-ccda-156103996065.png)



## まずJupyterLabって何ぞや？
簡単に言えば、Webブラウザ上で動作する統合開発環境(IDE)です。
詳細が気になる方は以下を参照してください。
※現在サポートされているのはFirefox、Chrome、Safariのようです。

https://esrijapan.github.io/arcgis-dev-resources/tips/python/python-api-jnlabsetup/#:~:text=JupyterLab%20%E3%81%AF%E3%80%81%E3%82%B3%E3%83%BC%E3%83%89%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E3%80%81,%E3%81%A8%E3%81%97%E3%81%A6%E5%85%AC%E9%96%8B%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

```Jupyter Notebook```というものの後継版のような立ち位置らしいです。
色々な言語をサポートしていますが __Pythonでデータ分析などをする人__ に向いているIDE(らしい)です。
理由としては大きく以下の2点が挙げられます。

  - パッと分析結果のグラフが出せる
  - セル、という単位で細かく実行できる(ステップ実行のようなことができる)

その他の詳細や良さについては、@koyaaarr 氏が投稿された
素晴らしい記事があるのでこちらを読んでみてください。

https://qiita.com/koyaaarr/items/f99be22eb63bd8705c42

## JupyterLabインストール～起動確認まで
まずは、JupyterLabをインストールしましょう。

参考にする公式ドキュメントです。

https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html

```conda``` ```mamba``` ```pip``` ```pipenv``` ```docker```の
いずれかを使用してインストールできる、とのことです。

筆者は```pipenv```を使用しているので、ドキュメントの
```bash
# jupyterlabをインストールする
$ pipenv install jupyterlab

# 仮想環境を生成する
$ pipenv shell
```
を実行します。

すると、こんな感じでインストールが始まるのでしばらく待ちます。
![スクリーンショット 2022-05-20 200445.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/b9e6f67d-778c-1c2b-403a-808701d34a69.png)

※捕捉
「仮想環境ってなんぞや…」という方や
```pipenv```について分かり易く・詳しく知りたい方はこちらの記事を読んでみてください。

https://zenn.dev/nekoallergy/articles/py-env-pipenv01

インストールが完了したら起動します。
```bash
# 仮想環境の中に入る
$ pipenv shell

# jupyterlabを起動する
$ jupyter lab
```

ターミナル(またはコンソール)に以下のように
表示されたら起動に成功です。
![スクリーンショット 2022-05-20 215055.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/78ee8257-8c00-c0e5-d81b-4876be8f8ed5.png)

起動確認が完了したら、ブラウザからアクセスしてみましょう。
任意のブラウザを起動し、アドレスバーに```http://localhost:8888/```を入力しましょう。
(筆者はGoogleChromeを使用しています)
![スクリーンショット 2022-05-20 221331.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/08932d4c-121e-7278-e7f6-33d5b6adefc9.png)

もしかすると、アクセス後、以下のような画面が表示されるかもしれません。
(赤枠の①、②は後の解説で使います)
![スクリーンショット 2022-05-20 222243.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/3ffd83e1-bca8-e66f-beb2-36716119e239.png)
慌てたくなりますが、一度落ち着きましょう。
ここでは「Tokenによる認証をしてください」と言われています。

ターミナル(またはコンソール)のログを確認してください、以下のような表示があるはずです。
![スクリーンショット 2022-05-20 222813.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/f4da0899-49c5-aa58-ceae-68fcb904aae3.png)

仮にトークンの表示がなければ、以下の記事を参考にトークンを確認してください。

https://qiita.com/XTJP/items/29981dc25d80f7fed871

トークンが確認できたら…
上の画像の「英数字の羅列(トークン)」をコピーしましょう。
赤枠①はトークンをそのまま使ってログインできます。
赤枠②はトークンを入力し、パスワードを設定することができます。
(パスワードを設定すると、次回からパスワード入力だけで済みます)

ログインに成功し、以下のような画面が表示されれば、ひとまずこの章はゴールです。
(既に日本語化されているのは気にしないでください、最初は全て英語になっています)
![スクリーンショット 2022-05-20 223949.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/093f818c-e116-7030-6dec-92f7823787c3.png)
※あくまで、環境構築なのでこの後の使用方法
(ソースコードを新規作成したり実行したり)は各自確認してください。

ここまでで疲れた方は、一旦、一休みしましょう。

## 拡張機能の導入(日本語化)
はい、またターミナル(またはコンソール)の操作に移ります。
以下のコマンドを実行します。
```bash
# pipで日本語化用の言語パックをインストールする
$ pip install jupyterlab-language-pack-ja-JP
```
インストールが完了したら、ブラウザの
JupyterLabに戻りページを再読み込みしてください。(F5押下など)
![スクリーンショット 2022-05-20 233158.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/7fc3ace0-67d6-9cca-65f9-f48cca3de1ac.png)

すると、上の画像のようにSettings => Language => 日本語(日本)
があるはずなので、選択すると日本語化できます。
(ない場合は念のために、ターミナル(またはコンソール)からCtrl+CでJupyterLabを停止してから再起動してみてください)

※言語変更時に「本当に良いですか？」という旨のポップアップが表示されるので、
```Change and reload```をクリックし、変更してください。

これで、日本語化は完了です。(拡張機能が不完全なのか一部英語ですが、仕様です)

## 拡張機能の導入(GitHub連携～リポジトリをクローンする)
次は、Gitを利用するために、```jupyterlab-git```という
拡張機能をインストールします。

ターミナル(またはコンソール)の操作からでもできますが…
折角なのでJupyterLabの画面から拡張機能を入れてみましょう。(画像だと既に一番上に表示されています)
![スクリーンショット 2022-05-20 234404.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/cd82d35c-678a-f5ef-a6e2-22d585cf48de.png)

画像、赤枠の「検索」フォームに「git」と入力してください。
すると、```@jupyterlab/git```が表示されるので、「インストール」を押下し
インストールしてください。

「ここまでやったんだからターミナル(またはコンソール)でインストールしたい！」
という方は以下のコマンドを実行してください。
```bash
# Gitの拡張機能をインストールする
$ pip install --upgrade jupyterlab-git

# 拡張機能を適用させるために再ビルドする
$ jupyter lab build
```

ここで、「バージョン○○以上のnode.jsが必要である」旨のエラーメッセージが
表示された方は以下の手順でインストールしてください。
例：```ValueError: Please install nodejs >=○.○.○ before continuing.```

※asdfの導入方法などは「諸注意」の参考記事をご覧ください
```bash
# asdfを使用し、node.jsを入れる
$ asdf plugin-add nodejs

# インストールできるnode.jsのバージョン一覧を確認する
$ asdf list all nodejs

# 指定された以上のバージョンをインストールする
$ asdf install nodejs ○.○.○

# プライマリバージョンを設定する
$ asdf global nodejs インストールしたバージョン
```

全てが完了し、Gitの拡張機能を入れることができれば
リビルド後の画面が変わっているはずです。(赤枠箇所)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/94079ee8-1a58-0701-557e-35a7e36e5721.png)

__ここからリポジトリのクローンに移ります__

たまたま目についたので、例として「NVIDIA」のロボットデバイス用の
リポジトリをクローンします。(ライセンス等は各自で確認してください)

公式ページ

https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/

クローンするリポジトリ(権限が付与されているリポジトリに限ります)

https://github.com/NVIDIA-AI-IOT/jetbot

まず、GitHubからクローン元のCode => HTTPS をコピーします。
![スクリーンショット 2022-05-21 001503.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/b467dd97-0007-b616-1c76-672c9dddc04c.png)

ブラウザのJupyterLabに戻って、
画像①～③の順で押下し、③にコピーしたGitHub(HTTPS)のアドレスを入力してください。

![スクリーンショット 2022-05-21 002536.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/27cb38d1-3df2-59f6-8086-8694888e3eaf.png)

クローンするまで時間がかかるので待ちましょう。
(画像は撮り損ねました…申し訳ないです)

成功すると、画像赤枠のようにリポジトリをローカルの
ワークファイルに取り込めます。(気になる方はクローン元のリポジトリと比較してみてください)
![スクリーンショット 2022-05-21 003210.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010426/826a8343-6834-6620-3569-8685f385a096.png)

# さいごに

以上で「実施すること」章で挙げたことが全て完了になります。
おめでとうございます！以上でゴールです！！

捕捉ですが、少し弄ってみたら、変更点の差分がしっかり検出されて
コミットするかどうかもリストで表示されました。
(Gitの使い方は調べてください。)

(もし仮に筆者がもう少し深く触ってみた後に
お勧めの拡張機能を追記、または誤った情報があれば修正する可能性があります)

長文でしたがお疲れ様でした。