
AppExchangeアプリの分析ツール「AppExchange App Analytics」触ってみた
こんにちは、町田です。この記事はゆるっとSalesforceトーク #7 AppExchange App Analytics - connpass で発表した内容をまとめ直したものとなっております。
AppExchange App Analyticsってどんなもの?
まずは公式ドキュメントを確認してみましょう。概要としては以下のように書かれています。
AppExchange の App Analytics は、登録者が AppExchange ソリューションをどのように操作しているかに関する利用状況データを提供します。これらの詳細を利用して、減少のリスクを特定したり、機能開発の決定を知らせたり、ユーザエクスペリエンスを向上させたりすることができます。
上記の通り、AppExchangeアプリの利用状況データを提供することがAppExchange App Analyticsの機能となってます。あくまでデータの提供までであるため、データの蓄積、グラフなどでの可視化は別サービスと組み合わせる必要があります。
また、提供される利用状況データは、パッケージ利用状況概要とパッケージ利用状況ログの二種類あります。次はこちらについて見ていきます。
利用状況データについて
まずは二種類のデータについて、違いを比べてみます。
パッケージ利用状況概要 : 総計値の概要が月別に提供されます。
パッケージ利用状況ログ : UTCタイムで0:00~23:59 の間の 24 時間における利用状況の詳細な情報が提供されます。
ふたつの違いは、集計期間と情報の詳細度です。
利用状況データのは具体的に何が含まれているのかは各ページに記載がありますが、ここではいくつかピックアップしてみてみます。
まずはパッケージ利用状況概要です。こちらは、DML操作やページビューが月別で集計された値が含まれています。
num_creates : パッケージから作成された新規レコードの数
num_events : Custom_entity_type に関連付けられているログレコードの数
num_views : コンポーネントまたはページが表示された回数
次にパッケージ利用状況ログです、こちらは一つのアクション、トランザクションに対してのログとなっています。項目数は多いですが、アクションの種類によって入力される項目が変わります。
api_type : API 要求の種類
event : プラットフォームイベントの名前または ID
page_app_name : ユーザがアプリケーションランチャーからアクセスした Lightning アプリケーションの内部名
method_name : Apex メソッドの名前
num_soql_queries : Apex イベントの実行中に完了した SOQL クエリの数
パッケージ利用状況ログの方が詳細な情報が取得できますが、データサイズが大きくなるため、次のデータ取得の際に時間がかかります。
ここからは実際の手順を追っていきます。まずは利用をするための準備です。
利用するための準備
AppExchangeアプリをリリースする。
AppExchange の App Analytics の要求 | ISVforce ガイドを参考ににケース申請を行う。
申請はパッケージ単位で行う。
一度のケース申請で複数パッケージを有効化できる。
有効化された旨のメールが届く。
これで利用可能となります、次にデータを取得してみましょう。
データの取得
データの取得は以下のような流れになっています。
AppAnalyticsQueryRequestオブジェクトのレコードを作成する。
データ取得キューが実行される。
1.で作成したレコードにダウンロードリンクが追加される。
ダウンロードリンクからcsvデータをダウンロードする。
Salesforce Labsが提供しているAppExchangeアプリのApp Analytics を使って以上の流れを行ってみます。
App Analytics をインストール後、アプリランチャーから開きます。

右上の「Submit New Request」ボタンをクリックするとクエリ作成フォームが開きます。ここでは「データの種類」「期間」「パッケージ」「組織」を指定することができます。

「Submit」ボタンをクリックすると以下のように追加されたレコードが表示されます。この画像では「Download Url」にダウンロードリンクが追加された状態となっています。あとはリンクからデータをダウンロードするだけです。

データの可視化
ここではSalesforceで提供されているCRM Analyticsを使ってデータの可視化を行ってみます。
まずは、設定>機能設定>分析>Analytics>始めましょう を開き、「CRM Analyticsを起動」をクリックします。

CRM Analyticsが開きます。右上の「作成」ボタンをクリックし「データセット」を選択します。

AppExchange App Analyticsから取得したcsvデータを読み込みます。

アプリケーションを選択できます、最初から設定されているもので問題ないです。

簡単にデータのトリミングや加工をし、「ファイルをアップロード」します。

「ファイルをアップロード」すると最近参照したデータなどにデータが追加されているので開くとグラフが作成できます。

自動化の方法
ここまででデータの取得と表示ができました。しかしこれだと実際にデータを見るまでに手間がかかりすぎてしまいます。自動化をしてこの手間を減らす方法を紹介してこの記事を終わろうと思います。
Apexとカスタムオブジェクトで実現する
developerforce/partner-intelligence-basics で紹介されてます。簡単な流れは
Apex定期バッチでAppAnalyticsQueryRequest レコードを挿入する。
AppAnalyticsQueryRequestオブジェクトのupdateトリガでcsvリンクが追加されたことを検知する。
リンクからcsvをダウンロードする。
csvをパースして、CRM Analytics連携用のカスタムオブジェクトへ変換し、インサートする。
CRM Analyticsで連携用のカスタムオブジェクトへ接続する。
となっております。こちらはSalesforce内で完結します。
Amazon Web Services (AWS) スタックを使用してオートメーションを作成する
Automate App Analytics - AWS Stack | by Kam Patel | Medium で紹介されています。簡単な流れは
AWS Lambdaの定期実行でAppAnalyticsQueryRequest レコードを挿入する。
AWS Lambdaの定期実行でAppAnalyticsQueryRequestの更新をポーリングする。
csvをダウンロードしてs3に保存する。
CRM Analyticsでs3とデータ連携する。
こちらはAWSを組み合わせることで実現しています。
CRM Analyticsの"レシピ"を使う
DailyAggregation CRM Analytics レシピの作成 | ISVforce ガイド | Salesforce Developers
この方法は、CRM Analytics単体で完結します。AppAnalyticsQueryRequestは登場せず、未加工のパッケージログファイルデータをライセンス管理アプリケーション (LMA) データに結合することで、データセットを作っているようです。
おわりに
AppExchange App Analyticsという名前からなんとなくGoogle Analyticsのようなフルマネージドサービスかと思いましたが、AppExchange App Analytics自体は単機能なものとなっていました。現時点では、自動化しデータの可視化を行うためには、システムを自作する必要があり、多少の手間となってます。今後CRM Analyticsとの連携が強化され、さらに手軽に使えるようになると触れる機会も増えそうです。