AngularJSなどの汎用的なウェブ技術に基づいた幅広いAPIを提供しています。SenseではオープンなAPIが採用されることにより、他のウェブサイトやアプリケーションと連携を行うに当たってはより汎用的なウェブ技術に親和性が高い方法で多岐に渡るカスタマイズを行うことができます。APIについて解説を行いたいと思います。APIを使った開発を行うに当たって、標準で提供されている開発環境をご紹介します。Hub」と呼ばれる開発環境が用意されており、以下の4種類のツールを利用することができます。Hubへは以下のURLを指定して開くことが出来ます。http://<<サーバー名>>/dev-hub以下、これらの4つのツールについてそれぞれご説明させて頂きます。Editorエクステンションとは、拡張機能として独自に開発して利用できるビジュアライゼーションなどの部品のことを指します。Editorを使って開発することができます。Senseのチャートを組み合わせて、新たなカスタムウェブサイトを構築することができます。Editorはそのようなマッシュアップサイトの開発に利用されます。Senseでは作成したチャートを部品として既存のウェブサイトに埋め込むといった、組み込み型の分析も行うことができます。Configuratorでは、別ウェブサイトに埋め込むための、ある特定のチャート部品だけを表示するURLの取得や表示設定などを行うために利用されます。Senseのエンジンを制御するために、WebSocketのプロトコールを通じてJSON形式でやり取りを行うAPIとなっています。APIを使った開発作業を補助するために利用されます。クライアントサイドのAPI次に、主にビジュアライゼーションや画面の開発に関わる、クライアントサイドのAPIについてご説明させて頂きます。SenseのEngineを制御するためのAPIで、WebSocketのプロトコールを通じてJSON形式でやり取りを行います。Sense上でアプリを開発を行う際に実施するような一連アクションを実行することができる、非常に機能が豊富なAPIとなっています。APIはエクステンションの骨格を定義するためのAPIで、エクステンション開発には必ず必要となるAPIとなります。エクステンションの初期プロパティを設定する「initProperties」や、エクステンションの描画を制御する「paint」メソッドなど、エクステンションの定義に最低限必要な4つほどのメソッドとプロパティが含まれています。APIはエクステンションやマッシュアップの開発で最も良く使われるAPIになります。アプリを開いてアプリに含まれるチャートの表示や選択条件の設定、軸やメジャーを定義して集計結果データを取得するなど、エクステンションやマッシュアップで様々な制御を組み込むに当たって必要となる各種のAPIが含まれています。APIと同様にエクステンションやマッシュアップの開発で利用されるAPIになります。APIが提供されています。Senseのチャートを部品として既存のウェブサイトに埋め込む際に利用されるAPIになります。selectなど)から利用されます。Senseアプリの画面全体を埋め込んだりする際に利用されます。APIと同様にURLのパラメタとして利用されます。Serverのみで提供されているサーバーサイドのAPIについてご説明させて頂きます。Serverのサービスコンポーネント名が登場しますが、それらの説明については以下のエントリで解説していますので、そちらをご参照ください。Serverの設定に関わるデータが保存されています。一般的に設定情報はウェブ上の管理コンソール(QMC)を通じて管理が行われますが、それらの作業をAPIを通じて行うことが可能です。以下の様な処理を外部から実装することが出来ます。Serverのサービスモジュールになります。API経由でこれらを扱うことが出来ます。Senseでも認証済みと扱うことで、他のシステムと連携を行う仕組みを提供します。LDAPやOauth(Facebook,Google,Salesforce)などを利用して認証を行いたい場合、もしくはこれらの認証方式を利用するWebサイトと連携を行いた場合での利用が想定されます。このAPIを利用した外部認証モジュールとの連携の流れは以下となります。Senseにアクセス。Senseは、ユーザー(ユーザーIDおよび資格情報を含む)を認証モジュールにリダイレクト。認証モジュールは、IDプロバイダーを利用してユーザーIDおよび資格情報を検証。資格情報が確認されたら、QPSからチケットを要求。認証モジュールがチケットを受領。チケットを使用して、QPSにユーザーをリダイレクト。QPSは、チケットが有効でタイムアウトになっていないかを確認。ユーザー用のセッションが作成。Branchのサイトでは、このAPIを利用して上記の形で認証連携を行うサンプルコードが公開されています。Senseに登録し、ユーザー認証を行う仕組み(チケット認証と異なりセッション情報が他システムと共有され、ログオフ時には両システムからログオフされる)を提供します。連携を行う場合に利用することが想定されます。プロキシにはセッションモジュールが標準で含まれており、このセッションモジュールに対してセッションの登録・削除・取得を行うことが出来ます。API」のサブセットの位置付けとなっています。Branchのサイトでは、このAPIを利用してセッションIDの登録を行うサンプルコードが公開されています。APIユーザーセッションのクローズを行うためのAPIになります。APIセッション情報はノード単位で保持されますが、例えば複数ノード構成の場合にプロキシ間でセッション情報を共有する場合や、プロキシのメモリ上にセッション情報を保持するのではなく永続的なストレージを持つ外部セッションモジュールを利用する場合などに利用されるAPIになります。セッションモジュールを利用して外部ポータルと連携する場合の処理の流れは以下となります。プロバイダーにアクセス。プロバイダーはユーザーIDと資格情報を検証し、新規にセッション作成。プロバイダーはセッションクッキーとして、セッショントークンを設定。モジュールのセッションを検証。セッションが有効でタイムアウトになっていない場合、ユーザーは認証。Senseのプロキシから利用可能な、JSONファイル形式でセッション情報を永続的に保存することが出来る外部セッションモジュールのサンプルコードが公開されています。APIロードバランスのカスタマイズのために使用するAPIになります。独自のロードバランスのアルゴリズムを実装した外部ロードバランスモジュールを準備し、このAPIを利用してプロキシが外部ロードバランスモジュールにコンタクトするような構成を取ることができます。Branchのサイトでは、外部ロードバランスモジュールのサンプルコードが公開されています。Server内に取り込むためのコネクタになります。APIを利用することで、標準で提供されていないディレクトリサービスやデータソースからユーザー・グループ情報を取り込むためのコネクタを開発することが出来ます。SDKを利用することで、標準で提供されていないデータソースへのコネクタを開発することが出来ます。Senseに高速でデータを取り込むことが出来るファイル/ストリームのフォーマットとなっており、このQVXを利用して以下の流れでデータソースからデータを取得する処理の実装を行います。コネクタがコマンドを交換。コネクタがデータソースへデータを要求。データソースがデータを送信。