Watson Studioの環境をカスタマイズする

#はじめに
この記事では、Jupyter Notebookのカスタム環境を作成する方法を紹介します。
Notebookを起動してから、足りないパッケージを導入したり、目的のレベルにあうように導入作業してももちろん結構です。(例：Notebookのなかでpip install XXXXXXと実行するなど)
しかし、同じプロジェクトの複数のメンバーで共同作業する場合など、各メンバーが勝手に様々なバージョンのパッケージを使ってしまうと、以下のような問題がおきえます。
　・他のユーザー環境や実行環境で動作しなかったり、動作が異なる。（「僕の環境では動いたんだけど」問題）
　・実行環境でバージョンの不整合が起きる。
　・セキュリティ上問題のあるパッケージや不具合のあるパッケージがまぎれこんで使われてしまう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/eaed0370-9f2f-02a5-a551-3571f2f9f6cb.png)
　　　　　　　　　　図１　各分析者が必要なものを個別に導入

これらに対応するためには、単一の環境をつくって管理して、全てのメンバーが同じものを利用するようにすることが求められます。
今回ご紹介するのは、製品が提供するNoteBookの構成をカスタマイズして利用する方法です。
Watson Studioでは、Jupyter Notebookの利用者のために標準のソフトウェア構成を提供しており、多くのケースでそのままそれをお使い頂ければ結構ですが、それに追加パッケージを導入したり、特定レベルのパッケージを導入したりした環境を用意することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/8ed46506-2890-6a80-1125-f178dcb0c6ea.png)
　　　　　　　　　　図２　Watson Studioの環境のカストマイズ
#環境の準備
###0. 利用環境
IBM Cloud Pak for Data V3.5.2 (Watson Studio)
この記事はIBM Cloud Pak for Data環境にあるWatson Studioを利用しましたが、IBM Cloudで調達可能なWatson Studioサービスでも同様の機能、UIを提供しています。
 
###1. 新環境の作成
最初に既存のプロジェクトの画面から「環境」タブを開いてください。ここでは「test01」という分析プロジェクトを利用しています。
Python 3.6とPython 3.7の２つのデフォルト環境が製品によって提供されていることがわかります。ここに新しい環境を追加します。「新規環境定義」をクリックします。
![スクリーンショット 2021-03-21 15.59.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/233ac006-6648-b338-635e-b3944bf35879.png)

新規環境の定義画面が現れます。適当に命名し、カスタマイズしたいPython 3.7の環境を選択、「作成」をクリックします。（ここではpy37-2という名前にしました）
![スクリーンショット 2021-03-21 16.02.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/c5c4f858-6887-79a3-d356-a724fc904905.png)
###2. 新環境のカスタマイズ
作成した新環境を開くと、この環境のサマリー情報を得られます。
下の方の「ソフトウェア構成の詳細」の欄には、その環境で利用できるパッケージ情報が入っています。
![スクリーンショット 2021-04-07 15.18.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/22dc6aa1-f8d5-21de-ae06-e6f5d8e252ff.png)
![スクリーンショット 2021-03-21 16.49.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/c89e5bbd-ab38-fba6-132a-b291b7cfbf20.png)
![スクリーンショット 2021-03-21 16.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/990310f1-78c4-89cf-59f4-67d928ccdd71.png)
それではカスタマイズしてみます。画面右側にある「作成してください」をクリックします。
環境をカスタマイズするためのテンプレートがあらわれますのでそこを修正します。
Notebook環境をカスタマイズするためには、conda チャネルまたは pip を使用します。このため、conda パッケージのリストまたは pip パッケージのリスト、あるいはこの両方を指定します。conda パッケージの場合は、パッケージを取得できる追加の conda チャネル・ロケーションのリストも指定できます。
ここでは、condaチャネルの情報は「defaults」のままとし、condaパッケージとして「pandas-profiling」の1.4.1レベルと「scikit-learn」の0.24.1レベル、pipパッケージとして「watson-machine-learning-client-V4」と「sklearn-pandas」の1.8.0レベルを指定しています。「watson-machine-learning-client-V4」のときのように明示的にレベルを指定しないこともできますが、明示指定する方がおすすめです。pipパッケージでレベルを指定するときには「==』のようにイコールを２つ書くことを忘れないでください。必要なカスタマイズが終わったら「適用」をクリックします。
![スクリーンショット 2021-03-21 16.59.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/aa09dd0a-5632-ab9a-9762-c86d18146827.png)
###3. カスタマイズ環境の利用
カスタマイズした環境を利用して新しいNotebookを作ってみます。
当プロジェクトに新しいNotebookを作成します。このときランタイムとして先ほど新しく作成したもの(py37-2)を選択します。
![スクリーンショット 2021-03-21 17.00.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/d6430e5b-2388-5732-fa09-80ec8282e1bc.png)
「作成」をクリックすると、追加導入を指示したパッケージが導入される様子が分かります。
![スクリーンショット 2021-03-21 17.01.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/0a1a490e-3b58-b544-8ddf-8274445420a8.png)
![スクリーンショット 2021-03-21 17.05.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/00e07142-db86-f6de-911a-22a608d75d8b.png)
出来上がった Notebookのパッケージを確認してみましょう。カストマイズで指定したパッケージが入っています。
![スクリーンショット 2021-03-21 17.41.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/66d717e7-8b66-7157-1d41-0181df368e9f.png)
pipパッケージの方も確認します。こちらも指定通りのものが入っています。
![スクリーンショット 2021-03-21 17.45.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/9c7bf95d-4f67-7c3c-40cf-c396a8e1fa6c.png)
#おわりに
同じプロジェクトの複数のメンバーで共同作業する場合など、必ずしも利用パッケージの情報が行き届かず、現場が混乱してしまうようなことがあるかと思います。パッケージの利用はNotebook開発者に任せるのでなく、管理者が責任を持って取捨選択すべきです。
そんなとき、環境のカスタマイズが可能な当機能も積極的に利用されるとよいでしょう。