ラベル IBM の投稿を表示しています。 すべての投稿を表示
ラベル IBM の投稿を表示しています。 すべての投稿を表示

2020年5月3日日曜日

「コンテナ」ってなに?(3)〜「Kubernetes」の技術的特長をザックリと。

前回までは、「コンテナ」が必要になった経緯と、技術的特長をざっくりとご紹介させて頂きました。

「コンテナ」ってなに?(1)〜仮想化が必要になった経緯
https://sapporomkt.blogspot.com/2019/10/1.html

「コンテナ」ってなに?(2)〜コンテナの技術的特長をザックリと。
https://sapporomkt.blogspot.com/2020/04/2.html

今回は、「Kubernetes(K8s)」の概略についてです。


着実に浸透する「Dockerコンテナ」。でも課題が・・・


IT関連の方々は日々お感じのことと思いますが、今、日本国内でも「コンテナ化」は着実に進んでいます。その重要キーワードの一つとして 「Kubernetes(K8s)」が注目されています。

IDCが2019年4月に日本国内の企業及び組織468社に対して行ったアンケートによると、何らかの形でコンテナに取り組んでいる割合は「47.6%」にも及んでいます。
※「本番環境で使用している」「導入構築/テスト/検証段階」「使用する計画/検討がある」「情報収集や勉強している」の総計として。

IDC Japan、2019年 国内Dockerコンテナ/Kubernetesに関するユーザー導入調査結果を発表
https://www.nikkei.com/article/DGXLRSP513611_T00C19A7000000/

とはいえ、同スコアを2018年4月と比べると、-1.4%となっており、少々課題感がある状況も伺えます。
※「本番環境で使用している」「導入構築/テスト/検証段階」のトップ2合計だと、2019年は+3%となっています。

実際、「重要なテクノロジーであることは認識しているものの、「コンテナの仕組み」や「Dockerコマンド」などを学習する必要があるため、IT部門のワークリソースが十分でない企業にはハードルが高い部分もある」とお客様から伺ったことがあります。


世界の主流になることが確定?「Kubernetes」が登場!


そのようなコンテナの課題を解決するために、Googleが開発し、のちにオープンソースソフトウェアとな理、今尚進化を続けているのが、「Kubernetes(クーバネティス:K8s)」です。


それまでは開発者中心に使われていたコンテナを本番サービスでも使用するために生まれた「コンテナ・オーケストレーション」のすごい技術です。

どのくらいすごい技術かと言うと・・・
上記画像にある通り、世界の名だたるITベンダーさんがこの仕組みを支援する団体に入って応援しつつ、自社クラウドソリューションにK8sを組み込んで提供しています。そう、もう、デファクトなんです!

・・・って言う説明は荒っぽ過ぎるので、この辺り、IBM高良さんが出された本をご覧頂くとスムーズに理解できるのでオススメです(私もまだ勉強中ですが^^;)


ちょっとだけ真面目に記載すると、技術的には、セキュリティや可用性の向上など様々なメリットが期待できます。




なお、Kubernetesは、IBM Cloud上でも利用可能です。
上記高良さん本では、IBM Cloud上でのKubernetes利用についても紹介されています。

加えて、下記IBMサイトでもIBM Cloud上でのK8s/Istio/Watsonを使用したビルド方法が公開されていますので、ご興味ありましたらご覧ください。


以上です。
次回は、「OpenShift」について触れてみたいと思います。


「コンテナ」関連エントリー


「コンテナ」ってなに?(1)〜仮想化が必要になった経緯
https://sapporomkt.blogspot.com/2019/10/1.html

「コンテナ」ってなに?(2)〜コンテナの技術的特長をザックリと。
https://sapporomkt.blogspot.com/2020/04/2.html

2020年4月19日日曜日

「コンテナ」ってなに?(2)〜コンテナの技術的特長をザックリと。

前回は、「コンテナが必要になった経緯」の概略を記載しました。

「コンテナ」ってなに?(1)〜仮想化が必要になった経緯
https://sapporomkt.blogspot.com/2019/10/1.html

今回は、「コンテナの技術的な特長」をざっくりと紹介させて頂きます。
ちなみに、私、非テックな畑なので、深い解説をご期待の場合は、他サイトをご参照ください。
いやっ、逃げてるわけじゃないですよ!・・・テックな方々にビビってるだけです(笑)

ちょっとだけ触れておきたい、DXのお話


技術のお話に入る前に、ちょっとだけDX(デジタルトランスフォーメーション)について触れさせてください。

下記スライドは、経産省による「2025年DXの崖」をベースに作成したスライドです。
少々小難しく見えますが、簡単に言うと、
「2025年までのDX対応有無が、企業の優劣に重大な差を生じさせる」と言うことらしいです。


※1:ここでは、「新しい、今風なシステムの作り方・運用の仕方」のようなご理解で結構です 。
※2:経産省の定義に準じます。「企業がビジネス環境の激しい変化に対応し、データとデジタル技術を活用して、顧客や社会のニーズを基に、製品やサービス、ビジネスモデルを変革するとともに、業務そのものや、組織、プロセス、企業文化・風土を変革し、競争上の優位性を確立すること。」


当然ですが、ITは、地域的に見てもボーダーレスです。
我々がビジネスを展開する北海道・札幌でも「DX Divide」の波はやってきます。
この「波」に乗り越えるための、「マスト・テクノロジー」とは何なのでしょうか?

「DXのマスト・テクノロジー」としての「コンテナ」が来てるっ!


移り変わりの早いIT業界。皆さんも日々、色々なテクノロジーを追いかけてらっしゃしますよね。
例えば、社内の情報システムご担当としては、こんな感じでしょうか?


当然、業務領域によって、様々異なってくるとは思いますが、DX関連で見ると、最近特にアツいのが「Dockerドッカー)」に代表される「仮想化技術」なんです。


実際、全世界におけるGoogle trendの検索傾向を見ても、「Docker」がグイグイ話題になっているのがわかりますね。あの「Salesforce」を凌駕するぐらいの勢いなんです。
・・・誰ですか、「Dockerは港湾労働者って意味も入ってるやろ?」なんて言う人は?
これぐらいは見逃してください(笑)

この「Docker」に代表されるコンテナ技術を使うと、前回エントリーで記載した「ハイパーバイザ」型が、下記スクリーンショットの右側に記載したように・・・ちょっとわかりづらいですか? ですよね、はい。
簡単に言うと、「ハイパーバイザ」が無くなる為、今まで「軽く・早く・柔軟・高セキュリティ」になります。


このあたり、「どうして高セキュリティになるの?」を説明しだすと、下記のような構造になるのですが・・・IT部門の方々は伝わったのですが、LOB系の方々の場合は、そっと閉じた方がいいかもしれません。。



とにかく、「軽く・早く・柔軟・高セキュリティ」になると覚えて頂けると大体よろしいかと思います!

このような感じで、良いことばかりな「Docker・コンテナ」ですが、実際は様々な課題もあるようです。
次回は、これら課題をクリアするために生まれたオープンソースの技術「Kubernetes(クーバネティス)」などの概要についてご紹介させて頂きます。

「コンテナ」関連エントリー


「コンテナ」ってなに?(1)〜仮想化が必要になった経緯
https://sapporomkt.blogspot.com/2019/10/1.html

「コンテナ」ってなに?(3)〜「Kubernetes」の技術的特長をザックリと。
https://sapporomkt.blogspot.com/2020/05/3kubernetes.html

2019年10月27日日曜日

「コンテナ」ってなに?(1)〜仮想化が必要になった経緯

最近、益々「コンテナ」が熱いですよね。
「コンテナ」を一言で言うと、「仮想化技術」です。今、アツいみたいです。

「Kubernetes」や「OpenShift」など、
「なんだかよくわからないけど、システム担当もLOBも「コンテナ」関係は、知っといたほうがいいんだろうな・・・」なムードですが、まぁ、ややこしいですよね(苦笑)

私自身も、コンテナ猛烈勉強中でして、今後、当ブログで色々とご紹介できればと思っています。

そもそも、どうして「仮想化」が必要になったの?


通常は、1台の物理マシン(PC/AT互換機:パソコン、IA/x86サーバー)上で、それ専用のOSと対応するアプリケーションを動かしますよね。

例えば、昔々、広告代理店さんやデザイン会社さんは、まだマックOSでしか動かないデザイン系アプリが多かったので、Macマシンがメインマシンでした。
でも、マックOSは、オフィスなどのビジネス系アプリが不十分だったので、他の方のWindowsマシンを借りたり、会社さんによっては、Win/Macマシンを別々に購入して、ハードもソフト(アプリ)も二重投資になってたりしましたよね。
もちろん、IA/x86サーバーの世界でも同じようなことがあったと思われます。


それじゃ無駄が多いので、「ハイパーバイザ (hypervisor) 」と言う、「仮想機械(バーチャルマシン)」を1台の物理マシンの中で作れる制御プログラムの導入が流行りだしました。別名、「仮想化モニタ」や「仮想化OS」※とも言います。
※この辺りから似たような言葉が頻出して、お勉強しているとイライラします(笑)


「仮想機械(ハイパーバイザ)」には2種類ある!?


この「仮想機械(バーチャルマシン)」には、2種類あります。

1.「ネイティブ」または「ベアメタル」ハイパーバイザ
パイパーバイザがハードウェア上で直接動作し、全てのOS(「ゲストOS」と言います)は、そのハイパーバイザ上で動作します。
ソフトウェア製品としては、「Xen」とかMSの「Hyper-V」などがあります。
システム屋さんとの会話で「それってベアメタルだよね?」的なフレーズが飛び出してドキっとしちゃいます。

2.「ホスト」ハイパーバイザ
具体的な機能の話をすると難しくなるので、まずは、下記ユースケースをイメージしてください。
本来は、「ネイティブ」ハイパーバイザを例にした方がいいと思いますが、私のように、システム運用未経験者の場合、パーソナルユースが多い「ホスト」パイパーバイザを例にした方がわかりやすいかなと思いまして。

前提:
・WindowsユーザーでPC/AT互換機を使っているが、業務上、どうしてもMacOSのアプリを使いたい。
・会社からは「予算無いので、2台もPCは買ってあげない。でも、MacOSとアプリはあるよ」と言われている。

ユースケース:
(1)ハードウェア上で別のOS(ハイパーバイザではない、普通のOS。Windows/Mac/Linuxなど:「ホストOS」と言います)が稼働しています。例えば、普段、自分が使っている端末やサーバーがWindowsであるケースをイメージしてください。
(2)「ホストOS」として位置付けられるそのWindowsの中に、「仮想機械(バーチャルマシン)」を作るためのアプリケーションをインストールします。
例えば、オラクルの「VirtualBox」やMSの「Virtual PC」などの名称を聞かれた方もいる方と思います。
(3)(2)の「仮想機械(バーチャルマシン)」の中にMacOS(「ゲストOS」と言います)をインストールする。
(4)(3)にMacでしか動かないアプリをインストールする。

これで、PC1台だけで2つのOSを動かすことが可能になりました。
ハードウェアやネットワーク回線、オフィススペースも節約出来てお得ですね!
(サーバーの場合、ラックスペースの節約にもなりますよね)


実際、自分も「メインマシン=MacOS、業務で使いたい分析アプリ=Linux」と言うケースがあり、「ホスト」ハイパーバイザをMacOSにインストールしたことがあります。
普段からMac端末は持ち歩くワークスタイルなので、2台目としてのLinux用マシンを持ち歩く負担も減ってハッピーでした。

ただ、良いことばかりではありません。
「一台のPCで、Windows上にMacOS載っける」わけですから、当然、重くなります。また、クラッシュした場合、「どこが悪かったの?ホストOS?ゲストOS?ゲストOSの中のアプリ?」といった感じで原因究明も複雑になります。

「ネイティブ」ハイパーバイザだとメリットたくさん?


「ネイティブ」ハイパーバイザの場合は、上記の例で「ホストOS」として「メインマシンにインストールされたMacOS」が「ハイパーバイザ」に置き換わり、「ホストOS」が無くなります。そのため、ハードウェアを直接操作可能となり、仮想マシンの速度低下を最小化できます。加えて、シンプルな階層になるので原因究明も楽になります。

「ホスト」ハイパーバイザと比べるとメリットばかりに思えますが、結局、「ネイティブ」ハイパーバイザ実現のためのソフトウェアが必要になりますし、速度低下やセキュリティ対応などの課題が残りました。

そんなこんなで、登場したのが、真打ち「コンテナ」様です。
詳細は、次回エントリーで記載させていただきます。


小ネタ:仮想機械(ハイパーバイザ)の区分けって曖昧。


どうやら、上記でご紹介した「仮想機械(ハイパーバイザ)」の区分けって曖昧なところもあるようです。「狭義には、「ホスト」ハイパーバイザ」は、仮想機械では無い」とも言われているようです。

確かに、この曖昧さを知らずに、社内外の仮想化に関するWeb動画などを見ていた際、「仮想化のこと?それ以外のこと言ってる?」なことが何度かありました。ガチのシステム屋さんには常識かもしれませんが、「仮想化」領域は学習コストがかかります。自分も丁寧に段階を踏んで説明できるようにならねばと思っています。

あと、最後に宣伝です。
そんな「コンテナ」様を活用した弊社のイケてるソリューションがあります!
・・・ただ、いきなりコレをご覧になっても「???」な感じだと思いますので、まずは名前だけ覚えて頂けると幸いです。
他の「Cloud Pak」シリーズ含め、いずれ、当ブログでご説明できればと。

IBM Cloud Pak for Data
https://www.ibm.com/jp-ja/products/cloud-pak-for-data


「コンテナ」関連エントリー



「コンテナ」ってなに?(2)〜コンテナの技術的特長をザックリと。
https://sapporomkt.blogspot.com/2020/04/2.html

「コンテナ」ってなに?(3)〜「Kubernetes」の技術的特長をザックリと。
https://sapporomkt.blogspot.com/2020/05/3kubernetes.html

2019年6月30日日曜日

(無料)Watson StudioでSPSS Modeler flowの決定木を動かす

IBM Cloud上で、あの高性能データマイニングツールである「SPSS Modeler」のフローが作れちゃいます。しかも無料です。正直なところ、最初聞いたときは、「どういうこと?」と思ったのですが、本当だったので、機械学習の決定木の実行フローをまとめてみました。


※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。  

サンプルデータ加工の手順



今回は、「クルマの受容性」に関するオープンデータを使ってみました。
そこそこのレコード数がありながらも、欠損値がないので、取り扱いが楽なデータです。


<サンプルデータの入手・加工方法>
1.UCIのサイトからデータをダウンロード
 黄色でハイライトされている「Data Folder」をクリックし、下記2ファイルをダウンロードしてください。

・car.data:ローデータ。カンマ区切りになっているので、「car.csv」にリネーム。
・car.nemes:フィールド名。中身はテキストファイルなので、エディタで開ける。


2.「Data Refinery」でデータ加工する。
 データ加工から分析までシームレスに行えるのが、Watson Studioのメリットの一つです。Excelでも可能なデータボリュームですが、Watson Studioの「Data Refinery」でデータ加工を行います。

Watson Studio上でのプロジェクト作成や「Data Refinery」へのデータ取り込みは、下記エントリーをご覧ください。

Watson Studioの「Data Refinery」機能で「馬の疝痛(せんつう)」データを眺めてみた。




3.「Data Refinery」でフィールド名を変更する
このツール的には、「カラム」と言った方がいいかもしれませんが、ややこしいので「フィールド名」とします(馴染みにくければ「レコード名」で)

「car.csv(data)」を取り込んだ直後は、フィールド名がないので、「car.names」に記載されている名称でリネームしてください。
下記画像にあるように、フィールド名の横の鉛筆マークを押すと、リネームできます。

ちなみにフィールド定義は、下記の通りです。
 -青文字が説明変数に当たるフィールド、緑文字が目的変数に当たるフィールドです。
 -フィールド名の最初にある数字は、左からのフィールド順番です。
 「クルマの受容性」に関する回答が入っています。

   CAR                      car acceptability

   . PRICE                  overall price

   . . 1.buying              buying price

   . . 2.maint               price of the maintenance
   . TECH                   technical characteristics
   . . COMFORT              comfort
   . . . 3.doors               number of doors
   . . . 4.persons            capacity in terms of persons to carry
   . . . 5.lug_boot           the size of luggage boot
   . . 6.safety               estimated safety of the car

   . 7.Class

入力が完了しましたら、画面右上(右向き矢印の左横)のボタンを押し、データ加工手順を保存してくだい。その後、右向き矢印を押すことで、データ加工が実行され、フィールド名が変更されたローデータが生成されます。


「Watson Studio Modeler flow」の手順


1.「Modeler flow」をプロジェクトに追加する。
先ほど、「Data Refinery」でローデータを追加したプロジェクトに戻り(※)、「Add to project」から「Modeler flow」を選択してください。
※画面左上の「My projects/ Car_Evaluation」の買いそうです


少し待つと「Modeler flow」が立ち上がります。


2.「Import」から「Data Asset」をドラッグ&ドロップ。
左側にある「Import」メニューから「Data Asset」を、右側のキャンバスにドラッグ&ドロップしてください。


3.「Data Asset」をOpenし、分析データを読み込ませる。
配置した「Data Asset」の上にカーソルを当てると、右上に「・」が縦に並んだマークが表示されます。これを選択し、「Open」を選んでください。


「Change data asset」を選択してください。


「Data assets」から読み込ませたいデータを選択してください。私の場合、「Data Refinery」でフィールド名を加工したデータを選んでいます。


4.データチェックする。
念の為、データ内容のチェックをしましょう。この辺り、通常の「SPSS Modeler」とやることが同じですね。左側の「Outputs」メニューから「Table」ノードを配置してください。
結線は、配置した「Data Assets」を選択すると、当該ノードの右側に小さな丸が表示されるので、それをドラッグ&ドロップして、「Table」ノードの丸に繋げるだけです。


「Table」ノードを選択し、メニューから「Run」を実行してください。
数秒後、右側の「Outputs」タブにTableが表示されるのでクリックしてください。
なお、「Outputs」タブの右上にあるアイコンは、過去に出力されたアウトプットを表示/非表示するためのアイコンなので、覚えておくと便利です。

また、各アウトプット名をクリックして表示されるメニューから、各アウトプットをRemove(削除)可能です。

テーブル情報が表示されます。フィールド名が「Data Refinery」で加工した名称になっていますね。

元の「Modeler flow」画面に戻りたい場合は、画面上段のメニューから1階層上のパスを選んでください。

続いて、「Outputs」メニューから「Data Audit」を選び、「Data Assets」から結線してください。
「Table」と同様、「Run」してください。


すると、各フィールドのGraphやMeasurementなどを表示する画面が立ち上がります。
下段にスクロールすると、欠損値情報なども一覧できるため、とても便利です。
なお、通常の「SPSS Modeler」だと、グラフをクリックすると拡大表示可能ですが、「Modeler flow」ではサムネイル表示のみとなります。


5.「Partition」ノードを配置する。
「Field Operations」メニューから「Partition」ノードを配置してください。
当該ノードメニューから「Open」を選んでください。


「Training Partition」を「80」、「Testing Partition」を「20」にしてください。
両方とも手入力でインプット可能です。入力が完了しましたら、右下の「Save」ボタンを押してください。


6.「Type」ノードを配置する。
「Field Operations」ノードから「Type」ノードを配置した上で、「Partition」ノードから結線してください。この後、当該ノードの「Open」を選んでください。


「決定木(Decision Tree)」を実施するために、目的変数(Target)の選択が必要です。
今回は、「クルマへの受容性(「受け入れられるか」の度合い)」を知りたいので、「Data Refinery」でリネームした7番目のフィールド(私の場合は「class」と命名)を「Input」から「Target」に変更し、「Save」ボタンを押します。


7.「C5.0」ノードを配置する。
「Modeling」メニューから「C5.0」ノードを選択し、「Type」フィールドから結線します。当該ノードの「Run」を選択してください。


8.決定木モデルのナゲットを選択する。
Modelerのflowが回り始めて数秒後、「C5.0」ノードから自動的に決定木のナゲットが結線されるので、ナゲットのメニューから「View model」を選んでください。


「Model Information」画面です。生成したモデルの基本情報が表示されます。


「Feature Importance」画面です。各説明変数の重要度が一覧化されます。
この場合、「安全性」→「シート数」のようです。


決定木ルールが上位から一覧化されます。
目的変数が「クルマへの受容度」なので、「安全性の低いクルマは無いわ〜」な感じですね。


「Tree Diagram」画面です。先ほどの「Decision Rules」がビジュアライズされます。


右上の「Display labels on branches」を押すと、ラベルが表示されます。


最後にオマケです。
flow画面に戻って、右上の「↓」ボタンを押してください。


下記のようなダイアログが表示されるので、ローカル端末上にある「SPSS Modeler」で開いてください。
お持ちでない方は、無料体験版を別途ダウンロードして設定してください。


難なく開きましたっ!
これ、結構すごいですよね。ご利用経験のある方はご存知かと思いますが、「SPSS Modeler」は超高性能なデータマイニングツールではありますが、その分、結構なお値段になります。
それが「Watson Studio」の無料機能でこんなにサクッとModeler flowが作れてしまうのは驚きです。

もちろん、ローカル版のModelerと比べると出来ないことや、やや手順が増えるユースケースもありますが、「Watson Studio」上にある「Rstudio」や「Jupyter notebook」などを併用すれば、結構近しいことが実現できそうです。

今後も、色々と「Watson Studio」の各機能をご紹介できればと思っています。


<補足>
「Analysis」ノードも入れときました。「Outputs」メニューから「Analysis」ノードを追加し、決定木のナゲットから結線してください。
当該ノードをOpenし、「Performance evaluation」にチェックを入れて「Save」し、「Run」してください。


精度評価結果が表示されます。



ご参考:その他のWatson関連エントリー


(Watson)Personality InsightsのJSONをR言語でパースしてみた

Watson Studioの「Data Refinery」機能で「馬の疝痛(せんつう)」データを眺めてみた。
https://sapporomkt.blogspot.com/2019/06/watson-studiodata-refinery.html

Watson AnalyticsとMeCabで「老人と海」を軽く可視化してみた。
https://sapporomkt.blogspot.com/2017/08/watson-analyticsmecab.html

Watson Explorerでディズニーの人気作品をテキストマイニング
http://sapporomkt.blogspot.jp/2017/04/watson-explorer.html

いま話題のIBM「Bluemix(ワトソンくん)」が「老人と海」をサマったら。
http://sapporomkt.blogspot.jp/2015/11/ibmbluemix.html

2019年6月23日日曜日

(Watson)Personality InsightsのJSONをR言語でパースしてみた

現在、Python勉強中ですが、どちらかと言うとR言語派の私は肩身が狭いです。。
いろんなサンプルスクリプトを調べても、Pythonばかりで。。
一矢を報いたくなったので、WatsonのAPIである「Personality Insights」から出力されたjsonをR言語でパースする、超簡単なスクリプトを書いみました。

ローカル環境でも出来るのですが、せっかくなので、Cloud上でAI開発が可能な「Watson Studio」(無料プラン)でやってみたいと思います。

※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。 
 

「Personality Insights」からのjson取得


「Personality Insights(PI)」については、Qiitaなどで複数紹介されているのでご存知の方も多いと思いますが、簡単に言うと、言語学的分析とパーソナリティ理論を応用し、テキストから筆者の性格や特徴を推測するWatson APIのひとつです。

本来は、PythonやcURLからアクセスしてjsonを入手する必要があるのですが、やや敷居が高いので、コピペだけで済む方法をご紹介します。

1.「Personality Insights」のデモサイトにアクセスする。
デモサイトでは、スクリプトなど一切書かずに、PIの実行と出力結果を得ることができます。
自分で準備したテキストファイルでも分析可能ですが、今回は、リンクされている著名人のTwitterデータを使いますので、画面の「ツイート分析」をクリックしてください。
私は、「ダルビッシュ有」さんのツイートを選びました。


画面右下の「分析」画面を押すと、下記のような分析結果の画面が表示されるはずです。



2. JSONを取得する
画面をスクロールし、「JSONを見る」をクリックしてください。



JSONが表示されるので、ドラッグ&ドロップで全選択してください。
残念ながら、ショートカットキーだと、ページ全体が対象となるので、ドラッグ&ドロップのみです。


コピーした結果をエディターに貼ります。ファイル名は「PI_sample.json」にしました。
猛者たちの「スクリプトでやれよ」的な声が聞こえてくるかもしれませんが、そっと耳を塞ぎます。。


これでスクリプトを書かずに、JSONを入手することができました。

Watson StudioのR環境(Rstudio)でJSONをパースする


1.Watson Studioにアクセスする
以降の作業は「Watson Studio」で行いますが、登録の仕方はQiitaなど、他サイトをご覧ください。なお、当エントリーに記載する作業は、全て無料で実施可能です。何回も試行したとしても、勝手に課金されることはありませんので、ご安心ください。

まずは、下記サイトにある「ライト・アカウントを今すぐ登録」を選び、登録に必要な情報をインプットしてください。

Watson Studioへのアクセス手順で迷う方は、下記サイトをご覧ください。

Watson Studioセットアップガイド(ライトアカウント可)


2.新規プロジェクトを作成する
Watson Studioに入った後は、「Create a project」を選択してください。


3.「Standard」を選択
「Creat a project」画面が表示されるので、「Standard」を押してください。



4.プロジェクトネームを入力する
「Name」欄にお好きなプロジェクトネームを入力してください。
私は「PI_R_sample」としました。Descriptionは空欄でOKです。
入力が終わりましたら、右下の「Create」を押してください。



5.「Rstudio」を起動する
「Launch IDE」を押した後にプルダウンで表示される「Rstudio」を選択してください。
少し待つとRの統合開発環境である「Rstudio」が起動します。














RStudioが出ましたっ!!
右下の「Upload」を選択してください。


ファイルがアップされました。




6.Rスクリプトを実行する
左側のコンソールペインに下記スクリプトをコピー&ペーストし、enterを押してください。


# jsonliteパッケージのインストール
install.packages("jsonlite")

# jsonファイルのパースパッケージを呼び出し
library(jsonlite)

# jsonファイルをパース。" "内のファイル名は、都度書き換え
PI_result <- read_json("PI_sample.json", simplifyVector = TRUE)

# =====================各PI項目名とスコアを抽出=====================

# ---------------------各「PI:word_count」パート----------------

# count数を抽出。 countだけ%ではなく、N数
word.name = "word_count"
word.count = unlist(PI_result$word_count)

# word_count項目名と%スコアをつなげたデータフレームを作成
word_count.df <- data.frame(word.name,word.count)
colnames(word_count.df) <- c("item","score")


# ---------------------各「PI:Big5」パート----------------

# Big5:big5_openness(知的好奇心)
# jsonをパースしたList形式からBig5:big5_openness(知的好奇心)スコアを抽出
big5_openness.name <- unlist(PI_result$personality$name[[1]])
big5_openness.percentile <- unlist(PI_result$personality$percentile[[1]])

# openness項目名と%スコアをつなげたデータフレームを作成
big5_openness.df <- data.frame(big5_openness.name,big5_openness.percentile)
colnames(big5_openness.df) <- c("item","score")


# Big5:big5_Conscientiousness(誠実性)
# jsonをパースしたList形式からBig5:big5_Conscientiousness(誠実性)スコアを抽出
big5_conscientiousness.name <- unlist(PI_result$personality$name[[2]])
big5_conscientiousness.percentile <- unlist(PI_result$personality$percentile[[2]])

# consciousness項目名と%スコアをつなげたデータフレームを作成
big5_conscientiousness.df <- data.frame(big5_conscientiousness.name,big5_conscientiousness.percentile)
colnames(big5_conscientiousness.df) <- c("item","score")


# Big5:big5_Extraversion(外向性)
# jsonをパースしたList形式からBig5:big5_Extraversion(外向性)スコアを抽出
big5_extraversion.name <- unlist(PI_result$personality$name[[3]])
big5_extraversion.percentile <- unlist(PI_result$personality$percentile[[3]])

# Extraversion項目名と%スコアをつなげたデータフレームを作成
big5_extraversion.df <- data.frame(big5_extraversion.name,big5_extraversion.percentile)
colnames(big5_extraversion.df) <- c("item","score")


# Big5:big5_Agreeableness(協調性)
# jsonをパースしたList形式からBig5:big5_Agreeableness(協調性)スコアを抽出
big5_agreeableness.name <- unlist(PI_result$personality$name[[4]])
big5_agreeableness.percentile <- unlist(PI_result$personality$percentile[[4]])

# Agreeableness項目名と%スコアをつなげたデータフレームを作成
big5_agreeableness.df <- data.frame(big5_agreeableness.name,big5_agreeableness.percentile)
colnames(big5_agreeableness.df) <- c("item","score")


# Big5:big5_Emotional_range(感情起伏)
# jsonをパースしたList形式からBig5:big5_Emotional_range(感情起伏)スコアを抽出
big5_emotional_range.name <- unlist(PI_result$personality$name[[5]])
big5_emotional_range.percentile <- unlist(PI_result$personality$percentile[[5]])

# Emotional_range項目名と%スコアをつなげたデータフレームを作成
big5_emotional_range.df <- data.frame(big5_emotional_range.name,big5_emotional_range.percentile)
colnames(big5_emotional_range.df) <- c("item","score")


# ---------------------各「PI:Need(欲求)」パート----------------

# jsonをパースしたList形式からNeed(欲求)スコアを抽出
need.name <- unlist(PI_result$needs$name)
need.percentile <- unlist(PI_result$needs$percentile)

# Need項目名と%スコアをつなげたデータフレームを作成
need.df <- data.frame(need.name,need.percentile)
colnames(need.df) <- c("item","score")


# ---------------------各「PI:Value(価値)」パート----------------

# jsonをパースしたList形式からValue(価値)スコアを抽出
value.name <- unlist(PI_result$value$name)
value.percentile <- unlist(PI_result$value$percentile)

# Value項目名と%スコアをつなげたデータフレームを作成
value.df <- data.frame(value.name,value.percentile)
colnames(value.df) <- c("item","score")


# ---------------------各「PI:各パートの行結合」パート----------------

# 個別データフレームの行結合(バインド)
pi_merge.df <- rbind(
  word_count.df,
  big5_openness.df,
  big5_conscientiousness.df,
  big5_extraversion.df,
  big5_agreeableness.df,
  big5_emotional_range.df,
  need.df,
  value.df)


# PIデータフレームのCSV書き出し
write.csv(pi_merge.df,"pi_merge.df.csv")

7.CSVファイルをダウンロードする
Rスクリプトが完了すると、右下にCSVファイルが表示されるはずです。
「More」から「Export」を選び、CSVファイルをダウンロードしてください。







ダウンロード後のCSVファイルを開くと、PIのスコアが一覧化されています。


当エントリーは手順を全て記載したので手間のかかる作業のように見えますが、実際は、特別なスキル無しに20分あればCSVファイル取得まで行けると思います。

想定ユースケースなど



実務上のユースケースとしては、異なるセグメントやグループに属する方の発話テキストを個別のJSONとして読み込ませ、各人のPIスコアを比較し、そこから何らかの分析の切り口を見つけ出すといった使い方は面白いと思います。

ただし、「PIスコアから、ターゲットのインサイトが全てわかる」「打ち手イメージの導出まで繋がる」とは考えない方がいいと思います。これは、PIの機能どうこうという問題ではなく、結局、読み込ませるデータの内容や、分析者の目的や意図によって「(解釈上の)PIスコアの意味」が変わってくるものだと思うからです。
(ex.アウドドアグッズメーカーと、文房具メーカーのレビューを読み込ませた場合の”Openness”の意味合いは違うはず)

個人的には、非構造化データ分析時に、最初の取っ掛かりとしてPIにかけると、新たな分析仮説がイメージしやすい場合もあって有用かなと思っています。

ご参考:その他のWatson関連エントリー


Watson Studioの「Data Refinery」機能で「馬の疝痛(せんつう)」データを眺めてみた。
https://sapporomkt.blogspot.com/2019/06/watson-studiodata-refinery.html

Watson AnalyticsとMeCabで「老人と海」を軽く可視化してみた。
https://sapporomkt.blogspot.com/2017/08/watson-analyticsmecab.html

Watson Explorerでディズニーの人気作品をテキストマイニング
http://sapporomkt.blogspot.jp/2017/04/watson-explorer.html

いま話題のIBM「Bluemix(ワトソンくん)」が「老人と海」をサマったら。
http://sapporomkt.blogspot.jp/2015/11/ibmbluemix.html