ただのBIツールではない、分析プラットフォームとしてのQlik Senseの潜在能力

ただのBIツールではない、分析プラットフォームとしてのQlik Senseの潜在能力

Pocket

メーカーの発表などを見ていると、最近Qlik Senseのことを”分析プラットフォーム”と表現することが多くなってきました。
つまり、Qlik Senseはただの”BIツール”ではなく、より広い範囲に適用できる”分析プラットフォーム”であるという訳です。
そこで今回はいつもとすこし趣向を変えて、Qlik Senseの拡張性に着目してみます。

見た目の美しさや操作性の良さに言及されることの多いQlik Senseですが、本来どこまでのポテンシャルを持っているのか、Qlik Senseの拡張性や将来性に触れてみましょう。

Qlik Senseをお使いの方はもちろん、BIツールの導入を検討中の方も、Qlik Senseというツールの本質を理解する上で有用だと思いますので、ぜひご覧ください。

Qlik Senseの製品群

まずはQlik Sense製品群をあらためて確認してみましょう。
Qlik Senseのヘルプの以下のページで、「Qlik Sense製品ファミリ」の図をご覧ください。
Qlik Sense とは?
ごく簡単に図示すると下図のようになります。
qlik-analytics-platform-introduction-101「Qlik Sense Desktop」などの各製品は「Qlik Analytics Platform」の上に成り立っています。
つまり、「Qlik Sense Desktop」などはあくまでGUIのツールであり、根幹を支えているのは「Qlik Analytics Platform」であるということになります。


Qlik分析プラットフォームの特徴

では、もう一つ別のページを見てみましょう。
以下のページは、Qlik製品の特長を簡潔に説明したQlik社のページです。
Qlik が選ばれる理由 | Qlik

このページの下部にある「自由な構築が可能なプラットフォーム」に、以下の記載があります。
以下は上記のページからの引用です。

Qlik 分析プラットフォームは、ユーザーが自由に構築できるよう設計されています。実は、Qlik Sense アプリケーションもこの方法で構築したものなのです。

  • オープンかつ標準的な API。Qlik 分析プラットフォームは、オープンかつ標準的な API を通じ、QIX エンジンに対する比類のないアクセス性を提供します。
  • マッシュアップおよび拡張。Qlik 分析プラットフォームが搭載するマッシュアップおよび拡張 API を用いることで、高度なウェブ アプリケーションおよびカスタム ビジュアライゼーションを簡単かつ迅速に構築できます。

簡単に補足しながらまとめると、Qlik SenseはHTML5などの標準的なWebの技術を採用しているため、外部のWebサイト(Webアプリ)と統合したり、もともと用意されていないチャートを独自に追加したりできるということです。
もっと言えば、「Qlik Sense Desktop」のようなツールを、自分で一から開発することも可能です。

以上で概要の説明は終了です。

やはり説明だけでは実感が沸かないと思いますので、ここからは具体的な例を見てみましょう。
できる限り実際に試せるようにまとめていきますので、みなさまもぜひご自身でも試してみてください。


Qlik Senseが採用している技術

前述のとおり、Qlik SenseはHTML5などの標準的なWebの技術を採用しています。
ではどのような技術が採用されているか、キーワードだけでも確認しておきましょう。
以下のページはQlik Senseの開発者向けヘルプです。
Qlik Sense for Developers help Technologies

開発者向けの補足:Qlik Senseのヘルプには、通常のヘルプ開発者向けのヘルプがあります。開発者向けのヘルプには、Qlik Senseで使用できるAPIの詳細などもまとめられています。

「HTML5」「WebSocket」「JSON」「REST」などの単語が並んでいますね。
聞いたことのある単語がいくつかあると思いますが、重要なのは全面的にWebの技術が採用されているという点です。
QlikViewでもJavaScriptなどを使用して拡張機能を開発できましたが、Qlik Senseではさらにこれが徹底されています。

では、本当にそうなのか実際に確認してみましょう。
Qlik Sense Desktopを起動してください。
起動したら、「Ctrl」キーと「Shift」キーを押しながら、画面上の任意の場所を右クリックしてください。
これはQlik Sense Desktopの隠しコマンドのようなもので、以下のような見慣れないメニューが出てくるかと思います。
この中から「Show DevTools」を選択してください。
qlik-analytics-platform-introduction-201
以下の画面が起動します。
これは開発者向けのデバッグツールで、Qlik Sense Desktopに表示されている画面のソースなどを見ることができます。
内容を見ると中身のソースがHTMLでできていることが分かります。
qlik-analytics-platform-introduction-202

開発者向けの補足:この画面を見てピンときた方もいるかもしれませんが、これはGoogle Chromeのデベロッパー ツール(F12キー)とおなじものです。Qlik Sense Desktopの実体はChromiumベースのアプリケーション(埋め込みブラウザ)です。
Qlik Sense for Developers help Qlik Sense Desktop architecture

これだけではなく、実はQlik Sense Desktopはブラウザから使用することもできます。
Qlik Sense Desktopを起動したまま、ブラウザを起動してください。
後ほどChrome特有の機能を使用しますので、ChromeがインストールされているのであればChromeを使用してください。
ChromeがなければInternet Explorer(10以降)、Firefoxなど他のブラウザで構いません。
ブラウザが起動したら、アドレスバーに以下のURLを入力してください。
http://localhost:4848/hub/
qlik-analytics-platform-introduction-203
ブラウザの中に、Qlik Sense Desktopとまったく同じ画面が表示されました。
qlik-analytics-platform-introduction-204
このようにQlik Sense Desktopは見た目上はWindowsのアプリケーションですが、中身はWebブラウザです。言い換えるとQlik Sense Desktopは、Qlik Sense専用のWebブラウザということです。

では一つ、おもしろい実験をしてみましょう。
Qlik Sense Desktopと、ブラウザ側のQlik Senseハブでおなじアプリを開いてください。
ここでは、デモアプリとしてあらかじめ用意されている「Customer Goods Sales」を選択します。
qlik-analytics-platform-introduction-205アプリ概要が開いたら、左から2つ目の「Sales & Margin Analysis」を開いてください。
qlik-analytics-platform-introduction-206Qlik Sense Desktopでもおなじように操作し、おなじアプリのおなじシートを開いてください。
下図のように画面を横に並べておくと分かりやすいでしょう。
qlik-analytics-platform-introduction-207ブラウザとQlik Sense Desktopのどちらでも構いませんので、なにか値を選択してください。
どちらか一方でなにか値を選択すると、もう一方の画面にも瞬時に反映されると思います。
片方を別のシートに変更して試してみてください。シートが変わっても(アプリがおなじであれば)、二つの画面は自動的に同期されます。
このように、おなじユーザーがおなじアプリを見ている限り、選択状態などはクライアントのツール間で自動的に同期されます。


QIXエンジン

それではここで、QIXエンジンについて触れておきます。
QIXエンジンというのは簡単に言うと、Qlik Senseのエンジンに当たるもので連想技術の核となる部分です。ここでは難しく考えずに裏で動いているエンジンだと思ってください。

重要なのは、Qlik Senseの動作はQIXエンジンによって一元的に管理されているということです。
先ほどクライアントのツール間で表示が自動的に同期されたのは、QIXエンジンの働きによるものです。

開発者向けの補足:リアルタイムに画面が更新される部分には、WebSocketの技術が使われています。また、このことを利用して複数画面でQlik Senseのアプリを開発できます。たとえば二つの画面でおなじアプリを開き、片方を編集モードに、もう一方を閲覧モードにすればリアルタイムに結果を確認しながらアプリを開発できます。



マッシュアップとエクステンション

ここまでで、Qlik Senseが標準的なWebの技術を採用していることを説明してきました。
では、それによってなにが嬉しいのかという話ですが、Webの技術を採用していることにより、外部のWebサイト(Webアプリ)との統合が容易になります。=マッシュアップ
また、標準的な技術を採用していることにより、先進的な外部ライブラリとの連携が容易になり、またこれによって機能を拡張できます。=エクステンション

マッシュアップ

では、マッシュアップの機能を試してみましょう。
※ここで紹介する機能は正確には”埋め込み(Embed)”と呼ばれるもので、マッシュアップとは別の機能です。ただし埋め込みもマッシュアップも、Qlik Senseのチャートを別のWebサイトに統合するという意味ではおなじものです。

まず、マッシュアップやエクステンションを開発するには、「Qlik Dev Hub」という開発者用の画面にブラウザからアクセスします。
ブラウザを起動してアドレスバーに以下のURLを指定してください。
http://localhost:4848/dev-hub/
qlik-analytics-platform-introduction-301なお、Qlik Sense Desktopのメニューから「Qlik Dev Hub」を選択してもこの画面が表示されます。
qlik-analytics-platform-introduction-302「Qlik Dev Hub」には全部で4つの機能がありますが、今回は一番上の「Single configulator」を使用します。この機能は単一のチャートを呼び出すためのURLを生成するものです。
「Qlik Sense Cloud」にある「Qlik Sense Charts」と同等のものです。

では、画面左側から「Single configulator」を選択してください。
qlik-analytics-platform-introduction-303さらに画面左側で、アプリとチャートを選択します。今回は先ほど使用したデモアプリのチャートを使用します。
qlik-analytics-platform-introduction-304
2つほど設定を加えます。まず値の選択などを有効にするために「Disable interaction」のチェックを外します。
qlik-analytics-platform-introduction-305つづいてチャートの上部に、いつもの選択バーを表示するために「Show selections bar」にチェックを入れます。
qlik-analytics-platform-introduction-306以上で完成です。
「View」をクリックして結果を確認してみましょう。
qlik-analytics-platform-introduction-307単一のチャートが画面いっぱいに表示されました。
qlik-analytics-platform-introduction-308ブラウザのアドレスバーに表示されたURLを使用することで、このチャートをQlik Senseの外から参照できます。たとえば社内のイントラにチャートを埋め込むことができます。

また、この場合もQIXエンジンによる一元管理が働いています。
qlik-analytics-platform-introduction-309つまり、一つのページに複数のチャートを埋め込んだ場合も、複数のチャートが自動で連動するということです。

なお、今回は「Single configulator」をご覧いただきましたが、「Mashup」を使用することで複数のチャートを組み合わせた独自のWebページを作成することも可能です。以下はMashupの作成イメージです。
qlik-analytics-platform-introduction-310


エクステンション

最後にエクステンションについて見ていきましょう。
ここでは「Qlik Sense 2 Dimensional Heatmap」というチャートを追加するエクステンションと、「SenseIt」というChromeの拡張機能を紹介します。
なお、Qlik Senseで単純に”エクステンション”と言った場合、”ビジュアライゼーション エクステンション”つまりチャート関連の拡張機能を指します。そういった意味では「SenseIt」の方は”エクステンション”ではないのですが、機能を拡張するという意味ではおなじですので、あわせて紹介いたします。

ビジュアライゼーション エクステンション

それではまず「Qlik Sense 2 Dimensional Heatmap」を使用してみましょう。
エクステンションは、先ほどのDev Hubで一から開発することもできるのですが、はじめからエクステンションを開発するのは敷居が高いため、まずは無償で公開されているエクステンションを利用するところから、はじめてみてください。

無償のエクステンションは「Qlik Branch」というサイトに、大量に公開されています。
では早速、Qlik Branchを見てみましょう。
Qlik Branch
http://branch.qlik.com/
GitHubのかわいらしいマスコットキャラがトップに表示されましたね。
qlik-analytics-platform-introduction-401画面上部の「Projects」メニューから、エクステンションを検索することなどもできますが、今回は以下のURLをクリックして「Qlik Sense 2 Dimensional Heatmap」のページに直接移動してください。
Qlik Branch Qlik Sense 2 Dimensional Heatmap
「Download project」ボタンをクリックして、エクステンションをダウンロードしてください。
qlik-analytics-platform-introduction-402エクステンションはZip形式で圧縮されていますので、解凍してください。
qlik-analytics-platform-introduction-403解凍したフォルダを、Qlik SenseのExtensionsフォルダにコピーしてください。
Extensionsフォルダは以下にあります。
C:\Users\<ユーザー名>\Documents\Qlik\Sense\Extensions
qlik-analytics-platform-introduction-404※Zipを解凍したときにフォルダを自動生成した場合は注意してください。このフォルダ「ralfbecher-xxxx」の直下にREADMEなどが置かれている状態にしてください。
これだけでエクステンションが使えるようになります。
qlik-analytics-platform-introduction-405シートの編集画面を開くと、チャートに「2 Dimensional Heatmap」が追加されていることが分かります。もし追加されていない場合は「F5」キーで画面を更新するか、Qlik Sense Desktopを再起動してください。
このエクステンションはこのあと使用します。


SenseIt

それではつづいて「SenseIt」を使用してみましょう。
SenseItはWebページ上のテーブルを、Qlik Senseに簡単に取り込むChromeの拡張機能です。
Chromeを起動して、以下のページにアクセスしてください。
※SenseItはChrome版しかないためChromeを使用してください。
SenseIt – Chrome ウェブストア
以下の画面を参考にSenseItをインストールしてください。
qlik-analytics-platform-introduction-501qlik-analytics-platform-introduction-502
SenseItがインストールされました。
qlik-analytics-platform-introduction-503
前述のとおり、SenseItはWebページ上のテーブルをQlik Senseに取り込む機能です。
ここでは題材として、以前このブログで取り上げた以下の記事からデータを取り込んでみましょう。
データの可視化 日本人の誕生日ランキングをあらわす一枚の画像
このページの下部に日本人の誕生日ランキングの表があります。アドレスバーの右にある「SenseIt」ボタンをクリックしてください。
qlik-analytics-platform-introduction-504
SenseItはWebページ上のテーブルを自動で認識して、テーブルに黄色の枠線を着けます。誕生日ランキングの表をSenseItのウィンドウにドラッグ&ドロップします。
qlik-analytics-platform-introduction-505画面下部の「Create App」ボタンをクリックすると、この表がQlik Senseにデータとして取り込まれ、さらにアプリも自動生成されます。
qlik-analytics-platform-introduction-506ボタンの表示が「Open App」に変わったら完成です。「Open App」ボタンをクリックしてください。
qlik-analytics-platform-introduction-507Qlik Senseの画面が開くので、シートを作成して編集を開始してください。
qlik-analytics-platform-introduction-508qlik-analytics-platform-introduction-509
先ほど追加したエクステンションを使用してみましょう。「チャート」から「2 Dimensional Heatmap」をドラッグ&ドロップでシートに追加します。
qlik-analytics-platform-introduction-510
軸とメジャーを設定します。
ここでは下図のように、1つ目の軸に「月」、2つ目の軸に「日」を設定します。さらにメジャーで「合計出生数」を選択し「Sum([合計出生数])」を設定してください。
qlik-analytics-platform-introduction-511
これだけでヒートマップが作成されます。ヒートマップは値の大小を色の変化で表現するチャートです。
qlik-analytics-platform-introduction-512
画面右の「スタイル」では、このエクステンション特有の設定も可能です。
「Color And Legend」で配色を変更できます。ここでは「Qlik Sense Diverging(Reverse)」を選択してみましょう。
qlik-analytics-platform-introduction-513
ヒートマップが完成しました。この配色では値の少ないものを赤、多いものを青であらわします。
たとえば、2月29日に生まれた方は非常に少なく(四年に一回しかないので当然ですね)、逆に9月下旬や12月下旬に生まれた方が多いということが視覚的に分かります。
qlik-analytics-platform-introduction-514
以上でエクステンションの説明は終了です。
あらかじめ用意されていないチャートを追加したり、外部のソフトウェアと連携したりできることがお分かりいただけたかと思います。


最後に…

今回はQlik Senseの拡張性というテーマで、Qlik Senseにできることをいろいろと紹介してきましたが、個人的には拡張性が高い一方で、QIXエンジンによる一元管理が徹底されている点が印象的でした。

つまり、データ値そのものやユーザーが選択した値など、データが直接関わる部分は常に一つで、それはQIXエンジンが一元管理しています。
その一方で、デバイスやクライアントは複数同時に利用できるようになっており、またチャートなど見た目に関する部分は自由に拡張できるようになっています。

採用している技術の観点から言えば、核となるQIXエンジンは独自の特許技術で保護しつつ、APIやクライアント製品には標準のWeb技術や、先端的なライブラリを採用しています。

最後にここまでの内容を、表にまとめておわります。
これはわたしの独自解釈ですが、今回見てきた内容を総合すると下表のようにあらわせると思います。
フロントエンドバックエンド
豊富なAPIによる柔軟な拡張QIXエンジンによる一元管理
標準的なWebの技術(オープンな技術)独自の特許技術(クローズドな技術)
表現(デバイス、ブラウザ、チャート)には多様性を事実(データ)は常に一つ

Qlik Sense for Developers help ‒ Qlik Sense
https://help.qlik.com/en-US/sense-developer/
Qlik Senseの開発者向けヘルプです。Qlik SenseのAPIの詳細などがまとめられています。(英語)

Qlik Branch
http://branch.qlik.com/
Qlik Branchです。エクステンションを探したいときは、まずここを見るといいでしょう。(英語)

QlikSpace | Qlik Sense + QlikViewの技術情報サイト
http://www.qlikspace.net
QlikViewとQlik Senseの技術情報を発信しているブログです。Qlik社の方が運営しているため、APIや拡張機能に関する記事も非常に充実しています。

Qlik Sense Platform APIs Ignite New Open Source Community | Qlik
http://www.qlik.com/us/company/press-room/press-releases/0126-qlik-sense-platform-apis-ignite-new-open-source-community
Qlik Branchを発表した際のQlik社のリリースです。(英語)
Qlik社が今後、開発者の支援やオープンソースコミュニティへの取り組みを強化していくといったことが書かれています。