無料クラウドサービスでJupyter Labを使ってみる　～Miniconda導入編～

## Google Cloud ShellでのMinicondaによる活用方法

### Minicondaとは？

前回の投稿から引き続きJupyter Lab（以下Lab）の導入をメインに解説します。

https://qiita.com/Q-Lazy/items/bd7dacf1d8e865d57a94

今回は[CloudShell](https://console.cloud.google.com/)に導入済みのPython環境ではなく、別途[Miniconda](https://docs.conda.io/)でPythonを導入して、Labをインストールします。

まずMinicondaとは何か？　ベースとしてGUIを備えたフルセット版の[Anaconda](https://anaconda.org/)というPythonディストリビューションがあり、パッケージマネージャや仮想環境の機能を有しています。
そのAnacondaをテキストベースの環境向けにチューニングした、小型で軽量のサブセットがMinicondaという位置付けになります。

CloudShellはユーザーが使えるディスク容量が限られているため、追加でPython環境を導入することはディスク容量を消費するという点では不利な部分も有りますが、それを補う利点も挙げておきます。

- CloudShellと異なるバージョン(2022年1月現在で3.9まで)のPythonおよび、[node.js](https://nodejs.org/)でもLabを導入できる。

- Pythonとは関連の無い、その他の便利なツールやデータベースやWebサーバーなども導入できる。

- Cloudshellに入っていないプログラミング言語もいくつか用意されて、より多彩なカーネルが利用できるようになる。

CloudShellは開発環境が整っているので、ソースコードからビルドすればよいと言われそうですが、やはりパッケージマネージャで管理できるほうが何かと便利だと思います。

### まずはMinicondaのインストール

公式サイトから下記のコマンドでインストーラーをダウンロードします。ホームディレクトリでの作業と仮定します。

```shell
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
```

ダウンロードしたら、パーミッションを実行可能に変更して、下記のオプションを付加してスクリプトを実行。しばらく待つとインストールが完了します。

```
$ chmod u+x Miniconda3-latest-Linux-x86_64.sh

$ ./Miniconda3-latest-Linux-x86_64.sh -sb
```

### Micinonda環境の運用を開始

Minicondaは仮想環境の機能を備えていますが、CloudShellはディスクの空き容量との戦いですので、複数の仮想環境を使い分けるという運用は、あまり現実的ではなく、常にbase環境を使う方法が無難かと思います。
必要に応じて、下記のコマンドでbase環境に切り替え出来ます。

```shell
$ source ~/miniconda3/bin/activate
```

もしくはMiniconda環境をPATHに通しておいてもかまいませんが、ここではフルパスで指定して進めていきます。
またPythonのパッケージはcondaコマンドでもpipコマンドでも可能です。
しかし最近はCloud Shellのアップデートが早く、MicinondaのPython3のマイナーバージョンが一致するため、ユーザーローカルのパッケージが競合し、pipコマンドではパッケージがインストールできなくなることがあります。
そのためpipコマンドに比べると少々時間がかかりますが、condaコマンドでインストールするのが無難になります。では早速Labのインストールを下記のコマンドで行います。

```shell
~/miniconda3/bin/conda install -c conda-forge jupyterlab==3.1.8
```

これでシステムにインストールされているnode.jsを使ってLabが起動できるようになりますが、そのままではセキュリティに阻まれてLabを使えませんので、[前回](https://qiita.com/Q-Lazy/items/bd7dacf1d8e865d57a94)の記事を参照して対処する必要が有ります。

準備ができたら、下記のようにバックグラウンドで起動するとよいでしょう。

```shell
$ ~/miniconda3/bin/jupyter lab &
```

### Minicondaをさらに活用する

condaコマンドを駆使すれば、さらに幅広くMinicondaを活用できます。下記の形式で指定のパッケージをインストールできます。

```shell
$ ~/miniconda3/bin/conda -c channel名 パッケージ名
```

個人的に利用実績のある、下記のパッケージを紹介させていただきます。

**ユーティリティ**

|channel        |パッケージ    |説明
|:-------------:|:------------|:---------------------------
|conda-forge    |p7zip        |7-Zip形式アーカイバ
|conda-forge    |aria2        |高機能ダウンローダー
|conda-forge    |lftp         |高機能ftpクライアント
|conda-forge    |shellcheck   |Bashスクリプト文法チェッカー
|conda-forge    |bats-core    |Bashスクリプトテストツール
|conda-forge    |gh           |GitHubクライアントコマンド

**サーバー・データベース**

|channel        |パッケージ     |説明
|:-------------:|:-------------|:-------------------------
|birdhouse      |apache-tomcat |Javaアプリケーションサーバー
|ostrokach      |mariadb-server|リレーショナルデータベース
|conda-forge    |nginx         |Webサーバー
|conda-forge    |lighttpd      |Webサーバー
|conda-forge    |openldap      |ディレクトリサービス
|conda-forge    |postgresql    |リレーショナルデータベース
|conda-forge    |mongodb       |NoSQLデータベース

**プログラミング言語**

|channel        |パッケージ     |説明
|:-------------:|:-------------|:-------------------------
|bioconda       |scala         |プログラミング言語Scala
|conda-forge    |openjdk       |Java開発キット
|conda-forge    |nodejs        |JavaScript実行環境
|conda-forge    |rust          |プログラミング言語rust
|conda-forge    |erlang        |プログラミング言語erlang
|conda-forge    |julia         |プログラミング言語julia

condaパッケージもインストール後は下記コマンドでキャッシュデータを削除して、ディスクの空き容量を確保しましょう。

```shell
$ ~/miniconda3/bin/conda clean --all
```

Webサーバーなど外部に公開は出来ませんが、開発中のちょっとしたテスト環境としては割と便利ではないかと思います。いずれそのうちにWebサーバーやデータベースのセットアップについても投稿してみたいと思っています。

他にも様々なパッケージが入手できるようですが、CloudShellにインストールされているライブラリが依存関係を満たせず、実行できないものも多々存在するようです。

今後利用できるパッケージの種類が増えていけば、より便利に利用できるのではないかと期待しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2513692/547ce56d-6cea-c1f7-2ce0-973308000160.png)