JupyterLabをリモートで使う方法

## 問題

ワークステーションにリモートで入りプログラミングをするとき，「ターミナルを立ち上げ，sshでワークステーションに入りEmacsやVimでソースコードを書き，実行する」，という手順をとる場合があります．しかし，学生などの初学者はターミナル上で作業すること自体が難しいです．Google Colabolatoryのようにブラウザ上でインタラクティブにプログラミングしたほうが彼らには馴染みやすいでしょう．そこで，Google Colabolatoryのようなブラウザ上でのプログラミングを実現するJupyterLabをワークステーションに導入します．

## 方法
### JupyterLabインストール
まずJupyterLabを動かすLinuxマシンにログインします．次に，venvがインストールされていない場合は，次のコマンドでインストールします．
```
sudo apt install python3-venv
```
次に，作業ディレクトリを作ります．ここではホームディレクトリにjupyterという名前で作成します．そして，jupyterディレクトリに移動します．
```
mkdir ~/jupyter
cd jupyter
```
ただし，__jupyterディレクトリでjupyterを起動すると上のディレクトリが見えなくなります__（初期ディレクトリがjupyterになり，その上のファイルは見えません．実行コマンドや設定ファイルを変えれば回避できます．）．__面倒なら上記の２つのコマンドを実行しせず，ホームディレクトリで作業したほうが良いかもしれません．__
つぎに，virtualenvでJupyterLab用の仮想環境を作ります．
```
python3 -m venv jupyter
```
作ったJupyterLab用の仮想環境を起動します．
```
source jupyter/bin/activate
```
仮想環境を起動した状態でpipでJupyterLabをインストールします．プロンプトの前に仮想環境名（ここではjupyter）が表示されていれば，仮想環境が起動されています．ここで機械学習用なので，それに関連するライブラリもインストールします．必要に応じインストールするライブラリを変えます．
```
python3 -m pip install jupyterlab
python3 -m pip install numpy scipy matplotlib networkx scikit-learn
python3 -m pip install torch torchvision torchaudio
```
ここで間違ってjupyterlabをjupyterにしないことが重要です．jupyterlabはjupyterの後継ですので，新しい方を使ったほうが良いです．jupyterをインストールしてもそれなりに使えてしまうので間違いに気付きにくいです．インストール時に注意しましょう．
以上でインストールは完了でです．

インストールが済んだので，仮想環境を次のコマンドで終了させます．
```
deactivate
```
最後にワークステーションからログアウトしましょう．
```
exit
```

### ブラウザでJupyterLabを使う．
まずブラウザからJupyterLabを使ってみましょう．

まずターミナルを立ち上げ，次のコマンドを打ち，sshを使いポートフォワーディングをします．
```
ssh -L 8888:localhost:8888 接続先
```
コマンドを実行すると，sshでワークステーションに入ったままになっています．次にJupyterLab用の仮想環境を起動します．次のコマンドでJupyterLabの仮想環境がある場所に移動します．
```
cd jupyter
```
次のコマンドで仮想環境を起動します．
```
source jupyter/bin/activate
```
仮想環境が起動したらJupyterLabを起動します．
```
jupyter lab
```
JupyterLabを起動したときにURL（localhost:8888/lab?token=...）が表示されます．これをブラウザに貼り付ければ，JupyterLabの画面が表示されブラウザ上でプログラミング出来るようになります（もしかしたらURLをクリックするだけでブラウザが開くかもしれません）．

JupyterLabを終了するときは，JupyterLabを起動しているターミナルの画面でCtrl+Cを押します．そうすると終了するかと聞かれるのでyを押します．
次のコマンドでvertualenvを終了します．
```
deactivate
```
ワークステーションからログアウトします．
```
exit
```

この方法は手順が決まっていますしsshのクライアントが動く限り環境に依存しませんので，研究室などで使えると思います．クライアントがWindowsでも問題ありません．

### Visual Sutudio CodeでJupyterを使う．

Visual Studio CodeでJupyterを使ったほうが色々便利です．ターミナルの操作もいりませんし，補完などVisual Studio Codeの機能も使えます．ただし，環境によってエラーが出て使えません（学生のWindowsマシンでは動きませんでした）．

- Visual Studio Codeをインストールします．
- Visual Studio CodeにRemote SSHのプラグインをインストールします．
- .ssh/configにサーバ情報を記述します．
    - WindowsではC:\User\ユーザ名，MacとLinuxでは/home/ユーザ名の中に作る．
- Visual Studio Codeでワークステーション上のjupyterの作業ディレクトリを開きます．Visual Studio Codoでのsshの使い方は他のサイトを参考にしてください．
- プログラムのコード（ノートブック）を開きます．
- ノートブックを実行するときにどの環境で動かすか聞いてくるので，virtualenvのjupyterを選べばプログラムが動きます．


## 古いやり方
Debian11のやり方を書いておきます．

### JupyterLabインストール
環境を汚さないため，virtualenvで仮想のPython環境でJupyterLabを動かします．そのために，まずvirtualenvをインストールします．
```
sudo pip install virtualenv
```
pipが入っていない場合は，事前にpipをインストールしましょう．
次に，作業ディレクトリを作ります．ここではホームディレクトリにjupyterという名前で作成します．そして，jupyterディレクトリに移動します．
```
mkdir ~/jupyter
cd jupyter
```
ただし，__jupyterディレクトリでjupyterを起動すると上のディレクトリが見えなくなります__（初期ディレクトリがjupyterになり，その上のファイルは見えません．実行コマンドや設定ファイルを変えれば回避できます．）．__面倒なら上記の２つのコマンドを実行しせず，ホームディレクトリで作業したほうが良いかもしれません．__
次に，virtualenvでJupyterLab用の仮想環境を作ります．
```
virtualenv jupyter
```
作ったJupyterLab用の仮想環境を起動します．
```
source jupyter/bin/activate
```
仮想環境を起動した状態でpipでJupyterLabをインストールします．プロンプトの前に仮想環境名（ここではjupyter）が表示されていれば，仮想環境が起動されています．ここで機械学習用なので，それに関連するライブラリもインストールします．必要に応じインストールするライブラリを変えます．
```
pip install jupyterlab
pip install numpy scipy matplotlib networkx scikit-learn
pip install torch torchvision torchaudio
```
ここで間違ってjupyterlabをjupyterにしないことが重要です．jupyterlabはjupyterの後継ですので，新しい方を使ったほうが良いです．jupyterをインストールしてもそれなりに使えてしまうので間違いに気付きにくいです．インストール時に注意しましょう．
以上でインストールは完了でです．

インストールが済んだので，仮想環境を次のコマンドで終了させます．
```
deactivate
```
最後にワークステーションからログアウトしましょう．
```
exit
```