Watson Studioの「チーム」機能のいくつかを簡単にご紹介します

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/daa618ef-dc87-2a38-81de-fdfeac25bdb5.png)

# はじめに
こんにちわ！ IBMのMLaaS(Machine Learning as a Service)である Watson Studioの「売り文句」の一つは「**AIプロジェクトのチームを支援**」です。「Pickerの方もCoderの方もお好きなツールを！」ってのはいいとして、それ以外に「**チームの生産性を上げるために、どんな機能が盛りこまれているのかな?**」と思ったので、調べてみました。ディープラーニングのような「派手」な機能ではないですが、結構地味にいい機能があったので、いくつかピックアップしてご紹介させてください。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/b63d9b9f-94c4-06a6-b1c6-8a6dc77f41b0.png)

# プロジェクト
「チーム支援」といえば、まずはWatson Stduioには初めから「**プロジェクト**」という枠組みが用意されていることがあげられます。AIプロジェクトでの成果物＝アセット(ノートブックやモデルなど)はプロジェクト単位にまとめられ、チームでシェアできます。「プロジェクト」とはチームの作業場であり、権限を与えられた全員でシェアできます。市場にはJupyperノートブックの環境をSaaSとして提供するものは色々ありますが、「チーム」の観点は薄く「個人の分析環境」に留まっているものが多い印象です。(具体的に申せば、Aさんが作ったNotebookをBさんがレビュー/修正する場合にどうすればいいでしょうか? メールで送る? ファイルをs3上でシェア?Watson Studioなら簡単です）

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/b0d0452e-9aca-af35-5d61-c6e5d1a7b65c.png)

### コラボするメンバーを招待するには
まずは「管理」－「アカウント」－「ユーザー」からユーザーを招待します。(この手順はIBM Cloudの通常の流れであり、Watson Studio固有の手順ではありません)
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/33502ebd-8192-84d5-cbb7-f6004edc0821.png)

次にWatson Studioの「プロジェクト」の「Collaborators」タブでコラボしたいユーザーおよび役割を指定します。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/a72ee9f7-3fad-1053-8857-5ee9c9a8fab9.png)

結果、以下のように「プロジェクト」毎に異なる参加メンバーを指定でき、適切な権限を保持しながらコラボレーションを進められます。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/6ac9b371-ff57-0325-5299-5e4b803be7fb.png)


# データ
当然ですが、プロジェクトのデータ・アセットはチームでシェアできます。

### コネクション
ここでご紹介したいのはコネクションです。Watson Studioでは他社クラウドやオンプレミスを含めた多様なデータソースを利用できますが、各々の接続情報は「コネクション」としてアセット登録して再利用できます。ので「えーと、s3上のファイル使いたいんだけど、アクセスキー何だっけ?」のような接続情報を各人が記録・記憶しておく必要は無く、全員で定義を共用/再利用できます。（変更時も一箇所変えればオーケーなので楽ですね）
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/12477252-3995-090b-91ca-e439b64a4323.png)

# データ･カタログ
データ・カタログ自体がデータに対するガバナンスをチームや関係者に提供するものではありますが、「チーム」面でお伝えしたい点としては
### 評価・コメント
下記のようにデータに関する評価やコメントを投稿することができます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/85cd6fff-5408-8220-2704-4f44defae195.png)


# Jupyter Notebook
### ロック
Notebookの編集中はロックがかかります。別の人は参照のみ可能です。ロックはNotebookのタブを閉じるか、鍵のマークのクリック(unlock)で解除できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/3558ad3b-17dd-4979-b511-fb5ca6cc34f2.png)

また、Watson StudioのJupyter Notebookでは通常の機能に加え、「チーム向け」に以下の機能が独自に追加されています。(Notebook編集中のメニュー)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/e7692f21-4a86-7115-da22-a2d719e8a38f.png)

|#| 機能|説明|
|:---|:---|:---|
| 1 | Publish on GitHub | GitHub/GistへのNotebook公開 | 
| 2 | Share | インターネット上でのシェア|
| 3 | Insert Project Token |プロジェクト・トークンの挿入|
| 4 | Notebook Info |ノートブック情報|
| 5 | Versions |バージョン管理|
| 6 | Comments |コメント|
| 7 | Data |データアクセス・コードの生成|
| 8 | Find Resource in the community |コミュニティの検索|

以下、主なものをご紹介します。

### 1. GitHub/Gistへの公開(publish)

以下のようなNotebookがあり、公開したくない認証情報については@hidden_cellでタグ付けしてあるものとします。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/0cff53ad-6f23-44fc-ec03-fa781e9673eb.png)

ここでPublish to GitHubを実行します。デフォルトでは@hidden_cellタグの内容は公開されません。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/4f5da004-907a-183e-9a8d-f91ec48ea5cd.png)

以下のようにGitHub/Gistいずれでも同じように認証情報は隠しつつ、公開できました。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/c8834459-89ef-bcd0-b789-2056ee518522.png)

【ご参考】上記を実施する場合は事前にプロジェクトのSettingsで対象GitHubのリポジトリの場所を登録しておく必要があります。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/42d0bf9e-c93f-ebc6-834c-f395c4d67be4.png)

:triangular_flag_on_post: 現時点(2018/05)での公開対象はパブリックのGitHubのみです。GitHub Enterprise等は現時点では未対応です
:triangular_flag_on_post: 現時点ではGitHubに分析結果などを「公開(Publish）」するだけであって、「Pull」や「CommitT」など、ブランチやバージョン管理などGitHubの全機能を使えるわけではありません。

マニュアル:[Publish notebooks on GitHub](https://dataplatform.ibm.com/docs/content/analyze-data/github-integration.html)


### 2. インターネット上でのノートブックの直接的なシェア
「URLを知ってる人は誰でも参照できる」でよいならば、Notebookを直接公開することもできます

- 公開内容のレベルが選択できます
- 公開されるのは「最新状態の内容」ではなく「最新のバージョン」です。よって公開したい状態で「Save Version」して最新のバージョンを作ってください。逆に言えばノートブックの公開と変更・更新作業は別々に進められる、ということです。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/5cbc9379-7584-5f94-c766-24cb1bfb49f9.png)

デフォルトの「Only text and output」ではコードは公開されませんので、コメントと結果だけを参照することになります。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/b5bbbc6d-5b72-3555-1008-b86d6ab4c270.png)

### 3. プロジェクト・トークンの挿入

Notebookからプロジェクト上のアセット(データやコネクションなど)にアクセスする場合はプロジェクト・トークンが必要です。プロジェクト・トークンは下記のようにプロジェクトのSettingsメニューで生成します。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/d1ee4fe5-1951-4a9b-c8e7-cd490575a0cf.png)

プロジェクト・トークンをNotebookのコードで利用する場合は下記の「insert project token」メニューを使うとコーディングの手間が省けます。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/d9445138-aaf5-b629-a749-e538606823c2.png)

マニュアル:[Manually add the project token](https://dataplatform.ibm.com/docs/content/analyze-data/token.html?context=analytics)


### 5. バージョン管理

Watson Stduio上で作ったNotebookは単にSaveするだけではなくバージョン管理できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/ae443972-d400-c476-adfc-75a8a7b05928.png)

右側のアイコンからも操作可能です。特定のバージョン時点に戻ることも、もちろん可能です。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/1db14d86-ddf6-8088-56a9-f6ba1091878d.png)

### 6. コメント
Notebookにはコメントをつけられますのでレビューなどに便利です。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/204f503e-13f7-2489-a18e-9d1d0e290499.png)

### 7. アクセス・コードの生成と挿入

アセットとして登録してあるデータにアクセスするPythonコードを自動的に生成できます。Notebookのセル上の挿入したい場所にカーソルを置いて、ファイルを選択して「Insert to code」を選択すると、該当のコードが生成されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/d554aef2-efb7-4878-8549-d6fab31c3162.png)

以下の例ではIBM Cloud Object Storage上に置いてあるcsvファイルをPandasのDataFrameとしてアクセスするコードが生成されました。常にPandasというわけではなく、データの種類により適切なコードが選べるようになっています。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/78da7b91-91f9-9600-49ff-b60d471e018c.png)

以下はファイルではなくコネクションの定義を生成した例です。AWSのS3やICOSなどの定義を生成しています、
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/09282c09-256b-a833-a4d2-21786f2cdc44.png)

Db2 Warehouseの場合はテーブルにアクセスするコードが生成できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/db7d0e24-b7ff-dfc3-71fb-13f1557f19ab.png)

### 8. コミュニティ・リソースの参照

事前に有用なリソースをブックマークしておけば
![WS-01.gif](https://qiita-image-store.s3.amazonaws.com/0/108535/cf9d184a-e301-84d6-f5be-64f394f3c898.gif)

あとでNotebook利用中に検索できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/0653277a-b9c3-f2fc-bd07-7f17f06e89b8.png)

プロジェクトのBookmarksタブからも参照できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/799dd470-3317-0094-d124-9d38e25c4ac8.png)


### スケジュール実行

Notebook作成時のランタイムとしてSparkを選択すれば、Notebookをスケジュール実行できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/459083f4-ec2d-dbd8-a7df-acbc07352420.png)

Spark上で動くNotebookの場合は追加で時計のアイコンが表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/eab76be4-b422-2b7f-171a-fa43d131bfff.png)

スケジュールされたNotebookには時計マークが付きます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/16eb62af-4a34-5d69-da37-df2941498fb2.png)

View Job Detailsではジョブのスケジュール情報は見られますが、実行結果は見られません。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/115a4520-5dc7-9124-dcf6-e5d3fabb58f1.png)

ジョブの実行結果はWatson StudioではなくSparkサービス側のメニューから見られます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/16eafba9-01c9-c207-44be-c16b4ff13750.png)

マニュアル:[Schedule a notebook to run at specific intervals](https://dataplatform.ibm.com/docs/content/analyze-data/schedule-task.html?context=analytics)


# モデル
### SPSS Modeler Flowでのバージョン管理

Modeler Flowでは以下のように最大10バージョンまで保持できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/2196356d-ab1b-3c8a-585a-514867fdc193.png)

### Modeler Builderでのバージョン管理

Model Builderを使った自動モデリング(Sparkベース)では、継続的学習システムの一環としてモデルの自動トレーニング～自動デプロイが可能です。前のバージョンのモデルも保持されており、そちらに戻すこともできます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/7b9087c8-cd0e-1149-cb3f-5fd61f9516a8.png)



以上、簡単ですがWatson Studioでは単なる「個人用の分析環境」を越えた「チーム」支援機能が色々と追加されていることをご紹介しました。Watson Studioは永久無料のライトアカウントでも利用できますので、ぜひ一度触ってみてください。