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