【古い記事です】IBM Cloud上のLiteプラン(ずっと無料)でData Science Experience(DSX)が使えるようになったので、触ってみた　★2017/11 Update


![image](https://qiita-image-store.s3.amazonaws.com/0/108535/f45278e4-5643-8f4b-f3e3-912851e4bcb7.png)

:warning: <Font color="red">当記事は2017/6月に初投稿しましたが、現時点(【2019/2月】)では既に古くなっています。記事自体はアーカイブの目的でこのまま残しますが、当記事の内容を参考になさらないようにお願いいたします。代替の記事としては下記などがございます。</font>

- [IBMのThink 2018で発表されたAIプラットフォーム「Watson Studio」をザクッと紹介してみる](https://qiita.com/ishida330/items/cd851bb2c461f64b02dd)


<hr>

###### <Font color="red">【注】当記事は「Bluemix上でData Science Experience(DSX)のFree版が使えるようになったので、触ってみた」とのタイトルで2017/06にアップしたのですが、2017/11にLiteアカウントの開始やDSX/WML関連でUIの変更がありましたので記述見直し＆画面ショットを撮り直しました。記事の内容は以前とほぼ同じです。変えたところは :new:で表記します。</font>

# はじめに

こんにちわ！2017/06/01に**IBM Cloud上にData Science Experienceのアイコンが登場しました！** と興奮しても、殆どの方は「Data Science Experienceって何よ、それ」というクールな反応かと思います。（ガックリ.. ) Qiita上にもData Science Experience(以下DSX)の記事はちらほらありますが、IBM Cloudのカタログに登録されたのを機に、改めて「何それ？」を簡単にご紹介しようと思いました。 

# Data Science Experience(DSX)とは?

( スキルフルなQiita読者の皆様には以下の表現が話が早いと思いますが) 要は、最近盛り上がってる以下のようなオープンなデータ・サイエンス系分析の開発・実行環境を一式まとめて提供するSaaSサービスです。利用者としてはコーディングができるデータサイエンティストのチームを想定しています。(コーディング嫌いな方は:new: SPSSもDSX上で使えるようになってますよ! :-) )

- Jupyter Notebook(※)上のScala/Python
- R Studio上のR
- Spark Cluster
- Brunel(Visualization)/Apache Toree(SparkとJupyterの統合)など

更に

- お勉強のための記事・Tutotialやオープンデータ
- 分析チームのためのコラボ機能
- NotebookのGitHub連携

もついてます。

※実際はチームで開発できるのでJupyter Hubなのかな？何を使っているかまではわかりません。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/5b75f34f-39e8-6c4a-4e2b-ac041e566a86.png)

# で何がいい？
まあ現状は**要はオープンソースものを統合したSaaSサービス**なわけで、似たような環境は自力でも作れるといえば作れるんでしょうが、以下の利点があると思います。

- （SaaSなので)そもそもインフラの手配や環境設定の必要が無い
- JupyterとSparkの連携など、基盤設定の知識も不要
- ゆえにすぐコードの開発に入れる（またはすぐお試し・お勉強できる）
- 多言語環境(Polyglot)なので分析チームが「ツールや環境を統一する」必要が無い
- 特にSpark Clusterの環境構築と運用が不要（結構大変ですよ、これ）
- dashDBやObject StorageなどIBM Cloud上のサービスと簡単に連携できる
- 作ったNotebookをgithub上に簡単にデプロイできる

なおDSXは特に**「分析チームの生産性を上げること」**に力点を置いているようです。データ・サイエンティストの方ってそれぞれ自分の好きな言語や得意なツールがあって、「僕はRでやりたい」「え、これからはAIだからPythonだろ」とか色々でしょう。個人単位で分析をする場合は好きなものを使えばよいのでしょうが、「分析作業」を**「チーム」**で**「お仕事」**でやる場合はそうもいきません。言語やツール環境を統一しないと分析結果をチームで評価したりシェアしたりする際に何かと不便です。かといって「この分析仕事はｘｘｘで」と強制的に決められるのも、結構つらいしモラルダウン。。。DSXはこのあたりをチームの皆様は**お好きな言語・ツールで**　分析して、成果物は**コラボ**できるような環境を目指しているようです。(価格の体系が１ユーザーの価格ではなくて、５名でいくら、のような感じになっていることからも推し量れます）

# DSXのIBM Cloud上での変遷
Data Science Experience自体は2016年にBluemixから独立した形でSaaS上のサービスとして提供されていたのですが、30日間のトライアルが提供されているのみ、でした。（つまりトライアル期限が過ぎたら使えなかった。）:new:その後2017/06にBluemixのカタログに掲載&Free版が提供され、2017/11にはBluemix→IBM Cloudへの名称変更を機に、ずっと無料のLiteプランが提供されましたが、DSXとWMLはLiteプランでも利用できます。要は（リソースに制限はあるものの）**Liteプランなら期限なし＆無料で気軽に試せるようになってます**ので、「Jupyter/Python/Scala + Sparkのお勉強」を始めるのにいいんじゃないかと思います。（お勉強のためのTutotialやサンプルのNotebookも豊富に準備されていますしね）

ちなみにLiteプランで使えるリソースは下記です。小規模ですが「お勉強」レベルなら十分かと思います。(Liteプランは有償のEnterprise版と機能は同じで、利用できるマシンのリソースやSpark Clusterの数が違うだけ、です。)
[Data Science Experience](https://console.ng.bluemix.net/catalog/services/data-science-experience?env_id=ibm:yp:us-south&taxonomyNavigation=services)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/d5a0ac26-92be-5a95-8708-1c8f5003a207.png)

# ということでやってみる
以下、入門編としてFreeの環境でDSXの機能をご紹介しながら、プロジェクトの作成から既存のPython/Sparkの解説付きNotebookを動かすところまでやってみます。なお、DSXでは「プロジェクト」という管理単位を用いて様々なノートブックやデータなどのリソースを取りまとめ、管理・シェアします。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/34aab2e4-9a1b-f2bd-6227-fa095112a12b.png)


## まずIBM Cloud上でDSXのサービス・インスタンスを作成

IBM CloudにログインしてカタログからData Science Experienceを選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/8baf77ef-56bc-23ef-b482-cf941e6afb8b.png)

次画面でサービス名にお好みの名前を付け、Lite Planを選択の上「作成」します。
:warning: Liteプランの時は**「デプロイする地域」は「米国南部」**にしてください。2017/11月時点ではLiteプランで利用できるのは「米国南部」のみです。(サービスの品揃えが一番多いのは「米国南部」なので妥当かと）
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/c904087d-e33a-5f7d-87d4-a9c94d74e3ab.png)

画面が切り替わったら「Get Started」
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/ea30e4c2-b725-b76b-d1f3-17eb26cba7ad.png)

DSXで利用するIBM Cloudの組織とスペースを選択して「Continue」（デフォルトでいいかと）
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/4368364f-0868-1db7-4e66-5b8f64524920.png)

しばし待ち、Doneになったら「Get Started」
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/89968663-c819-b0ef-d13e-8c9ac36f1b10.png)

## メニューのご紹介
下記がDSXの初期画面です。:new:2017/11の更新でカッコよくなりましたね。
- このパネルは右上の「Get Started」をクリックすると表示されます。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/65bf0d44-0418-aeee-bb40-8cff8c898b7a.png)

- ① ここが操作の中心で、プロジェクトの作成やデータソースの設定などを行います
- ② ドキュメントへのリンクや様々な設定
- ③ ショートカット的なアイコン

①のメニューは以下のようなものになっています。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/594345ea-e19f-8df9-1845-5e02adabca35.png)
- Projects - 作成したプロジェクトやノートブックへのアクセス
- Tools - JupyterとRStudioへのアクセス
- Data Services - データベースやストレージなど様々なデータソースの定義

:new: ベータですがSPSS ModelerやStream Designerも追加されました

画面の下部は
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/6660ca71-2eab-6699-e6e3-afa188ecd4ca.png)

- ④ 最近使ったプロジェクト
- ⑤ コミュニティのリソースで、ブログ記事やチュートリアルがたくさん並んでいますので、ここから直ぐに勉強を始められます。
- ⑥をクリックするとDSXのサポートに質問ができます。（私はやったことありませんが）

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/cc5081fd-6a1f-95a1-caa3-4790aae7aee3.png)

## プロジェクトを作ってみる

③のショートカットで「Create Project」
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/b43b0ec7-a0de-596e-cbb3-affdffa23094.png)

Name欄にお好きなのプロジェクト名を入力します

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/66c66b2c-a074-6d09-559f-ebe1517d4f81.png)

**DSXを利用する際は①Spark ②Object Storage のインスタンスが必要**です。これらもLiteプランで無料で作れます。もし未定義の場合はこのパネルから下記をクリックしてすぐ定義できますので、作成してから改めて「Reload」して使うインスタンスを指定してください。(既に定義済であれば、選択するだけ）

【当該アカウントにインスタンスが無い場合】
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/10946234-241a-41bb-703b-1a42e55570e7.png)

インスタンスを指定したら「Create」
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/baefb1b3-6bcf-db90-f5bb-2662b91d626c.png)

プロジェクトができました。まだまっさらですが、プロジェクトの中にノートブックやデータアセットが格納される構造になっていることがわかります。ここから新規にノートブックや機械学習モデルを作れます。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/d3ed9cc5-9ef1-c415-5239-d21d9218960c.png)

## 新規にNotebookを作ってみる

新しいNotebookを作ります。右上の「add notebooks」

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/1c9521bc-e1cf-f73d-a7f4-a2d5785643db.png)

Nameにお好きな名前を設定し、言語とSparkのバージョンを選択の上、「Create Notebook」。ここでは最新のPython 3.5/Spark 2.1を選びました。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/62b48309-37ab-0696-d2dd-1c9f85a3c19e.png)

結果、下記のように見慣れたJupyter Notebookの環境ができました。最上部のメニューや配色がオープンソースのJupyter Notebookと違いますが、実体はJupyterそのものなので、既にJupyterのご経験がある方が操作に迷うことは無いでしょう。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/2ac92714-a530-1691-78c9-8ac01d31dfde.png)

ちなみに右上の以下のメニュー群はDSXの機能です
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/c6f3f224-22de-0ae3-4349-06a38b8f43bc.png)

| # | ご説明 |
|:-----------|:------------|
|  ①  | ノートブックのgithubへのPublish  |
|  ②  | 直リンク、twitter、LinkedInでのノートブックのシェア |
|  ③  | ノートブックの定期実行スケジューリング |
|  ④  | プロジェクト・トークン(※)の挿入 |
|  ⑤  | 環境、作成日など、このノートブックに関する情報 |
|  ⑥  | ノートブックのバージョン保管（10まで) |
|  ⑦  | コメントの追加  |
|  ⑧  | ファイルやデータソース接続  |
|  ⑨  | ブックマークやコミュニティ・リソースの検索  |

※プロジェクト・トークンとはデータへアクセスする際の認証情報。詳細は[ここ](https://apsportal.ibm.com/docs/content/analyze-data/token.html)を。

ノートブックが開いたら、あとはコーディングを開始するだけ、です。以下のようにSpark Contextは既に初期化済ですし、Pythonでのデータサイエンスの定番ライブラリーである　numpy, pandas, matplotlib等も使えるようになっています。ちなみにseabornは入ってませんでしたが、!pip install seabornでインストールできました。このように「無いライブラリーは追加」することも簡単です。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/0057eb28-942f-de30-06ca-43e0d738f8a2.png)

## 事前に準備されているNotebookの利用

「これからお勉強」の方は何もないところから始めるのはつらいですが、DSXでは（英語ですが）「解説を読み実際に動かしながら、勉強できる」Notebookが多数揃っています。ためしに既存の「PythonでSparkを使うためのNotebook」を動かしてみましょう。

CommunityのNotebooksで「Apache Spark Lab」と検索すると以下の3部構成のNotebookが見つかります。そのパート１をダブルクリックで開きます。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/7dc24849-d0a8-6660-a215-fb5b8260422a.png)

以下のように解説付きのNotebookが開きますので右上のアイコンから「Copy」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/ab607410-2a75-c725-9a32-41e9d60475af.png)

プロジェクト名と利用するSparkの環境を選んで「Create Notebook」

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/fc664958-d314-6edf-6c09-359b56cc4e95.png)

しばらく待つと下記のようにNotebookが自分の環境にコピーされ、動くようになります。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/fbfa57ac-465e-4d08-0e55-a4b18a579c94.png)

実行前の準備として、以前の出力が残っている場合はクリアしておきましょう。
「Cell」-「All Output」-「Clear」
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/c63ee72f-7f91-e50b-fff6-aaeb9ffb5217.png)


あとは解説を読みつつ、実際にセルを実行していけばいいだけです。解説で学んだことをすぐに試せるので、お勉強に良いかと思います。
( ちなみにセルのステップ実行は以下のボタンまたは「Shift+Enter」で)
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/fd8c6007-a5cf-b377-3677-2bd254179d41.png)

このNotebookの内容については当記事の範囲外なので割愛しますが、他にもいろいろなNotebookがあるので、ご興味のテーマを選んで同様に勉強できますよ。

以上、「触ってみた」でした。

# チームでコラボるには
複数のメンバーがひとつのプロジェクト上でコラボするには、以下の手順を踏みます。やってみた限りでは、Liteアカウント同士でもできるようです。

1) IBM Coudの右上メニューで「管理」－「アカウント」－「ユーザー」のパネルで「ユーザーの招待」をクリック

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/a7b1a4cc-61d2-f6cf-5284-c214ab7dff93.png)

2) 招待したいユーザーのメアドを入力し、適切なアクセス権限を設定してから「ユーザーの招待」ボタン
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/47f85db4-0635-b651-f968-2392204deec1.png)

3) 招待されたメンバーには以下のようなメールが飛ぶので、「Join Now」で招待を受け入れIBM Cloudにサインアップします。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/15855171-334a-b187-5ded-e63e2761b521.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/a627b122-a1f1-852a-63c7-67c1ddb9f46d.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/c52b8117-85f6-badd-ecac-21c8698511ba.png)

4) 招待されたメンバーがIBM Cloudにログインすると、以下のように招待した側のDSX関連のサービスが利用可能になっています。（ただしまだプロジェクトは使えません）

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/37e15fc1-a6c0-f52a-5c82-30b560b04e83.png)

5) 招待されたメンバーは[DSXのサイト](https://datascience.ibm.com/)で新規にサインアップします。この操作により、IBM CloudのアカウントとDSXのアカウントが関連付けされます。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/79c0875d-97a8-6e70-250e-26b337563723.png)

すでにIBM CloudにログインするIDを持っているので、右下の「Already hace an IBM Cloud account?」でサインアップします。ただし、この時点では招待した側がまだプロジェクトがシェアしていないので、何も見えません。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/0b20c83a-971f-d80b-c2ec-cb2c72f9c30b.png)

6) 招待する側の管理者はシェアしたいプロジェクトを開き「Add new collaborators」で招待したメンバーを適切な権限と共に「Add」します。Collaboratorにidが追加されたら「Invite」ボタン

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/73a55c4f-3f1e-cc9c-6a1e-2ba8f6ea660a.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/c487147b-7cf5-fd2a-4557-b6896f9f89a1.png)

7) 上記操作により、新規メンバーに通知がなされ、プロジェクトが見えるようになります。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/447a1ae0-77c5-caec-3fe4-0a4578ed4981.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/9a7e3793-ab9e-373a-f094-ee731ec7942e.png)

このあたり、IBM CloudのアカウントとDSXのアカウントの両方があり、ちとややこしいので詳しくはドキュメント[Set up an enterprise account](
https://apsportal.ibm.com/docs/content/admin/enterprise-account.html)をご参照ください。

なお複数人で同一のノートブックを更新することが無いよう、誰かが編集中はノートブックはロックされています。

# 実はDSXはオンプレ版も

当記事ではご紹介しませんでしたが、DSXにはプライベート・クラウドで動くDSX Localやデスクトップで使えるDSX Desktop(2017/6月現在オープンβ中)もあります。ご興味があれば[DSXのDocument](https://dataplatform.ibm.com/docs/content/getting-started/welcome-main.html)やインターネットを検索してみてください。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/9e275c46-2f54-2110-db25-66fc4e0b9037.png)

# Watson Machine Learingとの連携も進んでます
なお、DSXとWMLはIBM Cloud上では別々のサービスですが、両者の連携もどんどん進んでいます。IBM Cloud上でデータサイエンス/予測分析的なことをやる場合、おそらく両方とも使うことになるでしょう。Lite プランではWatson Machine Learningも無料で使えますので、ぜひ使ってみてください。