Logi COMPOSERを試す！

#そして、ZoomdataはCOMPOSERになった・・・
かなり以前に、インタラクティブなデータ可視化を、マルチデータソースで実現出来る**Zoomdata**なる製品に関して、数回に分けた検証記事を投稿させて頂きました。その後このZoomdata社は、業界大手のLogi Analytics社に買収され、双方の製品の良い所取りのハイブリッド・ソリューションとして、名前を**COMPOSER**と新たに変えて市場投入されました。また、幸いにもLogi社のご厚意により、フル機能の評価版を手元に頂く事が出来ましたので、今回から数回に分けてLogi COMPOSERについての検証記事を書いて行きたいと思います。

#では、取り急ぎ最初の検証作業を・・
![a1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/9c148f93-4c2d-5eda-480d-7d2172dc833f.jpeg)

基本的には、Zoomdataのコア部分をエンジンに採用した仕組みになりますので、普通に旧Zoomdata的に使って行く事も可能ですし、可視化ソリューションのエンベデッド領域において長年実績を積み重ねてきたLogi社のコンセプトも、非常にシナジー効果方向に融合していますので、Zoomdataだけでは実現できなかった世界も利用出来るように進化しています。
また、ユーザ領域（一般ユーザとして、可視化チャートの作成やダッシュボードの作成等を行う）に関しては、既に国際化対応が済んでいますので、所定の手続きを行えば簡単に日本語対応にする事が可能です。

![a2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/f4dcf2ba-daca-52c8-c9dc-73f1de2d8eca.jpeg)

今回は、管理者作業と一般ユーザ作業を合わせて行える様に、COMPOSERの管理者アカウントであるadminで検証を行って行く事にします。ログインが無事に成功すると上記の画面が出てきますので、まずはデータ環境との接続設定を管理者権限で実施する事にします。コネクションを選択すると、環境で利用できるデター環境との接続設定画面に移行します。実際にはいきなりソースメニューから以降の設定を行う事も可能ですが、基本的な情報のテンプレートを作成する事が出来ますので、今回はこの作業から検証を開始してみることにしました。

![a3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/cee7d680-b8b3-462a-f825-271deb108b89.jpeg)

画面の右上にあるコネクションの追加を選択すると、利用可能な項目のメニューが表示されます。（ここで、今回検証に使うMemSQLやMySQL等のコネクション等に関して、JDBCドライバーの後付け作業等が必要な接続形態が有りますので、インストール後に忘れずにそれらの事前作業を実施しておいてください。手順は基本的にZoomdata時代と同じになります）

![a4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/5c1075d7-9bfa-9175-2106-9e3a11c37bc4.jpeg)

今回の検証では、まず初めにMemSQL上のテーブルに関しての可視化を行ってみますので、メニューからMemSQLを選択して必要な項目を設定していきます。

![a5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/70570e16-ac60-e252-e070-8089d038e32f.jpeg)

記述する内容に関しては、Zoomdataと同じになりますので、それぞれの項目を間違い無いように記述していきます。

~~~Python
jdbc:mysql://xxx.xxx.xxx.xxx:3306/<データベース名>
# MemSQLはMySQLと同じJDBCインターフェースロジックで動作できます。
~~~

記述に問題が無ければ、最後の**Validate**を選択します。

![a6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/cc7a5806-ad75-eeca-fd9a-b93c83b91078.jpeg)

無事にコネクタの登録が出来ました。
同様にMySQLのコネクション設定も行ってみます。

![a7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/f7a54e3c-1450-462e-601b-a1b88765b687.jpeg)

##実際のデータとの連携設定・・・
最初の画面に戻って、今度はソースを選択します。このソース設定で可視化対象のデータをエンジンに接続する作業を実施して行きます。

![a8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/67e41b40-864d-1dec-2542-76aba25cd499.jpeg)

まず初めにデータソースの形式を選択します。

![a9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/0f68df4f-e593-5342-1057-c099039a88f3.jpeg)

ここでは、MemSQL上に展開されるデータの可視化を検証しますので、MemSQLをメニューから選択します。

![a10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/27407bf3-4291-0b08-20d6-81e4c091ef93.jpeg)

ソースの名前を適宜設定し、画面右下にある**Next**を選択します。

![a11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/c5dba84b-7e5a-8e92-3890-d00fe11c23c0.jpeg)


利用するソースの接続情報を設定する画面に移動しますので、先ほど事前に登録しておいた**MemSQL**を左側のメニューから選択します。（ここで、直接的にソース単位で真っ新の状態から登録していく事も可能です）

![a12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/aa4ccf1d-fc81-d5ee-c2c3-22b83e37c36a.jpeg)

パスワードはセキュリティーの関係上、改めてここで入力する必要がありますが、事前登録の情報を使ってターゲットのデータベースの情報が表示されるので、今回は事前に作成しておいた**RTS_JP_Table02**を選択します。

![a13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/a140c61f-ae0e-47e1-e1a0-a617acdd5348.jpeg)

この状態では、カラムのみの情報しか入手出来ませんので、プレビュー領域にサンプルデータは表示されませんが、今回の検証ではこの空っぽの状態に対して、ランダム無作為にPythonのFaker機能を使ってデータを生成し、そのデータを高速にMemSQLに挿入していく過程を**ライブモード**でリアルタイム可視化していく事にします。
右下にある**Next**を選択します。

![a14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/162f2ad1-a159-8139-df3f-7509e2f10191.jpeg)

各カラム情報が出てきますので、此処では時間情報（タイムスタンプ）のみJSTに変更しておきます。

![a15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/e75fd54f-ce91-4f84-2cbf-38a45a01f04c.jpeg)
![a16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/13827be6-7c2b-0ad7-a560-7dbca2d20164.jpeg)

画面右下の**Next**を選択し、次の画面に移動します。

![a17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/1dd3c84b-5948-9d3a-1b87-f1cc2100cde9.jpeg)

Zoomdataと同様に、此処でかなり細かいリフレッシュ関連のタイミング設定が出来ますが、今回の検証では特に触りませんので、ここはそのまま右下の**Save & Next**を選択します。

![a18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/3cbdefbc-5af3-c2f7-8b0f-2fc6bd41e42e.jpeg)

最後に時間軸関連の設定が出てきますので、**Live Mode**の項目をONにします。

![a19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/de4ec4a4-0384-5611-29a7-684b234116bf.jpeg)

ライブモードは**「今より”ほんの少し前”」**を取り扱いますので、時間範囲を今日にしておきます。

![a20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/939b1e62-1028-ff3a-d7a8-c586c9c4518e.jpeg)

最後に画面右下の**Finish**を選択してソースの設定は終了します。

![a21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/0393cb97-ed63-2109-a0de-5dc831cdc5c0.jpeg)

#COMPOSERのライブモードについて・・・
以前のZoomdataでは、データのライブモード可視化に関しての敷居が”それなり”に有ったのですが、Zoomdataの後半バージョン位から、その実現に関する条件がかなり緩和されてきており、条件が許せばミリ秒単位（TIMESTAMP(6)の世界ですね・・）でのライブ更新が実現出来るようになっています。今回の検証で使った暫定的なMemSQL上でのテーブル定義も非常にシンプルな形式になっていて、ユニークな情報としてIDとTSを設定し、その情報を合わせてプライマリーキーとしているだけです。
勿論、時間情報が無ければ流石のCOMPOSERでもライブモードとして時間処理が出来ませんので、ユニークな一意の時間情報を含めたキーを設定すれば、殆どのケースの場合誰でも非常に簡単にライブモードでの可視化を実現出来るようになります。

~~~SQL
CREATE TABLE IF NOT EXISTS RTS_JP_Table02(
       id         INT AUTO_INCREMENT, 
       ts         TIMESTAMP, 
       Category   VARCHAR(20), 
       Product    VARCHAR(20), 
       Price      INT, 
       Units      INT,
       Card       VARCHAR(40), 
       Number     VARCHAR(30),
       User       VARCHAR(20), 
       Zip        VARCHAR(10), 
       Prefecture VARCHAR(10), 
       Address    VARCHAR(60), 
       Tel        VARCHAR(15), 
       Email      VARCHAR(40),
       PRIMARY KEY(id, ts)
       );
~~~

#では、簡単な可視化を実施します・・・
![a22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/745eb011-f9cc-ee41-894e-102e9292831a.jpeg)
ホームに戻ってダッシュボードを選択します。
![a23.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/9cedd587-3b08-9294-ca5e-2b03b778ce70.jpeg)
左上の**新規**を選択します。
![a24.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/6c0add7e-d98d-6f87-782f-990c447437e6.jpeg)
ダッシュボードの作成画面になりますので、右上のメニューから**チャートの追加**を選択します。
![a25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/2c90011e-bef8-e498-e9ae-07e4e378869a.jpeg)
![a26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/9e87787e-f5dc-8471-67e7-4a36674dc694.jpeg)
先ほど設定したデータソースを選択します。（今回は、此処で事前に作成しておいたPythonベースの日本語による自動データ生成ツールを起動し、先ほど作成しておいたMemSQL上のターゲットテーブルにランダムなタイミングで連続したデータ挿入を開始しておきました）
![a27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/ab6db93a-10fc-4b0d-7f66-018b5d9cbc6b.jpeg)
可視化したいタイプのビジュアル形式を選択します。
![a28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/1a5eddfb-90d1-4d68-a0eb-22a1356dfd27.jpeg)
とりあえず、カラム列で最初に引っかかった情報で可視化チャートが作成されます。
![a29.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/6055fc7f-2c5e-08d4-82fb-9d7dd109451c.jpeg)
チャート下部にあるグループを選択して、時々刻々と変化していそうなカラム情報に変更します。
![a30.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/c8087465-8e2c-a92e-3090-f7ea680c0ba4.jpeg)
同様に幾つかの組み合わせと可視化パターンを組み合わせてダッシュボードを作成してみます。
画像的には動きが無いので、一見普通のチャートが並んでいる・・・と思われるかもしれませんが、実際には最小で秒単位（逆に見にくくなるので、敢えて無駄な時間稼ぎを入れてデータ生成をしています）に更新が行われ、時々刻々と棒グラフの高さが変わったり、順位が移動したり、県名の表示位置・大きさ等が変化する、**ライブモードでの可視化ダッシュボード**になっています。
##少しデザインを変更してみます・・・
右側のチャートが同じ系列の色味を使っていますので、少し見栄えが悪いかもしれません。そこで下側のチャートの配色をサクッと変更してみようと思います。
![a31.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/7dcfce88-3378-cb4a-70d0-450c19dae11d.jpeg)
チャート右上の**...**を選択してメニューを呼び出します。
![a32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/ea8e0aca-4d95-5747-8cc6-d93c35b44fff.jpeg)
カラー関連の情報設定を呼び出します。
![a33.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/c308a77c-9191-00ee-e886-735f495c8823.jpeg)
**テーマからの継承**を外して色を変更してみます。
![a34.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/8eede66f-2612-df19-d364-7dbd1d27fab6.jpeg)
![a35.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/3ee189da-ce3b-b375-6883-c6d5c79ed072.jpeg)
この様に、各チャート毎に細かな設定が出来るようになっていますので、必要に応じて変更を行っていけば、かなり使い勝手の良いダッシュボードが誰でも作れる様になると思います。
##最後に、ラジアルメニューをご紹介しておきます。
先ほどのチャート上で、ラジアルメニューを呼び出す事で、幾つかの作業をそこから引き継いで行けるようになっています。先ほどの例では、標準構成で表示されるメニュー例になりますが、例えば**詳細**を選択すると
![a36.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/66a6aa83-5c26-b829-f0d9-f49785859200.jpeg)
の様に、そのチャート項目を**ドリルダウン**したような情報を高速に表示させる事も可能です。

最後に、少しデザインを変えて「データの挿入と同時に可視化を行う」**ライブモード**のダッシュボードを紹介しておきます。
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/263ed57b-993c-76fa-6995-180418bcf0c9.gif)
右下にRawテーブルを表示しましたので、データベース側が空っぽの状態からデータ挿入が開始されると、秒間隔（最小ではミリ秒まで可能）での自動更新が始まります。左上の折れ線グラフは、分間隔での描画（細か過ぎて良く判らないグラフになりますので・・）設定ですので、最初の1分が過ぎると線画を開始します。

また、データの自動生成と挿入間隔は、実際の状況をイメージし易くするために、意図的にランダムな秒間隔を取る様にしてあります。

#今回のまとめ
今回は、非常に駆け足になりましたが、Logi COMPOSERに関する基本的な検証を行ってみました。
基本的な特徴としては、以前紹介・検証を実施したZoomdataの進化系になりますので、インタラクティブに利用者が自分の好みでデータ可視化環境を構築でき、その更新速度として最新版ではミリ秒単位での取り扱いまで可能にしています。
また、ライブモードでの利用も進化しており、基本的なSQL経験があれば非常にシンプルな設定で時々刻々と更新される情報を、目の前で普通に可視化出来るようになりました。
出来ない事と言えば、高度な数学演算を前提とするような、バッチ志向の深度解析系の処理がそのままでは出来ないという点になりますが、ここは逆にテーブル単位でR等の解析エンジンと連携させ、その結果を時間情報と一緒にテーブル向けに出力させれば、ライブモードや時間情報を遡って再生させる等の柔軟な時間処理機能を活用して、時系列での結果に関する可視化と、それらを成立させる周辺情報（計算等に使った元の情報ですね・・）を一つのダッシュボード上に見やすく表現し、そこからより高度な洞察やアイディア、戦略やビジネス判断を創出させて行けると思います。

データは過去の反省分析ではなく、今を変えて未来を創る為に活用される・・・

そんなDx時代のリアルタイム・データ可視化環境として、Logi COMPOSERの存在意義は益々高まっていくかもしれません。

次回は、もう少し突っ込んだ使い方を幾つか検証してみたいと思います。

#謝辞
本検証は、Logi Analytics社より検証環境利用許可を提供して頂き実施しております。また本内容とLogi Analytics社の公式ホームページで公開されている内容が異なる場合は、Logi Analytics社の情報が優先する事をご了解ください。