こんにちは。Deckです。
この記事では「Qlik Senseのアプリに自動化機能を付与し、アプリが公開されるたびにGithubに自動でアップロードが行われる」仕組みの作成方法と履歴の追跡の仕方を解説します。
この仕組みを使えばアプリの修正を間違えたときに前のバージョンに戻ることが簡単にできるようになりますし、アプリ変更の履歴を追うこともできるようになります。
はじめに、今回構築する仕組みのキーワードと概念図は以下のようになります。
キーワード:
概念図:
この記事では前提条件として以下の準備ができているものとします。
また、この自動化でGithubにアップロードできるqvfファイルのサイズ上限は15MBです。
アップロードされるqvfはテーブルデータを除いた、スクリプトとUIの情報のみの状態なので通常は制限を超えることはありませんが、頭の片隅で覚えておきましょう。
Qlik Senseにログインし、分析ページから「スペース作成」ボタンをクリックします。
まずは開発用のスペースを作成します。
タイプは「共有」とし、スペースの名前を入力して「作成」をクリックします。
次に公開用のスペースを作成します。
タイプは「管理」とし、スペースの名前を入力して「作成」をクリックします。
分析ページに戻り、「アプリ作成」ボタンをクリックします。
開発用のアプリを作成します。
スペースは先ほどの開発用スペースを指定し、アプリの名前を入力して「作成」をクリックします。
データロードエディタを開き、サンプルのデータを取り込むスクリプトを入力してデータをロードします。
データをロードしたらUIの編集画面に移動し、簡単なチャートを追加します。
Githubにログインし、新規リポジトリの作成画面に移ります。
リポジトリの名前を入力します。
また、リポジトリの設定は必ずプライベートに設定しましょう。
作成したリポジトリは空のままでかまいません。
次の手順に移ります。
ここからはいよいよメインの自動化を作成してゆきます。
手順が多いため、それぞれの操作に番号を振っておきます。途中で休憩するときに番号を覚えておいて、手順の抜けがないようにしてください。
Qlik Cloudの開発用スペースから自動化を作成します。
テンプレートは「Github⇒Commit an app to Github」を選択します。
自動化に名前を付けて「作成」ボタンをクリックします。
自動化の編集画面が開きます。
Qlik Automateでは手順が「ブロック」の形で表現されており、ブロックを連結することで様々なロジックが実現できます。
ここからバックアップ対象アプリの情報や保存先のGithubリポジトリの情報など、必要な設定を入力してゆきます。
「App Published」を選択し、画面右上の「Block configuration」を開きます。
このブロックはアプリが公開されたときに自動化が開始されるトリガーです。
Space Idsに公開用スペースの名前を入力します。
「Get App Information」の設定を編集します。
「App Id」の欄に開発用アプリ名を入力します。
次に、「Variable -Settings」の設定を編集します。
以下の3つの項目を入力します。
「Condition」の設定を編集します。
一番最後の欄に対象アプリのIDを入力します。
このIDは手順④「Get App Information」で入力したアプリのIDと同じです。(例:「aaaaaaaa-bbbb-cccc-dddddddddddd」のような形式)
「Create or Upadte File Content」の設定を開き、「Connection」タブに移ります。
対象のスペースを選択し、「Create Github connectioin」をクリックします。
わかりやすい接続名を入力し、「Save」をクリックします。
「Link connection」をクリックします。
新しいウインドウで認証画面が開きます。
「Authorize qlikaa」をクリックします。
認証が成功したことを確認し、「Ok」をクリックします。
「Export App To Base 64 Encoded File」の設定を開き、App Idに対象のアプリを入力します。
「Create Or Update File Content 2」の設定を開き、「Connection」タブでスペースとGithubへの接続を選択します。
画面左側のブロック選択から「Qlik Cloud Service」を選び、「Get Object Properties」ブロックを検索して画像の位置にドラッグ&ドロップします。
今の手順で追加した「Get Object Properties」の設定を開き、以下の項目を入力します。
「Variable - appJSON」の設定を開きます。
近くに同じ名前のブロックがありますが、ループの中にあるものを選択してください。
設定からマニュアル入力に切り替えて、「{json:{ $.getObjectProperties.qProperty }}{linebreak}」を入力します。
マニュアル入力を解除して、以下のような見た目になっていればOKです。
「Create Or Update File Content 3」の設定を開き、「Connection」タブでスペースとGithubへの接続を選択します。
ここまでの手順を完了したら、画面上部の「Save」ボタンをクリックします。
自動化の設定が終わったので、開発用アプリを公開して自動化をトリガーしてみましょう。
アプリ一覧から開発用アプリを右クリックして「公開」を選択します。
公開先のスペースと公開名を入力して「公開」をクリックします。
自動化が実行されると履歴が記録されます。
ステータスが「Finished」になっていれば成功です。
もし実行が失敗した場合、「Per Block」の欄から自動化実行がどこで失敗したのかをチェックすることができます。
Githubからリポジトリを開くと、以下の3つのファイルが更新されていることが確認できます。
では、アプリを編集したあと再度公開し、差分がどうなっているか確認してみましょう。
最初に作成したロードスクリプトに追記を行いましたが、どこが変化したかわかるでしょうか。
変更を行った開発用アプリを再度公開します。
2回目以降の公開では公開済みのアプリに上書きする選択肢が表示されます。
ここではアプリの上書き公開を選択します。
アプリを公開したことで自動化が実行され、Githubのリポジトリも更新されます。
ロードスクリプトのtxtファイルのリンクを開き、「Blame」ボタンをクリックします。
先ほどの編集がコミット履歴に表示されています。
コミット履歴を開くと、変更があった箇所がハイライト付きで表示されます。
これで「アプリがいつ・どの部分が変更されたか」が一目瞭然です!
同様に、UI側のシートオブジェクトの変更も確認することができます。
テーブル等に格納された列項目・数式定義のような情報も記録されているので、アプリがどのように変わってきたのかの履歴を追うこともできますね。
以上が「Qlik Senseのアプリに自動化機能を付与し、アプリが公開されるたびにGithubに自動でアップロードが行われる」仕組みの作成方法と履歴の追跡の仕方の解説でした。
最近のバージョンのQlik Cloudではロードスクリプトのバージョン履歴が記録される機能が追加されましたが、Qlik Cloud単体では最新50件のみの記録だったり、Githubでは変更箇所のハイライトに対応し、UI側の変更も追うことが可能などGithub連携のみのメリットも確かに存在します。
またQlik Cloudの障害やデータ損失に備えて他サービスにバックアップを取得しておくことも重要と言えるでしょう。
これにて解説を終わります。お疲れ様でした。