2017.02.07   |   News

AndroidのレビューをSlackに投げるやつを作ってみた

capture.png

GooglePlay に投稿された Android のレビューを Slack に投げるやつ作ってみました。
作ったアプリのレビュー収集にどうぞお役立てください。

レビューの取得にはGooglePlayの公式APIを使っています。
去年までレビューを取得する手段は公式に提供されていなかったのですが、去年「Google Play Developer Console」というデベコンをAndroidで見るためのアプリが公開されたあたりでひっそりとAPIも公開されていました。
スクレイピングではないのでGooglePlayのデザイン変更に怯えることなく安心して使うことができます。

使い方

セットアップ

今回はGo言語を使って作ってみました。
Linxux上で動かすには、

https://github.com/pistatium/android_review_watcher/releases

から最新の artifacts.zip を落として展開すればOKです。
実行できる形式のプログラムと、必要ファイルが入っています。

MacやWindowsの場合はGoのソースからセットアップをお願いします。
(Goxを使って上手いこと自動ビルドしたい)

また、プログラムを動かすには本体の他に、以下の2つのファイルを用意してください。

  • APIキー
  • 設定ファイル

APIキー

GooglePlayからレビューを取得するために必要な、GooglePlayAPIのAPIキー(JSON形式)です。

取得手順はざっくり以下の通り。

  • https://play.google.com/apps/publish/#ApiAccessPlace を開く
  • 一番下の「サービス アカウントを作成」を押す
  • ポップアップに従ってGoogle API コンソールに移動する
  • 「サービスアカウントを作成」
    • サービス アカウント名: 好きな名前
    • 役割: 「サービスアカウントアクター」(たぶん)
    • 新しい秘密鍵の提供にチェック → JSON
  • アカウントが出来てJSONファイルをゲットしたら、GooglePlayに戻る
  • ポップアップを「完了」押して閉じる
  • サービスアカウントの一覧に今作ったアカウントがあるので認証を押す
  • 読み取り専用に設定して終わり

GooglePlayとGoogleCloudPlatformを1往復する必要があるのでちょっと手間ですがかかりますが、一回覚えてしまえば簡単です。(2回め使う出番があるかは分からないですが…。)

設定ファイル

どのアプリをSlackに通知するかを決めるための設定ファイルです。
サンプルを置いてあるので編集して使ってください。

[slack_webhook]
url = "https://hooks.slack.com/services/XXXXXXXXXXXXXX"

[[target_app]]
package_name = "com.appspot.pistatium.mahougen"

[[target_app]]
package_name = "com.appspot.pistatium.tomorrow"
    [target_app.slack_conf]
    username = "明日から本気出す"
    icon_emoji = ":honkidasu:"
    channel = "#test"

まず最初にSlackのIncommingWebHookを取得して、一番上の url にセットしてください。

次に [[target_app]]package_name に取得したいアプリのパッケージ名を記述してください。
このパッケージ名は、APIキーと同じアカウントが閲覧可能なアプリしか指定できません。
複数アプリを持っているときはこのtarget_name、package_nameのペアを使う分だけ用意してください。
(1つしか無いときは1つになるようサンプルから消してください)

Slackのチャンネルや通知ユーザー名などをカスタムしたいときは、それぞれのtarget_appにネストする形でSlackの設定を記述してあげてください。 指定しなければIncommingWebHookを作成したときに指定した値が使われます。

APIキーのJSONと設定ファイルが用意できたらコマンドを実行してみてください。
上手く行けばSlackに最新のレビューが投稿されるはずです。

capture.png

取得済みのレビューは .cursor ディレクトリで管理しているので、同じコマンドを何度叩いても重複してSlackに投稿されることはありません。
Cronなどで定期的に叩くように設定してあげれば随時最新のレビューを流すことが出来ると思います。

ちらしのうら

Go初めて触った話とかは今度書きます