tofucodes diary

にほんごのほう

AppStoreとGooglePlayのユーザレビューを自動・無料・簡単にSlackに配信する方法

拝啓

アプリ開発者ならユーザがAppStoreあるいはGooglePlayに投稿してくれるレビューは非常に気になりますよね。

弊社ではストアの評価がKPIなんかになってたりもしますんでユーザレビューは超x3重要です。

とはいえAppStoreやGooglePlayにわざわざ見に行くなんて原始時代はとうに終わっています。

iPhoneユーザならばAppleのConnectアプリでPush通知をしてくれたりもしますが、結局は個人個人がストアに見に行く必要があるので、

なんかこう一斉に多数の人間が閲覧できてわちゃわちゃ議論したりできる仕組みが欲しいと思うわけです。

となるとやっぱりSlackになるわけで、AppStoreとGooglePlayから自動かつ無料でユーザレビューをスレッドに垂れ流すことは一定の需要がある気がしてます。

とはいえ極論各ストアの公開APIを叩けば取得できるわけなんで無料という部分は弱めですが、今回の内容を利用すればほぼコードを書かずに実現できます。

ポイントは自動・無料・簡単です。

本題

利用するもの
  • ReviewMe
  • Heroku
事前に準備するもの
  1. Slackにメッセージを送信するためのincoming webhook URL(参照
  2. Google Play Publisher API用のprivate key(JSON形式)(参照
  3. Herokuのアカウント

それぞれの詳細は省きますので参照リンクをご覧ください。

プロジェクト作成
$ mkdir review-me-myapp
$ cd review-me-myapp
$ npm init -y
$ npm install @trademe/reviewme --save
ReviewMeの設定ファイル作成
$ touch config.json
$ vim config.json
{
  "slackHook": "{Slack hook URL}",
  "verbose": true,
  "dryRun": false,
  "interval":300,
  "apps": [
    {
      "appId": "{Androidアプリのapp ID}",
      "publisherKey": "{Google Play Publisher API private keyのpath}"
    },
    {
      "appId": "{iOSアプリのapp ID}",
      "regions": false
    }
  ]
}

regionsをfalse(=全リージョン)にしてますが、日本にしかリリースしてないアプリとかはjp指定にしてもいいと思います。

publisherKeyはフルパスで指定してしまうとHerokuでそのパスが見つけられないので、相対パスで書きましょう。

レビュー取得用のスクリプト作成
$ touch index.js
$ vim index.js
var reviewme = require("@trademe/reviewme");
var config = require("./config.json");

reviewme.start(config);

ReviewMeのモジュールと作成した設定ファイルをロードして、Reviewの処理をスタートしています。

最低限必要なコードはこの3行のみです。

Heroku用のProcfile作成
$ touch Procfile
$ vim Procfile
worker: node index.js
Herokuにプロジェクトをデプロイ
$ heroku login
$ git push heroku master

まずは自分のHerokuアカウントにログインします。そしてプロジェクトをherokuにpushします。

Push後はHerokuが勝手にプロジェクトをビルドしてProcfileで指定した処理を開始してくれます。

Herokuのプロセスを確認して以下のようにworkerが立ち上がっていれば正常に動いていると思います。

$ heroku ps
Free dyno hours quota remaining this month: 408h 14m (74%)
Free dyno usage for this app: 141h 26m (25%)
For more information on dyno sleeping and how to upgrade, see:
https://devcenter.heroku.com/articles/dyno-sleeping

=== worker (Free): node index.js (1)
worker.1: up 2019/09/11 09:54:29 +0900 (~ 23h ago)

敬具

思い出しながら書いたので足りてないところあるかもしれません。