てくてくテック

気ままに開発のメモを書いていこうと思います。主にSwiftかと。

Reporterを使ってiTunes ConnectのSales and Trendsを自動で取得する - 設計編

はじめに

Reporterを使ってiTunes ConnectのSales and Trendsを自動で取得するReporterを使ってみてAppleが提供するレポートファイルのダウンロードするところまでお話をしました。今回は、ダウンロードするだけでなく数値データを取得してどのように自動化するかという全体の設計についてまとめようと思います。

ゴール

今回作成する自動化機構の要件は下記の通りです。rubyなのは少し触ったことがあるからです。

  • デイリーのインストール数(アップデート数などは除く)を取得
  • 同一vendorに限定
  • iPhone, iPad両方の値を混合
  • 取得した値はGoogle Spreadsheetに出力
  • データ収集するアプリとその出力先は別途Google Spreadsheetで管理
  • デイリーでGoogle SpreadsheetからSlackにインストール数と合計インストール数を通知
  • ruby(2.3.1, rbenvにより管理)で実装

まとめると下図のようになります。

f:id:k-s-9190118:20161102110156p:plain

実装指針

Google SpreadsheetとRubyの連携

こちらはgoogel_driveというgemを使うと非常に簡単にできました。詳細は次回以降に書きます。

daily report

iTunes Connectから取得

これはjavaを実行することによってファイルをダウンロードします。この時、Appleアカウント IDやパスワードを記述したReporter.propertiesという設定ファイルが必要になるのですが、これらをファイルにベタ書きしておいておきたくないので、環境変数あたりに入れておいて実行時に一時的に作成&終わったら削除という実装にしようと思います。

インストール数の取得

reportファイルはtsv形式で出力されます。 データ項目は、 Provider, Provider Country, SKU, Title ...etcなど多岐にわたりますが、今回はSKUとProduct Type Identifier, Unitsを利用します。なお、SKUはiTunes Connectにアプリを作成するときに入力したものでBundle Identifierと同一にすることが多いので同一のものとしています。Product Type Identifierは製品タイプIDにあるように初回インストールなのかアップデートなのかの判断に利用できます(もちろんいわゆる製品タイプという区別もあります)。そしてUnitsがインストール数のことになります。

reportファイルの削除

めんどくさいことにapiでjsonを返してくれるとかいう設計じゃないreportファイルを毎日ダウンロードすることになるので、そのままだと不要なファイルがたまり続けることになります。そのため、プログラム実行後にはファイルを削除することにします。

Slackに通知する

SpreadsheetなのでGASを利用します。詳細はGASからIncoming Webhooksでslackに通知を投げるを参照してください。

終わりに

今回は設計や指針まで書きました。次回以降にそれぞれ細かい実装の話をしようと思います。