IBM Cloud Pak for Data as a Serviceで、Data Virtualizationを始める（データ仮想化）

# 本記事について
皆様こんにちは。
外資IT企業にて、カスタマーサクセスをしている、Kazuyaです。

本日は、**IBM Cloud Pak for Data as a Service** を用いた、データ分析業界で注目されている、**データ仮想化**の実現方法をご紹介したいと思います。

# 免責事項
本記事は、１個人が作成したものであり、所属する企業を代表する公式文書ではありません。公式な手順と異なる場合や、説明する製品の販売元の推奨と異なる場合がありますので、異なる場合は販売元の推奨に倣うようお願いいたします。
本記事を用いた活動において発生したいかなる損害も、当方では責任を取りかねます。予めご了承ください。

# 対象者
* データ仮想化に興味がある
* データ分析でいろいろ苦労している
* Cloud Pak for Dataについて詳しくない

# Level
* 100（入門編）

# 1. データ仮想化って？
そもそも説明に入る前に、データ仮想化ってなんぞや？というところを。

従来では、データ分析のためには、１つの場所（データレイクなど）に、物理的にデータをかき集めることが主流でした。
これは、コスト的にも、そのデータを持ってくるにも、非常に労力とコストがかかる作業でした。

これに対して、データ仮想化は、データソースという接続の情報及び、その接続からリアルタイムで見えるデータの情報を仮想的に１か所に集約するという技術です。

サイロ化したデータを分析するには、一つのプラットフォームにデータをかき集めるためにも都度都度各種データソースもとにアクセスして・・・といった苦労が絶えず、本来**分析**という作業に注力したいにもかかわらず、それ以前の作業で時間を要してしまう。。
そういった問題を解決することにも、このデータ仮想化は役立てられています。

# 2. 仮想化を利用する
## 前提 
IBM Cloud にアクセスできるアカウントは既に保有している前提とします。
## 2.1. IBM Cloud Pak for Data as a Service(以降、CP4DaaSと記載）を開始する
まずは、CP4DaaSにログインします。
「**[こちら](https://jp-tok.dataplatform.cloud.ibm.com/login?preselect_region=true)**」 から、ログイン可能です。
ログイン画面にて、ユーザ名、パスワードを入力してログインします。
ログインすると以下のような画面が表示されます。これがポータルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/a8a2134c-b114-40e1-bf09-009955a356c1.png)

## 2.2. 環境設定
### 2.2.1. Watson Knowledge Catalogをインストールする
データ仮想化に必要なサービスを、プラットフォームにインストールしていきます。
Catalogは、データサイエンティストに限定的なデータを公開する場合などに利用します。
まずはナビゲーションバーから、[サービス] > [サービス・カタログ]をクリックします。
※この画像では「ガバナンス」などが表示されていますが、Watson Knowledge Catalog(以降、 **WKC** と表記します)がインストールされていないと、これらは表示されません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/1002aba9-04df-b3cc-bfb0-b9c32e731dbe.png)


Watson Knowledge Catalogを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/417bb6b4-6f08-6440-39fe-263fc758ae26.png)


プランを選択して作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/eed3e53f-9483-b12c-16a0-06f5f7931b22.png)

カタログが作成されると、ナビゲーションバーに「ガバナンス」が追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/5050c558-6309-3b3f-e30e-8bb090f29ba0.png)
これで、WKCのセットアップは完了です。

### 2.2.2. Watson Queryをインストールする
こちらが、データ仮想化に必要なサービスです。
同じく、サービス・カタログを表示します。
**Watson Query** のキーワードで検索して、選択・インストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/1004fc2f-140b-10bf-03ca-1c2d8249694c.png)

プランを選択して、作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/e9c06e5d-6e4f-7893-7231-796633874689.png)

サービス・インスタンスのページに遷移しますので、追加された「Watson Query-xx」の状況が「アクティブ」になるまで待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/f732703d-8768-26e9-d5c5-ead2f2e20903.png)

完了した後、ブラウザをリロードすると、ナビゲーションに[データ] >[データ仮想化]が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/061048ac-5e86-3a68-81a1-0276a5706df6.png)

これで、Watson Queryの追加は完了です。

## 2.2. プラットフォーム接続を追加する
現在のCP4DaaS上で利用するデータ接続を作成していきます。
これは、ナビゲーションの[データ] > [プラットフォーム接続]にて、プラットフォーム全体で利用する接続が作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/20b2337a-dc5d-824d-1c73-6a856840cba4.png)

最初にプラットフォーム接続を追加しようとすると、プラットフォーム全体のオブジェクトを格納するためのデフォルトカタログがないという画面が表示される場合があります。この場合、次のような画面が表示されますので、[Create catalog]をクリックして、作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/6ea552b8-f701-f298-db07-126d82f75f22.png)

表示された画面でデフォルトを受け入れて、作成します。作成完了までしばらく待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/53969a32-715d-9d95-6b41-33076162e924.png)

作成が完了すると、再度プラットフォーム接続が表示されますので、接続タブから、[新規接続]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/9e5b3382-7d61-fc31-eb2c-4ff742e44e66.png)

接続できるデータソースのリストが表示されます。ここから接続したいデータソースを選択します。
今回は、DB2 on Cloudをデータソースにしたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/73c6cebd-e9f7-a8d2-061a-ac3b1181b71f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/79543d09-d686-fab1-2155-085eae8af2c3.png)

任意の接続名や、接続情報の詳細情報を入力します。接続に必要な情報はデータソース側から入手する必要のある情報です。
入力が完了したら、作成をクリックします。接続設定にエラーがある場合この段階でエラーとなります。画面右上の接続のテストをクリックして試行してもOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/752d92bf-3154-9f85-9093-b494d755d8ee.png)

設定完了！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/6c2876da-74c4-736a-efb3-ffce0ee2c921.png)

## 2.3. データ仮想化を行っていく
前項で、データソースとの接続を作成しました。
次いで、このデータソースを経由して、仮想のデータ取得を作成していきます。
ナビゲーションバーから、[データ] > [データ仮想化]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/6f407671-b2cb-e028-c663-d380a7bbdaab.png)

仮想化で使うデータソースとの接続を、前項までに作成しているプラットフォーム接続を指定して追加します。
データソースのページが表示されたら、右上プルダウンから「既存の接続」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/e5317b24-08f1-1177-b455-8d841f41660d.png)

追加する接続を選択して、追加をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/0a2b1198-1682-b97e-a5d1-61e575393cb1.png)

接続が追加されたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/b3c038ed-9b07-3907-dd86-4f2265cd5437.png)

つづいて、追加したデータソース接続を用いて、接続先に存在しているデータの仮想化を行っていきます。
画面左上のプルダウンから、「仮想化」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/25ad5f2e-adeb-d034-bee7-0c88b5fd32fc.png)

追加済みのプラットフォーム接続の先に存在するテーブルのリストがリストアップされます。
この例では１つしかテーブルが存在しませんが、接続先データソースに複数のエンティティがあれば、複数表示されます。
仮想化したいテーブルを選択して「カートに追加」をクリックし、完了したらカートの表示をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/bd6a4c90-a4b2-84ab-4b52-d1b11530bc38.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/97cccc8e-5392-c22b-2818-84fba41322ed.png)

仮想化対象として選択したデータソースもとのエンティティが表示されます。内容に認識相違がなければ、画面右上の「仮想化」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/9ce0fd3e-0403-8157-51f0-aa3a9f2cb49a.png)

仮想化が完了すると、以下のように仮想化成功ステータスの画面が表示されますので、「自分の仮想化データを表示」をクリックして確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/1c2f731f-6704-8de0-297e-e07a15bb2f4c.png)
これで、データの仮想化自体は完成しました。

## 2.4. 仮想化したデータをカタログに公開してプラットフォーム内のユーザに公開する
ここまでの手順で、データの仮想化は完了しました。
ただ、この状態では、この仮想化データは、ほかのユーザが利用できません。
ほかのユーザーが利用できるようにするために、この仮想化データを「カタログ」に公開します。

まず、公開先のカタログを作成します。（※デフォルトのプラットフォーム用カタログは利用できません）
[カタログ] > [すべてのカタログを表示]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/6cfb7330-6271-e020-f450-13247a618e46.png)

表示された画面の右上から、「カタログの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/69cb948b-2d90-86e5-872c-247b8a8d5020.png)

カタログ名、説明を入力します。※ストレージがない場合は、追加のインスタンスを下部に記載の通り新規で作成した後最新表示して選択します。
また、データポリシーを設定する必要がある場合は、右側の「データポリシーを適用する」にチェック入れます。これは特定のユーザに見せるデータをmaskingしたりする際に役立ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/fb70a446-06fc-661c-6d94-e6b2973b64b3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/78b41ac0-dec8-b68a-fa3b-01e3dbe63438.png)

カタログを作成できましたので、再度ナビゲーションから、[データ] > [データ仮想化]をクリックします。
左上プルダウンから、[自分の仮想化データ]を選択します。
カタログに公開したいデータを選択して、[カタログに公開]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/17b6d3fa-5ccc-e6b6-8bb5-bfd913ee246f.png)

選択したら、公開先のカタログを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/36fb1084-cbc5-1463-a87b-12929686544b.png)

先ほど作成したカタログを表示しています。
以下のように、DV_<自動設定された名称>_データソース先の名称 で、データが見えるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/239c6ce2-3b8a-f73f-015e-0449dc06d274.png)

開いたら、プロファイルを設定して、仮想化データへの接続認証をアンロックする必要を求められます。
「Authentication method」から、「API Key」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/e8cc56bc-dc05-64ed-fbe2-19010b2d4b34.png)

API鍵に入力する情報は、以下のどちらかになりますが、共通的なものに利用する場合は、サービス資格情報のAPI鍵を利用します。
* Watson Query自体に設定されているサービス資格情報の API 鍵
* アクセスしようとしているユーザのIAMに割り当てられている、API 鍵

サービス資格情報を作っていきます。
ナビゲーションバーから、[管理] > [アクセス(IAM)]を選択します。IBM Cloudに遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/13796e12-e780-418a-a351-6a403755174f.png)

IBM Cloudにてナビゲーションバーから、[リソース・リスト]をクリックします。
リソースリストに表示される、Watson Query-xxをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/327bd72d-ffc6-bb69-bfc8-1ed58442a6ca.png)

表示されたページで、左メニューから「サービス資格情報」をクリックし、「新規資格情報」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/66a1d3f3-e30e-600f-0330-f0d32db55e73.png)

任意の名前および、適切な役割を選択して、「追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/ddda3a85-dc3f-9cf4-28ed-d1a65f01ee8f.png)

作成されたサービス資格情報の下向き矢印をクリックして展開します。
個々の一番に上に表示された、「apikey」をコピーします。これがAPIキーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/cb8e70e8-8c62-14f1-0ad0-3e579508f16d.png)

CP4DaaSを表示しているブラウザに戻って、API鍵に、上記でコピーしたAPI鍵を入力し、「Connect」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/157efd77-0a2a-696c-a9f9-c71c800c18cb.png)

これでデータが見れるようになりました。
試しに、データの「資産」タブをクリックしてみます。
正しく設定されていれば、以下のようにデータが閲覧できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/3f9f5ca7-9a6a-b359-9c04-bfbfddff03dd.png)

試しに、コラボれーたに指定されている、ほかのユーザからも、このカタログが閲覧できる確認してみます。
※カタログに対するアクセス制御の設定を行ってください。

カタログが見れること、資産を表示できるのですが、カタログ内のデータを開いて、資産タブを表示しようとすると、サービス資格情報同様に、個々人のAPI鍵が必要になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/fa930f74-7277-6062-1ad9-351b747a0057.png)

個人のAPI鍵は以下のように実施します。
このユーザにて、[管理] > [アクセス(IAM)]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/40fef5f2-35e3-7d76-cecd-d79d7bcbde06.png)

ナビゲーションから、「API 鍵」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/7123800a-06dd-2266-4aa1-9f2ca5a97c37.png)


Viewにて、「自分の IBM Cloud APIキー」が選択されていることを確認して、「IBM Cloud APIキーの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/47e42ef7-83b5-6d54-1b94-b754221c790a.png)

任意の名前を設定して作成をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/657eaac9-ea1c-3493-4edf-decdc56beb30.png)

作成された後、すぐに、APIキーを表示してコピーします。二度と入手できなくなりますので、紛失に注意してください。
※権限の問題でAPI鍵を個々人が作成できない場合は、管理者がこの作業を代行して、対象者のAPI鍵をお知らせしてあげる運用もあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/2a5b0cc5-9626-2869-cf8f-c1d7408c720d.png)

CP4DaaSの画面に戻って、APIKeyを認証メソッドに指定して、先ほどコピーしたAPIキーを指定して、接続してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/5b4baa7e-4dfc-2bf8-e2dc-6bc0212e0c5f.png)

**しかしこれでは権限がなく失敗します。。**
これは、カタログへのアクセス権だけではなく、「仮想化環境」というものに対する、対象ユーザの権限がないためです。
そこで、元の管理者アカウントのほうに戻って、当該ユーザに対するアクセス権を、付与していきます。
管理者側のユーザにて、CP4DaaSのページを開いて、ナビゲーションから、[データ] > [データ仮想化]を選択します。
左上プルダウンにて、[ユーザの管理]を選択。
画面右上にある、「アクセス許可」をクリックして、「IBMidユーザの追加」ペインにて、仮想化データをシェアしたいユーザを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/3ede5a6c-d9e2-189c-8b0f-88a82ad536fc.png)
ロールは、データ分析現場における適切なロールを選択してください。

追加が完了した後、先ほどの閲覧側のユーザに戻ってAPI鍵を再度設定して接続をクリックし、以下のように表示できれば完成です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2242133/0eb10d22-4f57-cbe3-ab5f-21ef3f1d960e.png)


長くなりましたが、初回の設定さえ終わってしまえば、ガバナンス（maskingなどのセキュリティポリシーなど）も含めて、
容易にデータ分析のできる環境が作成でき、分析の現場のスピードが格段に上がるケースがありえます。

ぜひぜひ皆様、お試しくださいませ。


Thank you for reading my article!
See you next time!