はじめに

Qlik SenseはHTML5, CSS, jQuery, AngularJSなどの汎用的なウェブ技術に基づいた幅広いAPIを提供しています。Qlik SenseではオープンなAPIが採用されることにより、他のウェブサイトやアプリケーションと連携を行うに当たってはより汎用的なウェブ技術に親和性が高い方法で多岐に渡るカスタマイズを行うことができます。ここではQlik Sense APIについて解説を行いたいと思います。

Qlik Sense APIを使った開発環境

まず、Qlik Sense APIを使った開発を行うに当たって、標準で提供されている開発環境をご紹介します。Qlik Senseには「Dev Hub」と呼ばれる開発環境が用意されており、以下の4種類のツールを利用することができます。

1

尚、Dev Hubへは以下のURLを指定して開くことが出来ます。

  • Qlik Sense Desktop: http://localhost:4848/dev-hub
  • Qlik Sense Enterprise: http://<<サーバー名>>/dev-hub

以下、これらの4つのツールについてそれぞれご説明させて頂きます。

Extension Editor

エクステンションとは、拡張機能として独自に開発して利用できるビジュアライゼーションなどの部品のことを指します。Qlikによって運営されているQlik Branchでは、以下の様な各種エクステンションが公開されており、これらのようなエクステンションをExtension Editorを使って開発することができます。

extension

Mashup Editor

Qlik Senseでは、汎用的なウェブ技術を利用したり、その他ウェブ上で公開されているサービスやツールなどとQlik Senseのチャートを組み合わせて、新たなカスタムウェブサイトを構築することができます。Mashup Editorはそのようなマッシュアップサイトの開発に利用されます。

2

Single Configurator

Qlik Senseでは作成したチャートを部品として既存のウェブサイトに埋め込むといった、組み込み型の分析も行うことができます。Single Configuratorでは、別ウェブサイトに埋め込むための、ある特定のチャート部品だけを表示するURLの取得や表示設定などを行うために利用されます。

image

Engine API Explorer

Engine APIはQlik Senseのエンジンを制御するために、WebSocketのプロトコールを通じてJSON形式でやり取りを行うAPIとなっています。このEngine API Explorerではこの様なやり取りをテストするためのツールで、利用するメソッドをプルダウンから選択してJSON形式のリクエストやレスポンスを確認するなど、Engine APIを使った開発作業を補助するために利用されます。

image

クライアントサイドのAPI

次に、主にビジュアライゼーションや画面の開発に関わる、クライアントサイドのAPIについてご説明させて頂きます。

Engine API

上記のEngine API Explorerの項で既に触れましたが、外部からQlik SenseのEngineを制御するためのAPIで、WebSocketのプロトコールを通じてJSON形式でやり取りを行います。

アプリ、シート、チャート、軸、メジャー、ストーリー、ブックマークといったオブジェクトの作成、削除、変更など、ユーザーがQlik Sense上でアプリを開発を行う際に実施するような一連アクションを実行することができる、非常に機能が豊富なAPIとなっています。

Extensions API

Extensions APIはエクステンションの骨格を定義するためのAPIで、エクステンション開発には必ず必要となるAPIとなります。エクステンションの初期プロパティを設定する「initProperties」や、エクステンションの描画を制御する「paint」メソッドなど、エクステンションの定義に最低限必要な4つほどのメソッドとプロパティが含まれています。

image

Capability API

Capability APIはエクステンションやマッシュアップの開発で最も良く使われるAPIになります。アプリを開いてアプリに含まれるチャートの表示や選択条件の設定、軸やメジャーを定義して集計結果データを取得するなど、エクステンションやマッシュアップで様々な制御を組み込むに当たって必要となる各種のAPIが含まれています。

Backend API

Backend APIもCapability APIと同様にエクステンションやマッシュアップの開発で利用されるAPIになります。Engine APIの一部のメソッドをエクステンションやマッシュアップから呼び出し易くするよう、それらのメソッドのラッパーとしてBackend APIが提供されています。

Single Integration API

Single Integration APIは、上記の「Single Configurator」の項でご紹介した、Qlik Senseのチャートを部品として既存のウェブサイトに埋め込む際に利用されるAPIになります。利用するアプリやオブジェクト、選択条件などを指定するために、URLのパラメタ(appid, obj, selectなど)から利用されます。

3

App Integration API

App Integration APIは、別のウェブサイトからQlik SenseアプリのURLを呼び出して初期選択条件を設定して遷移させたり、別ウェブサイトにQlik Senseアプリの画面全体を埋め込んだりする際に利用されます。利用方法はSingle Integration APIと同様にURLのパラメタとして利用されます。

5

サーバーサイドのAPI

ここではQlik Sense Serverのみで提供されているサーバーサイドのAPIについてご説明させて頂きます。尚、以下レポジトリ(Repository)やプロキシ(Proxy)といったQlik Sense Serverのサービスコンポーネント名が登場しますが、それらの説明については以下のエントリで解説していますので、そちらをご参照ください。

>>データ・ディスカバリ・プラットフォーム「QLIK SENSE SERVER」の解説

Qlik Sense Repository Service API

レポジトリ(Qlik Sense Repository)には、Qlik Sense Serverの設定に関わるデータが保存されています。一般的に設定情報はウェブ上の管理コンソール(QMC)を通じて管理が行われますが、それらの作業をAPIを通じて行うことが可能です。

例えば、以下の様な処理を外部から実装することが出来ます。

  • 外部スケジューリングツールからのタスク実行
  • ライセンス構成の変更
  • システム関連情報の抽出

Qlik Sense Proxy Service API

プロキシ(Qlik Sense Proxy Service)は認証、セッション制御、ロードバランスなどを扱うQlik Sense Serverのサービスモジュールになります。 Qlik Sense Proxy Service API経由でこれらを扱うことが出来ます。

Proxy API

プロキシ(Qlik Sense Proxy Service)がエンドポイントとなり提供されているAPIとして、「Authentication (Ticket) API」、「Session API」、「Logout API」、「Personal API」があります。

Authentication (Ticket) API

Authentication(Ticket) APIはチケットを扱うためのAPI で、他のウェブサイトで認証されたユーザーにチケットを付与してQlik Senseでも認証済みと扱うことで、他のシステムと連携を行う仕組みを提供します。例えば、LDAPやOauth(Facebook,Google,Salesforce)などを利用して認証を行いたい場合、もしくはこれらの認証方式を利用するWebサイトと連携を行いた場合での利用が想定されます。

このAPIを利用した外部認証モジュールとの連携の流れは以下となります。

image

  1. ユーザーは、Qlik Senseにアクセス。
  2. Qlik Senseは、ユーザー(ユーザーIDおよび資格情報を含む)を認証モジュールにリダイレクト。認証モジュールは、IDプロバイダーを利用してユーザーIDおよび資格情報を検証。
  3. 資格情報が確認されたら、QPSからチケットを要求。
  4. 認証モジュールがチケットを受領。
  5. チケットを使用して、QPSにユーザーをリダイレクト。QPSは、チケットが有効でタイムアウトになっていないかを確認。
  6. ユーザー用のセッションが作成。
  7. ユーザー認証が完了。

以下のQlik Branchのサイトでは、このAPIを利用して上記の形で認証連携を行うサンプルコードが公開されています。

>>Access Control Test Module

Session API

他システムで生成されたセッション情報をQlik Senseに登録し、ユーザー認証を行う仕組み(チケット認証と異なりセッション情報が他システムと共有され、ログオフ時には両システムからログオフされる)を提供します。例えば、ポータルサイト(Jboss, WebSphereを含むJavaポータルなど) との連携を行う場合に利用することが想定されます。

プロキシにはセッションモジュールが標準で含まれており、このセッションモジュールに対してセッションの登録・削除・取得を行うことが出来ます。尚、後述の「Session module API」を利用して外部のセッションモジュールにもセッション情報を保存することも可能となっていますが、このSession APIは「Session module API」のサブセットの位置付けとなっています。

以下のQlik Branchのサイトでは、このAPIを利用してセッションIDの登録を行うサンプルコードが公開されています。

>>Session API Test Module

Logout API

ユーザーセッションのクローズを行うためのAPIになります。

Personal API

ユーザー情報取得やログアウトを行うためのAPI になります。

Session module API

セッション情報はノード単位で保持されますが、例えば複数ノード構成の場合にプロキシ間でセッション情報を共有する場合や、プロキシのメモリ上にセッション情報を保持するのではなく永続的なストレージを持つ外部セッションモジュールを利用する場合などに利用されるAPIになります。

セッションモジュールを利用して外部ポータルと連携する場合の処理の流れは以下となります。

image

  1. ユーザーはポータルに統合されているID プロバイダーにアクセス。ID プロバイダーはユーザーIDと資格情報を検証し、新規にセッション作成。
  2. ID プロバイダーはQlik Senseセッションモジュールを通じ、セッション トークンを登録。
  3. ID プロバイダーはセッションクッキーとして、セッショントークンを設定。
  4. ユーザーはコンテンツを取得するためにポータル上のiframeなどを通じてQPS にアクセス。
  5. QPS は、セッション モジュールのセッションを検証。
  6. セッションが有効でタイムアウトになっていない場合、ユーザーは認証。

以下のQlik Branchのサイトでは、Qlik Senseのプロキシから利用可能な、JSONファイル形式でセッション情報を永続的に保存することが出来る外部セッションモジュールのサンプルコードが公開されています。

>>Proxy Session Module Proof of Concept

Load balancing module API

ロードバランスのカスタマイズのために使用するAPIになります。例えば独自のロードバランスのアルゴリズムを実装した外部ロードバランスモジュールを準備し、このAPIを利用してプロキシが外部ロードバランスモジュールにコンタクトするような構成を取ることができます。

以下のQlik Branchのサイトでは、外部ロードバランスモジュールのサンプルコードが公開されています。

>>Load Balancing Test Module

Qlik Sense User Directory Connector API

ユーザーディレクトリ コネクタ (UDC) はActive DirectoryやLDAPといった構成済みのディレクトリサービスに接続し、ユーザー・グループ情報をQlik Sense Server内に取り込むためのコネクタになります。

image

このQlik Sense User Directory Connector APIを利用することで、標準で提供されていないディレクトリサービスやデータソースからユーザー・グループ情報を取り込むためのコネクタを開発することが出来ます。

SDKを利用した開発

Qlik QVX SDK

Qlik QVX SDKを利用することで、標準で提供されていないデータソースへのコネクタを開発することが出来ます。Qlik data eXchange(QVX)とはQlikViewやQlik Senseに高速でデータを取り込むことが出来るファイル/ストリームのフォーマットとなっており、このQVXを利用して以下の流れでデータソースからデータを取得する処理の実装を行います。

image

  1. Qlik Senseと QVX コネクタがコマンドを交換。
  2. QVX コネクタがデータソースへデータを要求。
  3. データソースがデータを送信。
  4. QVX コネクタが受信したデータを QVX メッセージに変換。
  5. QVX メッセージは QVX コネクタ から Qlik Senseに送信。

Qlik Sense .NET SDK

Microsoft Visual StudioでQlik Senseと連携を行う.NETアプリケーションを開発するためのSDK となります。

image

このSDKを利用することにより、Qlik Senseのアプリを操作する独自のWindowsアプリケーションの開発などをVisual C#やVisual Basicを使って行うことが可能となります。

プラグインを利用した開発

Qlik Analytics Plugin for Visual Studio

Visual Studio向けのプラグインが提供されており、このプラグインを追加することで、ドラッグ&ドロップでASP.NETアプリケーション上にQlik Senseチャートの埋め込みを行うことができます。

4

これにより、Qlik Sense上ではマッシュアップ開発のためにMashup Editorが提供されていますが、同様のマッシュアップ開発作業をVisual Studioで行い、IIS環境などにデプロイすることができます。

まとめ

このエントリでは、Qlik Sense APIの体系についてご説明しました。また今後のエントリで個別のAPIの実装方法や利用方法についてご紹介したいと思います。